diff --git a/CHANGES b/CHANGES
index 72c5233..d02578f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,104 +4,104 @@
 listing of all changes made to the code.
 
 
-*5.5.2*
+*5.6.2*
 
     snmplib:
       - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
-      - [PATCH 3183000]: Fix calculation of common OID prefix length
+      - [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()
-      - Declare "type" argument of se_store_xxx() as const
-      - Make it explicit that MAX_SUBID is an unsigned constant
-      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
-      - Simplify implementation of functions manipulating 64-bit numbers.
-      - Simplify the se_store_enum_list() implementation
+      - Eliminate assorted dead variables
 
     snmpd:
-      - [BUG 3439234]: Correct dependencies of ucd-snmp/{pass,pass_persist}
-      - [BUG 3439234]: Move netsnmp_pass_str_to_errno to pass_common
-      - [BUG 3440752]: Report speed correctly for unusual E'net interfaces
-      - [BUG 3463767]: Handle parsing subidentifiers > 2^31
+      - [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
-      - [PATCH 3175640]: Use IP_RECVDSTADDR sockopt where available (*BSD)
-      - [PATCH 3198781]: Fix compilation of disman/{ping,traceroute} modules
-      - [PATCH 3402376]: Recognise ReiserFS systems
-      - [PATCH 3410050]: Skip already-'processed' varbinds
-      - [PATCH 3410059]: Fix sparsely augmenting trigger tables
-      - [PATCH 3447444]: Fix SIG_PIPE handling
-      - [PATCH 3447671]: Fix override handling of OID values
-      - [PATCH 3453868]: Factor common code into pass_common
-      - [PATCH 3479740]: Fix hrSWRunPerf statistics
-      - [PATCH 3487919]: Fix compilation when caching is disabled
-      - [PATCH 3487867]: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
-      - [PATCH 3495697]: Store persistent snmpTarget table changes
       - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
-      - DISMAN-SCHEDULER-MIB: Handle 32-char contextName values correctly.
-      - IF-MIB::ifType: Report InfiniBand interfaces correctly
-      - UDP-MIB: Report proper address in udpLocalAddress instead of 0.0.0.0.
-      - Eliminate various dead variables
-      - Return error instead of exiting on init problems
-      - Make the configuration of the dlmod module fail rather than
-	generate a dummy module if the dlopen function isn't available.
-      - Smux: simplify smux_list_detach()
+      - Eliminate assorted dead variables
+      - UDP-MIB: Report proper udpLocalAddress (instead of 0.0.0.0)
 
     snmpdx:
       - [PATCH 3445437]: Log AgentX disconnections (in line with connections)
 
     snmptrapd:
-      - Add missing newline character in a log message
+      - [BUG 3151254]: Fix crash with invalid traphandle directive
       - Avoid crash during shutdown due to invoking perl_destruct(NULL)
-      - Invoke shutdown_perl() when shutting down
       - Don't invoke shutdown_perl() from SIGTERM handler
       - Handle changes to libmysqlclient API (affects Fedora 15/16)
+      - Remove superfluous casts
 
-    apps :
+    apps:
       - [PATCH 2835577]: Replace SNMP_ZERO of arrays with a memset.
 
+    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
+
+    man:
+      - [BUG 3190725]: Document snmp{,_sess}synch_response and snmp_async_send
+
     mib2c:
-      - [PATCH 3211484]: Support enumerations in notification varbinds
+      - Make the mib2c foreach ranges work as advertised in the comments.
 
     perl:
-      - Eliminate various dead variables
       - Fix spelling in the documentation of the SNMP module
       - Fixed segmentation fault when handler registration fails.
-      - Make sure constant SNMP_DEFAULT_RETRIES is recognized
-      - Add constants NETSNMP_CALLBACK_OP_{RECEIVED_MESSAGE,TIMED_OUT}
+      - Don't open stderr unnecessarily (affects embedded agent)
 
     python:
       - [PATCH 3185085]: Fix segfault on 64-bit systems
 
-    Build/install:
-      - Install util_funcs subheaders
-
-    man:
-      - [BUG 3190725]: Document snmp{,_sess}synch_response & snmp_async_send
-
     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
 
-    BSD:
-      - [PATCH 3383965]: Fix if-mib agent compile warnings on *BSD
+    AIX:
+      - Eliminate configure warning regarding libperfstat.h (AIX 6.1ff)
+
+    Cygwin:
+      - Make date_n_time() produce time zone information
+      - Fix get_uptime() / hrSystemUptime implementation
 
     FreeBSD:
       - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing versions)
+      - Restore IP_RECVDSTADDR functionality.
+
     Linux:
+      - [PATCH 3205811]: Option to skip fd/loop/ram devices in diskIOTable
       - [PATCH 3525998]: Don't use an uninitialised value in error message
 
     MinGW:
       - Avoid "pragma comment" warnings in <net-snmp/net-snmp-config.h>
-      - Header file <net-snmp/net-snmp-config.h> now usable with MinGW
       - Made regression test output independent of Windows registry settings
 
+    NetBSD:
+      - Update memory and CPU statistics handling
+
+    OpenBSD:
+      - Support updating the routing table
+
     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
+	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.
@@ -109,245 +109,1012 @@
       - Snmptrapd: Make the IP address to hostname conversion work
 
 
-*5.5.1*
+*5.6.1*
+
+    general:
+      - Upgraded DTLS support from alpha to full; mention that tsm is
+	needed for TLS too
 
     snmplib:
-      - [BUG 2838243]: Correct the output of unsigned values
-      - [BUG 2919320]: Avoid accessing freed memory Reported by Tomasz Lis
-      - [BUG 2922390]: Fix test for missing contextName parameter
-      - [BUG 3093199]: Fixed bugs in 64-bit integer parsing
-      - [BUG 3134323]: Fix crash when comparing invalid OIDs
-      - [BUG 3171878]: Using SNMPv3 context does not work
-      - [PATCH 2871747]: plug memory leak in OID processing
-      - [PATCH 2952140]: Fix overflow of counter32 and gauge32 on 64bit systems
-      - [PATCH 2971270]: refuse to parse ASN.1 tokens with wrong type field
-      - [PATCH 3067540]: Fix IPv4 OID indexes on 64-bit big-endian systems.
-      - [PATCH 3058645]: Use MSG_DONTWAIT for the unix domain socket
-      - [PATCH 3165878]: Catch buffer overrun on 64-bit systems
-      - [PATCH 3203806]: Add function netsnmp_large_fd_set_select()
-      - Added function netsnmp_delete_table_data_set()
-      - Added netsnmp_xxx() memory allocation functions
+      - Added function netsnmp_delete_table_data_set().
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file.
+      - 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.)
       - Added macro netsnmp_static_assert().
       - Added snmp_sess_session_lookup().
-      - Avoid Valgrind complaints about uninitialized data
-      - Change the parsing of ranges to accept all valid values.
-      - Fix __cplusplus extern "C" wrapping
-      - Fix agent crash when sending encrypted SNMPv3 traps.
-      - Fix double free crash when releasing duplicated handlers
-      - Fix duplicate se_add_pair_to_list() memory leak
-      - Fix issue with USM using inactive users
-      - Fix potential buffer overflow when generating temp. file names
-      - Fix various problems with se_clear_slist()
-      - Force a ; at the end of the static_assert macro.
-      - Handle memory allocation failures in netsnmp_create_data_list
-      - Make sure that a mask is given to open when O_CREAT is specified
+      - 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.)
+      - 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.
+      - 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
+	specific to 64-bit systems. Fixes bug #3093199.
+      - Fixed memory leak triggered by calling se_add_pair_to_list() with a
+	value that already existed in the list.
+      - Invoking se_clear_slist() does no longer create a dangling pointer.
+      - Invoking se_clear_slist() does no longer create a dangling pointer.
+	Fixed leaks-at-exit triggered by using the snmp_enum code.
+      - 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().
+      - 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.
+      - 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. 
+      - force a ; at the end of the static_assert macro.
+      - netsnmp_handler_dup(): freeing the duplicated handler no longer
+	causes a crash (double free) when handler->myvoid of the original
+	handler was non-NULL.
 
     snmpd:
-      - [BUG 1840230]: Don't include the index object as (pseudo-)accessible column
-      - [BUG 2822360]: Fix memory leak when building table OIDs
-      - [BUG 2841008]: Protect against crash following failed AgentX response
-      - [BUG 2873858]: Fix handling of schedOwner index
-      - [BUG 2894059]: Handle errors when counting interfaces
-      - [BUG 2897000]: Suppress 32-bit counter truncation warnings
-      - [BUG 2900078]: Add support for OID variables with size in elements
-	               instead of bytes, correct sysObjectID to use this
-      - [BUG 2924140]: Fix termination of CPU/FPU types
-      - [BUG 2972579]: Fix checking of snmpTargetAddrRowStatus SET requests
-      - [BUG 3003981]: Protect against buffer overflow
-      - [BUG 3058101]: 64-bit systems only support writeable 'long' instances (not int)
+      - Patch 3141462: from fenner: fix agentx subagent issues with
+	multiple-object requests
+      - Patch from Niels to fix VACM persistant storage.
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	shutdown_agent() during shutdown.
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	shutdown_agent() during shutdown. The function clean_subtree() does
+	no longer trigger double frees and invalid memory reads. Note: this
+	function was already wrong at the time it was introduced (patch
+	#724925 / r8531, July 2003).
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	shutdown_agent() during shutdown. The function clean_subtree() does
+	no longer trigger double frees and invalid memory reads. Note: this
+	function was already wrong at the time it was introduced (patch
+	#724925 / r8531, July 2003). Removed a comment in
+	netsnmp_handler_free() that is now obsolete because of the
+	clean_subtree() changes.
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	shutdown_agent() during shutdown. The function clean_subtree() does
+	no longer trigger double frees and invalid memory reads. Note: this
+	function was already wrong at the time it was introduced (patch
+	#724925 / r8531, July 2003). Removed a comment in
+	netsnmp_handler_free() that is now obsolete because of the
+	clean_subtree() changes. Modified netsnmp_deregister_agent_nsap()
+	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().
+      - 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).
+      - 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
+	from a configuration file.
+      - Use the same autoconf symbol to decide both if strcasecmp should be
+	declared and if it should be defined.
+      - [BUG 1840230]: Don't include the index object as
+	(pseudo-)accessible column.
+      - [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 3178389]: Fix inconsistent handling of TZ offsets
-      - [BUG 3185528]: shutdown_master_agent didn't close UDP socket
-      - [PATCH 2119725]: Fix skipNFSInHostResources handling of hrStorageTable
-      - [PATCH 2825653]: Fix sendmail.cf parsing in certain conditions
-      - [PATCH 2835576]: Fix endianness issues in pass/pass_persist
-      - [PATCH 2877518]: Fix handling of scoped AgentX variables
-      - [PATCH 2883155]: Fix memory leak in proxy handling
-      - [PATCH 2883220]: Fix compilation problems when ifXTable is not included
-      - [PATCH 2887816]: Protect against division-by-zero crash
-      - [PATCH 2901029]: Fix compiler warning on CloseHandle()
-      - [PATCH 2903092]: Fix broken handling of broadcast entries.
-      - [PATCH 2904900]: Documentation plus assorted handler code fixes
-      - [PATCH 2911323]: Fix agent lockup when monitoring AgentX-delegated information
-      - [PATCH 2911361]: Remove redundant variables
-      - [PATCH 2911970]: Properly terminate linked list of registrations
-      - [PATCH 2941811]: Handle successful requests with reqID 0
-      - [PATCH 2967400]: Retrieve error counters for the EtherLike-MIB
-      - [PATCH 2968642]: Catch overflow of pass-through command buffer
-      - [PATCH 2975254]: Avoid callback re-use of closed sessions
-      - [PATCH 3044512]: Fix sysobjectid directive
-      - [PATCH 3053428]: Fix get_pid_from_inode when the inode is not found
-      - [PATCH 3053436]: Fix tcpConnectionTable_data_access invalid memory access
-      - [PATCH 3058140]: Check that inode is non-zero
-      - [PATCH 3062526]: Fix security engineID setting in 'trapsess' directive
-      - [PATCH 3074918]: Avoid memory leaks following CONTAINER_INSERT failures
-      - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 not supported
-      - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID column
-      - [PATCH 3096725]: sysORTable registation for notification log mib  
-      - [PATCH 3141462]: fix agentx subagent issues with multiple-object requests
-      - [PATCH 3152412]: Handle (and report) problems reading /proc/vmstat
-
-      - Add newly created/destroyed interfaces to ipv6IfTable
-      - Don't let MIB modules second-guess the cache handler
-      - Fix adding new addresses to ipAddressTable
-      - Fix engineID generation on outgoing v3 traps from the agent
-      - Fix erroneous "64bit wrap" warnings when computing ipSystemStats
-      - Fix invalid access to memory in TCP-MIB
-      - Fix IP-MIB::ipIfStatsReasmReqds value (typo)
-      - Fix IPv6 forwarding MIB object (boolean, not TruthValue)
-      - Fix rare race condition when reading RPM database
-      - Fixed race condition in hrSWRunTable
-      - Fix VACM persistant storage.
-      - Fix various memory & file-descriptor leaks
-      - Handle I/Fs without broadcast addresses (IF/IP-MIBs)
-      - Improve agent shutdown processing
-      - Improve error logging when freeing active caches
-      - Make sure that a mask is given to open when O_CREAT is specified
-      - Report GFS filesystems in hrStorageTable and hrFSTable
-      - Report real ifSpeed of (down) network interface (where possible)
-      - Skip non-AF_INET interfaces when loading ipv4 addrs
-      - Support N/W interfaces with HW address >6 bytes (e.g. InfiniBand)
-        in ipNetToMediaTable and ipNetToPhysicalTable.
-      - Support views with indexes values>255
-      - Suppress 32-bit truncation warnings (IP-MIB & TCP-MIB)
-      - Suppress missing iquerySecName warning if it won't be needed
-
-    snmpdx:
-      - changed default TCP target from 0.0.0.0:705 to localhost:705
+      - [BUG ]: enforce max length on TLS secName maps
+      - [PATCH 2119725]: Fix skipNFSInHostResources handling of
+	hrStorageTable
+      - [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 3096725]: Don't register v1Trap callback, if SNMPv1 is not
+	supported
+      - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID
+	column
+      - add debug for cert find hint as string/int
+      - add debug for ssl ciphers, clarify fingerprint match debug
+      - 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
+	function you are looking for. netsnmp_cache_is_valid() is not meant
+	for mib modules
+      - fix double free in TLS error handling
+      - 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
+	that opening the database succeeds.
+      - host/data_access/swinst_rpm: Pass correct path to rpmdbOpen() such
+	that opening the database succeeds. host/data_access/swinst_rpm:
+	Log an error message if rpmdbOpen() fails.
+      - instead of relying on NETSNMP_DS_LIB_APPTYPE, break out cert table
+	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.)
+      - 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.
 
     snmptrapd:
-      - [BUG 3151254]: Fix crash with invalid traphandle directive
-      - Fixed assorted double free at exit problems
+      - Fixed a double free at exit that was triggered by cleaning up the
+	data structures used for embedded Perl support. Fixed a double free
+	at exit that was triggered by cleaning up the data structures used
+	for embedded Perl support. Valgrind reported that double free as
+	follows: Invalid read of size 4 at 0x59D0501: perl_destruct (in
+	/usr/lib/perl5/5.12.1/x86_64-linux-thread-multi/CORE/libperl.so) by
+	0x544DF8E: shutdown_perl (snmp_perl.c:166) by 0x403966:
+	term_handler (snmptrapd.c:318) by 0x6D43A5F: ??? (in
+	/lib64/libc-2.11.2.so) Address 0x7660f88 is 56 bytes inside a block
+	of size 2,912 free'd at 0x4C26496: free (vg_replace_malloc.c:366)
+	by 0x544DF9A: shutdown_perl (snmp_perl.c:167) by 0x6DDADF2:
+	__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
+
+    build:
+      - [BUG 3088360]: Ensure python modules are built against the correct
+	libraries
+
+    building:
+      - Some systems do not support the -E flag to grep, use autoconf to
+	find the right egrep at all times.
+
+    perl:
+      - 0 patch 3049029: from fennec: fix a memory leak with snmp bulkwalks
+
+    testing:
+      - 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.
+      - It is again possible to run an individual test via the script
+	testing/RUNTESTS.
+      - It is now possible to analyze the unit tests with Valgrind by
+	setting the environment variables SNMP_SAVE_TMPDIR and
+	DYNAMIC_ANALYZER. An example: (export SNMP_SAVE_TMPDIR=yes
+	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.)
+      - 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.)
+
+    unspecified:
+      - [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
+
+    Cygwin:
+
+    Linux:
+      - [PATCH 3083027]: Fix RPM spec file to support CentOS
+      - 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
+	patch #3107003.
+      - snmpd is again single-threaded.
+
+    MinGW:
+      - configure: Detection of the functions gai_strerror(),
+	getaddrinfo(), gethostname() and gethostname() does now succeed.
+	(Backported r19646 from the trunk.)
+      - testing: If the agent has been asked to stop, wait until the snmpd
+	process disappeared before proceeding.
+
+    Win32:
+      - Avoid that MSVC reports a warning message about redefinition of the
+	malloc() macro during building the Net-SNMP source code.
+      - 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.
+      - 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.)
+      - testing: Avoid that T200 fails on known Microsoft SNMP extension
+	DLL bugs.
+
+*5.6*
+
+    snmplib:
+      - Add const declarations to the disabled versions of the debugging
+	code as well.
+      - Add missing dependencies between transports.
+      - Add missing symbol netsnmp_snmpSSHDomain_len, make
+	netsnmp_snmpSSHDomain const.
+      - Change oid to be a 32-bit type on ILP64 and LP64 platforms.
+      - Change the parsing of ranges to accept all valid values.
+      - Correct dependencies between transports. Remove unnecessary
+	includes.
+      - Correct the spelling of __cplusplus when checking if the file
+	should be wrapped in extern "C".
+      - Do not require that the UDP transport is included.
+      - Fix agent crash when sending encrypted SNMPv3 traps. Reported by
+	Srikapilan Gandhi
+      - Fix responding to broadcast requests. UDP responses are sent with
+	source IP address which was destination of appropriate requests
+	(implemented in SVN rev. 15215). But if the destination of a
+	request is broadcast IP address, the request was sent with the
+	broadcast address as source. sendmsg() on Linux does not support
+	this and returns error -> response is not sent. In order to send
+	responses from the same interface, interface index of the
+	appropriate interface must be used.
+      - Install library/oid.h. Thanks to "Tomasz Lis" who spotted the bug.
+      - Make the context argument of send_v3trap,
+	send_trap_vars_with_context and netsnmp_send_traps refer to a const
+	char*.
+      - Make the name argument to find_varbind_in_list const
+      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+      - Remove declarations of functions that don't exist or are declared
+	elsewhere.
+      - Remove the oid typedef from <net-snmp/library/asn1.h>. It is still
+	present in <net-snmp/types.h>, use that file.
+      - Replace the debugging functions with dummies when debugging is
+	disabled.
+      - Revert 17808, instead factor out the declaration of oid to it's own
+	file and include that file from both types.h and asn1.h
+      - Use a void argument for the data argument of xdump.
+      - [BUG 2919320]: Avoid accessing freed memory Reported by Tomasz Lis
+      - [BUG 2922390]: Fix test for missing contextName parameter
+      - [PATCH 2871747]: plug memory leak in OID processing. The memory
+	leaked when small OID, which could fit pre-allocated vp->name_loc,
+	was placed in different (allocated) one.
+      - [PATCH 2942940]: Add a new function, netsnmp_parse_args, that is
+	like snmp_parse_args but takes an additional bitmask, flags, to
+	affect the behaviour. Also remove the magic handling of some
+	application names.
+      - [PATCH 2971270]: refuse to parse ASN.1 tokens with wrong type
+	field. This may yield to problems with third-party applications
+	which may depend on parsing ugly ASN.1 data - we'll see...
+      - add function to validate RowStatus and StorageType varbinds - also
+	remove some duplicate code and fix comments indent mangled
+      - add functions to remove list/row data from request list
+      - add interface for duplicating a container
+      - add interface for duplicating a container container changes: add
+	flags field to container meta-data; chg binary_array container to
+	use container meta-data flags
+      - add remove function to container iterator; implement it for
+	binary_array
+      - added the functions netsnmp_malloc(), netsnmp_calloc(),
+	netsnmp_realloc(), netsnmp_strdup() and netsnmp_free().
+      - builds again when HAVE_GETADDRINFO is not defined.
+      - conf files can now include other conf files - also tweaked debug
+	tokens here and there
+      - create indexes for certificates in config path
+      - directory container enhancements - fix potential memory leak - add
+	filter callback to filter files returned - add option to return
+	relative and not full paths - add option to sort returned list -
+	add option to return empty container instead of NULL if no files
+	found - change default container name to directory that was scanned
+	- tweak debug/log messages
+      - enhance file utils and dir utils - add optional stats struct to
+	netsnmp_file - generalize dir container filter, add context to
+	callback - add option to store netsnmp_files (w/stats) in container
+	instead of just name
+      - fix potential double free in CONTAINER_FREE - also added several
+	compare routines
+      - netsnmp_container enhancements: - add free_item function; defaults
+	to netsnmp_container_simple_free - add CONTAINER_FREE_ALL
+	macro/function (like CONTAINER_CLEAR but calls container free_item
+	for each item in primary container) - add ability to set options on
+	binary_array containers
+      - new certificate api to support tls/dtls
+      - new snmp token logOption allows specifying log destinations vi conf
+	files - if stderr log enabled because of no log destination, turn
+	it off when a log destination is enabled - don't call
+	netsnmp_enable_stderrlog() from apps anymore
+      - obsoleted NETSNMP_DS_LIB_ALARM_DONT_USE_SIG. From now on using
+	SIGALRM to trigger Net-SNMP alarm handlers is no longer supported.
+	Motivation: as known libnetsnmp supports time-based alarms via the
+	functions snmp_alarm_register(), run_alarms() and other functions.
+	Two different ways to trigger the function run_alarms() are
+	supported inside libnetsnmp: 1. By making sure that the timeout
+	argument of select() is small enough such that select() returns
+	before the next alarm must be handled (when the variable
+	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to one, which is the
+	default). 2. By making sure that the kernel fires SIGALRM at the
+	time when run_alarms() should be called (when the variable
+	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to zero, which has to be
+	configured explicitly). The following issues are associated with
+	the second approach: 1. Alarm functions are used inside Net-SNMP to
+	e.g. refresh cached table contents. As far as I can see there is
+	nothing in the Net-SNMP source code that prevents the following
+	from happening: a table refresh triggered via SIGALRM while a row
+	is being removed from a cached table. This can result in dangling
+	pointer dereferences and even a crash. 2. POSIX restricts signal
+	handlers to calling functions that are either reentrant or
+	non-interruptible
+	(http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02
+	_04.html#tag_02_04). Standard I/O functions like printf() and
+	fprintf() are neither reentrant nor non-interruptible. run_alarms()
+	is called from inside a signal handler, which means that this
+	restriction applies to the function run_alarms() itself and all
+	functions called by it (which includes the alarm callback
+	functions). Or: e.g. snmp_log() and its callers must not be called
+	from inside run_alarms() when this function is invoked from inside
+	a signal handler. This is a severe restriction, and one that is
+	hard to work with. 3. Not all software developers know how to make
+	sure that signal delivery works correctly in a multithreaded
+	context. POSIX does not guarantee to which thread a signal like
+	SIGALRM will be delivered, unless that signal has been blocked
+	before thread creation and is unblocked after thread creation (see
+	also
+	http://www.opengroup.org/onlinepubs/009695399/functions/pthread_sig
+	mask.html). This is relevant for the Net-SNMP project not only
+	because a worker thread is created inside
+	agent/mibgroup/if-mib/data_access/interface_linux.c but also
+	because libnetsnmp is often used inside multithreaded software.
+	Currently no attempt is made to make sure that SIGALRM is processed
+	by the Net-SNMP event processing loop thread. If SIGALRM is
+	processed by another thread, this will result in one or more data
+	races. Because all the difficulties associated with processing
+	alarms from inside a signal handler function, and because fixing
+	these would require more effort than it is worth,
+	NETSNMP_DS_LIB_ALARM_DONT_USE_SIG has been deprecated and from now
+	on approach (1) is the only supported approach to trigger alarm
+	handlers.
+      - plit snmpIPBaseDomain and move the IPv4 parts to IPv4Base and the
+	socket generic parts to SocketBase.
+      - when freeing a cache, stop timer and call cache free func - also
+	add netsnmp_cache_remove
+      - new experimental simple state machine
+      - new experimental simple state machine new experimental row creation
+	API which uses a state machine to try really hard to create a row
+	from a given varbind list
+      - fix issue with USM using inactive users
+      - fixed potential buffer overflow when generating temp. file names
+      - implemented a fix for the issue reported in patch #3042770. Created
+	a snmp_select_info_flags function, and similar, that allow for
+	alarms to not be run. This is then used in the synch_response
+	functions to avoid 100% CPU loops
+      - patch: 3042770: from mehaf: Made run_alarms() reentrant
+      - when displaying a byte as single digit hex value, default to
+	prefixing with 0 unless there is a seperator or addition hint data
+      - 0 patch 3058645: from jorisesaturnus: modified version of the patch
+	to use MSG_DONTWAIT for the unix domain socket
+      - [PATCH 3067540]: Fix IPv4 OID indexes on 64-bit big-endian systems.
+
+    snmplib, snmpd:
+      - Do not check if values of type size_t are less than 0.
+      - Make sure that a mask is given to open when O_CREAT is specified
+
+    snmplib, snmpd, snmpnetstat:
+      - Add correct size prefixes when printing variables of type oid.
+
+    snmpd:
+      - Add support of network interfaces with HW address bigger than 6
+	bytes to ipNetToMediaTable and ipNetToPhysicalTable. Some HW, like
+	InfiniBand, uses HW addresses with 9 and more bytes. Snmpd on Linux
+	was not able to parse /proc/net/arp then and produced ugly 'ioctl
+	35123 returned -1' to log.
+      - Check the range of oid values towards the maximum oid value,
+	notULONG_MAX
+      - Extract the Exit and restart* subroutines from util_func in order
+	to make it possible to build less code for the minimal case.
+      - Fixed creation of views using snmpusm, OIDs with indexes > 255 are
+	allowed now. This reverts SVN commit #7492.
+      - Fixed invalid access to memory in TCP-MIB This partly reverts patch
+	17719 - the entries *are* used after raw_data container is freed.
+	These entries should be freed when associated rowreq_ctx is freed.
+      - Fixed logging of 'truncating integer value > 32 bits' in IP-MIB and
+	TCP-MIB The counters, which grow fast are now cut to 32bits.
+      - Fixed udpTable indexes on big-endian 64bit Linux. The index was
+	always '0.0.0.0' instead of real local IP address.
+      - Made subtree_context_cache::context_name a const char*.
+      - Make all the oids and oid lengths in agent_trap.c const and use
+	them from everywhere.
+      - Make the enterprise argument of netsnmp_send_traps and
+	send_enterprise_trap_vars const
+      - Only enable hostSwInst rpm support on linux hosts with librpm. This
+	makes it possible to build on non-rpm linux distributions.
+      - Removed the unused function xx_tokenize_exec_command from
+	utilities/execute.
+      - [BUG 2822360]: Fix memory leak when building table OIDs
+      - [BUG 2841008]: Protect against crash following failed AgentX
+	response
+      - [BUG 2873858]: Fix handling of schedOwner index. Patch provided by
+	Max Schubert.
+      - [BUG 2894059]: Handle errors when counting interfaces
+      - [BUG 2897000]: Suppress 32-bit counter truncation warnings.
+      - [BUG 2900078]: Add support for OID variables with size in elements
+	instead of bytes, correct sysObjectID to use this.
+      - [PATCH 2835576]: Fix endianness issues in pass/pass_persist
+      - [PATCH 2877518]: Fix handling of scoped AgentX variables
+      - [PATCH 2883092]: Support monitoring processes that should not be
+	running. Patch provided by Christian (cg75). Qn: Should this
+	functionality be back-ported to earlier lines?
+      - [PATCH 2883220]: Fix compilation problems when ifXTable is not
+	included.
+      - [PATCH 2887816]: Protect against division-by-zero crash
+      - [PATCH 2901029]: Fix compiler warning on CloseHandle() Endian
+	problems already addressed by patch #2835576
+      - [PATCH 2903092]: Fix broken handling of broadcast entries.
+      - [PATCH 2911323]: Fix agent lockup when monitoring AgentX-delegated
+	information
+      - [PATCH 2911970]: Properly terminate linked list of registrations.
+	Patch provided by Mirko Deckert.
+      - [PATCH 2956657]: Handle over-length AgentX OIDs. Patch provided by
+	Rob West
+      - [PATCH 2967400]: Retrieve error counters for the EtherLike-MIB
+	Patch supplied by Josef Moellers.
+      - [PATCH 2968642]: Catch overflow of pass-through command buffer.
+	Patch from Andreas Jaeger/Leonardo Chiquitto
+      - agent will no longer call table handlers if a set request for the
+	handler has invalid indexes
+      - agent will no longer call table handlers if a set request for the
+	handler has invalid indexes don't call cleanup on first request on
+	bad indexes. instead, set actual error later, and free request data
+	sets on first request for sets
+      - define and use new NETSNMP_LOGONCE macro
+      - fix crash in IF-MIB and IP-MIB when there are some interfaces with
+	broadcast IP address and some without. Reset the bcastentry in the
+	loop, so it cannot be inserted to the twice. Without this patch,
+	when an interface without broadcast address is processed, the
+	bcastaddress from previous loop is inserted into the container.
+	This obviously fails and the bcastentry is freed, but the container
+	still contains reference to it -> SIGSEGV.
+      - fix memory leak in ipAddressPrefixTable -
+	net_snmp_search_update_prefix_info returns different code, when the
+	entry was not inserted to list and can be freed.
+      - fix rare race condition when reading RPM database. Old rpm versions
+	return NULL instead of Header when another RPM instance holds
+	database locks. I.e. snmpd sometimes crashes when reading hr_swInst
+	and rpm is installing/updating/removing another package. As a
+	solution, whole RPM cache is thrown away and re-read when we got an
+	error from librpm. The whole process is restarted only three times,
+	to prevent endless loop.
+      - fixed a memory leak in TCP-MIB.
+      - fixed filedescriptor leak in Etherlike-MIB and RMON-MIB
+      - fixed memory leak when reading sensors for LM-SENSORS-MIB.
+      - fixed one leak-at-exit.
+      - include local port number in packet dumps. An example: Received 36
+	byte packet from UDP: [127.0.0.1]:53909->[127.0.0.1]:1161 0000: 30
+	22 02 01 01 04 06 70 75 62 6C 69 63 A1 15 02 0".....public... 0016:
+	04 37 F2 D4 9B 02 01 00 02 01 00 30 07 30 05 06 .7.........0.0..
+	0032: 01 01 05 00 .... Received SNMP packet(s) from UDP: GETNEXT
+	message -- ccitt.1 Sending 118 bytes to UDP:
+	[127.0.0.1]:53909->[127.0.0.1]:1161 0000: 30 74 02 01 01 04 06 70
+	75 62 6C 69 63 A2 67 02 0t.....public.g. 0016: 04 37 F2 D4 9B 02 01
+	00 02 01 00 30 59 30 57 06 .7.........0Y0W. 0032: 08 2B 06 01 02 01
+	01 01 00 04 4B 4C 69 6E 75 78 .+........KLinux 0048: 20 61 73 75 73
+	20 32 2E 36 2E 33 33 2E 32 2D 73 asus 2.6.33.2-s 0064: 63 73 74 20
+	23 31 20 53 4D 50 20 50 52 45 45 4D cst #1 SMP PREEM 0080: 50 54 20
+	53 61 74 20 41 70 72 20 33 20 32 31 3A PT Sat Apr 3 21: 0096: 31 30
+	3A 35 38 20 43 45 53 54 20 32 30 31 30 20 10:58 CEST 2010 0112: 78
+	38 36 5F 36 34 x86_64
+      - made sure that handler registration failure does not create
+	dangling pointers in the MIB subtree registry.
+      - report real ifSpeed of network interface even it is down. Some
+	interfaces can report their real speed, even they are down. And if
+	they can't, the fallback to 10Mbps is still there.
+      - table_data/tdata next handler will not be called during get
+	processing if no valid rows are found for the handler
+      - tdata helper now saves flags passed during creation; add tdata flag
+	to NOT create the table container
+      - translate NOSUCH*/ENDOFMIB errors during RESERVE1 to NOCREATION
+      - utilities/execute do not need anything from util_funcs, so stop
+	depending on it.
+      - fixed value of IP-MIB::ipv6InterfaceForwarding on Linux   The value
+	was 0 (not forwarding) or 1 (forwarding), should be 2 and 1 instead
+	- netsnmp_interface_entry.forwarding_v6 is boolean, not TruthValue.
+      - new API for indicating that persistent store needs to be saved
+	after the current request finishes processing
+      - [BUG 3003981]: Protect against buffer overflow
+      - [BUG 3019243]: Register execFix compatability directive correctly.
+      - patch 2912520: from listom: Free kmem references on shutdown
+      - patch: 3028923: from jenso: new copy of the bridge-mib perl
+	implementation
+      - report gfs filesystems in hrStorageTable and hrFSTable.
+      - [PATCH 2904900]: Documentation plus assorted handler code fixes
+      - [PATCH 2911361]: Documentation (Provided by Tomasz Lis)
+      - [PATCH 2911361]: Re-order code to group related functions together
+      - [PATCH 2911361]: Remove redundant variables
+      - [PATCH 2931446]: make the load averages writable.
+      - [PATCH 3044512]: fix sysobjectid directive.
+      - patch 2790249: from willpwillp: reduce cache time for the iftable
+	to 3seconds to increase accuracy
+      - patch 2825653: from bru5ce: fix sendmail.cf parsing in certain
+	conditions
+      - Log before returning.
+      - [PATCH 3053428]: fix get_pid_from_inode when the inode is not
+	found.
+      - [PATCH 3058140]: check that inode is non-zero
+      - patch 3062526: from mariog85: fix security engineID setting in the
+	trapsess directive
+
+    snmpdlib:
+      - new functions to make stash ptr and newrow available to
+	table_dataset handlers nonews: fix typo; tabs to spaces; use sizeof
+	instead of constant
+
+    snmpdx:
+      - changed default TCP target from 0.0.0.0:705 to localhost:705. This
+	is not only a more secure choice but it also makes it possible on
+	Windows systems to let an AgentX subagent connect to an AgentX
+	master agent running on the same system without having to set the
+	variable NETSNMP_DS_AGENT_X_SOCKET.
 
     snmptable:
       - [BUG 2837998]: Handle missing instance subidentifiers in results
-      - [PATCH 2850067]: Suppress extraneous "index" header token
+      - [PATCH 2850067]: Suppress extraneous "index" header token Patch
+	supplied by Dan Nelson
+
+    snmpusm:
+      - Prefer to use a variable of the right type over an ugly cast.
+	Lessen the scope of the variable as well.
+      - patch from Martin Bjorklund to add a -Cw option to use
+	createAndWait for agents that are strict about not allowing a row
+	to be set to active until the authentication password has been
+	changed; plus white-space clean up, manual additions and help
+	output modifications by hardaker
+      - Correct ifdefs, remove dead variables.
+
+    man:
+      - clean up manual pages (from Debian patch 56_manpage)
+
+    snmpwalk:
+      - Handle the case when the end oid is longer than the current oid
+	correctly
+
+    apps:
+      - Add command to send AgentX notify requests to a master agent.
+      - Generic host-specific configuration snmp.conf files are now read.
+	See the HOST-SPECIFIC FILES section of the snmp.conf manual page.
+      - Only build agentxtrap if the agentx libraries are built. Add a test
+	case for agentxtrap. The enablement/disablement is inspired by
+	automake conditionals
+      - T command line flag can be used to configure transports
+      - A new 'snmptls' command for manipulating the agent's TLS configuration
+
+    apps, snmplib:
+      - [PATCH 2835577]: identified by "Bart Van Assche": Replace SNMP_ZERO
+	of arrays with a memset.
 
     snmptranslate:
       - fixed printing of ranges with UNSIGNED type.
 
-    snmpusm:
-      - Correct ifdefs, remove dead variables.
-
-    snmpwalk:
-      - Fix handling of end OID being longer than the starting OID
-
     build:
-      - [BUG 3102904]: Build with -fno-strict-aliasing (if supported)
-      - Add detection of lm_sensors version
-      - Avoid use of "tail -1" (non POSIX-compliant)
-      - Do not call VACM APIs if VACM module is not included
-      - Fix building static applications using net-snmp-config
-      - Fix compilation with rpm-4.6 (using legacy API)
-      - Fix 'make test TESTOPTS="-P tcp"'
-      - Fix order of rpmlib detection and agent module configuration
-      - Run rpm configure checks for (rpm-based) hr_swinst rewrite
-      - Use a sensible default for system location (if no domain name found)
+      - [PATCH 2952020]: Explicitly set permission on temporary testing
+	output directories. Patch provided by Leonardo Chiquitto.
+      - run rpm configure checks for hr_swinst rewrite (rpm version only)
+      - Do not call vacm_standard_views() or init_vacm_config_tokens() if
+	the corresponding module was not compiled (from Debian patch
+	61_vacm_missing_dependency_check)
+      - Fix ipv6 generic case so test matches verification
+
+    building:
+      - 'make test TESTOPTS="-P tcp"' works fine now
+      - 0 In case exec_prefix is unset then set it to '${prefix}' in order
+	to pick up overrides of $prefix in make install.
+      - Building Net-SNMP with dmalloc support enabled is again possible.
+      - Do not link with libnetsnmphelpers any more as it is empty.
+      - Fixed compilation with rpm-4.6. Turn on the legacy API when rpm-4.6
+	is detected.
+      - Introduced the variable 'with_socklib' in the configure script.
+	This variable is set to "winsock2" for MinGW and to "default" for
+	all other systems. Winsock2 tests are only run if this variable is
+	set to "winsock2" (MinGW).
+      - OS header detection check is now run before IPv6 stack detection.
+      - Use AC_REPLACE_FUNCS to handle code that is missing on some
+	platforms.
+      - Use autoconf to decide if inet_ntop.c and inet_pton.c are to be
+	compiled.
+      - Use the same compiler command and flags for building of tests as
+	for building of the code, thus enabling test of e.g. 32-bit code
+	compiled on a 64-bit platform.
+      - abort if the file program could not be found, since this is
+	essential for proper operation of libtool.
+      - added detection of lm_sensors version. I am not Autoconf guru, so I
+	hope I got it right. The goal is to define NETSNMP_USE_SENSORS_V3
+	*before* config_modules_agent processes
+	agent/mibgroup/hardware/sensors.h.
+      - made sure that the configure script does no longer invoke "tail
+	-1", which is not POSIX-compliant.
+      - save configure cache every once in while
+      - update Version-Munge for renamed configure.ac
+      - when generating a default value for the system location and no
+	domain name is found in /etc/resolv.conf, use "@no.where" instead
+	of "".
+      - Add new test* entries from the testing Makefile.in to the top-level
+	Makefile.in
+
+    building, Win32:
+      - Remove a few unused configure symbols
+
+    hpux:
+      - fix build error on HP-UX 10.20
+
+    libnetsnmp:
+      - Support for a stream-line stripped down version of internal OpenSSL
+	support using --with-openssl=internal
+
+    libnetsnmpagent, libnetsnmphelpers:
+      - moved the functions netsnmp_bulk_to_next_fix_requests(),
+	netsnmp_get_bulk_to_next_handler(), netsnmp_register_null(),
+	netsnmp_register_null_context() and netsnmp_register_old_api() from
+	libnetsnmphelpers to libnetsnmpagent. Notes: - This does not affect
+	backwards compatibility for applications that link with
+	$(net-snmp-config --agent-libs) since this involves linking with
+	both libnetsnmphelpers and libnetsnmpagent. - Functions have been
+	moved between libraries by moving entire source files.
+
+    library:
+      - [PATCH 2952140]: Overflow counter32 and gauge32 on 64bit systems
+	correctly Patch provided by Leonardo Chiquitto
+
+    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 2972860]: Update broken references
-      - Clean up manual pages (from Debian patch 56_manpage)
 
     mib2c:
-      - [BUG 2888569]: Fix generation of table columns array
       - Remove unnecessary casts to u_char*
-      - make the mib2c foreach ranges work as advertised in the comments
+      - [BUG 2888569]: Fix generation of table columns array
+      - mib2c can now optionally run sed on generated code
+      - table_data template enhancements - add error checks during table
+	init - create cache earlier so we can bail on failure - add option
+	to create/delete row w/out adding/removing from container
+      - update inline documentation; add storagetype test for columns
 
     mibs:
       - [BUG 2973890]: Fix imports, DiskIOEntry list and revision histories
-      - [PATCH 2974716]: Fix issues in the SMUX-MIB
+      - patch 2974716: from bvassche: fix issues in the SMUX-MIB
 
     misc:
-      - [PATCH 2836112]: Use the right modifier for size_t/ssize_t variables
-      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt... 
+      - [PATCH 2836112]: Use the right modifier when printing size_t and
+	ssize_t variables.
+      - [PATCH 2952708]: Osterkamp: Added Perl implementation of BRIDGE-MIB
 
     perl:
-      - [PATCH 2890931]: Better handling of Counter64 values
-      - [PATCH 2995098]: Fix creation of SNMPv3 sessions with API_SINGLE
-      - [PATCH 3046371]: Fix memory leak in SNMPv1 trap handling
-      - [PATCH 3049029]: Fix memory leak with snmp bulkwalks
-      - Don't automatically open stderr (breaks embedded perl within the agent)
-      - Fix various other memory leaks, out-of-bounds array access
-            and uninitialized variable access issues
-      - Fix several "Free to wrong pool" errors
+      - NetSNMP::agent::netsnmp_request_infoPtr::getValue(): don't return a
+	pointer to a buffer on the stack. How can this have worked reliably
+	?? NetSNMP::agent::netsnmp_request_infoPtr::setValue(),
+	ASN_COUNTER64: fixed bug that could cause this method to fail even
+	when a valid number was provided.
+      - [PATCH 2890931]: Better handling of Counter64 values. Patch
+	provided by Max Romanov.
+      - fixed a memory leak triggered by destroying a
+	NetSNMP::agent::netsnmp_handler_registration object.
+      - fixed a memory leak triggered by destroying a
+	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
+	leak triggered by failure of creating a NetSNMP::OID object.
+      - fixed a memory leak triggered by destroying a
+	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
+	leak triggered by failure of creating a NetSNMP::OID object. fixed
+	a memory leak triggered by the NetSNMP::OID::gettable() subroutine.
+      - fixed a memory leak triggered by destroying a
+	NetSNMP::agent::netsnmp_handler_registration object. fixed a memory
+	leak triggered by failure of creating a NetSNMP::OID object. fixed
+	a memory leak triggered by the NetSNMP::OID::gettable() subroutine.
+	fixed an out-of-bounds array access triggered by the implementation
+	of NetSNMP::SNMP. fixed a memory leak triggered by a PDU processing
+	error in NetSNMP::SNMP. fixed memory leaks triggered by creating an
+	SNMPv3 session via NetSNMP::SNMP. Also fixed the uninitialized
+	variable accesses triggered by adding a varbind to a PDU via
+	NetSNMP::SNMP introduced a few days ago. The bugs mentioned above
+	have been found by inspecting the output of the following shell
+	command: cd perl && valgrind --trace-children=yes --leak-check=full
+	make test
 
     python:
-      - [BUG 2919379]: Initialise SNMP sessions properly
-      - [BUG 3088360]: Ensure python modules are built against the correct libraries
+      - [BUG 2919379]: Initialise SNMP sessions properly Provided by Diego
+	Billi
       - [PATCH 2001656]: Handle null-termination of string values properly.
-      - [PATCH 3035328]: Detect failures in session creation
-      - [PATCH 3035578]: Update error codes
-      - Support null-bytes in octet strings
+	Based on the principles of the patch from Tommy Beadle.
+      - Support null-bytes in octet strings Patch supplied by Tommy Beadle
+      - [PATCH 3035328]: from: sws: check the results of session creation
+	for a failure case.
+      - patch 3035578: from sws: keep error codes up to date
 
-    test:
-      - [PATCH 2952020]: Explicitly set permission on output directories
-      - Support dynamic analysis of regression tests
-      - Fix tests (T030) for MinGW
+    testing:
+      - Brand new test suite desigened to eventually test more
+	functionality, provide for support of unit-tests and support of API
+	tests
+      - Change the test suite to work even if mib lookup is disabled.
+      - Check the size of sun_path and use that to generate the maximal
+	size strings for stressing com2secunix.
+      - Make it possible to run the test suite from anywhere. Change the -D
+	option to expect the path of the top source directory. Add an
+	-srcdir option that is an alias for -D. Add an -builddir option to
+	designate the directory where the test object is. Put srcdir and
+	builddir in the environment for the test scripts Factor out the
+	grep part of SKIPIF and SKIPIFNOT to ISDEFINED Use more readable
+	keys in the opts hash in RUNFULLTESTS Adjust everything to use
+	srcdir and builddir
+      - Move the setting of MIBDIRS from the support script to the drivers
+	since it is needed for the C tests as well.
+      - Use olducd_run, not run_olducd. Change srcdir to refer to the top
+	directory and not the testing subdirectory as that is what is
+	expected in the test scripts.
+      - add the test name to the start of the file "invoked".
+      - made it possible to analyze all code covered by the regression
+	tests with a dynamic analyzer, at least if that analyzer supports
+	following child processes. An example:	 rm -rf /tmp/snmp-test-*
+	make -s SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="valgrind
+	--trace-children=yes --track-origins=yes" make -s test grep -i
+	uninitialised /tmp/snmp-test-* | xargs less
+
+    unspecified:
+      - Change the types of the return values of netsnmp_*_getSecName from
+	char* to const char* since they point into internal structures.
+      - Hide most functions and variables in the logmatch module. Cleaned
+	up the header accordingly. Remove the need for forward declarations
+	by reordering the functions.
+      - Make the lists of com2Sec*Entries static
+      - [BUG 2838243]: Correct the output of unsigned values. Thanks to
+	Jack Huang of Qualcomm who pointed out this bug.
+      - [BUG 2969872]: made sure that SOCK_STARTUP is invoked before
+	init_agent() on Windows.
+      - [BUG 2971257]: Fixed winExtDLL handling of multi-varbind getNext
+	requests with OIDs in reverse lexicographical order.
+      - [PATCH 2926374]: from Ed Swierk: fixed reading of ipAddressTable
+	from /proc/net/if_inet6 on Linux The kernel might provide longer
+	fields, especially on 64-bit systems.
+      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt... Patch
+	supplied by Leonardo Chiquitto
+      - add functions to get fingerprint from cert and log openssl errs
+      - added a new DEBUGTRACETOK() macro
+      - correctly calculate ifXTable.ifHCInUcastPkts on 32-bit Linux Linux
+	does not provide standalone counter for incoming unicast packets
+	(iucast) - it provides counter of all packets (iall) + separate
+	counter for the multicast ones (imcast). Previous implementation of
+	ifTable read these counters and calculated iucast = iall - imcast
+	*before* these values were expanded into 64bits. This produced
+	errors on 32bit systems when iall overflowed to zero and imcast was
+	nozero -> iucast got negative and 'c64 32 bit check failed' error
+	in snmpd log. Now the agent expands these values to 64bits first
+	and *	  *then* performs    the calculation, using a new flag. 
+	2010-05-27 08:18  magfr
+      - fixed memory leak in RMON-MIB and ETHERLIKE-MIB when there are
+	multiple aliases of an network interface Rationale: the aliased
+	interfaces have the same ifIndex -> CONTAINER_INSERT fails, but the
+	rejected entry was not freed.
+      - generate the transport initialization function list dynamically and
+	use it
+      - moved all functions defined in libnetsnmphelpers to
+	libnetsnmpagent. libnetsnmphelpers is now an empty library.
+      - moved transport code into a separate subdirectory in snmplib
+      - [BUG 3027900]: when cross-compiling it is now assumed that memcmp()
+	is available instead of assuming that it is not available.
+      - Do no double declare the index values.
+      - Handle embedded %'s in the result message.
+      - ilence some compilation warnings from test cases.
 
     Cygwin:
-      - [BUG 2997492]: byte order of udpLocalPort is now correct
-      - Enabled Unix transport
-      - Fix building with IPv6, OpenSSL & embedded Perl support
-      - Fix building with remotely mounted source files
-      - Fix free UDP port detection in regression tests
-      - Fix out-of-range array access in 'interfaces' table
-      - libnetsnmp now builds as a DLL when configured with --enable-shared
-      - Omit inet_ntop.c and inet_pton.c
-      - perl modules do now build (--with-perl-modules).
-      - Removed winpipe.c from the list of source files
-
-    HP-UX:
-      - fix build error on HP-UX 10.20
+      - IPv6 is only supported under Cygwin 1.7 or later. The old
+	implementation of IPv6 support in Net-SNMP under Cygwin involved a
+	strange mixture of Cygwin and Winsock2 socket calls, which was too
+	hard to maintain.
+      - IPv6 is only supported under Cygwin 1.7 or later. The old
+	implementation of IPv6 support in Net-SNMP under Cygwin involved a
+	strange mixture of Cygwin and Winsock2 socket calls, which was too
+	hard to maintain. builds again with IPv6 support enabled
+	(--enable-ipv6). At least Net-SNMP 5.5 doesn't build under Cygwin
+	with IPv6 support enabled. The configure script reported "checking
+	ipv6 stack type ... result: "unknown, no" ... error: IPv6
+	transports not available if IPv6 support is not enabled".
+      - [BUG 2939168]: byte order of udpLocalPort is now correct.
+      - [BUG 2939168]: fixed test infrastructure ("make test"). This has
+	been fixed by using the proper environment separator character and
+	by adding the path of the netstat executable for Cygwin in
+	testing/TESTCONF.sh.
+      - abort if the file program could not be found, since this is
+	essential for proper operation of libtool. neither compile nor link
+	winpipe.c.
+      - building with another OpenSSL package than the Cygwin-provided
+	packages openssl and openssl-devel is again possible.
+      - builds now also when the source files are located on a Samba
+	filesystem instead of a local filesystem.
+      - enabled Unix transport. (Forward-ported r18687 from the V5.5
+	branch).
+      - libnetsnmp does now build as a DLL when configured with
+	--enable-shared.
+      - libnetsnmp does now build as a DLL when configured with
+	--enable-shared. perl modules do now build (--with-perl-modules).
+	Note: the T060trapdperl_olducd, T061agentperl_olducd and
+	T115agentxperl_olducd tests still fail.
+      - libnetsnmpmibs, libnetsnmphelpers and libnetsnmpagent do now build
+	as a DLL when configured with --enable-shared.
+      - perl: building the Perl modules with the Cygwin Perl package is now
+	possible. (Forward-ported r18688 from the V5.5 branch.)
+      - the message "configure: WARNING: winsock.h: present but cannot be
+	compiled" does no longer appear when running the configure script.
+	Follow-up for r18050: re-enabled libiphlpapi and iphlpapi.h tests
+	for non-MinGW platforms since the Cygwin build needs these.
+      - corrected error handling in mibII/at.
 
     Linux:
-      - [BUG 2985915]: Fix build without embedded Perl
-      - [PATCH 2926374]: Fix reading of ipAddressTable from /proc/net/if_inet6
-      - [PATCH 2959811]: Reimplement Netlink IPv6 prefix listener
-      - [PATCH 3083027]: Fix RPM spec file to support CentOS
-      - [PATCH 3107003]: Suppress ipNetToPhysicalTable error messages
-                         for tunnel and similar (non-physical) interfaces
-      - Fix calculation of ifHCInUcastPkts on 32-bit Linux
-      - Fix udpTable indexes on big-endian 64bit Linux
-      - Fix value of IP-MIB::ipv6InterfaceForwarding
-      - Fixed 32-bit truncation warning on UCD-SNMP-MIB::systemStats
-      - Improved EtherLike-MIB support 
-      - Pass correct path to rpmdbOpen, and log errors
-      - snmpd is again single-threaded.
+      - Improved EtherLike-MIB support Patch supplied by Josef Moellers
+      - builds again with embedded Perl disabled (bug 2985915).
 
-    NetBSD:
-      - DragonFly support
-      - Retrieve MIB-II network statistics via sysctl
-      - Update memory and CPU statistics handling
-
-    OpenBSD:
-      - Fix order of headers when checking <netinet/in_pcb.h>
-      - Support updating the routing table
-      - Update SWRun code to use kvm_getproc2
+    MinGW:
+      - building with another OpenSSL package than the Cygwin-provided
+	packages openssl and openssl-devel is again possible. building with
+	OpenSSL works again.
+      - running the regression test suite is again possible ('make test').
+      - struct sockaddr_in6.sin6_scope_id configure test does now work.
+      - winExtDLL compiles now under MinGW. building Net-SNMP works again.
+	Detailed overview: * Changes in the configure script:
+      - refuse to run the regression tests if kill.exe cannot be found.
+      - run_shell_command() with either input or output (but not both) does
+	now work. This did not work until now because on MinGW mkstemp()
+	generates a MinGW-style path (/tmp/...) while system() invokes
+	cmd.exe and hence expects a Windows-style path (C:\...).
+      - testing: skip the tests that require SIGHUP since MinGW does not
+	support SIGHUP.
+      - tests T059 and T065 do now pass.
+      - tests T110, T111, T112, T120, T121 and T122 do now pass when snmpd
+	is built with winExtDLL support enabled.
 
     Solaris:
-      - Fix crash triggered by missing package version information 
+      - OS header detection check is now run before IPv6 stack detection.
+	sockaddr_in6.sin6_addr configure test does now work.
+      - Protect against missing package version information crashing the
+	agent. Problem reported by Inyaven Sakarai.
 
-    Windows:
-      - [BUG 2969872]: Ensure SOCK_STARTUP is invoked before init_agent
-      - [BUG 2971257]: Fixed winExtDLL handling of multi-varbind getNext
-	               requests with OIDs in reverse lexicographical order
-      - Avoid test failure (T200) on known MS SNMP extension DLL bugs
-      - Fix and improve batch build using recent versions of Visual Studio
-      - Fix build under MinGW
-      - Fix build with 64-bit compiler
-      - Fix building with IPv6 and OpenSSL support
-      - Fix handling of strtoull (both MSVC 6.0, and 2002 & above)
-      - Fix handling of winExtDLL multi-varbind SET requests
-      - Fix MIB output truncation with winExtDLL GETNEXT requests
-      - Fix out-of-range array access in 'interfaces' table
-      - Halt agent on key press, when run in command prompt window (to aid debugging)
-      - Improve Net-SNMP DLL build
-      - Improve support for winExtDLL build
-      - Suppress/remove various compilation warnings
-      - winExtDLL: Don't trigger an assertion if no extension DLLs loaded
-      - winExtDLL: Improve RFC-compliance of response error codes 
-      - winExtDLL: Log the reason why loading an extension DLL fails
-      - winExtDLL: Fix a memory leak when SnmpExtensionQuery(Ex) fails
+    Win32:
+      - Fix batch build using recent versions of Visual Studio. Partial
+	back port of SVN revisions 17573 and 17696.
+      - The header file <sys/timeb.h> is no longer included from
+	<net-snmp/types.h>. Or: the header file <sys/timeb.h> will have to
+	be included explicitly in source files that need the declaration of
+	the function ftime(). Note: compared to r18024 and before, this
+	change does not affect BSD systems -- <sys/timeb.h> was only
+	included from <net-snmp/types.h> on BSD systems in revisions
+	r18025..r18152.
+      - added #include <malloc.h> in win32/net-snmp/net-snmp-config.h such
+	that the MSVC compiler doesn't get confused by the malloc
+	redefinition when building libsnmp as a DLL.
+      - added the functions netsnmp_malloc(), netsnmp_calloc(),
+	netsnmp_realloc(), netsnmp_strdup() and netsnmp_free(). snmplib:
+	removed the troublesome #define malloc netsnmp_malloc etc. This
+	means that when calling functions from the Net-SNMP DLL from C or
+	C++ code that is being linked against another version of the MSVC
+	runtime DLL than the Net-SNMP DLL, and when allocating memory that
+	will be freed by the Net-SNMP DLL, you will either have to call the
+	Net-SNMP memory allocation functions explicitly or redefine
+	malloc() etc. yourself.
+      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
+      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
+	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
+	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
+	silent.
+      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
+	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
+	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
+	silent. batch build: removed /Fp... and /YX. These options
+	influence how precompiled header files are generated, which are not
+	used inside the Net-SNMP project. /YX is not supported by MSVC
+	2008.
+      - batch build: replaced the obsolete /GX by the equivalent /EHsc.
+	batch build: added /D "_CRT_SECURE_NO_WARNINGS" /D
+	"_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008 more
+	silent. batch build: removed /Fp... and /YX. These options
+	influence how precompiled header files are generated, which are not
+	used inside the Net-SNMP project. /YX is not supported by MSVC
+	2008. batch build: removed a duplicate occurrence of strtoull.obj.
+      - building: Added libsnmp.def to the list of libsnmp_dll.dsp source
+	files such that the DLL is rebuilt when the .def file has been
+	modified.
+      - building: building NetSNMP.pm does no longer trigger compiler
+	warnings about redefining _WIN32_WINNT nor NTDDI_VERSION.
+      - building: converted .dsp/.dsw files to .vcproj/.sln files. This
+	implies that support for MSVC 6.0 has been dropped and the minimum
+	Microsoft Visual Studio version required to build the Net-SNMP
+	source code is Microsoft Visual Studio .NET (2002).
+      - building: made building NetSNMP.pm more silent by adding the MSVC
+	compiler flags -D_CRT_SECURE_NO_WARNINGS
+	-D_CRT_NONSTDC_NO_WARNINGS.
+      - building: made building more silent by not redefining malloc() or
+	free() during compilation of Perl extensions (resulted in warnings
+	about malloc() / free() redefinition in the Perl header
+	CORE/XSUB.h).
+      - building: renamed libsdll.dsw into win32dll.dsw.
+      - building: renamed libsdll.dsw into win32dll.dsw. building:
+	simplified linking the Net-SNMP applications with netsnmp.dll by
+	adding all application projects to the same workspace that is used
+	for building the DLL.
+      - building: renamed libsdll.dsw into win32dll.dsw. building:
+	simplified linking the Net-SNMP applications with netsnmp.dll by
+	adding all application projects to the same workspace that is used
+	for building the DLL. building: made building netsnmp.dll less
+	error prone by letting the compiler print an error message if the
+	preprocessor symbol NETSNMP_USE_DLL has not been defined.
+      - building: simplified the build process by removing the file
+	win32/libsnmp_dll/libsnmp.def.in. Which IPv6 functions are exported
+	from netsnmp.dll is now determined by which of the functions in
+	this DLL have been declared as NETSNMP_IMPORT.
+      - building: simplified the procedure for building with SNMPv3 support
+	enabled (OpenSSL).
+      - 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*. 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.
+      - declared all functions that are exported from the Net-SNMP DLL as
+	NETSNMP_IMPORT. The result is a minor optimization: code that uses
+	the Net-SNMP DLL will now call the DLL-exported functions directly
+	instead of indirectly via the stub in the import library.
+      - exported netsnmp_read_module() from netsnmp.dll such that
+	NetSNMP.pm builds again.
+      - exported netsnmp_set_line_buffering() from netsnmp.dll.
+      - libsnmp builds again as a DLL when IPv6 is enabled.
+      - perl: fixed several "Free to wrong pool" errors. Note: since
+	calloc() is not redefined in <CORE/XSUB.h> using calloc() directly
+	or indirectly leads to "Free to wrong pool" errors, at least on
+	Windows.
+      - winExtDLL: don't trigger a netsnmp_assert() when no extension DLLs
+	have been loaded.
+      - winExtDLL: fixed a bug in getNext handling that could cause the MIB
+	output to be truncated.
+      - winExtDLL: multiple varbind set requests are now processed
+	correctly.
+      - winExtDLL: multiple varbind set requests are now processed
+	correctly. winExtDLL: made error codes in SNMP response PDUs as
+	RFC-compliant as possible.
+      - winExtDLL: multiple varbind set requests are now processed
+	correctly. winExtDLL: made error codes in SNMP response PDUs as
+	RFC-compliant as possible. winExtDLL: if loading an extension DLL
+	fails, the reason why loading failed is now logged.
+      - winExtDLL: multiple varbind set requests are now processed
+	correctly. winExtDLL: made error codes in SNMP response PDUs as
+	RFC-compliant as possible. winExtDLL: if loading an extension DLL
+	fails, the reason why loading failed is now logged. winExtDLL:
+	fixed a memory leak that occurred when SnmpExtensionQuery(Ex)
+	failed. This memory leak has been found via source reading. Note:
+	it is not clear whether it was possible to trigger this memory
+	leak. This leak is certainly not triggered by every request for
+	which a response with non-zero error status is sent back.
+      - Suppressed "implicit cast from int to u_char" warnings generated by
+	MSVC.
+      - made sure that accessing the mibII interfaces table does not
+	trigger out-of-range array accesses (was detected by
+	BoundsChecker).
+      - Fix build under MinGW back/forward port of revision 18631
+
+
 
 *5.5*
 
@@ -814,6 +1581,7 @@
       - Build fixes for embedded Perl
       - Fix default shared library building instead of forcing static
       - Use "-Wl,-brtl" when compiling with gcc
+      - [PATCH 2886598]: Header fixes for compiling on AIX6
 
     FreeBSD:
       - [BUG 1073782]: Restore PerfStat values for FreeBSD 5.x systems.
@@ -965,6 +1733,9 @@
       - fixes for 64-bit platforms
       - make perltest fixes for HP-UX
       - make perltest fixes for IRIX
+      - [PATCH 2995098]: Fix creation of SNMPv3 sessions with API_SINGLE
+      - patch 3046371: from christophb4: Fix memory leak in SNMPv1 trap
+	handling.
 
     mib2c:
       - [BUG 1479916]: Restore consistency in row creation code.
@@ -1002,3 +1773,5 @@
       - [BUG 1205300]: nlist err: neither nproc nor _nproc found (same for
 	rt_table, rthashsize, rthost, rtnet)
 
+    qnx6:
+      - [PATCH 2836895]: support for QNX6
diff --git a/ChangeLog b/ChangeLog
index 907caa1..79f948b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,24 @@
 ----------------------------------------------------------------------
 
-Changes: V5.5.1 -> V5.5.2
+Changes: V5.6.1 -> V5.6.2
+
+commit 976696a128e57b512bf7ad400d002368b4a9a871
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 14:34:31 2012 +0100
+
+    V5-6-patches out of Release Candidate
+
+commit 57c568d3d398172c5541fb31bb75d18fcce2e26f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 14:34:15 2012 +0100
+
+    Version number update: 5.6.2
+
+commit 73d906bc7c98506fa2b4d6d290f7b3beba2e4a0d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 11:12:58 2012 +0100
+
+    version update for 5.5.2
 
 commit 42b5afb3cd6d06adb426f1dbaa98358f2b2e8a53
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
@@ -56,12 +74,38 @@
 
     after pulling all the branches, switch back to the initial one
 
+commit 6a075ae494c76b82eea96327cf5242df048743db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:21:08 2012 +0100
+
+    version update for 5.6.2.rc3
+
+commit a37e7e02945147bfe6cadb9571706c6b2ec743bf
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:17:42 2012 +0100
+
+    version update for 5.6.2.rc3
+
+
+commit 5953cfd855b7a565672cef9429497141c7d9be12
+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
 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
+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 f79a54f2472508b167d977f367c3864b5621e89d
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 13:42:53 2012 +0100
@@ -74,18 +118,24 @@
 
     version update for 5.5.2.rc3
 
-commit fe107794e7400d239e8af3da8b4a3fbef06b5da9
+commit af1d00ab0246275dadb5f0cd3a23a77d5f5598cd
 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 b6953b52c4ec426491146e1cc0f560b2173695b0
+commit f18776d63a516020317e58875ab24352d5db8651
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 13:28:26 2012 +0100
 
     Version number update: 5.5.2.rc3
 
+commit fe107794e7400d239e8af3da8b4a3fbef06b5da9
+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 0f84fbcf71995bddafab500d87c9c5a6f461a734
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Fri Jun 22 12:29:34 2012 +0100
@@ -133,12 +183,37 @@
 
     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 5109ae77b6c1d549d91e32827f4a2cac05383d58
+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 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
@@ -163,36 +238,54 @@
 
     version update for 5.5.2.rc2
 
-commit 2670ba6a5b0027d11ec3a5e18fe87db385f5e0e4
+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 e79e387b3e18b487ef4172c9d24eb9523404d0ad
+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 cefc6f7bd4fee0f5057e49300a6b1d15d2fd4f58
-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 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
@@ -219,6 +312,24 @@
 
     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
@@ -263,6 +374,14 @@
     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
@@ -287,56 +406,24 @@
 
     Check need for -lm to use round/exp
 
-commit 137fe582d6cc5611430dab46ef144efd84cfc803
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Fri Apr 6 20:46:56 2012 +0100
+Date:   Mon Apr 9 20:35:35 2012 +0100
 
-    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
-    (snmp_store_needed() API is not available in 5.[45].x)
+    Version number update: 5.6.2.pre2
 
-commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+commit a79141a419953d010a6989e8b88f4df127394d38
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Apr 2 16:12:12 2012 +0100
+Date:   Mon Apr 2 09:19:26 2012 +0100
 
-    FreeBSD-9: Fix for 'const'ifyed nlist arguments
-    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
 
-commit 7e95d80b698051259645c074a53ffd264a6fa916
-Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Apr 2 16:06:56 2012 +0100
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
 
-    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 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
+    Running autoheader / autoconf
 
 commit cecd4869deb68f3d4c71e768d5b40dd576446925
 Author: Niels Baggesen <nba@users.sourceforge.net>
@@ -344,6 +431,12 @@
 
     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
@@ -380,6 +473,12 @@
 
     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
@@ -404,6 +503,12 @@
 
     Properly find pass helpers for testing.
 
+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
@@ -472,6 +577,50 @@
 
     Allow make test where the source path contains the string Net-SNMP to succeed.
 
+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 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
@@ -516,21 +665,17 @@
 
     perl/SNMP/SNMP.xs: Fix a compiler warning
 
-commit dae4e16be86117861f63d1a2f981ad361418f5c6
-Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Mar 5 09:06:52 2012 +0000
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
 
-    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.
+    Solaris sh does not understand "test -e"
 
-commit 28f6226f2e228b8ca248489735f86502b2cce0a1
-Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
-Date:   Mon Mar 5 09:06:52 2012 +0000
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
 
-    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.
+    Clean up nsrollup complications
 
 commit ee71049c3e21c1d0e3424297136652bbe0e39d85
 Author: Niels Baggesen <nba@users.sourceforge.net>
@@ -538,6 +683,30 @@
 
     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 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 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Fri Mar 2 21:12:47 2012 +0100
@@ -562,7 +731,6 @@
 
     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
@@ -581,6 +749,12 @@
 
     version update for 5.5.2.pre1
 
+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
@@ -611,6 +785,24 @@
 
     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 eed0bcbc43fea18259f0f63b2081b6d10535a052
 Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
 Date:   Tue Feb 28 09:27:11 2012 +0000
@@ -649,6 +841,12 @@
 
     Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
 
+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
@@ -679,12 +877,48 @@
 
     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 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
@@ -729,6 +963,12 @@
 
     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
@@ -787,6 +1027,14 @@
 
     .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
@@ -857,6 +1105,18 @@
 
     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
@@ -889,6 +1149,30 @@
 
     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
@@ -1015,6 +1299,18 @@
 
     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
@@ -1119,6 +1415,12 @@
     
     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
@@ -1149,6 +1451,12 @@
 
     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
@@ -1161,6 +1469,12 @@
 
     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
@@ -1186,6 +1500,25 @@
 
     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
@@ -1333,6 +1666,12 @@
 
     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
@@ -1429,6 +1768,18 @@
 
     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
@@ -1501,6 +1852,30 @@
 
     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
@@ -1529,6 +1904,24 @@
 
     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
@@ -1541,6 +1934,12 @@
 
     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
@@ -1573,6 +1972,12 @@
 
     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
@@ -1696,6 +2101,12 @@
 
     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
@@ -1739,6 +2150,12 @@
 
     Check open() result.
 
+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
@@ -1770,6 +2187,12 @@
 
     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
@@ -1812,6 +2235,12 @@
 
     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
@@ -1850,6 +2279,12 @@
 
     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
@@ -1926,6 +2361,21 @@
 
     Skip SET-based tests when configured with --disable-set-support
 
+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
@@ -1975,6 +2425,12 @@
 
     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
@@ -2023,12 +2479,103 @@
 
     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 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
@@ -2056,6 +2603,22 @@
     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 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
@@ -2116,12 +2679,47 @@
 
     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 8867fd1dcfe72b59d07322ff38a699b66ec4f326
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Tue Nov 22 09:44:38 2011 +0100
@@ -2158,6 +2756,20 @@
     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)
+    
+    This hunk fell of when the rest of the patch was merged.
+
+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
@@ -2176,6 +2788,12 @@
 
     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 4bd0352955a2551bfe02308dd134b9128c98b9e9
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Wed Nov 16 22:59:36 2011 +0100
@@ -2194,6 +2812,12 @@
 
     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
@@ -2212,6 +2836,18 @@
 
     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 434bfc1f7457550b6f87d5bcd511276b270b5964
 Author: Jan Safranek <jsafranek@users.sourceforge.net>
 Date:   Mon Nov 14 11:22:53 2011 +0100
@@ -2220,6 +2856,12 @@
     
     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
@@ -2232,12 +2874,38 @@
 
     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 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Thu Nov 3 11:17:48 2011 +0100
@@ -2258,18 +2926,37 @@
     
     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 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
@@ -2284,6 +2971,24 @@
     
     This is a backport of commit 9f653f7.
 
+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
@@ -2357,6 +3062,24 @@
 
     CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
 
+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 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
@@ -2428,6 +3151,14 @@
     Fix the code for populating the table_tdata cache,
     and clarify areas needing MIB-specific additions.
 
+commit ee0d3adb078291b743c9ecb76d20b591b7b15972
+Author: Steve Friedl <steve@unixwiz.net>
+Date:   Thu Sep 22 09:58:39 2011 +0100
+
+    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)
+
 commit bbe2c19a01ecec024f741e2e54701ae6212f4c3e
 Author: Magnus Fromreide <magfr@lysator.liu.se>
 Date:   Sun Sep 4 14:44:38 2011 +0200
@@ -2474,6 +3205,14 @@
 
     make it so the git commit line can be cut/paste without linebreaks
 
+commit 3fe36f7ad71c08e1286ce8e487e9352e27cd96cc
+Author: Ronald Wahl <rwa-co@users.sourceforge.net>
+Date:   Tue Aug 30 10:12:11 2011 -0700
+
+    CHANGES: libnetsnmp: PATCH 3394586: from rwa-co: file descriptor leak in read_config (+fix)
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
 commit 6e54c4131af731ff90467a75bcc817c957f8f72a
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Tue Aug 30 09:55:14 2011 -0700
@@ -2516,12 +3255,36 @@
 
     make sure that _KERNEL is defined to 1 so that "#if _KERNEL" works on systems that need it (e.g. IRIX)
 
+commit fc5560c05f848321da0ca0c2e87001d5f2295167
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Mon Aug 22 18:54:30 2011 +0200
+
+    CHANGES: building: build fix for systems lacking field msg_flags in struct msghdr (e.g. IRIX)
+
 commit 96ea2d1a8ebffb348673a865d486f31e635e62bd
 Author: Thomas Anders <tanders@users.sourceforge.net>
 Date:   Sun Aug 21 01:51:49 2011 +0200
 
     autoreconf
 
+commit 3f2f61b0e613d6105ecf2ceb395de0bde37f3ce3
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 01:47:13 2011 +0200
+
+    autoreconf
+
+commit b62cb0864f577ba85573d0d250d12a39387c07b4
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 00:55:33 2011 +0200
+
+    CHANGES: aix: eliminate configure warning regarding libperfstat.h on AIX 6.1 and up
+
+commit 71b90b6f217944b4ffc1836e5160d40e33b4423d
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 00:40:28 2011 +0200
+
+    fix broken line wrap
+
 commit 28b54070514753e8d8abb718b224d657ab7a8ab8
 Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
 Date:   Thu Aug 18 11:49:56 2011 -0700
@@ -2530,6 +3293,14 @@
     
     Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
 
+commit f73e6364bb34070622e9f4488cd0487d2fb7402a
+Author: Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+Date:   Thu Aug 18 11:45:29 2011 -0700
+
+    CHANGES: agent: PATCH 3389228: from wulf2001: incomplete commit (patch 3386633: fix integer overflow)
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
 commit e6cf8206f0c67650001e34b526b37f64e4a5929c
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Thu Aug 18 09:46:33 2011 -0700
@@ -2697,6 +3468,12 @@
 
     .gitignore: Ignore *.exe files generated by the Win32 build
 
+commit 0344df92e462f3bec994608c3381fca5348abcdb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 15:12:55 2011 -0700
+
+    fix C++ comments
+
 commit 09a661d5dc60c730fe0384b02ed672830ef74e30
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Mon Aug 8 15:12:55 2011 -0700
@@ -2709,6 +3486,13 @@
 
     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
@@ -2749,6 +3533,22 @@
 
     display the branch we'll commit to
 
+commit d43729befe12bdefc870889bdfe182e7693f1f3b
+Author: Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+Date:   Mon Aug 8 11:20:30 2011 -0700
+
+    CHANGES: snmpd: PATCH 3386633: from wulf2001: fix integer overflow in disk percent calculations
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 3bc5683334e5663c58924196edd66496ff8170c2
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Mon Aug 8 11:12:27 2011 -0700
+
+    CHANGES: libnetsnmp: PATCH 3387139: from yaberauneya: Avoid segfault if trapsess transport element cant be parsed
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
 commit 1d1bfd5f451c2bc420b710c98c79d04bdef4391b
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Mon Aug 8 11:10:52 2011 -0700
@@ -2797,6 +3597,12 @@
 
     separate nssync into nspull and nspush
 
+commit e46b170117fe78a2faabef1adcc3d6d4d5696036
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Aug 8 17:23:43 2011 +0200
+
+    CHANGES: snmplib: Fix a crash that could be triggered by calling _mibindex_add() with the second argument not equal to -1.
+
 commit 7f42d0d93320484152271427cc9808cbda49bbd0
 Author: Bart Van Assche <bvanassche@acm.org>
 Date:   Mon Aug 8 09:50:51 2011 +0200
@@ -2963,6 +3769,44 @@
 
     nssync supports --merge now
 
+commit 0078e22470eb0fdd6dc02e20813351acdc158964
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:23:22 2011 -0700
+
+    CHANGES: libnetsnmp: PATCH 3362233: from yaberauneya: Mute unnecessary cannot find module noise
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit eb78db2b6e2774a4497d8768c138b4f14c5f5a7f
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:19:16 2011 -0700
+
+    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>
+
+commit 8204a64f0ff2f6945c324ee9fc1be3af6e1b850f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 4 08:15:17 2011 -0700
+
+    allow nsrollup to take a --merge flag for merging instead of rebasing
+
+commit 99f6360296d4459af99affffac89708a581c3ce0
+Author: Sachin Surendran <sachinsurendran@users.sourceforge.net>
+Date:   Thu Aug 4 08:12:09 2011 -0700
+
+    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>
+
+commit f7a88bc6f738f77cb9c43081e1f62f27e3b6ef98
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:09:18 2011 -0700
+
+    CHANGES: freebsd: PATCH 3363328: from yaberauneya: Add FreeBSD 9.x to supported OSes list
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
 commit e7dd1c437afe6e26a55aa772d468012655741d31
 Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
 Date:   Thu Aug 4 08:23:22 2011 -0700
@@ -3015,6 +3859,14 @@
     
     Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
 
+commit efa3135a250ae1fff308496d22e7782abc0c391e
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 4 08:04:27 2011 -0700
+
+    CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused compile warnings with FreeBSD/NetBSD
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
 commit 25988be836924a33020113c94aa02614d1dbf1be
 Author: Wes Hardaker <hardaker@users.sourceforge.net>
 Date:   Thu Aug 4 07:36:36 2011 -0700
@@ -3065,6 +3917,42 @@
 
     CHANGES: agent: Avoid that a MIB walk on the host resources MIB triggers a crash on Fedora 15
 
+commit b056ee6eb53909ad04f16ec26d2690d7a083192a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 4 07:59:04 2011 +0200
+
+    Fix a compiler warning in agent/mibgroup/host/data_access/swinst_pkginfo.c
+
+commit 171f9580fffa6041afc862ef9440d949f0aa79bf
+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
@@ -3095,6 +3983,38 @@
 
     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
@@ -3166,6 +4086,12 @@
 
     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
@@ -3208,18 +4134,48 @@
 
     suppress "ok" test output in nsb
 
+commit 40125d8539cd89f952fbc24588c5e81e9cd821fe
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Aug 1 13:58:33 2011 +0200
+
+    Detect SMUX recvfrom() errors properly.
+
+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
@@ -3345,6 +4301,24 @@
 
     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
@@ -3363,12 +4337,24 @@
 
     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
@@ -3393,6 +4379,30 @@
 
     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
@@ -3606,6 +4616,18 @@
     
     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
@@ -3618,6 +4640,15 @@
     
     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
@@ -3627,6 +4658,15 @@
     
     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
@@ -3652,6 +4692,23 @@
     
     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
@@ -3660,6 +4717,14 @@
     
     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
@@ -3767,6 +4832,14 @@
     
     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
@@ -3791,6 +4864,16 @@
     
     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
@@ -3819,6 +4902,14 @@
     
     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
@@ -3843,6 +4934,14 @@
     
     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
@@ -3859,6 +4958,22 @@
     
     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
@@ -3867,6 +4982,22 @@
     
     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
@@ -3883,6 +5014,22 @@
     
     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
@@ -3899,6 +5046,14 @@
     
     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
@@ -3926,6 +5081,15 @@
     
     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
@@ -3953,6 +5117,15 @@
     
     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
@@ -3971,6 +5144,15 @@
     
     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
@@ -3996,6 +5178,14 @@
     
     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
@@ -4022,6 +5212,15 @@
     
     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
@@ -4031,6 +5230,57 @@
     
     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
@@ -4040,6 +5290,15 @@
     
     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
@@ -4066,6 +5325,15 @@
     
     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
@@ -4075,6 +5343,15 @@
     
     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
@@ -4091,6 +5368,14 @@
     
     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
@@ -4107,6 +5392,14 @@
     
     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
@@ -4123,6 +5416,14 @@
     
     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
@@ -4139,6 +5440,14 @@
     
     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
@@ -4155,6 +5464,14 @@
     
     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
@@ -4179,6 +5496,22 @@
     
     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
@@ -4230,6 +5563,23 @@
     
     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
@@ -4246,6 +5596,50 @@
     
     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
@@ -4270,6 +5664,14 @@
     
     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
@@ -4361,6 +5763,17 @@
     
     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
@@ -4392,6 +5805,15 @@
     
     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
@@ -4401,6 +5823,31 @@
     
     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
@@ -4417,6 +5864,14 @@
     
     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
@@ -4427,6 +5882,15 @@
     
     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
@@ -4443,6 +5907,14 @@
     
     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
@@ -4459,6 +5931,14 @@
     
     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
@@ -4468,6 +5948,15 @@
     
     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
@@ -4484,6 +5973,14 @@
     
     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
@@ -4508,6 +6005,14 @@
     
     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
@@ -4517,6 +6022,15 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20183 06827809-a52a-0410-b366-d66718629ded
 
+commit d2f6f55136b3983fab1640c031d5e7bf32a48535
+Author: Dave Shield <dts12@users.sourceforge.net>
+Date:   Sun Apr 17 20:56:48 2011 +0000
+
+    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
+
 commit c048f2ce43bfa82e8d3ad8a2bd312290c6ba27f0
 Author: Dave Shield <dts12@users.sourceforge.net>
 Date:   Fri Apr 15 13:42:14 2011 +0000
@@ -4547,6 +6061,25 @@
     
     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
@@ -4565,6 +6098,15 @@
     
     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
@@ -4592,6 +6134,15 @@
     
     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
@@ -4619,6 +6170,15 @@
     
     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
@@ -4646,6 +6206,15 @@
     
     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
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Tue Apr 12 20:01:55 2011 +0000
@@ -4670,6 +6239,14 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20176 06827809-a52a-0410-b366-d66718629ded
 
+commit 0a185a9d306b6816a26e3508dcb098b91861dc0b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 20:01:55 2011 +0000
+
+    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
+
 commit d9477251d154fbb526f53367b0b6ebcd1d2674ac
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Tue Apr 12 19:53:10 2011 +0000
@@ -4700,6 +6277,16 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20175 06827809-a52a-0410-b366-d66718629ded
 
+commit 54787d25b2fbaad047a54fc30efeecc2d2805ce7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:53:10 2011 +0000
+
+    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
+
 commit 007e76d6dc38acdfab756fe9bd8e23d82095b4c6
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Tue Apr 12 19:50:08 2011 +0000
@@ -4724,6 +6311,14 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20174 06827809-a52a-0410-b366-d66718629ded
 
+commit 33b9405d1203046a4590634c592c7181c133b7f2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 12 19:50:08 2011 +0000
+
+    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
+
 commit 2fb0b89c2323db309b162d60a943c1e3a0a17d07
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Sat Apr 9 21:59:11 2011 +0000
@@ -4732,6 +6327,14 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20173 06827809-a52a-0410-b366-d66718629ded
 
+commit 4f3da767b0f87c99c4c1f5b741203d7d696beeea
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 21:59:11 2011 +0000
+
+    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
+
 commit c3dbbd9fc57acbca999356cdf9be958cc11735ef
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Sat Apr 9 21:56:33 2011 +0000
@@ -4740,6 +6343,14 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20172 06827809-a52a-0410-b366-d66718629ded
 
+commit 184848f6a5362a4501974a5cf2e5771d2864ff78
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 21:56:33 2011 +0000
+
+    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
+
 commit b1cd21a4d71c17c122134ac3284917f65363e4d2
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Sat Apr 9 20:04:29 2011 +0000
@@ -4748,6 +6359,14 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20170 06827809-a52a-0410-b366-d66718629ded
 
+commit cce304193098f7573807c82a708bcbe0347a7a2b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 9 20:04:29 2011 +0000
+
+    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
+
 commit c6659c94ad9ba8060dde18942761ce85d1a5cc19
 Author: Niels Baggesen <nba@users.sourceforge.net>
 Date:   Sat Apr 9 19:50:30 2011 +0000
@@ -4757,1211 +6376,3057 @@
     
     git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20169 06827809-a52a-0410-b366-d66718629ded
 
+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
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Mar 11 11:11:28 2011 +0000
+
+    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
+
+commit 2d48ccf6cc93c0e44eec55edf559d9f1523c74f9
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Mar 11 11:11:28 2011 +0000
+
+    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
+
+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
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 6 19:47:06 2011 +0000
+
+    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
+
+commit 6bd2b0bb01c74283534edcfc1cb08790861e0d74
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 6 11:28:04 2011 +0000
+
+    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
+
+commit d868436215c0e70bde3c44e4c926daa6ab880078
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 5 12:50:44 2011 +0000
+
+    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
+
+commit c82102d9e2a62db4628b2c5dd9ffb6d7077f02c5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Mar 4 15:09:26 2011 +0000
+
+    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
+
+commit 476cca83a283335780a84ec0b873441f114863da
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Mar 4 15:09:26 2011 +0000
+
+    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
+
+commit 15af0adf81f255463b908859b383f4a515bec36d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Mar 4 15:09:26 2011 +0000
+
+    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
+
+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
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Feb 17 11:28:27 2011 +0000
+
+    Fixed snmp-bridge-mib in standalone (agentx) version.
+    Don't declare local variables inside block. Patch provided by Jens Osterkamp.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19939 06827809-a52a-0410-b366-d66718629ded
+
+commit dacbe63c18b61f7e7dd73681b78bfbea3e221af9
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Feb 16 14:56:33 2011 +0000
+
+    Fixed snmp-bridge-mib when working in the embedded perl.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19938 06827809-a52a-0410-b366-d66718629ded
+
+commit c8da341a64bd199529a9e59ac3523547cc2fe1f6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Feb 16 13:16:57 2011 +0000
+
+    Fixed GETNEXT processing in snmp-bridge-mib.
+    
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19937 06827809-a52a-0410-b366-d66718629ded
+
+commit bcc68f7378c29efcf81daa0c2996c4ede80e55bc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 22:24:06 2011 +0000
+
+    Properly save entries for NetBSD and DragonFly
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19936 06827809-a52a-0410-b366-d66718629ded
+
+commit 10050c94209b0a9dfe45ab710c928b656d906a3a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 22:24:06 2011 +0000
+
+    Properly save entries for NetBSD and DragonFly
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19936 06827809-a52a-0410-b366-d66718629ded
+
+commit 5402248cd46dcc22e8e5d30af7770ab8fa01dfdb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 22:18:43 2011 +0000
+
+    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
+
+commit df649ccaf843ed76cbd8f96564f57176a8a61ba8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 22:18:43 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
+
+commit b5655cc10721e9ddc23d8ea0a54007b1ab0680e1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 21:48:05 2011 +0000
+
+    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
+
+commit ce8e87458775c2809ed8f920ce80421ad6f14cba
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 21:48:05 2011 +0000
+
+    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
+
+commit 9cfbd8b144d6595e988f33ca484382c7082bb6ed
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 21:26:30 2011 +0000
+
+    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
+
+commit 88dc144bc6ba2ab2377f9d7182a1c2c03375459e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 21:11:37 2011 +0000
+
+    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
+
+commit 5cd1573625471c0583e9087aec6802b77157d5a2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 21:11:37 2011 +0000
+
+    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
+
+commit b00595c7b8728786cd843f2687779b11f0e6196b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:45:34 2011 +0000
+
+    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
+
+commit b76a54f7ee6644a9636d98d960fefecabb74bc29
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:45:34 2011 +0000
+
+    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
+
+commit 65558935e9b2718757366e8b3b10a91412b96ae8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:44:22 2011 +0000
+
+    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
+
+commit e88f9222c99ebdb11e94aef394c84d6cf67bc751
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:44:22 2011 +0000
+
+    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
+
+commit 8fdc21faa1f41851df7e00d0e05b5883cc32182e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:42:47 2011 +0000
+
+    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
+
+commit edd5de6c7c004d1164ae2c51d9b7f1b3b7c53067
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:41:09 2011 +0000
+
+    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
+
+commit d02e5daf238f08b50704319ed444060589dceba2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 15 20:39:53 2011 +0000
+
+    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
+
+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
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 8 17:41:37 2011 +0000
+
+    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
+
+commit 118cd42bda1d60a81f0e449563110fa8c3889e2c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 8 17:41:37 2011 +0000
+
+    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
+
+commit 98a23f0c8f1d052218d296ad1fed5692bb0c5478
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 8 17:41:37 2011 +0000
+
+    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: V5.5 -> V5.5.1
+Changes: V5.6 -> V5.6.1
 
-2011-03-18 11:15  dts12
+2011-01-03 22:28  hardaker
 
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
-        snmplib/Makefile.depend:
+   * NEWS:
 
-   make depend
+   NEWS update
 
-2011-03-18 10:36  dts12
+2011-01-03 22:26  hardaker
 
-   *  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:
+   * configure, configure.d/config_project_with_enable:
 
-   documentation update
+   CHANGES: Upgraded DTLS support from alpha to full; mention that
+   tsm is needed for TLS too
 
-2011-03-18 10:32  dts12
+2011-01-03 22:24  hardaker
 
    *  FAQ, README, configure, configure.ac, dist/Makefile,   
       dist/net-snmp.spec:
 
    Version number update
 
-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-13 20:06  dts12
-
-   * 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)
-
-2011-03-11 11:11  jsafranek
-
-   * 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.
-
-2011-03-10 15:51  dts12
-
-   * snmplib/snmp-tc.c:
-
-   CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ
-   offsets
-
-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-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:49  dts12
-
-   *  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
-
-2011-02-25 11:41  dts12
-
-   *  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-02-25 11:39  dts12
-
-   * ChangeLog:
-
-   version update
-
-2011-02-25 11:15  dts12
-
-   *  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-02-25 11:10  dts12
-
-   * snmplib/snmpv3.c:
-
-   Avoid a possible crash if the engineID is not available or set.
-
-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-22 15:25  dts12
-
-   * agent/mibgroup/host/hr_swinst.c:
-
-   Revert a bogus change that crept into the code.
-
-2011-02-22 08:55  dts12
-
-   * {everything}:
-
-   Fix 5.5.x branch structure
-
-2011-02-21 13:44  dts12
+2010-12-29 01:41  hardaker
 
    * configure:
 
-   Version number update
+   autoconf using the right version
 
-2011-02-21 13:24  dts12
-
-   *  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
-
-2011-02-21 13:17  dts12
-
-   *  FAQ, README, agent/mibgroup/host/hr_swinst.c, configure,   
-      configure.ac, dist/Makefile, dist/net-snmp.spec:
-
-   Version number update
-
-2011-02-21 11:14  bvassche
-
-   * agent/helpers/table_dataset.c:
-
-   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)
-
-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-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:48  nba
-
-   * configure, include/net-snmp/net-snmp-config.h.in:
-
-   rerun autoheader/autoconf
-
-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-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-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-03 22:42  tanders
-
-   * snmplib/snmp_api.c:
-
-   CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not
-   work
-
-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-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 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 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.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-19 06:20  nba
-
-   * acconfig.h:
-
-   Define DRAGONFLYID
-
-2011-01-18 22:01  nba
-
-   * agent/mibgroup/host/hr_swrun.c:
-
-   typo
-
-2011-01-18 21:56  nba
-
-   * configure.d/config_os_libs1:
-
-   Check for -lkinfo
-
-2011-01-18 21:54  nba
-
-   * agent/mibgroup/if-mib/data_access/interface.h:
-
-   Find proper if-mib interface for NetBSD
-
-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 08:39  bvassche
-
-   *  configure, configure.d/config_os_progs, net-snmp-config.in,   
-      snmplib/Makefile.in:
-
-   CHANGES: Cygwin: libnetsnmp does now build as a DLL when
-   configured with --enable-shared.
-   CHANGES: Cygwin: perl modules do now build (--with-perl-modules).
-   (Backported r18825 from the trunk.)
-
-2011-01-14 08:22  bvassche
-
-   * include/net-snmp/net-snmp-config.h.in:
-
-   Regenerated with autoreconf -iv.
-
-2011-01-14 06:25  rstory
-
-   * agent/mibgroup/agentx/protocol.c:
-
-   remove completely useless and nonsensical code
-
-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:45  dts12
-
-   * CHANGES, NEWS:
-
-   version update
-
-2011-01-13 15:33  dts12
-
-   * ChangeLog:
-
-   version update
-
-2011-01-13 15:26  dts12
-
-   * agent/mibgroup/Makefile.depend, snmplib/Makefile.depend:
-
-   make depend
-
-2011-01-13 15:15  dts12
-
-   * agent/mibgroup/mibII/kernel_netbsd.c:
-
-   Remove C++ comments
-
-2011-01-13 14:55  dts12
-
-   *  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
-
-2011-01-13 14:42  dts12
-
-   * configure:
-
-   Version number update
-
-2011-01-13 14:41  dts12
+2010-12-29 01:40  hardaker
 
    *  FAQ, README, configure, configure.ac, dist/Makefile,   
       dist/net-snmp.spec:
 
    Version number update
 
-2011-01-13 13:17  dts12
-
-   * agent/auto_nlist.c:
-
-   Fix broken patch
-
-2011-01-13 12:14  dts12
-
-   *  configure, configure.d/config_os_functions,   
-      configure.d/config_os_headers:
-
-   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 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-12 14:37  rstory
-
-   *  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/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
-         agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c:
-
-   CHANGES: agent: MIB-specific leak-at-exit fixes.
-   
-   backport applicable parts of r19533 from trunk
-
-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:
-
-   NEWS: 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 14:14  rstory
-
-   * 
-      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c,
-        
-      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c:
-
-   revert PATCH 3053436: tcpConnectionTable_data_access invalid
-   memory access
-   
-   the bug this is fixing was introduced in r17719, and fixed in
-   r17861.
-
-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/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-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 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:31  dts12
-
-   * agent/mibgroup/mibII/system_mib.c:
-
-   Fix handling of sysObjectID length
-   (backport of revisions 19382 & 19404)
-
-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:10  dts12
-
-   * agent/mibgroup/sctp-mib/sctpTables_freebsd.c:
-
-   Add missing standard Net-SNMP header files
-
-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-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-04 18:24  hardaker
-
-   * COPYING:
-
-   Copyright update for 2011
-
-2011-01-04 12:19  bvassche
-
-   * agent/mibgroup/mibII/var_route.c:
-
-   Fix compiler warnings triggered by the Win32 MIB-II
-   implementation (backported r19790 from the trunk).
-
-2011-01-04 12:17  bvassche
-
-   * agent/mibgroup/sctp-mib/sctpScalars.c:
-
-   Removed two unused variables from the sctp-mib implementation
-   (backported r19780 from the trunk).
-
-2011-01-04 12:15  bvassche
-
-   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
-
-   Fixed a recently introduced mismatch between format specification
-   and argument list in the ip-mib implementation (backported r19779
-   from the trunk).
-
-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:
 
-   CHANGES: snmpd: PATCHES: 3141462: fix agentx subagent
+   NEWS: snmpd: Patch 3141462: from fenner: fix agentx subagent
    issues with multiple-object requests
 
 2010-12-29 01:33  hardaker
 
    * snmplib/vacm.c:
 
-   CHANGES: snmpd: Patch from Niels to fix VACM persistant storage.
+   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
 
@@ -5969,145 +9434,25 @@
 
    Bring all versions of makerelease.xml into line
 
-2010-12-21 09:44  dts12
+2010-12-21 06:14  nba
 
-   * ChangeLog:
+   * agent/mibgroup/agent_mibs.h:
 
-   version update
+   fix configuring with --disable-debugging
 
-2010-12-21 09:25  dts12
+2010-12-20 23:27  hardaker
 
-	* 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
-	  (re-running makerelease)
+   *  testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/support/simple_eval_tools.sh,   
+      testing/fulltests/support/simple_run:
 
-2010-12-21 09:16  dts12
+   Patch from Magnus to fix if ! tests on solaris
 
-	* CHANGES, NEWS, configure:
-	  Version number update
-	  (re-running makerelease)
-	  Actually log of recent significant changes
+2010-12-14 20:10  rstory
 
-2010-12-20 16:10  dts12
+   * man/snmpcmd.1.def:
 
-	* ChangeLog:
-	  version update
-
-2010-12-20 16:07  dts12
-
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-
-   make depend
-
-2010-12-20 15:45  dts12
-
-   *  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
-
-2010-12-20 15:23  dts12
-
-   *  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
-
-2010-12-20 14:07  dts12
-
-   * Makefile.top:
-
-   version update
+   fix typo in man page
 
 2010-12-10 15:50  hardaker
 
@@ -6116,6 +9461,12 @@
    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:
@@ -6129,6 +9480,25 @@
    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:
@@ -6136,6 +9506,20 @@
    Patch from Niels to remove extra headers from the linux dot3stats
    implementation
 
+2010-12-06 22:08  hardaker
+
+   * configure, configure.d/config_os_functions:
+
+   Check for the minimum required function in OpenSSL for DTLS
+   support
+
+2010-12-06 16:34  rstory
+
+   * agent/snmp_vars.c:
+
+   call netsnmp_certs_agent_init sooner, fixing snmptrapd (D)TLS
+   support
+
 2010-12-06 16:24  hardaker
 
    * apps/snmptrap.c:
@@ -6143,12 +9527,43 @@
    fix contextEngineIDs for outgoing informs from snmpinform to be
    the local engineID
 
+2010-12-01 14:30  hardaker
+
+   * configure:
+
+   generate with the proper autoconf
+
+2010-12-01 01:06  hardaker
+
+   *  agent/Makefile.depend, agent/mibgroup/Makefile.depend,   
+      apps/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
 2010-12-01 01:06  hardaker
 
    * agent/snmpd.c:
 
    use netsnmp_assert instead of assert
 
+2010-12-01 00:46  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
+
+2010-12-01 00:46  hardaker
+
+   * Makefile.top:
+
+   version update
+
 2010-11-30 23:27  hardaker
 
    * perl/SNMP/SNMP.xs:
@@ -6172,6 +9587,24 @@
    CHANGES: snmpd: PATCH: 3053436: from: takevos: fix:
    tcpListenerTable_data_access invalid memory access
 
+2010-11-30 21:08  nba
+
+   * apps/snmptls.c, apps/snmptrapd_sql.c:
+
+   u_int32_t is less portable than uint32_t (Solaris 11)
+
+2010-11-30 20:52  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove a compile warning about a nested if without a block
+
+2010-11-30 19:57  rstory
+
+   * snmplib/cert_util.c:
+
+   error check the right pointer after attempting allocation
+
 2010-11-30 05:56  hardaker
 
    *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
@@ -6188,15 +9621,30 @@
    CHANGES: PATCH 3074918: from weizheng: check for CONTAINER_INSERT
    failures and react appropriately to avoid memory leaks
 
-2010-11-29 22:14  rstory
+2010-11-30 04:34  rstory
 
-   * agent/helpers/cache_handler.c:
+   * snmplib/cert_util.c:
 
-   CHANGES: snmpd: use cache-unique id instead of handler name for
-   shared
-   cache reload protection
+   CHANGES: snmpd: add debug for cert find hint as string/int
 
-2010-11-18 03:49  rstory
+2010-11-30 04:30  rstory
+
+   *  agent/snmp_vars.c, include/net-snmp/library/cert_util.h,   
+      snmplib/cert_util.c:
+
+   CHANGES: snmpd: instead of relying on NETSNMP_DS_LIB_APPTYPE,
+   break out
+   cert table inits to new agent cert init function, called from
+   init_agent.
+
+2010-11-30 04:21  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   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,   
@@ -6208,6 +9656,112 @@
    
    netsnmp_cache_is_valid() is not meant for mib modules
 
+2010-11-29 22:20  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   CHANGES: snmpd: add debug for ssl ciphers, clarify fingerprint
+   match debug
+
+2010-11-29 22:14  rstory
+
+   * agent/helpers/cache_handler.c:
+
+   CHANGES: snmpd: use cache-unique id instead of handler name for
+   shared
+   cache reload protection
+
+2010-11-19 15:25  nba
+
+   * 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c:
+
+   Niels, Niels, you should know better than making last minute
+   changes to a
+   patch and then commit it without testing :-(
+
+2010-11-18 10:55  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.
+
+2010-11-17 19:59  nba
+
+   *  agent/mibgroup/host/data_access/swinst_darwin.c,   
+      agent/mibgroup/host/data_access/swinst_pkginfo.c:
+
+   More proction against overflowing snprintf
+
+2010-11-17 19:57  nba
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+         include/net-snmp/data_access/route.h:
+
+   Dont use first element of oid to save ifIndex - it can only be
+   0..2
+   Second element is only 0..39, so we have to use a third element.
+
+2010-11-17 19:39  nba
+
+   *  agent/mibgroup/hardware/fsys.h, configure.d/config_os_functions,  
+       configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   Test getfsstat/getvfsstat in time for module selection
+
+2010-11-17 19:37  nba
+
+   * snmplib/file_utils.c:
+
+   Remove bogus test for flags==0 (O_RDONLY==0). Makes
+   udpEndpointTable work again
+
+2010-11-17 04:55  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   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:
+
+   Reverted MinGW-specific changes from r19549 such that test T065
+   passes again on MinGW.
+
 2010-11-16 10:04  bvassche
 
    * agent/mibgroup/ip-mib/data_access/arp_linux.c:
@@ -6217,6 +9771,39 @@
    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:
@@ -6226,6 +9813,19 @@
    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
+
+   *  testing/fulltests/unit-tests/T007inet_pton_clib.c,   
+      testing/fulltests/unit-tests/T008asn1_clib.c:
+
+   Copied two unit-tests from the trunk.
+
+2010-11-15 14:09  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   Merged recent clib_build changes from the trunk.
+
 2010-11-11 22:48  nba
 
    * agent/mibgroup/notification-log-mib/notification_log.c:
@@ -6252,10 +9852,37 @@
 
 2010-11-09 13:47  bvassche
 
-   * testing/tests/T030snmpv3usercreation:
+   * testing/fulltests/default/T030snmpv3usercreation_simple:
 
    CHANGES: testing: Test T030 does now pass on MinGW.
 
+2010-11-09 13:40  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   simple_eval_tools.sh: Removed a superfluous ISDEFINED invocation.
+
+2010-11-09 12:04  bvassche
+
+   * testing/fulltests/default/T160snmpnetstat_simple:
+
+   Backported r19653.
+
+2010-11-09 11:30  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   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
+
+   * 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 08:46  bvassche
 
    * agent/mibgroup/struct.h, agent/mibgroup/util_funcs.c:
@@ -6297,19 +9924,6 @@
    CHANGES: snmpd: PATCHES: 3096725: Include SNMPv1 trap OIDs in
    nlmLogNotificationID column
 
-2010-11-07 19:26  dts12
-
-   * agent/helpers/table_dataset.c:
-
-   Support holes in dataset tables.
-   (Partial back-port of revision 17929)
-
-2010-11-07 19:22  dts12
-
-   * agent/agent_trap.c:
-
-   Fix a typo, and drop a couple of redundant variables.
-
 2010-11-07 16:35  magfr
 
    * include/net-snmp/library/snmp_assert.h:
@@ -6323,22 +9937,36 @@
 
    Made sure that rpmGetPath() can be found by configure.
 
+2010-11-05 14:58  bvassche
+
+   * configure, configure.d/config_os_libs2:
+
+   Removed more code that was accidentially inserted by the patch
+   tool.
+
+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
+
    *  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 the trunk).
+   configuration (backported r19621 from trunk).
 
-2010-11-05 14:36  bvassche
-
-   * include/net-snmp/net-snmp-config.h.in:
-
-   Reverted r19623.
-
-2010-11-05 13:42  bvassche
+2010-11-05 13:37  bvassche
 
    * include/net-snmp/net-snmp-config.h.in:
 
@@ -6373,18 +10001,19 @@
    CHANGES: Linux: PATCHES: 3083027: Fix RPM spec file to support
    CentOS
 
-2010-11-04 07:09  bvassche
+2010-11-04 12:45  bvassche
 
-   * agent/helpers/table.c:
+   * agent/snmpd.c:
 
-   Backported r19602, which fixes the double free at exit that was
-   introduced by r19462.
+   Reverted r19601 and thereby reenabled the invocation of
+   shutdown_master_agent() and shutdown_agent() during
+   snmp_shutdown().
 
-2010-11-03 14:51  bvassche
+2010-11-03 13:22  rstory
 
-   * include/net-snmp/agent/instance.h:
+   * testing/fulltests/tls/T200TlsIpv6_simple:
 
-   Forward-ported r19608.
+   skip tlsipv6 test if not tlstcp/tcpipv6 domains
 
 2010-11-01 16:50  dts12
 
@@ -6395,41 +10024,72 @@
 
 2010-11-01 16:47  dts12
 
-   * man/snmpget.1.def, man/snmpgetnext.1.def:
+   * man/snmpget.1.def:
 
    Document -Cf in the two man pages separately.
 
 2010-11-01 16:30  dts12
 
-   *  man/session_api.3.def, man/snmp_sess_api.3.def,   
-      man/snmpbulkget.1.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:
+   *  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/config_api.3.def, man/encode_keychange.1.def,   
-      man/fixproc.1.def, man/mib2c-update.1.def, man/mib2c.1.def,   
-      man/mib_api.3.def, man/net-snmp-config.1.def,   
-      man/net-snmp-create-v3-user.1.def, man/pdu_api.3.def,   
-      man/session_api.3.def, man/snmp.conf.5.def,   
-      man/snmp_agent_api.3.def, man/snmp_alarm.3.def,   
-      man/snmp_config.5.def, man/snmp_sess_api.3.def,   
-      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/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:
+   * man/tkmib.1.def:
 
    Suppress forcing of "Berkeley Distribution" footer
    (Allows Net-SNMP version information to be displayed in the man
@@ -6437,25 +10097,21 @@
 
 2010-11-01 13:42  dts12
 
-   *  man/config_api.3.def, man/mib2c.1.def, man/mib_api.3.def,   
-      man/session_api.3.def, man/snmp.conf.5.def,   
-      man/snmp_agent_api.3.def, man/snmp_alarm.3.def,   
-      man/snmp_sess_api.3.def, 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/snmpget.1.def, man/snmpgetnext.1.def, man/snmpnetstat.1.def,  
-       man/snmpset.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/variables.5.def:
+   * 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:
+
+   null out bio pointers after being freed; bail on connection
+   with no ssl pointer
+
 2010-10-29 12:18  bvassche
 
-   * snmplib/container_binary_array.c:
+   * snmplib/cert_util.c, snmplib/container_binary_array.c:
 
    Spelling fix in log texts: containter -> container.
 
@@ -6473,11 +10129,54 @@
 
    More compiler warning fixes.
 
-2010-10-29 07:55  bvassche
+2010-10-28 18:31  nba
 
-   * testing/eval_tools.sh:
+   * snmplib/snmp_openssl.c:
 
-   Backported ISDEFINED from the trunk.
+   Fix const qualifier warning
+
+2010-10-28 17:53  nba
+
+   *  agent/mibgroup/hardware/cpu/cpu_kstat.c,   
+      agent/mibgroup/kernel_sunos5.c:
+
+   Clean out Solaris warnings
+
+2010-10-28 17:52  nba
+
+   * agent/mibgroup/host/hr_disk.c:
+
+   LVM is Linux only
+
+2010-10-28 17:51  nba
+
+   *  agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
+
+   Avoid char subscripts (signed chars\!)
+
+2010-10-28 17:43  nba
+
+   *  agent/mibgroup/host/data_access/swinst_pkginfo.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c,   
+      agent/mibgroup/mibII/at.c, snmplib/snmptsm.c:
+
+   casts and format specifiers in debug output
+
+2010-10-28 17:41  nba
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Cast to sockaddr to avoid warning
+
+2010-10-28 17:40  nba
+
+   *  agent/mibgroup/hardware/sensors/picld_sensors.c,   
+      agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Untangle picl from kstat access so it compiles on x86 Solrais
+   10/OpenSolaris
 
 2010-10-28 14:02  dts12
 
@@ -6486,6 +10185,13 @@
    Fix logic of testing for out-of-range enum values.
    Reported by Boris Zweimueller.
 
+2010-10-28 12:23  bvassche
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   Get rid of OpenSSL-related compilation warnings. Should work for
+   both OpenSSL versions 0.9.x and 1.0.x.
+
 2010-10-28 11:46  bvassche
 
    * agent/mibgroup/examples/scalar_int.c:
@@ -6493,6 +10199,12 @@
    Fixed a compiler warning (mismatch between format specification
    and argument) that was introduced in r6562.
 
+2010-10-28 11:41  bvassche
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Fixed a compiler warning that was introduced in r19550.
+
 2010-10-28 11:32  bvassche
 
    * include/net-snmp/library/tools.h, snmplib/tools.c:
@@ -6508,6 +10220,76 @@
    longer necessary to cast these two arguments (has been reverted
    via r19568).
 
+2010-10-28 09:47  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Fixed yet another crash in netsnmp_cache_remove().
+
+2010-10-27 20:37  nba
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   Sizeof has type size_t
+
+2010-10-27 20:35  nba
+
+   * snmplib/snmp_transport.c:
+
+   Remove superfluous cast
+
+2010-10-27 18:40  nba
+
+   * 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.h,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.h,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c:
+
+   Sprinkle some unsignedness so vars and params agree on type
+
+2010-10-27 18:38  nba
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   Initialize vars that gcc thinks are uninitialized
+
+2010-10-27 18:36  nba
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   A more meaningful test for MLD_LISTENER_QUERY
+
+2010-10-27 18:35  nba
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+         agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h, 
+       
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.h:
+
+   prototypes and includes were missing
+
+2010-10-27 18:33  nba
+
+   * apps/encode_keychange.c, apps/snmptest.c:
+
+   Check fgets return
+
 2010-10-25 20:59  dts12
 
    * Makefile.in:
@@ -6522,6 +10304,14 @@
    CHANGES: snmpd: BUG: 3058101: Writeable 'long' instances work on
    64-bit systems, but not writable 'int's
 
+2010-10-25 16:05  dts12
+
+   * snmplib/read_config.c:
+
+   Don't attempt to process unrecognised "ignore*" directives.
+   Pass these through to the appropriate registered config handlers
+   (if any)
+
 2010-10-25 15:56  dts12
 
    * agent/mibgroup/mibII/vacm_conf.c:
@@ -6537,7 +10327,8 @@
 
 2010-10-25 12:54  bvassche
 
-   * testing/tests/T200snmpv2cwalkall:
+   *  testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/default/T200snmpv2cwalkall_simple:
 
    CHANGES: Win32: testing: Avoid that T200 fails on known Microsoft
    SNMP extension DLL bugs.
@@ -6553,6 +10344,70 @@
    CHANGES: agent: PATCH: 2959811: from Jan Safranek: Reimplement
    Linux Netlink IPv6 prefix listener.
 
+2010-10-25 07:42  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated include/net-snmp/net-snmp-config.h.in.
+
+2010-10-25 06:28  nba
+
+   * agent/mibgroup/if-mib/ifTable/ifTable.h:
+
+   include needed prototypes
+
+2010-10-25 06:16  nba
+
+   *  apps/snmptls.c, include/net-snmp/library/cert_util.h,   
+      snmplib/cert_util.c:
+
+   Adjust types to better match usage
+
+2010-10-25 06:15  nba
+
+   * man/snmpcmd.1.def:
+
+   Reveal hidden -e and -u options
+
+2010-10-25 06:14  nba
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   include needed prototypes
+
+2010-10-25 06:01  nba
+
+   * 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+         agent/mibgroup/sctp-mib/sctpTables_freebsd.c, apps/snmptrapd.c,
+         snmplib/transports/snmpUnixDomain.c:
+
+   include needed prototypes
+
+2010-10-25 06:00  nba
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h,
+         apps/snmptrapd_sql.c:
+
+   const-juggling - we dont like warnings
+
+2010-10-23 11:04  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Fixed another crash in netsnmp_cache_remove().
+
+2010-10-23 11:00  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   CHANGES: agent: Removing the last cache via
+   netsnmp_cache_remove() does no longer trigger a crash.
+
 2010-10-22 09:20  bvassche
 
    * agent/helpers/cache_handler.c:
@@ -6569,11 +10424,11 @@
    Backported r19525: made sure that clean_subtree() deallocates all
    context cache nodes.
 
-2010-10-20 12:51  rstory
+2010-10-20 13:12  nba
 
-   * agent/mibgroup/ip-forward-mib/data_access/route_linux.c:
+   * agent/mibgroup/mibII/tcpTable.c:
 
-   fix ipCidrRouteTable (mask) for little endian systems
+   Fix non-ANSI function heading
 
 2010-10-20 10:34  bvassche
 
@@ -6595,15 +10450,6 @@
    is for this change that it was necessary to introduce the new
    function snmp_sess_session_lookup().
 
-2010-10-20 07:54  bvassche
-
-   * testing/eval_tools.sh:
-
-   CHANGES: testing: Made it possible to analyze all code covered by
-   the regression tests with a dynamic analyzer, at least if that
-   analyzer supports following child processes.
-   (Backported r19283 from the trunk.)
-
 2010-10-19 21:13  nba
 
    * snmplib/parse.c:
@@ -6611,6 +10457,55 @@
    BUG 3079072 from Dave Beal: fix buffer overflow from bad use of
    strncat
 
+2010-10-19 20:55  nba
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   PATCH: 3085295 from Bill Fenner: recognize LISTEN state again
+
+2010-10-19 20:09  nba
+
+   * agent/mibgroup/host/data_access/swinst_rpm.c:
+
+   Fix compiler warnings
+
+2010-10-19 20:08  nba
+
+   * agent/mibgroup/host/data_access/swinst_rpm.c:
+
+   Fix returning garbage in hrSWInstalledName (see rev 19484 for
+   further notes)
+
+2010-10-19 19:58  nba
+
+   * agent/mibgroup/host/hrh_filesys.c:
+
+   Protect against unsafe (%) device names
+
+2010-10-19 19:57  nba
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   Solaris does not use getstat, so dont declare it
+
+2010-10-19 19:56  nba
+
+   * snmplib/transports/snmpTCPIPv6Domain.c:
+
+   udp/tcp confusion in debug handle
+
+2010-10-19 19:54  nba
+
+   * apps/snmptable.c:
+
+   Abort after bad -C? option
+
+2010-10-19 19:53  nba
+
+   * apps/snmptrapd_handlers.c:
+
+   Delete redundant extern declarations
+
 2010-10-19 18:08  bvassche
 
    *  win32/net-snmp/net-snmp-config.h,   
@@ -6619,6 +10514,20 @@
    CHANGES: Win32: building: Avoid that MSVC 2010 prints a warning
    message about redefining EADDRINUSE.
 
+2010-10-19 18:05  bvassche
+
+   * snmplib/tools.c:
+
+   CHANGES: Win32: Avoid that MSVC reports a warning message about
+   redefinition of the malloc() macro during building the Net-SNMP
+   source code.
+
+2010-10-18 10:35  bvassche
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   Backported r19491 to the V5.6 branch (compiler warning fix).
+
 2010-10-18 08:52  bvassche
 
    * agent/snmpd.c:
@@ -6627,6 +10536,13 @@
    window, the snmpd process now stops upon the first key press.
    This makes it easier to debug snmpd.exe for memory leaks.
 
+2010-10-18 06:25  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32: builds again without warnings with MSVC 6.
+
 2010-10-18 06:15  magfr
 
    * include/net-snmp/library/system.h:
@@ -6662,12 +10578,23 @@
 
 2010-10-17 17:33  bvassche
 
-   * snmplib/snmpCallbackDomain.c:
+   * snmplib/transports/snmpCallbackDomain.c:
 
    CHANGES: snmplib: Avoid that Valgrind complains about
    uninitialized data for the buffers returned by
    netsnmp_callback_recv() and netsnmp_callback_hook_build().
 
+2010-10-17 16:57  bvassche
+
+   * agent/helpers/table.c:
+
+   CHANGES: agent: table_helper_handler(), 64-bit architectures:
+   avoid passing a pointer to a 32-bit value to a function that
+   expects a pointer to a 64-bit value (parse_one_oid_index()). Not
+   sure what the implications of this bug were. It might have caused
+   very strange table behavior on 64-bit big endian systems.
+   Found this via Valgrind.
+
 2010-10-17 16:51  bvassche
 
    *  agent/mibgroup/host/data_access/swrun_procfs_psinfo.c,   
@@ -6695,6 +10622,13 @@
    was encountered.
    </quote>
 
+2010-10-17 14:31  bvassche
+
+   * testing/RUNTESTS:
+
+   CHANGES: testing: It is again possible to run an individual test
+   via the script testing/RUNTESTS.
+
 2010-10-17 14:24  bvassche
 
    * agent/mibgroup/agentx/protocol.h:
@@ -6702,12 +10636,70 @@
    Removed an obsolete declaration: the function agentx_build() has
    been removed a long time ago.
 
+2010-10-17 12:01  bvassche
+
+   * snmplib/snmp_openssl.c:
+
+   Follow-up for r19477: made the inserted typecasts portable.
+
+2010-10-17 11:04  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r19476: fixed a typo.
+
+2010-10-17 09:36  bvassche
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed a few compiler warnings by inserting appropriate casts.
+
+2010-10-17 09:25  bvassche
+
+   *  include/net-snmp/library/tools.h,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   NETSNMP_REMOVE_CONST()-related cleanup.
+
 2010-10-16 08:37  bvassche
 
-   * configure, configure.d/config_modules_agent:
+   *  agent/agent_handler.c, configure,   
+      configure.d/config_modules_agent:
 
    Spelling fix: dulpicate -> duplicate.
 
+2010-10-15 19:17  bvassche
+
+   *  testing/fulltests/support/cagentlib_build,   
+      testing/fulltests/support/cagentlib_run,   
+      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,
+        
+      testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
+
+   CHANGES: testing: Introduced new test type next to capp and clib:
+   cagentlib.
+
+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,   
@@ -6724,7 +10716,8 @@
 
 2010-10-15 12:30  bvassche
 
-   * agent/agent_handler.c:
+   *  agent/agent_handler.c,   
+      testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
 
    Reverted r19460 because it makes some regression tests fail
    (T120proxyget_simple, T121proxyset_simple,
@@ -6740,26 +10733,71 @@
    handler no longer causes a crash (double free) when
    handler->myvoid of the original handler was non-NULL.
 
+2010-10-15 11:32  bvassche
+
+   * testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
+
+   Added a unit test for handler registration and deregistration.
+
 2010-10-15 10:56  bvassche
 
-   *  win32/net-snmp/net-snmp-config.h,   
+   *  include/net-snmp/library/tools.h,   
+      win32/net-snmp/net-snmp-config.h,   
       win32/net-snmp/net-snmp-config.h.in:
 
    CHANGES: Win32: building: Builds now correctly with a 64-bit
    compiler.
 
-2010-10-15 10:02  bvassche
+2010-10-14 23:01  magfr
 
-   *  agent/agent_handler.c, man/netsnmp_agent_handler.h.3,   
-      man/netsnmp_handler.3:
+   *  snmplib/snmp_logging.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpIPXDomain.c:
 
-   Spelling fix: dulpicates -> duplicates.
+   CHANGES: snmplib: Be const correct over calls to str* functions.
 
-2010-10-15 09:53  bvassche
+2010-10-14 22:57  magfr
 
-   * agent/agent_handler.c:
+   * testing/fulltests/support/clib_build:
 
-   Fixed a spelling error in a source code comment.
+   CHANGES: testing: Generate a normal #line directive as per C99
+   instead of the compiler-specific #<n>-directive.
+
+2010-10-14 14:05  bvassche
+
+   * testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   Unit test T001defaultstore_clib.c: Fixed leaks-at-exit.
+
+2010-10-14 08:43  bvassche
+
+   *  testing/fulltests/support/capp_run,   
+      testing/fulltests/support/clib_run:
+
+   CHANGES: testing: It is now possible to analyze the unit tests
+   with Valgrind by setting the environment variables
+   SNMP_SAVE_TMPDIR and DYNAMIC_ANALYZER. An example: (export
+   SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="valgrind
+   --trace-children=yes --leak-check=full"; cd testing &&
+   ./RUNFULLTESTS -g unit-tests)
+
+2010-10-14 08:40  bvassche
+
+   * testing/fulltests/unit-tests/T004snmp_enum_clib.c:
+
+   Unit test T004snmp_enum_clib.c: added test header / added a test
+   case.
+
+2010-10-14 08:39  bvassche
+
+   * testing/fulltests/unit-tests/T002containers_clib.c:
+
+   Fixed leaks-at-exit in unit test T002containers_clib.c.
+
+2010-10-14 08:38  bvassche
+
+   * testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   Fixed a leak-at-exit in unit test T001defaultstore_clib.c.
 
 2010-10-14 08:36  bvassche
 
@@ -6769,13 +10807,92 @@
    se_add_pair_to_list() with a value that already existed in the
    list.
 
+2010-10-14 07:16  bvassche
+
+   * testing:
+
+   Updated Subversion ignore list.
+
+2010-10-14 07:12  bvassche
+
+   *  testing/fulltests/default/T000configure,   
+      testing/fulltests/default/T000configure_simple:
+
+   Made sure that the variable $SNMP_BASEDIR is available in the
+   T000configure test.
+
+2010-10-14 05:36  nba
+
+   * agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Quell warnings
+
+2010-10-14 03:28  rstory
+
+   *  snmplib/snmptsm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   set transportSecurityLevel based on ssl session algorithms
+
+2010-10-14 03:26  rstory
+
+   * include/net-snmp/library/snmp_openssl.h, snmplib/snmp_openssl.c:
+
+   add netsnmp_openssl_null_checks
+
+2010-10-14 03:23  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   cleanup ssl/bio on failed connection
+
+2010-10-14 03:21  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   quiet compiler warning
+
+2010-10-14 03:18  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   remove unused var
+
+2010-10-14 03:16  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix typo
+
+2010-10-14 03:12  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   check for null before deref
+
 2010-10-13 16:55  hardaker
 
-   * dist/autoconf-version, testing/tests/T000configure:
+   * dist/autoconf-version, testing/fulltests/default/T000configure:
 
    added a autoconf version checking test to catch developers and
    scripts that fail to use the correct autoconf version
 
+2010-10-13 16:30  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Patch from Bill Fenner to fix only including the session_api.h
+   file
+
+2010-10-13 16:29  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   Follow-up for r19421: Made sure that the compiler again reports
+   the proper filename and line number information while compiling
+   unit tests.
+
 2010-10-13 11:53  bvassche
 
    *  win32/libsnmp_dll/Makefile.in, win32/snmpd/Makefile.in,   
@@ -6784,12 +10901,47 @@
    CHANGES: Win32: building: batch build with OpenSSL enabled and
    with recent OpenSSL development files works again.
 
+2010-10-13 09:58  bvassche
+
+   *  net-snmp-config.in, testing/RUNFULLTESTS,   
+      testing/fulltests/support/capp_build,   
+      testing/fulltests/support/capp_run,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/support/clib_run:
+
+   CHANGES: Cygwin: Running the unit tests does now work (cd testing
+   && ./RUNFULLTESTS -g unit-tests).
+   CHANGES: MinGW: Running the unit tests does now work (cd testing
+   && ./RUNFULLTESTS -g unit-tests).
+
+2010-10-13 08:00  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   Fixed a spelling error in a source code comment.
+
 2010-10-13 07:43  bvassche
 
    * net-snmp-config.in:
 
    Spelling fixes.
 
+2010-10-12 14:02  bvassche
+
+   * include/net-snmp/library/snmp_enum.h:
+
+   Added declaration for se_clear_slist().
+
+2010-10-12 11:12  bvassche
+
+   * testing/fulltests/unit-tests/T004snmp_enum_clib.c:
+
+   Added more test cases to
+   testing/fulltests/unit-tests/T004snmp_enum_clib.c.
+   Verified with Valgrind that everything does now work correctly
+   and that the
+   test program is free of leaks-at-exit.
+
 2010-10-12 11:11  bvassche
 
    * include/net-snmp/library/snmp_enum.h, snmplib/snmp_enum.c:
@@ -6808,13 +10960,195 @@
    not work.
    CHANGES: snmplib:
 
-2010-09-21 00:06  hardaker
+2010-10-12 06:27  bvassche
+
+   *  README.win32, win32/libhelpers, win32/snmptrapd/snmptrapd.dsp,   
+      win32/win32.dsw:
+
+   CHANGES: Win32: PATCH: 3085187: Building via the Microsoft Visual
+   Studio project file (.dsw/.dsp) works again.
+
+2010-10-12 05:35  magfr
+
+   *  include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/snmp_debug.h,   
+      include/net-snmp/library/snmp_logging.h,   
+      include/net-snmp/output_api.h:
+
+   CHANGES: snmplib: Correct the extern "C" declarations to be
+   consistent. Remove commented out code.
+
+2010-10-11 21:41  nba
+
+   * configure:
+
+   run autoconf
+
+2010-10-11 21:39  nba
+
+   *  agent/mibgroup/host/data_access/swinst.h,   
+      agent/mibgroup/host/data_access/swinst_apt.c,   
+      configure.d/config_os_progs:
+
+   Support for hrSWInstalledTable for dpkg/apt-based systems
+
+2010-10-11 20:46  nba
+
+   * mibs/Makefile.mib, mibs/rfclist:
+
+   Update sources for SNMP-TLS-TM-MIB
+
+2010-10-11 20:42  nba
+
+   * configure.d/config_os_headers:
+
+   Check early for picl.h
+
+2010-10-11 20:31  nba
+
+   *  agent/mibgroup/hardware/sensors/hw_sensors.c,   
+      agent/mibgroup/hardware/sensors/hw_sensors.h,   
+      agent/mibgroup/ucd-snmp/lmsensorsMib.c,   
+      include/net-snmp/agent/hardware/sensors.h:
+
+   Fix warnings from lmsensorMib
+
+2010-10-11 20:30  nba
+
+   *  agent/mibgroup/hardware/sensors.h,   
+      agent/mibgroup/hardware/sensors/picld_sensors.c:
+
+   Fix new style lmsensorMib for Solaris (was it ever compiled
+   before)
+
+2010-10-11 20:28  nba
+
+   * agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Fix lmSensors for Solaris
+
+2010-10-11 20:27  nba
+
+   * agent/mibgroup/hardware/sensors/kstat_sensors.c:
+
+   Fix a Solaris file descriptor leak
+
+2010-10-11 20:25  nba
+
+   * configure.d/config_project_with_enable:
+
+   Make --disable-developer work
+
+2010-10-11 18:23  magfr
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   CHANGES: snmpd: Update the length of sysObjectID as well as the
+   data when it is set from a configuration file.
+
+2010-10-11 17:58  magfr
+
+   * man/Makefile.in:
+
+   CHANGES: building: from "Niels Baggesen": Some systems do not
+   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
+
+2010-10-07 20:33  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-10-06 11:31  nba
+
+   * configure, configure.d/config_project_ipv6_types:
+
+   Fix ipv6 generic case so test matches verification
+
+2010-10-01 16:44  dts12
+
+   * man/variables.5.def:
+
+   Rework description of OID name handling to be
+   not quite so incredibly out of date.
+
+2010-09-22 14:02  hardaker
+
+   * configure:
+
+   erg... really use the right autoconf version by setting the path
+   right
+
+----------------------------------------------------------------------
+
+Changes: V5.6.rc2 -> V5.6.rc3
+
+2010-09-21 23:53  hardaker
+
+   * configure:
+
+   regenerated with proper autoconf version
+
+2010-09-21 23:49  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-09-21 23:45  hardaker
+
+   * snmplib/cert_util.c:
+
+   verified patch from rstory to fix certificate loading of
+   incomplete chains
+
+2010-09-21 18:07  hardaker
+
+   * snmplib/read_config.c:
+
+   CHANGES: snmplib: patch 3058388: from chrisbolt: don't parse
+   includeAllDisks in the main snmplib routines
+
+2010-09-21 18:06  hardaker
 
    * agent/agent_trap.c:
 
    CHANGES: snmpd: patch 3062526: from mariog85: fix security
    engineID setting in the trapsess directive
 
+2010-09-21 15:13  bvassche
+
+   * README.win32:
+
+   Updated Win32 documentation.
+
+2010-09-20 23:20  hardaker
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Patch from Fulko Hew to fix patch 2900078 which broke sysObjectID
+   lengths
+
+2010-09-20 21:32  dts12
+
+   * man/snmpget.1.def, man/snmpgetnext.1.def:
+
+   Document -Cf in the two man pages separately.
+
 2010-09-20 20:23  bvassche
 
    * snmplib/mib.c:
@@ -6822,9 +11156,158 @@
    CHANGES: snmplib: PATCH: 3067540: from joyceanmachine: Fix IPv4
    OID indexes on 64-bit big-endian systems.
 
+2010-09-20 19:25  bvassche
+
+   *  apps/snmpnetstat/main.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      include/net-snmp/library/ucd_compat.h, win32/Configure,   
+      win32/Makefile.in, win32/libagent/Makefile.in,   
+      win32/libagent/libagent.dsp, win32/libhelpers/Makefile.in,   
+      win32/libhelpers/libhelpers.dsp, win32/netsnmpmibs/Makefile.in,   
+      win32/snmpd/Makefile.in, win32/snmpd/snmpd.dsp,   
+      win32/snmptrapd/Makefile.in, win32/snmptrapd/snmptrapd.dsp,   
+      win32/win32.dsw, win32/win32dll.dsw:
+
+   Un-break the MSVC build.
+
+2010-09-20 09:18  bvassche
+
+   * dist/generation-scripts, man, testing, win32:
+
+   Updated Subversion ignore lists.
+
+2010-09-17 10:34  dts12
+
+   *  man/agentxtrap.1.def, man/netsnmp_sess_api.3.def,   
+      man/netsnmp_session_api.3.def, man/snmpbulkget.1.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-09-17 09:51  dts12
+
+   *  man/default_store.3.bot, man/netsnmp_agent_api.3.def,   
+      man/snmp.conf.5.def, man/snmp_alarm.3.def, man/snmp_config.5.def, 
+        man/snmpd.conf.5.def, man/snmpd.examples.5.def,   
+      man/snmpd.internal.5.def, man/snmptrapd.conf.5.def:
+
+   Update man page references to reflect new API documentation
+   structure.
+
+2010-09-10 04:23  magfr
+
+   * Makefile.in:
+
+   CHANGES: building: Add new test* entries from the testing
+   Makefile.in to the top-level Makefile.in
+
+2010-09-08 15:41  dts12
+
+   *  man/agentxtrap.1.def, man/default_store.3.top,   
+      man/encode_keychange.1.def, man/fixproc.1.def,   
+      man/mib2c-update.1.def, man/mib2c.1.def, man/mib2c.conf.5.in,   
+      man/net-snmp-config.1.def, man/net-snmp-create-v3-user.1.def,   
+      man/netsnmp_agent_api.3.def, man/netsnmp_config_api.3.def,   
+      man/netsnmp_mib_api.3.def, man/netsnmp_pdu_api.3.def,   
+      man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def,   
+      man/netsnmp_trap_api.3.def, man/netsnmp_varbind_api.3.def,   
+      man/snmp-bridge-mib.1, man/snmp.conf.5.def, man/snmp_alarm.3.def, 
+        man/snmp_config.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/snmpd.internal.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,
+      man/tkmib.1.def,    man/traptoemail.1.def, man/variables.5.def:
+
+   Update man page datestamps to match the latest (non-trivial)
+   content change.
+   Suppress forcing of "Berkeley Distribution" footer
+   (Allows Net-SNMP version information to be displayed in the man
+   page)
+
+2010-09-08 05:37  magfr
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated
+
+2010-09-04 06:38  bvassche
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed a compiler warning that was introduced in r19356 by
+   changing the return
+   type of netsnmp_tlsbase_free_tlsdata() from void* to void.
+
+2010-09-04 06:37  bvassche
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Fixed a compiler warning that was introduced in r19322 (patch
+   3044512).
+   The third argument passed to read_objid() was an int instead of
+   size_t.
+   This could have caused memory corruption on 64-bit systems.
+
+2010-09-04 03:09  hardaker
+
+   * CHANGES:
+
+   version update
+
+2010-09-04 03:08  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-09-04 01:57  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-09-04 00:59  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-09-03 22:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix tlstcp parsing of host names.
+
+2010-09-03 22:13  hardaker
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c:
+
+   check the return code of fgets and fopen before inserting the
+   results.
+
+2010-09-03 22:12  hardaker
+
+   * snmplib/snmp_alarm.c:
+
+   Patch from tanders to fix broken alarms after the previous
+   re-entrant patch
+
 2010-09-03 22:05  hardaker
 
-   * snmplib/snmpUnixDomain.c:
+   * snmplib/transports/snmpUnixDomain.c:
 
    CHANGES: snmplib: patch 3058645: from jorisesaturnus: modified
    version of the patch to use MSG_DONTWAIT for the unix domain
@@ -6844,12 +11327,140 @@
    CHANGES: snmpd: PATCH: 3053428: from takevos: fix
    get_pid_from_inode when the inode is not found.
 
+2010-09-03 20:20  hardaker
+
+   * snmplib/snmp_api.c:
+
+   remove the duplicate return before the error codes get set.
+
+2010-09-01 18:04  magfr
+
+   * agent/mibgroup/hardware/cpu/cpu.c:
+
+   CHANGES: snmpd: Log before returning.
+
+2010-09-01 02:43  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   TLS send_notify on closure and some memory clean-up patches
+
+2010-08-31 17:58  hardaker
+
+   * snmplib/snmp_api.c:
+
+   Only print the security/context EngineID mismatch note under USM
+
+2010-08-25 15:13  rstory
+
+   * CHANGES:
+
+   remove reference to reverted patch 3042765
+
+2010-08-25 15:13  rstory
+
+   * acconfig.h:
+
+   add note on where to find content used to generate
+   net-snmp-config.h.in
+
+2010-08-25 02:45  rstory
+
+   * snmplib/snmp_client.c:
+
+   revert r19342, patch 3042765, which broke client tcp disconnect
+   handling
+
+2010-08-25 02:45  rstory
+
+   * snmplib/cert_util.c:
+
+   fix more code broken by 'compiler warning fix' in r19179
+
+2010-08-25 02:45  rstory
+
+   * testing/fulltests/tls/STlsUsers:
+
+   check for conf errors after agent startup; enable logTimestamp;
+   make sure
+   all cert name/tags are unique
+
+2010-08-24 21:04  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix error string to discuss the right failed openssl new
+   invocation
+
 2010-08-24 05:37  magfr
 
    * apps/snmpusm.c:
 
    CHANGES: snmpusm: Correct ifdefs, remove dead variables.
 
+2010-08-19 21:22  hardaker
+
+   * CHANGES, NEWS:
+
+   version update
+
+2010-08-19 21:20  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-08-19 21:11  hardaker
+
+   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+
+   make depend
+
+2010-08-19 21:10  hardaker
+
+   * include/net-snmp/system/nto-qnx6.h:
+
+   // -> C comments
+
+2010-08-19 20:36  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-08-19 20:14  hardaker
+
+   * snmplib/snmp_client.c:
+
+   CHANGES: snmplib: PATCH 3042765: from mehaf: make
+   snmp_synch_response_cb() re-entrant
+
+2010-08-19 20:14  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   turn off cookie exchanges until a complete code set can be
+   written to support it based on the required function callbacks
+
+2010-08-17 18:31  rstory
+
+   * agent/snmpd.c:
+
+   add missing call to store persistent data as needed
+
+2010-08-17 18:31  rstory
+
+   * snmplib/mib.c:
+
+   CHANGES: snmplib: when displaying a byte as single digit hex
+   value, default to
+   prefixing with 0 unless there is a seperator or addition hint
+   data
+
 2010-08-17 10:31  bvassche
 
    * apps/snmpusm.c:
@@ -6858,6 +11469,13 @@
    when
    compiling without SSL support.
 
+2010-08-16 23:11  hardaker
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.h:
+
+   CHANGES: snmpd: patch 2790249: from willpwillp: reduce cache time
+   for the iftable to 3seconds to increase accuracy
+
 2010-08-16 16:26  hardaker
 
    * perl/TrapReceiver/TrapReceiver.xs:
@@ -6872,6 +11490,26 @@
    CHANGES: snmpd: patch 2825653: from bru5ce: fix sendmail.cf
    parsing in certain conditions
 
+2010-08-16 10:16  dts12
+
+   * man/Makefile.in:
+
+   Build netsnmp_agent_api.3 man page from template
+
+2010-08-16 09:20  dts12
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: PATCH: 2911361: Documentation (Provided by Tomasz
+   Lis)
+
+2010-08-16 08:06  dts12
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: PATCH: 2911361: Re-order code to group related
+   functions together
+
 2010-08-16 07:42  dts12
 
    * perl/SNMP/SNMP.xs:
@@ -6892,6 +11530,47 @@
    CHANGES: snmpd: PATCH: 2904900: Documentation plus assorted
    handler code fixes
 
+2010-08-14 09:28  dts12
+
+   *  man/Makefile.in, man/netsnmp_config_api.3.def,   
+      man/netsnmp_mib_api.3.def, man/netsnmp_pdu_api.3.def,   
+      man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def,   
+      man/netsnmp_trap_api.3.def, man/netsnmp_varbind_api.3.def,   
+      man/snmp_alarm.3.def:
+
+   Restore agent API man page
+   Don't try to extract multiple man page links per line
+   (which runs into problems with OS-specific line endings).
+   Instead, ensure the man page NAME section lists one
+   routine per line
+
+2010-08-13 23:50  hardaker
+
+   * man/Makefile.in:
+
+   fix broken Makefile after man page moves
+
+2010-08-13 23:50  hardaker
+
+   * mibs/SNMP-TLS-TM-MIB.txt, mibs/rfclist:
+
+   updated TLS MIB to current copy
+
+2010-08-13 23:50  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   replaced RFC comment number
+
+2010-08-13 23:50  hardaker
+
+   * include/net-snmp/library/snmp_alarm.h, snmplib/snmp_alarm.c:
+
+   CHANGES: snmplib: patch: 3042770: from mehaf: Made run_alarms()
+   reentrant
+
 2010-08-13 23:44  hardaker
 
    * agent/mibgroup/mibII/system_mib.c:
@@ -6899,38 +11578,497 @@
    CHANGES: snmpd: PATCH: 3044512: from philwebster: fix sysobjectid
    directive.
 
-2010-08-13 12:22  dts12
+2010-08-13 19:00  rstory
 
-   * local/mib2c.table_data.conf:
+   *  testing/fulltests/support/simple_TESTCONF.sh,   
+      testing/fulltests/tls/STsmPrefix:
 
-   Fix handling of index values in cache load function.
+   use 127.0.0.1 instead of localhost as default SNMP_TEST_DEST so
+   TLS tests work
 
-2010-08-10 04:59  magfr
+2010-08-13 18:50  hardaker
+
+   *  include/net-snmp/session_api.h, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c:
+
+   CHANGES: snmplib: implemented a fix for the issue reported in
+   patch #3042770. Created a snmp_select_info_flags function, and
+   similar, that allow for alarms to not be run. This is then used
+   in the synch_response functions to avoid 100% CPU loops
+
+2010-08-13 18:50  hardaker
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h,
+         apps/snmptrapd.c:
+
+   make snmptrapd register the certtosecname table in the agentx
+   registrations
+
+2010-08-13 18:49  hardaker
+
+   * local/mib2c.conf:
+
+   minor wording additions
+
+2010-08-13 15:04  hardaker
+
+   *  agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/memory/memory_aix.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/udp.c, agent/mibgroup/ucd-snmp/diskio.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/memory_aix4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c:
+
+   CHANGES: aix: PATCH: 2886598: from exsnafu: Header fixes for
+   compiling on AIX6
+
+2010-08-13 15:04  hardaker
+
+   *  agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_storage.c, apps/snmpnetstat/inet6.c,   
+      configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/nto-qnx6.h:
+
+   NEWS: ports: PATCH: 2836895: from seanboudreau: support for QNX6
+
+2010-08-13 14:33  dts12
+
+   *  man/Makefile.in, man/netsnmp_agent_api.3.def,   
+      man/netsnmp_config_api.3.def, man/netsnmp_mib_api.3.def,   
+      man/netsnmp_pdu_api.3.def, man/netsnmp_sess_api.3.def,   
+      man/netsnmp_session_api.3.def, man/netsnmp_trap_api.3.def,   
+      man/netsnmp_varbind_api.3.def:
+
+   'enforce netsnmp prefixes
+
+2010-08-13 14:29  dts12
+
+   * man/netsnmp_varbind_api.3.def, man/varbind_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:29  dts12
+
+   * man/netsnmp_trap_api.3.def, man/snmp_trap_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_sess_api.3.def, man/snmp_sess_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_agent_api.3.def, man/snmp_agent_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_session_api.3.def, man/session_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/netsnmp_pdu_api.3.def, man/pdu_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/mib_api.3.def, man/netsnmp_mib_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/config_api.3.def, man/netsnmp_config_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:20  dts12
+
+   * Makefile.in, doxygen.conf:
+
+   Don't automatically generate man pages
+
+2010-08-13 14:18  dts12
+
+   *  man/snmp_api_errstring.3, man/snmp_close.3, 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_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:
+
+   Remove redundant man page links
+   (Should be generated automatically, but don't exist any more
+   anyway)
+
+2010-08-13 14:13  dts12
+
+   *  man/Makefile.in, man/add_mibdir.3, man/add_module_replacement.3,  
+       man/get_module_node.3, man/init_mib.3, man/init_mib_internals.3, 
+        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/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/shutdown_mib.3:
+
+   Remove Doxygen-generated man pages, and those linking
+   individual routines to the appropriate man page.
+   (These are better generated dynamically)
+
+2010-08-13 12:19  dts12
+
+   * local/mib2c.iterate.conf, local/mib2c.table_data.conf:
+
+   Prompt for whether to generate caching code or not.
+
+2010-08-13 12:19  dts12
+
+   * local/mib2c.conf:
+
+   Rework guidance questions when selecting the best table framework
+   to use.
+   Ensure table handling code doesn't overwrite scalar handling
+   code.
+   Check that the starting point is suitable for MfD framework.
+
+2010-08-12 15:40  rstory
+
+   * snmplib/cert_util.c:
+
+   fix code broken by 'compiler warning fix' in r19179
+
+2010-08-12 15:39  rstory
+
+   * agent/mibgroup/snmpv3mibs.h:
+
+   fix typo in comment
+
+2010-08-11 22:08  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove a duplicate value check
+
+2010-08-11 22:08  hardaker
+
+   * testing/fulltests/tls/STlsUsers:
+
+   add a test where we can trust a CA-signed cert and we don't trust
+   the CA
+
+2010-08-11 22:08  hardaker
+
+   * testing/fulltests/tls/STlsUsers:
+
+   test a directly mapped CA certificate
+
+2010-08-11 22:08  hardaker
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   change the laConfig to read-write to match the patch
+
+2010-08-11 22:07  hardaker
+
+   * agent/mibgroup/ucd-snmp/loadave.c:
+
+   NEWS: snmpd: PATCH: 2931446: from ahmake: make the load averages
+   writable.
+
+2010-08-11 06:43  magfr
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   CHANGES: Silence some compilation warnings from test cases.
+
+2010-08-09 21:09  magfr
 
    * perl/SNMP/SNMP.xs:
 
    CHANGES: Handle embedded %'s in the result message.
 
+2010-08-09 21:07  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   CHANGES: Do no double declare the index values.
+
 2010-08-05 11:49  dts12
 
    * agent/mibgroup/mibII/vacm_conf.c:
 
    Update "auth*" usage message with context support
 
-2010-08-03 07:27  dts12
+2010-08-02 20:08  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntctl.c:
+
+   Fix two silly mistakes.
+
+2010-08-02 14:18  dts12
 
    * agent/mibgroup/hardware/fsys/fsys_mntctl.c:
 
    AIX filesystem types are tagged as integers, not strings.
-   Fix a silly mistake.
+
+2010-08-02 13:49  tanders
+
+   * configure, configure.d/config_os_progs:
+
+   fix Perl system() configure check to work reliably on systems
+   that lack
+   Perl
+
+2010-08-02 11:08  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   CHANGES: testing: made it possible to analyze all code covered by
+   the regression tests with a dynamic analyzer, at least if that
+   analyzer supports following child processes. An example:
+   
+   rm -rf /tmp/snmp-test-*
+   make -s
+   SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="valgrind
+   --trace-children=yes --track-origins=yes" make -s test
+   grep -i uninitialised /tmp/snmp-test-* | xargs less
+
+2010-08-02 11:02  bvassche
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpTCPDomain.c:
+
+   Fixed the following two Valgrind complaints:
+   
+   Conditional jump or move depends on uninitialised value(s)
+   at 0x6D702E0: vfprintf (in /lib64/libc-2.11.2.so)
+   by 0x6D99D11: vsnprintf (in /lib64/libc-2.11.2.so)
+   by 0x6D7A412: snprintf (in /lib64/libc-2.11.2.so)
+   by 0x6E14437: inet_ntoa (in /lib64/libc-2.11.2.so)
+   by 0x5E5E219: netsnmp_ipv4_fmtaddr (snmpIPv4BaseDomain.c:215)
+   by 0x5E65717: netsnmp_tcp_fmtaddr (snmpTCPDomain.c:70)
+   by 0x5E567EC: netsnmp_transport_peer_string
+   (snmp_transport.c:224)
+   by 0x5E2479A: _sess_process_packet (snmp_api.c:5441)
+   by 0x5E25E37: _sess_read (snmp_api.c:6037)
+   by 0x5E261DA: snmp_sess_read2 (snmp_api.c:6149)
+   by 0x5E26282: snmp_read2 (snmp_api.c:5740)
+   by 0x404DE4: main (snmpd.c:1227)
+   Uninitialised value was created by a heap allocation
+   at 0x4C270A5: malloc (vg_replace_malloc.c:236)
+   by 0x5E65739: netsnmp_tcp_accept (snmpTCPDomain.c:82)
+   by 0x5E25383: _sess_read (snmp_api.c:5786)
+   by 0x5E261DA: snmp_sess_read2 (snmp_api.c:6149)
+   by 0x5E26282: snmp_read2 (snmp_api.c:5740)
+   by 0x404DE4: main (snmpd.c:1227)
+   
+   Conditional jump or move depends on uninitialised value(s)
+   at 0x6F7B2E0: vfprintf (in /lib64/libc-2.11.2.so)
+   by 0x6FA4D11: vsnprintf (in /lib64/libc-2.11.2.so)
+   by 0x6F85412: snprintf (in /lib64/libc-2.11.2.so)
+   by 0x701F437: inet_ntoa (in /lib64/libc-2.11.2.so)
+   by 0x56FA219: netsnmp_ipv4_fmtaddr (snmpIPv4BaseDomain.c:215)
+   by 0x5701717: netsnmp_tcp_fmtaddr (snmpTCPDomain.c:70)
+   by 0x56F27EC: netsnmp_transport_peer_string
+   (snmp_transport.c:224)
+   by 0x56F294F: netsnmp_transport_send (snmp_transport.c:248)
+   by 0x56BC487: snmp_sess_async_send (snmp_api.c:5204)
+   by 0x56BC651: snmp_async_send (snmp_api.c:4998)
+   by 0x56BC677: snmp_send (snmp_api.c:4984)
+   by 0x5698440: snmp_synch_response_cb (snmp_client.c:1006)
+   Uninitialised value was created by a heap allocation
+   at 0x4C270A5: malloc (vg_replace_malloc.c:236)
+   by 0x5701B3E: netsnmp_tcp_transport (snmpTCPDomain.c:163)
+   by 0x5701E6F: netsnmp_tcp_create_tstring (snmpTCPDomain.c:305)
+   by 0x56F3804: netsnmp_tdomain_transport_full
+   (snmp_transport.c:601)
+   by 0x56F3ACC: netsnmp_transport_open_client
+   (snmp_transport.c:669)
+   by 0x54344F6: subagent_open_master_session (subagent.c:758)
+   by 0x54349C8: agentx_reopen_session (subagent.c:869)
+   by 0x5434D00: subagent_startup (subagent.c:99)
+   by 0x56EAEB7: snmp_call_callbacks (callback.c:338)
+   by 0x56DE6FB: read_configs (read_config.c:1018)
+   by 0x56C287E: init_snmp (snmp_api.c:850)
+   by 0x40477B: main (snmptrapd.c:1048)
+
+2010-08-01 06:11  bvassche
+
+   * CHANGES, NEWS:
+
+   Fixed spelling errors reported by ispell -l.
 
 2010-08-01 06:00  bvassche
 
-   * snmplib/snmp_enum.c:
+   *  snmplib/snmp_enum.c,   
+      testing/fulltests/unit-tests/T004snmp_enum_clib.c:
 
    Fixed a typo in a text string in a unit test: resturant ->
    restaurant.
 
+2010-08-01 05:53  bvassche
+
+   * include/net-snmp/library/snmp_enum.h:
+
+   Documented behavior of se_add_pair_to_slist().
+
+2010-07-31 23:50  tanders
+
+   * include/net-snmp/system/darwin10.h:
+
+   Follow-up for r19266: add missing header file to support Mac OS X
+   10.6
+   (Snow Leopard - "darwin10")
+
+2010-07-31 20:38  hardaker
+
+   * CHANGES:
+
+   version update
+
+2010-07-31 20:35  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-07-31 20:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-07-31 20:24  hardaker
+
+   *  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
+
+2010-07-31 20:16  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-07-31 20:11  hardaker
+
+   * dist/makerelease.xml:
+
+   changed the name of the readme section to call out NEWS-too
+
+2010-07-31 20:10  hardaker
+
+   * NEWS:
+
+   added missing news items
+
 2010-07-30 13:06  hardaker
 
    * snmplib/snmp_client.c:
@@ -6945,6 +12083,87 @@
    CHANGES: python: patch 3035578: from sws: keep error codes up to
    date
 
+2010-07-29 15:48  dts12
+
+   * configure:
+
+   Add support for Mac OS X 10.6 (Snow Leopard - "darwin10")
+   (On the assumption that this is the same as Mac OS X 10.5
+   (Leopard - "darwin9"))
+
+2010-07-29 15:47  dts12
+
+   *  Makefile.in, configure.d/config_os_progs,   
+      configure.d/config_project_perl_python:
+
+   Add support for Mac OS X 10.6 (Snow Leopard - "darwin10")
+   (On the assumption that this is the same as Mac OS X 10.5
+   (Leopard - "darwin9"))
+
+2010-07-29 15:03  dts12
+
+   * include/net-snmp/output_api.h:
+
+   Provide a definition of 'va_list' for varargs-based APIs
+
+2010-07-29 14:58  dts12
+
+   *  acconfig.h, agent/auto_nlist.c, agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/fsys.h, agent/mibgroup/hardware/memory.h, 
+        agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/host/hr_swrun.c, 
+        agent/mibgroup/host/hrh_filesys.c, agent/mibgroup/mibII/icmp.c, 
+        agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/ucd-snmp/diskio.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/proc.c, configure,   
+      configure.d/config_os_progs,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/system.c:
+
+   Add preliminary support for AIX 7
+   (on the assumption that this is identical to AIX 6)
+
+2010-07-29 14:56  dts12
+
+   * configure, configure.d/config_project_perl_python:
+
+   Disable embedded perl by default on architecures where
+   this seems to cause problems (HP-UX & Mac OS X)
+
+2010-07-29 11:13  dts12
+
+   * snmplib/read_config.c:
+
+   Guard against blank 'include*' lines.
+   Handle relative 'includeFile' paths
+
+2010-07-29 10:47  dts12
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Return an indication of whether config files are actually
+   processed.
+   Report problems with failing to include config files.
+
+2010-07-28 14:44  dts12
+
+   *  include/net-snmp/config_api.h,   
+      include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/snmp_debug.h,   
+      include/net-snmp/library/snmp_logging.h,   
+      include/net-snmp/mib_api.h, include/net-snmp/output_api.h,   
+      include/net-snmp/pdu_api.h, include/net-snmp/session_api.h,   
+      include/net-snmp/varbind_api.h, man/config_api.3.def,   
+      man/mib_api.3.def, man/session_api.3.def, man/varbind_api.3.def,  
+       win32/libsnmp_dll/libsnmp.def:
+
+   Bring man page documentation, header files and Windows DLL
+   definitions
+   of top-level public API calls into line with each other.
+
 2010-07-28 14:40  dts12
 
    * snmplib/snmp_api.c:
@@ -6962,6 +12181,30 @@
    Use newer SMIv2 versions (which include suitable display hints)
    rather than the original RFC1213 MIB (which doesn't)
 
+2010-07-28 14:10  dts12
+
+   * snmplib/read_config.c:
+
+   Fix indentation for 'includeSearch' processing code.
+
+2010-07-28 14:09  dts12
+
+   * snmplib/read_config.c:
+
+   Extend 'include' config file processing to cover three
+   different modes of working:
+   - look for the file on the config search path
+   - include the specified file by name
+   - ioad the contents of the specified directory
+   Use different config tokens to distinguish these cases.
+
+2010-07-27 11:12  hardaker
+
+   * agent/kernel.c, agent/kernel.h, agent/snmp_vars.c:
+
+   CHANGES: snmpd: patch 2912520: from listom: Free kmem references
+   on shutdown
+
 2010-07-27 10:54  hardaker
 
    * mibs/SMUX-MIB.txt:
@@ -6969,6 +12212,48 @@
    CHANGES: mibs: patch 2974716: from bvassche: fix issues in the
    SMUX-MIB
 
+2010-07-27 08:54  hardaker
+
+   * configure.d/config_modules_lib:
+
+   include the new security-hedaers module
+
+2010-07-27 08:54  hardaker
+
+   * local/snmp-bridge-mib:
+
+   remote debugging/processing stderr output
+
+2010-07-27 08:54  hardaker
+
+   * local/snmp-bridge-mib:
+
+   CHANGES: snmpd: patch: 3028923: from jenso: new copy of the
+   bridge-mib perl implementation
+
+2010-07-27 08:31  hardaker
+
+   *  Makefile.in, configure.d/config_modules_security_modules,   
+      dist/generation-scripts/gen-security-headers.in:
+
+   separate out the security header/init generation
+
+2010-07-27 08:31  hardaker
+
+   * configure.d/config_modules_transports:
+
+   transport configure portion
+
+2010-07-27 08:30  hardaker
+
+   *  Makefile.in, configure, configure.ac,   
+      configure.d/config_modules_lib, dist/generation-scripts,   
+      dist/generation-scripts/gen-transport-headers.in,   
+      dist/generation-scripts/gen-variables.in:
+
+   move transport header generation to a separate file and create an
+   external separate script for generating it
+
 2010-07-27 08:14  jsafranek
 
    *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
@@ -6977,6 +12262,14 @@
    CHANGES: snmpd: report gfs filesystems in hrStorageTable and
    hrFSTable.
 
+2010-07-24 15:42  dts12
+
+   * snmplib/read_config.c:
+
+   Don't lose track of which config file was being parsed,
+   when processing an included config file.
+   Fixes a bug with reporting later config errors.
+
 2010-07-24 15:36  dts12
 
    * snmplib/snmp_transport.c:
@@ -6985,7 +12278,74 @@
    when opening a new SNMP session.
    Fixes a bug with reporting later config errors.
 
-2010-07-21 18:03  nba
+2010-07-23 03:12  hardaker
+
+   * dist/makerelease.xml:
+
+   add the TLS modules to the list of test modules
+
+2010-07-21 19:25  nba
+
+   * agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c:
+
+   Fix typo in doxygen comment
+
+2010-07-21 19:24  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   Fix typo in speed computation
+
+2010-07-21 19:21  nba
+
+   * snmplib/snmp_secmod.c:
+
+   Include generated security-includes.h
+
+2010-07-21 19:20  nba
+
+   *  include/net-snmp/library/snmpksm.h,   
+      include/net-snmp/library/snmptsm.h:
+
+   Fix init func name (copy-paste glitch)
+
+2010-07-21 19:18  nba
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   Remove superfluous semicolon
+
+2010-07-21 19:18  nba
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Out of order declaration
+
+2010-07-21 19:17  nba
+
+   * snmplib/snmp_logging.c:
+
+   Log error on file open error
+
+2010-07-21 19:16  nba
+
+   * configure.d/config_modules_lib:
+
+   Speling error
+
+2010-07-21 18:10  nba
+
+   * mibs/ianalist, mibs/rfclist, mibs/rfcmibs.diff:
+
+   Update for current RFCs
+
+2010-07-21 18:08  nba
+
+   * mibs/IANAifType-MIB.txt:
+
+   Current version from IANA
+
+2010-07-21 18:05  nba
 
    * agent/mibgroup/ucd-snmp/diskio.c:
 
@@ -7000,18 +12360,160 @@
 
 2010-07-20 07:32  jsafranek
 
-   *  agent/snmpd.c, apps/snmptranslate.c, apps/snmptrapd.c,   
-      man/snmpcmd.1.def, man/snmptranslate.1.def, man/snmptrapd.8.def,  
-       snmplib/snmp_parse_args.c:
+   *  agent/snmpd.c, apps/agentxtrap.c, apps/snmptranslate.c,   
+      apps/snmptrapd.c, man/snmpcmd.1.def, man/snmptranslate.1.def,   
+      man/snmptrapd.8.def, snmplib/snmp_parse_args.c:
 
    Describe -D usage as -D[TOKEN] instead of -D [TOKEN]
 
+2010-07-17 15:10  rstory
+
+   * mibs/SNMP-TLS-TM-MIB.txt:
+
+   update display hint to some less ambiguous (and that works with
+   our lib)
+
+2010-07-17 04:13  rstory
+
+   * testing/Makefile.in:
+
+   fix testsimple for builddir!=srcdir
+
+2010-07-17 04:12  rstory
+
+   * testing/Makefile.in:
+
+   add testsimple target
+
+2010-07-16 19:21  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   release iterator when done with it
+
 2010-07-15 18:28  hardaker
 
    * snmplib/snmpusm.c:
 
    CHANGES: snmplib: fix issue with USM using inactive users
 
+2010-07-15 01:35  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   don't use strndup (portability)
+
+2010-07-15 01:35  rstory
+
+   * snmplib/cert_util.c:
+
+   include appropriate string header; define NAME_MAX if not already
+   defined;
+   don't use strndup (portability)
+
+2010-07-15 01:35  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   check that some newer openssl macros are defined before using
+   them; include
+   appropriate string header
+
+2010-07-15 01:35  rstory
+
+   *  configure, configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   check for dtls support in openssl
+
+2010-07-15 01:34  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   don't compile dtls domain if no dtls support in openssl
+
+2010-07-15 01:34  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   ifdef protection for later sha algorithms
+
+2010-07-15 01:34  rstory
+
+   *  include/net-snmp/system/darwin.h,   
+      include/net-snmp/system/darwin7.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h:
+
+   darwin openssl does not support more recent sha algorithms
+
+2010-07-15 01:33  rstory
+
+   * agent/mibgroup/target/target.c:
+
+   fix typo in ifdef test
+
+2010-07-15 01:33  rstory
+
+   * agent/mibgroup/if-mib/ifTable/ifTable.c:
+
+   fix cut-n-paste error in included file name
+
+2010-07-14 15:08  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   fix the fix: put PRIz spec in correct place
+
+2010-07-14 15:03  rstory
+
+   * testing/fulltests/tls/STlsUsers:
+
+   specify SNMP version on commandline
+
+2010-07-14 15:03  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   quiet compiler
+
+2010-07-14 15:02  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   quiet compiler warnings
+
+2010-07-13 20:03  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         apps/snmptls.c, include/net-snmp/library/cert_util.h:
+
+   include ssl.h before cert_util.h
+
+2010-07-13 20:03  rstory
+
+   * snmplib/cert_util.c:
+
+   add debug output for found cert
+
+2010-07-13 16:24  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix typo in log msg
+
 2010-07-12 10:26  bvassche
 
    * agent/mibgroup/mibII/interfaces.c:
@@ -7020,6 +12522,52 @@
    interfaces table does not trigger out-of-range array accesses
    (was detected by BoundsChecker).
 
+2010-07-12 10:21  bvassche
+
+   * agent/mibgroup/mibII/vacm_vars.c:
+
+   Fixed a dangling-pointer-read that was introduced in r19018. In
+   r19018 the type of groupSubtreeLen was changed from int to
+   size_t, which changed the behavior of the loop "while
+   (groupSubtreeLen-- > 0) ...": instead of not executing the loop
+   body when groupSubtreeLen was negative, r19018 caused the body of
+   that loop to be executed. Detected by running snmpd under
+   BoundsChecker while performing a MIB walk.
+
+2010-07-12 10:12  bvassche
+
+   * agent/mibgroup/mibII/at.c:
+
+   Reverted r19047 (which was wrong) and implemented a proper fix
+   for the compiler warnings about signed/unsigned mismatches.
+
+2010-07-12 10:09  bvassche
+
+   * agent/snmp_agent.c:
+
+   Removed an obsolete comment.
+
+2010-07-12 10:08  bvassche
+
+   * agent/helpers/table_container.c, win32/mib_module_includes.h:
+
+   Suppressed more MSVC compiler warnings.
+
+2010-07-12 04:45  rstory
+
+   * testing/fulltests/tls/STlsVars:
+
+   add comment with object name for numeric ids
+
+2010-07-12 04:45  rstory
+
+   *  agent/mibgroup/target/target.c,   
+      include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   new function to get serverId from snmpTlstmAddrTable data; use
+   new api
+   to config serviceId for trap transport when sending traps
+
 2010-07-11 11:18  bvassche
 
    * configure, configure.d/config_os_functions:
@@ -7028,6 +12576,55 @@
    that memcmp() is available instead of assuming that it is not
    available.
 
+2010-07-11 10:30  bvassche
+
+   * agent/mibgroup/disman/event/mteTriggerConf.c:
+
+   Fixed compiler warnings triggered by r19197.
+
+2010-07-10 20:00  rstory
+
+   * testing/RUNFULLTESTS:
+
+   sync up help output and options processing
+
+2010-07-09 15:13  bvassche
+
+   * README.win32:
+
+   Updated Cygwin section in README.win32.
+
+2010-07-09 15:13  bvassche
+
+   *  agent/helpers/instance.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c:
+
+   CHANGES: Win32: Suppressed "implicit cast from int to u_char"
+   warnings generated by MSVC.
+
+2010-07-09 15:11  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   Testing: made the debug output that appears in the "invoked" file
+   even more verbose.
+
+2010-07-09 15:10  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32 MSVC build fixes.
+
+2010-07-08 19:30  marz
+
+   *  local/certgen-test.pl, local/net-snmp-cert,   
+      local/net-snmp-cert.conf:
+
+   adds per identity configuration file support so defaults can be
+   customised on cmdline w -i <identity> - see net-snmp-cert.conf
+   for examples and some help info
+
 2010-07-08 12:17  dts12
 
    * agent/agent_read_config.c:
@@ -7041,12 +12638,614 @@
    CHANGES: snmpd: BUG: 3019243: Register execFix compatability
    directive correctly.
 
+2010-07-07 10:19  bvassche
+
+   *  testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_simple:
+
+   CHANGES: Cygwin and MinGW: tests T110, T111, T112, T120, T121 and
+   T122 do now pass when snmpd is built with winExtDLL support
+   enabled.
+
+2010-07-06 18:59  bvassche
+
+   *  ChangeLog, agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         local/mib2c-conf.d/mfd-persistence.m2i,   
+      testing/fulltests/support/simple_eval_tools.sh:
+
+   Made regression tests easier to debug by including ok / not ok
+   status in the "invoked" file.
+   Spelling fixes: remeber -> remember; seperator -> separator.
+
+2010-07-06 15:04  bvassche
+
+   *  testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   Test T065 does now really pass on MinGW.
+
+2010-07-05 10:01  bvassche
+
+   * testing/Makefile.in:
+
+   Added curly braces such that '||' and '&&' are evaluated in the
+   correct order.
+
+2010-07-04 11:37  bvassche
+
+   * apps:
+
+   Updated Subversion ignore list.
+
+2010-07-04 11:34  bvassche
+
+   * testing/Makefile.in:
+
+   Fall back from RUNFULLTESTS to RUNTESTS if neither TAP::Harness
+   nor Test::Harness is available.
+
+2010-07-04 11:21  bvassche
+
+   * testing/fulltests/support/simple_run:
+
+   Made sure that the test number in /tmp/snmp-tests-$testnum is set
+   to something more meaningful than just "0".
+
+2010-07-04 11:20  bvassche
+
+   * testing/RUNTESTS:
+
+   Split a long comment line.
+
+2010-07-04 10:52  bvassche
+
+   * testing/RUNTESTS:
+
+   Bug fix: made sure that srcdir is computed correctly if `dirname
+   $0` = .
+
+2010-07-02 16:27  bvassche
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs:
+
+   Simplified r19181 (Fixed TLSTCP-enabled build for platforms with
+   non-empty $(EXEEXT), i.e. Cygwin and MinGW).
+
+2010-07-01 18:15  bvassche
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs:
+
+   Fixed TLSTCP-enabled build for platforms with non-empty
+   $(EXEEXT), i.e. Cygwin and MinGW.
+
+2010-07-01 18:11  bvassche
+
+   * apps/snmptls.c:
+
+   Fixed yet another recently introduced compiler warning.
+
+2010-07-01 17:53  bvassche
+
+   * snmplib/cert_util.c:
+
+   Fixed two recently introduced compiler warnings.
+
+2010-07-01 00:19  hardaker
+
+   * CHANGES, NEWS:
+
+   version update
+
+2010-07-01 00:13  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-07-01 00:03  hardaker
+
+   *  agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      snmplib/Makefile.depend:
+
+   make depend
+
+2010-06-30 23:55  hardaker
+
+   *  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
+
+2010-06-30 23:48  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, python/netsnmp/tests/snmpd.conf:
+
+   Version number update
+
+2010-06-30 23:45  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   missed two tokens in the man pgaes
+
+2010-06-30 23:45  hardaker
+
+   *  man/snmpcmd.1.def, man/snmpd.8.def,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/SCipherTests, testing/fulltests/tls/SCrl,   
+      testing/fulltests/tls/STlsAgentTrap,   
+      testing/fulltests/tls/STlsServer,   
+      testing/fulltests/tls/STlsServerSession,   
+      testing/fulltests/tls/STlsTrapdUser,   
+      testing/fulltests/tls/STlsUsers,   
+      testing/fulltests/tls/STsmPrefix,   
+      testing/fulltests/transports/Stlstests:
+
+   rename the defX509 tokens to something more friendly: clientCert
+   and serverCert
+
+2010-06-30 23:44  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   top-file comment updates
+
+2010-06-30 23:44  hardaker
+
+   * snmplib/cert_util.c:
+
+   don't call cert_find with a NULL argument
+
+2010-06-30 23:44  hardaker
+
+   * snmplib/cert_util.c:
+
+   allow def certs to be specified using a filename
+
+2010-06-30 23:41  tanders
+
+   * testing/fulltests/support/simple_run:
+
+   fix syntax error
+
+2010-06-30 23:01  hardaker
+
+   * snmplib/cert_util.c:
+
+   turn a couple of non-critical errors into debug statements per
+   discussion with rstory
+
+2010-06-30 23:00  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   make the regexp pattern match for tests to run case insensitive
+
+2010-06-30 23:00  hardaker
+
+   * python/netsnmp/client.py:
+
+   import stderr from sys, per discussion on -users
+
+2010-06-30 22:17  hardaker
+
+   *  snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   add back in the default port specifier
+
+2010-06-30 22:17  hardaker
+
+   * local/net-snmp-cert:
+
+   enable pulling the private key over http
+
+2010-06-30 22:17  hardaker
+
+   * local/net-snmp-cert:
+
+   move URL collection into a sub function
+
+2010-06-30 22:16  hardaker
+
+   * local/net-snmp-cert:
+
+   added ability to pull a cert from a URL
+
+2010-06-30 22:16  hardaker
+
+   * local/net-snmp-cert:
+
+   fix argument bug in the is_url function
+
+2010-06-30 20:49  hardaker
+
+   * apps/snmptls.c:
+
+   remove debugging code
+
+2010-06-30 20:27  hardaker
+
+   *  testing/fulltests/tls/T117DtlsCNSession_simple,   
+      testing/fulltests/tls/T117dtlsCNSession_simple:
+
+   rename file for consistency
+
+2010-06-30 20:01  rstory
+
+   * configure:
+
+   update for new snmptls app
+
+2010-06-30 20:00  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   remove accidentally checked int debug code
+
+2010-06-30 19:59  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   define OIDs based on SNMP_TLS_TM_BASE
+
+2010-06-30 19:59  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   auto-transistion between notReady/notInService
+
+2010-06-30 19:57  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   auto-transistion between notReady/notInService; add
+   snmp_store_needed on commit
+
+2010-06-30 19:56  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   use new fingerprint parse/build functions; remove bad length
+   check; auto
+   transition between notReady and notInService
+
+2010-06-30 19:55  rstory
+
+   * mibs/TLSTM-MIB.txt:
+
+   remove pre-rfc mib; see SNMP-TLS-TM-MIB.txt instead
+
+2010-06-30 19:54  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   consolidate multiple files
+
+2010-06-30 19:53  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   make hash type parse routine public; add routines to build/parse
+   SnmpTLSFingerprint
+
+2010-06-30 19:51  rstory
+
+   *  Makefile.in, apps/Makefile.in, apps/snmptls.c,   
+      configure.d/config_os_libs:
+
+   NEWS: snmptls: new app for managing (D)TLS config via
+   SNMP-TLS-TM-MIB tables
+
+2010-06-30 19:50  rstory
+
+   *  agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.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/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c:
+
+   call new snmp_store_needed() function after a commit in tables
+   that
+   have persistent store
+
+2010-06-30 19:49  rstory
+
+   * include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   NEWS: snmplib: new experimental simple state machine
+   NEWS: snmplib: new experimental row creation API which uses a
+   state machine
+   to try really hard to create a row from a given varbind list
+
+2010-06-30 19:48  rstory
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmp_api.h,   
+      snmplib/snmp_api.c:
+
+   NEWS: snmpd: new API for indicating that persistent store needs
+   to be saved after the current request finishes processing
+
+2010-06-30 19:46  rstory
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   add some new wrapper macros
+
+2010-06-30 15:59  hardaker
+
+   *  testing/fulltests/tls/STlsCNSession,   
+      testing/fulltests/tls/STlsSanSession,   
+      testing/fulltests/tls/STlsServerSession,   
+      testing/fulltests/tls/T115DtlsSanSession_simple,   
+      testing/fulltests/tls/T116TlsSanSession_simple,   
+      testing/fulltests/tls/T117dtlsCNSession_simple,   
+      testing/fulltests/tls/T118TlsCNSession_simple:
+
+   added checks for checking direct passing of localhost to the
+   expected name
+
+2010-06-30 15:59  hardaker
+
+   * testing/fulltests/tls/STlsServer:
+
+   check for wildcard support
+
+2010-06-30 15:58  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   support SAN and CN wildcard matching per spec
+
+2010-06-30 15:00  hardaker
+
+   *  testing/fulltests/tls/SCipherTests, testing/fulltests/tls/SCrl,   
+      testing/fulltests/tls/STlsAgentTrap,   
+      testing/fulltests/tls/STlsName, testing/fulltests/tls/STlsSan,   
+      testing/fulltests/tls/STlsServer,   
+      testing/fulltests/tls/STlsTrapdUser,   
+      testing/fulltests/tls/STlsUsers, testing/fulltests/tls/STlsVars,  
+       testing/fulltests/tls/STsmPrefix,   
+      testing/fulltests/tls/ScipherTests,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/Stlsnametests,   
+      testing/fulltests/tls/Stlssantests,   
+      testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlstrapdusertests,   
+      testing/fulltests/tls/Stlsuserstests,   
+      testing/fulltests/tls/Stlsvars, testing/fulltests/tls/Stsmprefix, 
+        testing/fulltests/tls/T101DtlsUser_simple,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102TlsUser_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/tls/T111DtlsServer_simple,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112TlsServer_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple,   
+      testing/fulltests/tls/T113DtlsSan_simple,   
+      testing/fulltests/tls/T113dtlsudpsan_simple,   
+      testing/fulltests/tls/T114TlsSan_simple,   
+      testing/fulltests/tls/T114tlstcpsan_simple,   
+      testing/fulltests/tls/T121DtlsTrap_simple,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122TlsTrap_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple,   
+      testing/fulltests/tls/T131DtlsAgentTrap_simple,   
+      testing/fulltests/tls/T131dtlsudpagenttraptests_simple,   
+      testing/fulltests/tls/T132TlsAgentTrap_simple,   
+      testing/fulltests/tls/T132tlstcpagenttraptests_simple,   
+      testing/fulltests/tls/T141DtlsCrl_simple,   
+      testing/fulltests/tls/T141dtlsudpcrl_simple,   
+      testing/fulltests/tls/T142TlsCrl_simple,   
+      testing/fulltests/tls/T142tlstcpcrl_simple,   
+      testing/fulltests/tls/T151DtlsCiphers_simple,   
+      testing/fulltests/tls/T151dtlsciphers_simple,   
+      testing/fulltests/tls/T152TlsCiphers_simple,   
+      testing/fulltests/tls/T152tlsciphers_simple,   
+      testing/fulltests/tls/T200TlsIpv6_simple,   
+      testing/fulltests/tls/T200tlsipv6_simple,   
+      testing/fulltests/tls/T300TlsPerl.t,   
+      testing/fulltests/tls/T300tlstcpperl.t,   
+      testing/fulltests/tls/T301DtlsPerl.t,   
+      testing/fulltests/tls/T301dtlsperl.t,   
+      testing/fulltests/tls/T401DtlsTsmPrefix_simple,   
+      testing/fulltests/tls/T401dtlstsmprefix_simple,   
+      testing/fulltests/tls/T402TlsTsmPrefix_simple,   
+      testing/fulltests/tls/T402tlstsmprefix_simple:
+
+   moved test files around for better naming
+
+2010-06-30 14:58  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy dtls transport address to the expected hostname
+
+2010-06-30 14:58  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   set the expected hostname from the transport string if possible
+
+2010-06-30 14:58  hardaker
+
+   * local/net-snmp-cert:
+
+   a bit more help output by default
+
 2010-06-29 22:29  tanders
 
    * apps/snmptrapd_auth.c:
 
    Follow-up for r19116: make sure we include agent config
 
+2010-06-29 22:18  magfr
+
+   *  agent/mibgroup/host/hr_print.h,   
+      agent/mibgroup/if-mib/data_access/interface.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.h,   
+      agent/mibgroup/ucd-snmp/extensible.h:
+
+   Add missing config_requires
+
+2010-06-29 17:33  hardaker
+
+   * man/snmpcmd.1.def:
+
+   rework the snmpcmd manual page to separate out the flags into
+   sections appropriate for their usage type
+
+2010-06-29 16:51  marz
+
+   * local/net-snmp-cert:
+
+   pod docs, some default val fixes, info output normalized
+
+2010-06-29 16:32  hardaker
+
+   * agent/mibgroup/target/target.c:
+
+   added ssh.h include
+
+2010-06-29 16:27  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   reorganize the manual page a bit for SNMPv3 and TLS
+
+2010-06-29 16:27  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix default tls registrations
+
+2010-06-29 16:26  hardaker
+
+   * agent/snmp_agent.c:
+
+   check for NULL transports after an open fails
+
+2010-06-29 16:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   moving logging around so that openssl errors are printed on
+   failures
+
+2010-06-29 16:26  hardaker
+
+   *  testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stsmprefix:
+
+   fix some non-interactive invocation issues
+
+2010-06-29 16:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move some common code into a common function
+
+2010-06-28 19:13  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/ScipherTests,   
+      testing/fulltests/tls/T151dtlsciphers_simple,   
+      testing/fulltests/tls/T152tlsciphers_simple:
+
+   cipher suite selection and tests for it
+
+2010-06-28 19:12  hardaker
+
+   * python/LICENSE:
+
+   license updates
+
+2010-06-28 19:12  hardaker
+
+   *  python/README, python/netsnmp/client.py,   
+      python/netsnmp/client_intf.c:
+
+   SNMPv3 over TLS support
+
+2010-06-28 19:12  hardaker
+
+   * python/netsnmp/tests/test.py:
+
+   better output showing test types
+
 2010-06-28 00:54  tanders
 
    *  man/mib_api.3.def, man/netsnmp_agent.3, man/netsnmp_container.3,  
@@ -7057,13 +13256,6 @@
    CHANGES: man: clean up manual pages
    (from Debian patch 56_manpage)
 
-2010-06-28 00:20  tanders
-
-   * man/config_api.3:
-
-   remove generated manual page from repository (partly revert
-   r17558)
-
 2010-06-27 23:29  tanders
 
    * apps/snmptrapd.c, apps/snmptrapd_auth.c:
@@ -7073,6 +13265,155 @@
    compiled
    (from Debian patch 61_vacm_missing_dependency_check)
 
+2010-06-27 03:23  marz
+
+   * local/net-snmp-cert:
+
+   fix app tag completions
+
+2010-06-27 00:56  marz
+
+   * local/net-snmp-cert, local/net-snmp-cert.conf:
+
+   handle config file setting interactive, true/false values handled
+   in config
+
+2010-06-26 20:58  marz
+
+   * local/net-snmp-cert:
+
+   fix some bugs w/ spaces in names and app tag help
+
+2010-06-26 19:38  marz
+
+   *  testing/fulltests/tls/S300tlsperl.pl,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/transports/Stlstests:
+
+   fix tests to use non-interactive -I
+
+2010-06-26 17:46  marz
+
+   * local/certgen-test.pl, local/net-snmp-cert:
+
+   better interactive, ?=help, <tab> compl, more help, SAN loop
+   format and termination fix, tolerate spaces in fields and
+   filenames, more complete error output, embryonic import from url
+
+2010-06-26 13:48  bvassche
+
+   *  snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c, 
+        snmplib/transports/snmpTLSTCPDomain.c:
+
+   More compiler warning fixes.
+
+2010-06-26 13:47  bvassche
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Fixed the errors in acconfig.h and regenerated
+   net-snmp-config.h.in.
+
+2010-06-26 13:44  bvassche
+
+   * agent/mibgroup/smux/smux.c:
+
+   Fixed compiler warnings triggered by SMUX MIB implementation.
+
+2010-06-26 00:45  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/Stlssantests,   
+      testing/fulltests/tls/T113dtlsudpsan_simple,   
+      testing/fulltests/tls/T114tlstcpsan_simple:
+
+   fixes and testing for checking SAN DNS names from the server
+
+2010-06-26 00:44  hardaker
+
+   *  testing/fulltests/tls/Stlsnametests,   
+      testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple:
+
+   genericize the server name tests
+
+2010-06-25 23:01  hardaker
+
+   *  agent/mibgroup/tsm-mib.h,   
+      agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.c,   
+      agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h,   
+      snmplib/snmptsm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stsmprefix,   
+      testing/fulltests/tls/T401dtlstsmprefix_simple,   
+      testing/fulltests/tls/T402tlstsmprefix_simple:
+
+   useprefix scalar testing and support
+
+2010-06-25 23:01  hardaker
+
+   * testing/fulltests/tls/Scrltests:
+
+   remove debugging lines
+
+2010-06-25 23:00  hardaker
+
+   * testing/fulltests/tls/Scrltests:
+
+   put in only minimial debug flags
+
+2010-06-25 23:00  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/T141dtlsudpcrl_simple,   
+      testing/fulltests/tls/T142tlstcpcrl_simple:
+
+   code and test cases for CRL handling
+
+2010-06-25 15:24  bvassche
+
+   * testing/fulltests/default/T060trapdperl_simple:
+
+   Added a newline at the end of each line printed by the Perl
+   interpreter.
+
+2010-06-25 13:08  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   reduce number of resend attempts and timeout
+
+2010-06-25 13:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h, snmplib/cert_util.c, 
+        snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   warning fixes
+
+2010-06-25 13:08  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   remove logic typo from previous commit
+
+2010-06-25 13:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      testing/fulltests/tls/T200tlsipv6_simple:
+
+   IPv6 fixes for TCP
+
 2010-06-25 13:01  jsafranek
 
    * snmplib/snmp_api.c:
@@ -7086,6 +13427,84 @@
    CHANGES: snmptranslate: fixed printing of ranges with UNSIGNED
    type.
 
+2010-06-24 23:55  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix function names for stat increases
+
+2010-06-24 23:52  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix errors in comments
+
+2010-06-24 23:44  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   comments for 5.4 for dtls
+
+2010-06-24 23:44  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   comments for 5.3.2
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   client side connect comments
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   counter and comment improvements
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   update counter calls and comment text
+
+2010-06-24 19:03  bvassche
+
+   *  testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   Moved LD_LIBRARY_PATH setup from individual tests scripts to
+   simple_TESTCONF.sh.
+
+2010-06-24 19:02  bvassche
+
+   * testing/fulltests/support/simple_run:
+
+   Fixed a comment.
+
+2010-06-24 17:48  bvassche
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   Should have been included in r19084.
+
+2010-06-24 17:47  bvassche
+
+   *  snmplib/cert_util.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-06-24 12:30  tanders
+
+   * configure, configure.d/config_os_progs:
+
+   "test -e" isn't portable; use "test -x" instead for the Perl
+   system()
+   check
+
 2010-06-23 11:14  jsafranek
 
    * agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c:
@@ -7098,12 +13517,120 @@
    instead - netsnmp_interface_entry.forwarding_v6 is boolean, not
    TruthValue.
 
+2010-06-22 23:06  hardaker
+
+   * snmplib/cert_util.c, testing/fulltests/tls/Stlsuserstests:
+
+   support for certSecName mapping from a local cert file name and a
+   test for it
+
+2010-06-22 22:44  hardaker
+
+   * perl/SNMP/SNMP.pm:
+
+   documenation update to clean up and include TLS parameters
+
+2010-06-22 22:44  hardaker
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   support for passing identities and full working version
+
+2010-06-22 22:44  hardaker
+
+   *  testing/fulltests/tls/S300tlsperl.pl,   
+      testing/fulltests/tls/T300tlstcpperl.t,   
+      testing/fulltests/tls/T301dtlsperl.t:
+
+   perl TLS/DTLS tests
+
+2010-06-22 22:43  hardaker
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   first ptach on SNMP/TLS creating a new session function
+
+2010-06-22 22:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   first working support for a delayed close() to attempt to sending
+   outstanding packets in the queue; this is required for snmptrap
+   to work at all when sending traps (not informs) over DTLS
+
+2010-06-22 19:03  bvassche
+
+   *  testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   CHANGES: MinGW: tests T059traphandle_simple and
+   T065agentextend_simple do now pass.
+
+2010-06-22 19:01  bvassche
+
+   * apps/snmpnetstat/inet6.c:
+
+   The width argument for %.*d must have type int, not size_t. This
+   bug was introduced in r19014.
+
+2010-06-22 18:57  bvassche
+
+   * agent/mibgroup/utilities/execute.c:
+
+   NEWS: MinGW: the snmpd.conf keyword extend does now work.
+   NEWS: MinGW: the snmptrapd.conf keyword traphandle does now work.
+   CHANGES: MinGW: run_shell_command() with either input or output
+   (but not both) does now work.
+   This did not work until now because on MinGW mkstemp() generates
+   a MinGW-style path (/tmp/...) while system() invokes cmd.exe and
+   hence expects a Windows-style path (C:\...).
+
+2010-06-22 17:39  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   Also report the port specification if [ $SNMP_VERBOSE -gt 0 ].
+
+2010-06-22 17:38  bvassche
+
+   *  testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   Replaced an explicit test for MinGW by a test on HAVE_SIGHUP.
+
+2010-06-22 17:36  bvassche
+
+   *  configure, configure.d/config_os_misc4,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for SIGHUP.
+
+2010-06-22 17:35  bvassche
+
+   * testing/RUNTESTS:
+
+   Report which tests failed, if any.
+
 2010-06-22 08:37  bvassche
 
    * agent/mibgroup/mibII/var_route.c:
 
    Fixed an error in a comment block.
 
+2010-06-21 19:26  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_simple:
+
+   Rearranged the implementation of this test such that it is no
+   longer necessary
+   to invoke simple_eval_tools.sh when this script is invoked as a
+   trap handler
+   by snmptrapd.
+
 2010-06-21 08:01  dts12
 
    * snmplib/large_fd_set.c:
@@ -7112,20 +13639,405 @@
    to accomodate the specified socket ID.
    Problem reported by Shiyalei.
 
-2010-06-21 07:56  dts12
+2010-06-20 19:32  dts12
 
-   * agent/mibgroup/host/hr_proc.c:
+   *  snmplib/cert_util.c, snmplib/cmu_compat.c, snmplib/pkcs.c,   
+      snmplib/snprintf.c:
 
-   Reverting rev. 17616, the necessary check is already in rev.
-   17415.
+   Avoid duplicate (unused) symbols.
 
-2010-06-18 17:04  bvassche
+2010-06-20 19:31  bvassche
 
-   * configure, configure.d/config_os_libs:
+   * testing/fulltests/default/T059trapdtraphandle_simple:
 
-   CHANGES: Linux: builds again with embedded Perl disabled (bug
-   2985915).
-   (Backported r18721)
+   Commented out debug code.
+
+2010-06-20 19:30  bvassche
+
+   * testing/RUNTESTS, testing/fulltests/support/simple_run:
+
+   Restored summary success/failure count reporting.
+   Also, moved kill.exe test back to RUNTESTS.
+
+2010-06-20 19:29  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   CHANGES: testing: add the test name to the start of the file
+   "invoked".
+
+2010-06-20 19:27  bvassche
+
+   *  testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   CHANGES: MinGW: testing: skip the tests that require SIGHUP since
+   MinGW does not support SIGHUP.
+
+2010-06-20 15:19  bvassche
+
+   * configure, configure.d/config_os_progs, testing/Makefile.in:
+
+   Added a configure test that detects whether or not Perl's
+   system() function
+   invokes a POSIX shell. "make test" does now fall back to RUNTESTS
+   if not.
+
+2010-06-20 15:16  bvassche
+
+   *  snmplib/snmp_transport.c, snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   Builds again on MinGW -- added #include <net-snmp/types.h> where
+   necessary.
+   Note: although <net-snmp/types.h> is included indirectly from the
+   *     *transport.h    header files, these #include statements are
+      necessary because of    a pesky    circular dependence between
+      <net-snmp/types.h> and    <net-snmp/library/snmp_api.h>. 
+      2010-06-20 15:12  bvassche
+
+
+   * testing/fulltests/support/simple_run:
+
+   CHANGES: MinGW: refuse to run the regression tests if kill.exe
+   cannot be found.
+
+2010-06-20 15:11  bvassche
+
+   * testing/RUNTESTS:
+
+   Shortened the srcdir path by making sure that it does not contain
+   /..
+
+2010-06-19 18:30  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   Added support for running RUNFULLTESTS with Test::Harness in
+   another directory than the source directory.
+
+2010-06-19 16:41  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   complete rewrite of params to use table_dataset instead of
+   create-dataset
+
+2010-06-19 16:41  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   use text for hash type in persistent store
+
+2010-06-19 16:40  rstory
+
+   *  agent/mibgroup/Rmon/rows.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c:
+
+   quiet compiler warnings
+
+2010-06-19 16:40  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix missing specifier in debug
+
+2010-06-19 16:39  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   use define instead of constant; fix check for rows to save
+
+2010-06-19 16:39  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add remove/find function for maps/addrs/params; rename params
+   tag->name;
+   destroy -> free; group recent trust functions together in src;
+   don't store
+   params fp as binary; hand text args for hash type (e.g --sha1)
+
+2010-06-18 15:35  bvassche
+
+   * agent/mibgroup/mibII/at.c:
+
+   CHANGES: Cygwin: corrected error handling in mibII/at.
+
+2010-06-18 07:23  bvassche
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Fixed a compiler warning.
+
+2010-06-18 01:42  magfr
+
+   * snmplib/keytools.c:
+
+   Do not define ret twice when NETSNMP_USE_INTERNAL_CRYPTO is set.
+
+2010-06-18 01:39  magfr
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   Corrected typo.
+
+2010-06-18 00:31  hardaker
+
+   * CHANGES, NEWS:
+
+   better NEWS and CHANGES files
+
+2010-06-17 20:39  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-06-17 20:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-06-17 18:59  hardaker
+
+   *  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
+
+2010-06-17 18:55  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-06-17 18:54  hardaker
+
+   * Makefile.top:
+
+   version update
+
+2010-06-17 18:39  hardaker
+
+   * dist/makerelease.xml:
+
+   re-enable some commands
+
+2010-06-17 17:46  hardaker
+
+   * testing/fulltests/tls/Stlsvars:
+
+   forgot missing quotes in SET output
+
+2010-06-17 17:46  hardaker
+
+   *  testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/Stlsvars:
+
+   tls testing cleanup
+
+2010-06-17 17:45  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   more fixes for address printing; more to come
+
+2010-06-17 17:45  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   mostly properly set remote/local transport parameters
+
+2010-06-17 17:45  hardaker
+
+   *  testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/T131dtlsudpagenttraptests_simple,   
+      testing/fulltests/tls/T132tlstcpagenttraptests_simple:
+
+   tests for agents sending of traps over (D)TLS
+
+2010-06-17 17:45  hardaker
+
+   *  testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple:
+
+   move export statements to the support file for simplicity
+
+2010-06-17 17:44  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move tls bootstrapping to post_premib so other config tokens can
+   use the cert loading results
+
+2010-06-17 17:44  hardaker
+
+   * testing/fulltests/unit-tests/T004snmp_enum_clib.c:
+
+   added snmp_enum tests pulled from the main() test at the bottom
+   of the original .c file
+
+2010-06-17 16:00  dts12
+
+   * agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Eliminate "differ in signedness" warning
+
+2010-06-17 00:14  hardaker
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   revert UDP changes from r18984 since it broke the UDP transport;
+   the struct probably needs to match another struct somewhere else
+
+2010-06-16 23:26  hardaker
+
+   * snmplib/cert_util.c:
+
+   add a new KEYWORD output for debugging purposes
+
+2010-06-16 23:26  hardaker
+
+   * agent/agent_trap.c:
+
+   use config_and_open for opening the transport
+
+2010-06-16 23:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   extra debugging statements
+
+2010-06-16 22:14  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   explicitly declare trust certificates to transport
+
+2010-06-16 22:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   cleanup some lost memory on closing
+
+2010-06-16 21:56  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix typos
+
+2010-06-16 21:34  dts12
+
+   *  agent/agent_registry.c, agent/helpers/row_merge.c,   
+      agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c,
+         agent/mibgroup/ucd-snmp/disk.c,
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/pass.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/snmp_agent.c:
+
+   Eliminate (most) "signed and unsigned comparison" warnings from
+   agent code [-Wsign-compare]
+
+2010-06-16 20:16  dts12
+
+   *  snmplib/asn1.c, snmplib/check_varbind.c,   
+      snmplib/container_binary_array.c, snmplib/dir_utils.c,   
+      snmplib/keytools.c, snmplib/large_fd_set.c, snmplib/parse.c,   
+      snmplib/read_config.c, snmplib/scapi.c, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/text_utils.c, snmplib/vacm.c:
+
+   Eliminate (most) "signed and unsigned comparison" warnings from
+   library code [-Wsign-compare]
+
+2010-06-16 19:36  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove older no-longer-needed-duplicate-config entries
 
 2010-06-16 19:14  dts12
 
@@ -7133,6 +14045,764 @@
 
    Fix processing of view masks (misplaced parentheses)
 
+2010-06-16 18:45  dts12
+
+   *  apps/agentxtrap.c, apps/snmpnetstat/if.c,   
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c,   
+      apps/snmptable.c, apps/snmptrapd_log.c, apps/snmpusm.c:
+
+   Eliminate "signed and unsigned comparison" from app code
+   [-Wsign-compare]
+
+2010-06-16 17:22  hardaker
+
+   * testing/fulltests/tls/Stlstrapdusertests:
+
+   check for informs sent over tls transports
+
+2010-06-16 17:22  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy other valuse from parent tlsbase data
+
+2010-06-16 17:21  hardaker
+
+   *  testing/fulltests/tls/Stlstrapdusertests,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple:
+
+   added basic trap sending and receiving tests
+
+2010-06-16 17:21  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   remove no longer needed temp file touches
+
+2010-06-16 17:20  hardaker
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmp_transport.h,   
+      snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   added a new function and transport flag to indicate if the f_open
+   call has been called yet
+
+2010-06-16 17:20  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   unused var warning cleanup
+
+2010-06-16 17:19  hardaker
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   added trustCert configuration token
+
+2010-06-16 17:19  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   minor tweaks for testing clarity
+
+2010-06-16 17:18  hardaker
+
+   *  testing/fulltests/tls/Stlsuserstests,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_simple:
+
+   moved complex (D)TLS to a separate section and made the transport
+   tests only test minimal support
+
+2010-06-16 17:17  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   add mechanisms for specifying and expecting the hostname of the
+   far side
+
+2010-06-16 17:17  hardaker
+
+   *  testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlsvars:
+
+   tests for verifying server certificate check failures
+
+2010-06-16 17:17  hardaker
+
+   *  testing/fulltests/tls, testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple:
+
+   testing for checking client side verification of server
+   certificates
+
+2010-06-16 17:16  hardaker
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   setup for a hostname config option
+
+2010-06-16 17:16  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   setup for a hostname config option
+
+2010-06-16 17:15  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   check to make suer ssl pointer has been created via f_open call
+
+2010-06-16 15:02  dts12
+
+   * agent/snmp_perl.h, apps/snmptrapd.c:
+
+   Declare 'shutdown_perl' properly.
+
+2010-06-16 14:37  dts12
+
+   * agent/snmpd.c, snmplib/keytools.c, snmplib/lcd_time.c:
+
+   Eliminate "signed and unsigned type in conditional expression"
+   warnings [-Wsign-compare]
+
+2010-06-16 14:27  dts12
+
+   * agent/mibgroup/target/target.c:
+
+   Eliminate "unused variable" warning
+
+2010-06-16 14:22  dts12
+
+   *  agent/helpers/old_api.c, agent/helpers/row_merge.c,   
+      agent/helpers/table_dataset.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/snmpd.c, snmplib/transports/snmpUDPBaseDomain.c:
+
+   Eliminate various "implicit conversion" warnings [-Wc++-compat]
+
+2010-06-16 13:13  dts12
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c,   
+      agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/tcpTable.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      apps/snmpvacm.c, snmplib/tools.c:
+
+   Eliminate (most) signed-vs-unsigned warnings from numeric scanf
+   processing [-pedantic]
+
+2010-06-16 03:28  rstory
+
+   *  agent/helpers/table_tdata.c,   
+      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,
+         agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.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/sysORTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         snmplib/container.c:
+
+   the great un-named container hunt
+
+2010-06-16 03:27  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   share cache between table and count scalar; when reading config,
+   add to
+   library containers for active rows, table containers for inactive
+   rows;
+   user cert_util apis instead of direct container manipulation;
+   when
+   saving inactive map rows, skip all but nonVolatile
+
+2010-06-16 03:26  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix debug token typo
+
+2010-06-16 03:25  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add api for adding entries to tltsm addr, params and cert map
+   containers;
+   register se slist pair earlier so they are available during
+   config parsing;
+   make sure config strings are null terminated
+
+2010-06-15 21:42  dts12
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Suppress warnings:
+   'struct nlmsghdr defined inside parameter list' and
+   'function _load_v6 declared but never defined'
+
+2010-06-15 21:30  dts12
+
+   *  agent/kernel.c, apps/snmptrapd_sql.c, snmplib/cert_util.c,   
+      snmplib/cmu_compat.c, snmplib/pkcs.c, snmplib/snprintf.c:
+
+   Eliminate "empty translation unit" warnings [-pedantic]
+
+2010-06-15 07:07  magfr
+
+   * testing/fulltests/unit-tests/T003copy_nword_clib.c:
+
+   Add test of copy_nword
+
+2010-06-14 21:32  dts12
+
+   *  agent/mibgroup/disman/event/mteEvent.h,   
+      agent/mibgroup/disman/event/mteTrigger.h,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/disman/schedule/schedCore.c:
+
+   Eliminate "overflow in implicit constant conversion" warnings
+   [-Wc++-compat]
+
+2010-06-14 15:51  dts12
+
+   * agent/snmpd.c, apps/encode_keychange.c, snmplib/read_config.c:
+
+   Eliminate "string length greater than 509" warnings [-pedantic]
+
+2010-06-14 15:19  dts12
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   Eliminate "initializer element is not computable" warnings
+   [-pedantic]
+
+2010-06-14 05:27  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   update count handlers to count non-active rows too
+
+2010-06-14 05:12  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   only tweak storageType for active rows; reset entry flags when
+   removing from
+   cert_util maps; when createing rows from cert_util maps, set
+   stragetType to
+   volatile if nonVolatile flag not set; dont free cache in
+   cache_load on err
+
+2010-06-14 05:10  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   move tlstmAddr table config parsing to cert_util; add cache to
+   merge cert_util
+   addrs (active) and non-active rows;
+
+2010-06-14 05:10  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add nonVolatile flag to tlstmAddr table; set container name; skip
+   '0x' in fp
+
+2010-06-14 05:09  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   change LOG_ERR to LOG_INFO for non-error log msg
+
+2010-06-13 21:02  dts12
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.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/ifTable/ifTable.c,   
+      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_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_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/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.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/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c,
+         local/mib2c-conf.d/mfd-interface.m2c:
+
+   Eliminate (most) "implicit conversion" warnings from
+   MfD-based MIB module code, and MfD template [-Wc++-compat]
+
+2010-06-12 21:33  dts12
+
+   *  agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/event/mteEventConf.c,   
+      agent/mibgroup/disman/event/mteObjectsConf.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/expr/expExpressionConf.c,   
+      agent/mibgroup/disman/expr/expObjectConf.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/memory/memory_linux.c,   
+      agent/mibgroup/hardware/memory/memory_solaris.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_disk.c, agent/mibgroup/mibII/sysORTable.c, 
+        agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/ucd-snmp/disk.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/mibgroup/utilities/override.c:
+
+   Eliminate (most) "implicit conversion" warnings from (non-MfD)
+   MIB module code. [-Wc++-compat]
+
+2010-06-12 10:26  dts12
+
+   *  agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_registry.c, agent/agent_sysORTable.c,   
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c,   
+      agent/helpers/mode_end_call.c, agent/helpers/row_merge.c,   
+      agent/helpers/scalar.c, agent/helpers/stash_cache.c,   
+      agent/helpers/table_array.c, agent/helpers/table_container.c,   
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c,   
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c,   
+      agent/snmp_agent.c, apps/snmptrapd.c, apps/snmptrapd_log.c,   
+      snmplib/dir_utils.c, snmplib/file_utils.c,   
+      snmplib/large_fd_set.c, snmplib/snmp_api.c:
+
+   Eliminate (most) "implicit conversion" warnings from library,
+   apps and agent framework+helpers code. [-Wc++-compat]
+
+2010-06-10 20:01  rstory
+
+   * agent/mibgroup/target/target.c:
+
+   lookup cert keys for tls domains; use SEC_MODEL define instead of
+   hardcoded
+   constant; add SEC_MODEL_TSM to allowed sec models for mpModel
+   SNMP_VERSION_3
+
+2010-06-10 20:00  rstory
+
+   * agent/mibgroup/notification/snmpNotifyTable.c:
+
+   default to readOnly/active for bad config
+
+2010-06-10 20:00  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   add debug; switch to SEC_MODEL_TSM and warn if other secmode set,
+   instead
+   of simply logging that it won't work
+
+2010-06-10 19:59  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   check ptrs before dereference
+
+2010-06-10 19:58  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   move snmpTlstmAddrTable data management to cert_util; implement
+   TARGET_ADDR
+   and TARGET_PARAMS lookup in cert API
+
+2010-06-10 19:47  rstory
+
+   * snmplib/snmp_api.c:
+
+   update sec model define missed in earlier checkin
+
+2010-06-10 19:46  rstory
+
+   * agent/agent_trap.c:
+
+   config trapsess transports on creation; simplify ifdefs for
+   DISABLE_SNMPV1
+
+2010-06-10 19:46  rstory
+
+   *  include/net-snmp/library/snmp.h,   
+      include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpusm.h, snmplib/snmpksm.c,   
+      snmplib/snmptsm.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   auto switch to v3 for (d)tls sessions instead of logging that
+   others wont
+   work; define TSM sec model with other sec models; consistently
+   use
+   SNMP_SEC_MODEL_* in the code, using #defines for backwards
+   compatibility
+   w/*_SECURITY_MODEL
+
+2010-06-10 19:46  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   certToTSN: move mib related persistence back into mib module;
+   cert_util: add tlstmParams persistence; use slist for cert map
+   type name
+   mapping;
+
+2010-06-10 19:45  rstory
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix compiler warning (const)
+
+2010-06-10 04:58  magfr
+
+   * agent/agent_handler.c:
+
+   Add missing indentation of a do-while loop to make the code
+   readable.
+
+2010-06-09 22:57  hardaker
+
+   * local/net-snmp-cert:
+
+   comment out keyUsage so proper self-signed certs are generated
+
+2010-06-09 22:57  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   solidify certificate acceptance for the client side
+
+2010-06-09 22:57  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix array typo
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   log openssl errors on accept failure
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/snmp_api.c:
+
+   register default ports for tls/dtls
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/cert_util.c:
+
+   do proper STORE loading of trusted certificates rather than file
+   based loading
+
+2010-06-09 22:56  hardaker
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   added two new APIs: netsnmp_cert_trust and netsnmp_cert_trust_ca
+
+2010-06-09 22:55  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   added straight 'tls' transport name
+
+2010-06-09 22:55  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   added straight 'dtls' transport name
+
+2010-06-08 21:05  magfr
+
+   * agent/Makefile.in:
+
+   Install agent_read_config.h in 5.6 as well. It disappeared in
+   r18843.
+
+2010-06-08 09:25  dts12
+
+   *  agent/mibgroup/hardware/fsys/hw_fsys.h,   
+      agent/mibgroup/host/hrh_filesys.c,   
+      agent/mibgroup/ucd-snmp/disk_hw.c:
+
+   Remove (or activate) unused variables.
+   Fix misnamed function declaration.
+
+2010-06-08 07:11  dts12
+
+   * include/net-snmp/agent/hardware/fsys.h:
+
+   API changes for preliminary HAL_based implementation of UCD disk
+   module.
+   (Omitted from revision 18932 checkin)
+
+2010-06-08 04:18  rstory
+
+   * agent/Makefile.in:
+
+   update makefile for moved helper headers
+
+2010-06-07 20:18  jsafranek
+
+   * agent/mibgroup/host/hr_proc.c:
+
+   Reverting rev. 17616, the necessary check is already in rev.
+   17415.
+
+2010-06-06 03:45  magfr
+
+   * configure, configure.d/config_project_paths:
+
+   CHANGES: building: In case exec_prefix is unset then set it to
+   '${prefix}' in order to pick up overrides of $prefix in make
+   install.
+
+2010-06-04 04:06  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   do a better job of verifying fingerprints of remote servers
+   pulling fingerprints from a number of possible places
+
+2010-06-04 04:05  hardaker
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   go ahead and log output file for easier debugging in errors
+
+2010-06-04 04:05  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   fix typo
+
+2010-06-04 04:05  hardaker
+
+   * snmplib/scapi.c:
+
+   remove comment about random being inadequate; we're doing the
+   best we can based on what we have
+
+2010-06-04 04:04  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use another user for testing snmpapp default certificate
+
+2010-06-04 04:04  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   run a default test without a local key to ensure the snmpapp type
+   is picked up
+
+2010-06-04 04:04  hardaker
+
+   * snmplib/cert_util.c:
+
+   add a special case for the local identity and pull it from a
+   filename of the init_snmp() registered type name
+
+2010-06-04 04:03  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   doc update
+
+2010-06-04 04:03  hardaker
+
+   * testing/fulltests/perl/T105unix.t:
+
+   unix socket test
+
+2010-06-04 04:03  hardaker
+
+   *  testing/fulltests/perl/T103udp6.t,   
+      testing/fulltests/perl/T104tcp6.t:
+
+   ipv6 tests
+
+2010-06-04 04:02  hardaker
+
+   *  testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   mention test name is IPv4
+
+2010-06-04 04:02  hardaker
+
+   *  testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   check that transport was configured
+
+2010-06-04 04:02  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   add support for net-snmp-config.h checks
+
+2010-06-04 04:01  hardaker
+
+   *  testing/fulltests/perl/NetSNMPTestTransport.pm,   
+      testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   some basic transport checking for perl: udp and tcp
+
+2010-06-04 04:01  hardaker
+
+   * testing/fulltests/perl, testing/fulltests/perl/T001basic.t:
+
+   basic tests for perl
+
+2010-06-04 04:01  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   infrastructure module for testing perl support
+
+2010-06-03 15:56  dts12
+
+   * dist/makerelease.xml:
+
+   Point LIB{CURRENT,AGE,REVISION} documentation to the correct
+   file.
+   Warn about 'makedepend' picking up testing module code.
+   Emphasis update of 'download.html' page
+   Mention update of Official Patches
+   Suppress broken commands
+
+2010-06-03 15:16  dts12
+
+   *  agent/mibgroup/ucd-snmp/disk_hw.c,   
+      agent/mibgroup/ucd-snmp/disk_hw.h, agent/mibgroup/ucd_snmp.h:
+
+   Preliminary HAL_based implementation of UCD disk module.
+   Ensures consistent reporting between UCD and HostRes FSys usage
+   and extends 'skipNFSInHostResources' config to UCD disk stats.
+
+2010-06-03 15:13  dts12
+
+   * agent/mibgroup/hardware/fsys/hw_fsys.c:
+
+   Fix broken size calculations.
+   Support 64-bit size/usage values.
+
+2010-06-02 14:52  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use --with-ca instead of --ca
+
+2010-06-02 14:51  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use the new -brief option for fingerprint capturing
+
+2010-06-02 14:40  marz
+
+   * local/net-snmp-cert:
+
+   fix --with-ca handling, fix CA newcerts bookkeeping
+
 2010-06-02 10:57  jsafranek
 
    *  agent/mibgroup/disman/mteEventTable.c,   
@@ -7141,6 +14811,73 @@
    CHANGES: snmpd: fixed potential buffer overflow in parsing OIDs
    in config files.
 
+2010-06-02 00:24  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   check that CA certificates created after snmpd starts are still
+   usable; check all output fingerprints to ensure they were
+   properly created
+
+2010-06-02 00:23  hardaker
+
+   * local/net-snmp-cert:
+
+   add missing directory and file suffix to ca invocations
+
+2010-06-02 00:21  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   check that certificate output fingerprints were found
+
+2010-06-02 00:20  hardaker
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   two new functions for value comparison test output
+
+2010-06-02 00:16  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/transports/Stls:
+
+   remove no-longer-used self-signed certificate token specifier (we
+   require a copy of the key)
+
+2010-06-02 00:08  hardaker
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      testing/fulltests/transports/Stlstests:
+
+   - changed 'fingerprint' token to more generic 'identity' keyword
+   - added the ability for netsnmp_cert_find to try multiple types
+   (FP & file)
+   - and provide test suite test for it.
+
+2010-06-01 20:12  bvassche
+
+   *  testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   Made sure that the Perl extension modules can load the Net-SNMP
+   DLLs while running the Net-SNMP regression tests.
+
+2010-06-01 16:47  marz
+
+   * local/certgen-test.pl, local/net-snmp-cert:
+
+   major update bug fixes and features - interactive mode, separate
+   CA dirs, gen csr from cert, fingerprint display --brief,
+   eliminate sed, openssl.conf overwrite and templating
+
 2010-06-01 14:48  bvassche
 
    * agent/helpers/table.c:
@@ -7155,6 +14892,457 @@
    
    Just fixing a stupid typo.
 
+2010-05-31 10:43  bvassche
+
+   * configure, configure.d/config_modules_lib:
+
+   CHANGES: Cygwin: enabled Unix transport.
+   (Forward-ported r18687 from the V5.5 branch).
+
+2010-05-30 22:52  tanders
+
+   * testing/RUNFULLTESTS:
+
+   enable to run with older Perl (e.g. Perl 5.00405 as shipped with
+   IRIX
+   6.5)
+
+2010-05-30 22:49  tanders
+
+   * testing/RUNFULLTESTS:
+
+   polish documentation
+
+2010-05-30 20:19  magfr
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in, apps/Makefile.in,   
+      net-snmp-config.in, net-snmp-create-v3-user.in,   
+      perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL:
+
+   CHANGES: building: Do not link with libnetsnmphelpers any more as
+   it is empty.
+
+2010-05-30 19:18  magfr
+
+   * include/net-snmp/library/snmp.h, snmplib/snmp.c:
+
+   CHANGES: snmplib: Use a void argument for the data argument of
+   xdump.
+
+2010-05-30 19:18  bvassche
+
+   * agent/snmp_perl.c:
+
+   CHANGES: BUG: 2051742: added missing PERL_SYS_INIT3() call (see
+   also man perlembed).
+
+2010-05-30 19:16  bvassche
+
+   * include/net-snmp/library/container.h:
+
+   Fixed a compiler warning (free() called without being declared
+   first).
+
+2010-05-30 16:56  magfr
+
+   *  acconfig.h, agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/smux/smux.h, configure,   
+      configure.d/config_modules_lib,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmplib: Do not require that the UDP transport is included.
+
+2010-05-30 12:00  magfr
+
+   *  include/net-snmp/library/snmpCallbackDomain.h,   
+      include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpSSHDomain.h,   
+      include/net-snmp/library/snmpSTDDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpAAL5PVCDomain.c, 
+        snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpSTDDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   CHANGES: snmplib: Correct dependencies between transports. Remove
+   unnecessary includes.
+
+2010-05-30 06:21  bvassche
+
+   * agent/helpers/Makefile.in, agent/helpers/dummy.c:
+
+   Made sure that libnetsnmphelpers is not empty such that building
+   Net-SNMP on AIX and IRIX is again possible.
+
+2010-05-29 09:52  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   Follow-up for r18902: works again without TAP::Harness.
+
+2010-05-28 23:23  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix long-ago broken verbosity
+
+2010-05-28 23:05  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix more previously broken option renames; change -d to
+   master-directory and add as a real argument
+
+2010-05-28 23:05  hardaker
+
+   *  testing/fulltests/default/T001snmpv1get_simple,   
+      testing/fulltests/default/T014snmpv2cget_simple,   
+      testing/fulltests/default/T015snmpv2cgetnext_simple,   
+      testing/fulltests/default/T0160snmpv2cbulkget_simple,   
+      testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_simple,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_simple,   
+      testing/fulltests/default/T019snmpv2cnosuch_simple,   
+      testing/fulltests/default/T020snmpv3get_simple,   
+      testing/fulltests/default/T021snmpv3getnext_simple,   
+      testing/fulltests/default/T0220snmpv3bulkget_simple,   
+      testing/fulltests/default/T022snmpv3getMD5_simple,   
+      testing/fulltests/default/T023snmpv3getMD5AES_simple,   
+      testing/fulltests/default/T023snmpv3getMD5DES_simple,   
+      testing/fulltests/default/T024snmpv3getSHA1_simple,   
+      testing/fulltests/default/T025snmpv3getSHADES_simple,   
+      testing/fulltests/default/T026snmpv3getSHAAES_simple,   
+      testing/fulltests/default/T028snmpv3getfail_simple,   
+      testing/fulltests/default/T030snmpv3usercreation_simple,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_simple,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T049snmpv3informpriv_simple,   
+      testing/fulltests/default/T050snmpv3trap_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T054agentv2ctrap_simple,   
+      testing/fulltests/default/T055agentv1mintrap_simple,   
+      testing/fulltests/default/T056agentv2cmintrap_simple,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T058agentauthtrap_simple,   
+      testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/default/T070com2sec_simple,   
+      testing/fulltests/default/T071com2sec6_simple,   
+      testing/fulltests/default/T072com2secunix_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_simple,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_simple,   
+      testing/fulltests/default/T130snmpv1vacmget_simple,   
+      testing/fulltests/default/T131snmpv2cvacmget_simple,   
+      testing/fulltests/default/T132snmpv3vacmget_simple,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_simple,   
+      testing/fulltests/default/T150solarishostcpu_simple,   
+      testing/fulltests/default/T151solarishostdisk_simple,   
+      testing/fulltests/default/T152hostuptime_simple,   
+      testing/fulltests/default/T153solarisswap_simple,   
+      testing/fulltests/default/T160snmpnetstat_simple,   
+      testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/transports/T300udp_simple,   
+      testing/fulltests/transports/T310tcp_simple,   
+      testing/fulltests/transports/T320udpv6_simple,   
+      testing/fulltests/transports/T330tcpv6_simple,   
+      testing/fulltests/transports/T350unix_simple,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_simple,   
+      testing/fulltests/transports/T399alias_simple:
+
+   more missing olducd renames
+
+2010-05-28 22:57  hardaker
+
+   *  testing/RUNTESTS, testing/fulltests/default/T001snmpv1get_olducd, 
+        testing/fulltests/default/T001snmpv1get_simple,   
+      testing/fulltests/default/T014snmpv2cget_olducd,   
+      testing/fulltests/default/T014snmpv2cget_simple,   
+      testing/fulltests/default/T015snmpv2cgetnext_olducd,   
+      testing/fulltests/default/T015snmpv2cgetnext_simple,   
+      testing/fulltests/default/T0160snmpv2cbulkget_olducd,   
+      testing/fulltests/default/T0160snmpv2cbulkget_simple,   
+      testing/fulltests/default/T016snmpv2cgetfail_olducd,   
+      testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_olducd,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_simple,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_olducd,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_simple,   
+      testing/fulltests/default/T019snmpv2cnosuch_olducd,   
+      testing/fulltests/default/T019snmpv2cnosuch_simple,   
+      testing/fulltests/default/T020snmpv3get_olducd,   
+      testing/fulltests/default/T020snmpv3get_simple,   
+      testing/fulltests/default/T021snmpv3getnext_olducd,   
+      testing/fulltests/default/T021snmpv3getnext_simple,   
+      testing/fulltests/default/T0220snmpv3bulkget_olducd,   
+      testing/fulltests/default/T0220snmpv3bulkget_simple,   
+      testing/fulltests/default/T022snmpv3getMD5_olducd,   
+      testing/fulltests/default/T022snmpv3getMD5_simple,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5AES_simple,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_simple,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_simple,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_simple,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_simple,   
+      testing/fulltests/default/T028snmpv3getfail_olducd,   
+      testing/fulltests/default/T028snmpv3getfail_simple,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_simple,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_simple,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_simple,   
+      testing/fulltests/default/T050snmpv3trap_olducd,   
+      testing/fulltests/default/T050snmpv3trap_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_olducd,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_olducd,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T053agentv1trap_olducd,   
+      testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T054agentv2ctrap_olducd,   
+      testing/fulltests/default/T054agentv2ctrap_simple,   
+      testing/fulltests/default/T055agentv1mintrap_olducd,   
+      testing/fulltests/default/T055agentv1mintrap_simple,   
+      testing/fulltests/default/T056agentv2cmintrap_olducd,   
+      testing/fulltests/default/T056agentv2cmintrap_simple,   
+      testing/fulltests/default/T057trapdauthtest2_olducd,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_olducd,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_olducd,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T058agentauthtrap_olducd,   
+      testing/fulltests/default/T058agentauthtrap_simple,   
+      testing/fulltests/default/T059trapdtraphandle_olducd,   
+      testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T060trapdperl_olducd,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_olducd,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T065agentextend_olducd,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/default/T070com2sec_olducd,   
+      testing/fulltests/default/T070com2sec_simple,   
+      testing/fulltests/default/T071com2sec6_olducd,   
+      testing/fulltests/default/T071com2sec6_simple,   
+      testing/fulltests/default/T072com2secunix_olducd,   
+      testing/fulltests/default/T072com2secunix_simple,   
+      testing/fulltests/default/T100agenthup_olducd,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T110agentxget_olducd,   
+      testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_olducd,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_olducd,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T113agentxtrap_olducd,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_olducd,   
+      testing/fulltests/default/T114agentxagentxtrap_simple,   
+      testing/fulltests/default/T115agentxperl_olducd,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/default/T120proxyget_olducd,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_olducd,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_olducd,   
+      testing/fulltests/default/T122proxysetfail_simple,   
+      testing/fulltests/default/T130snmpv1vacmget_olducd,   
+      testing/fulltests/default/T130snmpv1vacmget_simple,   
+      testing/fulltests/default/T131snmpv2cvacmget_olducd,   
+      testing/fulltests/default/T131snmpv2cvacmget_simple,   
+      testing/fulltests/default/T132snmpv3vacmget_olducd,   
+      testing/fulltests/default/T132snmpv3vacmget_simple,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_olducd,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_olducd,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_olducd,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_simple,   
+      testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T150solarishostcpu_simple,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T151solarishostdisk_simple,   
+      testing/fulltests/default/T152hostuptime_olducd,   
+      testing/fulltests/default/T152hostuptime_simple,   
+      testing/fulltests/default/T153solarisswap_olducd,   
+      testing/fulltests/default/T153solarisswap_simple,   
+      testing/fulltests/default/T160snmpnetstat_olducd,   
+      testing/fulltests/default/T160snmpnetstat_simple,   
+      testing/fulltests/default/T200snmpv2cwalkall_olducd,   
+      testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/olducd_run,   
+      testing/fulltests/support/simple_TESTCONF.sh,   
+      testing/fulltests/support/simple_eval_tools.sh,   
+      testing/fulltests/support/simple_run,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T300udp_simple,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T310tcp_simple,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T320udpv6_simple,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_simple,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T350unix_simple,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/transports/T361tlstcp_simple,   
+      testing/fulltests/transports/T399alias_olducd,   
+      testing/fulltests/transports/T399alias_simple:
+
+   renamed 'olducd' to 'simple' to put a more positive spin on them
+
+2010-05-28 22:54  hardaker
+
+   * testing/README, testing/RUNFULLTESTS:
+
+   documentation for the test suite
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/tests/test.py:
+
+   revert unintentionanally committed test test
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c, python/netsnmp/tests/test.py:
+
+   free variables again
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   fix walks so that multiple walks terminate properly
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   patch to handle testing of looping of multiple varbinds in a walk
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   inital patch to prevent looping walks
+
+2010-05-28 20:53  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   implement cert lookup by filename
+
+2010-05-28 07:02  magfr
+
+   * snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Add const declarations to the disabled versions
+   of the debugging code as well.
+
+2010-05-28 02:12  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   add persistence; check for col mods while row active
+
+2010-05-28 02:11  rstory
+
+   *  agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_dataset.h:
+
+   CHANGES: agentlib: new functions to make stash ptr and newrow
+   available to
+   table_dataset handlers
+   nonews: fix typo; tabs to spaces; use sizeof instead of constant
+
+2010-05-27 18:59  bvassche
+
+   *  include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_client.h,   
+      win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp,   
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Win32 build fixes.
+
+2010-05-27 18:24  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   "make test" without TAP::Harness (was broken by r18802).
+
+2010-05-27 15:15  bvassche
+
+   *  agent/mibgroup/mibII/interfaces.c,   
+      include/net-snmp/library/lcd_time.h,   
+      include/net-snmp/library/md5.h, include/net-snmp/library/scapi.h, 
+        include/net-snmp/library/snmp_debug.h, snmplib/lcd_time.c,   
+      snmplib/md5.c, snmplib/scapi.c, snmplib/snmp_debug.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c:
+
+   Fixed several compiler warnings. Most fixes involved adding the
+   "const" keyword.
+
 2010-05-27 13:52  jsafranek
 
    * agent/mibgroup/target/snmpTargetAddrEntry.c:
@@ -7162,6 +15350,14 @@
    CHANGES: snmpd: BUG: 2972579: fixed checking of
    snmpTargetAddrRowStatus SET requests.
 
+2010-05-27 13:41  hardaker
+
+   *  testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_run:
+
+   revert part of 18885: test files should be able to be run by
+   themselves too
+
 2010-05-27 11:19  jsafranek
 
    *  agent/mibgroup/if-mib/data_access/interface.c,   
@@ -7185,15 +15381,552 @@
    failed' error in
    snmpd log. Now the agent expands these values to 64bits first and
    *     *then* performs    the calculation, using a new flag. 
-      2010-05-24 10:10  jsafranek
+      2010-05-27 08:18  magfr
 
 
+   *  testing/RUNFULLTESTS, testing/RUNTESTS,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_run:
+
+   CHANGES: testing: Move the setting of MIBDIRS from the support
+   script to the drivers since it is needed for the C tests as well.
+
+2010-05-27 08:09  magfr
+
+   * testing/RUNTESTS:
+
+   CHANGES: testing: Use olducd_run, not run_olducd. Change srcdir
+   to refer to the top directory and not the testing subdirectory as
+   that is what is expected in the test scripts.
+
+2010-05-27 05:17  hardaker
+
+   *  testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   warning squashing
+
+2010-05-27 05:16  hardaker
+
+   *  include/net-snmp/library/keytools.h,   
+      include/net-snmp/library/lcd_time.h, snmplib/keytools.c,   
+      snmplib/lcd_time.c:
+
+   more const correctness
+
+2010-05-27 04:18  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   tests for agent-not-known-user-certificates
+
+2010-05-27 04:16  hardaker
+
+   * README.snmpv3:
+
+   reference the itnernal support and related documentation
+
+2010-05-27 04:16  hardaker
+
+   * snmplib/openssl/OPENSSL-LICENSE, snmplib/openssl/README:
+
+   internal OpenSSL support documentation
+
+2010-05-27 04:16  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   NEWS: libnetsnmp: Support for a stream-line stripped down version
+   of internal OpenSSL support using --with-openssl=internal
+
+2010-05-27 04:15  hardaker
+
+   *  include/net-snmp/library/openssl_aes.h,   
+      include/net-snmp/library/openssl_des.h,   
+      include/net-snmp/openssl_md5.h,   
+      snmplib/openssl/openssl_aes_cfb.c,   
+      snmplib/openssl/openssl_aes_local.h,   
+      snmplib/openssl/openssl_des_local.h,   
+      snmplib/openssl/openssl_set_key.c, snmplib/openssl/openssl_spr.h, 
+        snmplib/scapi.c:
+
+   remove more dependencies for external openssl headers
+
+2010-05-27 04:15  hardaker
+
+   *  configure, configure.d/config_os_libs, snmplib/openssl,   
+      snmplib/openssl/openssl_aes_cfb.c,   
+      snmplib/openssl/openssl_aes_core.c,   
+      snmplib/openssl/openssl_aes_local.h,   
+      snmplib/openssl/openssl_cbc_enc.c,   
+      snmplib/openssl/openssl_cfb128.c,   
+      snmplib/openssl/openssl_des_enc.c,   
+      snmplib/openssl/openssl_des_local.h,   
+      snmplib/openssl/openssl_md32_common.h,   
+      snmplib/openssl/openssl_md5.c,   
+      snmplib/openssl/openssl_md5_local.h,   
+      snmplib/openssl/openssl_modes.h,   
+      snmplib/openssl/openssl_ncbc_enc.c,   
+      snmplib/openssl/openssl_set_key.c, snmplib/openssl/openssl_sha.h, 
+        snmplib/openssl/openssl_sha1.c,   
+      snmplib/openssl/openssl_sha_local.h,   
+      snmplib/openssl/openssl_spr.h, snmplib/openssl_aes_cfb.c,   
+      snmplib/openssl_aes_core.c, snmplib/openssl_aes_local.h,   
+      snmplib/openssl_cbc_enc.c, snmplib/openssl_cfb128.c,   
+      snmplib/openssl_des_enc.c, snmplib/openssl_des_local.h,   
+      snmplib/openssl_md32_common.h, snmplib/openssl_md5.c,   
+      snmplib/openssl_md5_local.h, snmplib/openssl_modes.h,   
+      snmplib/openssl_ncbc_enc.c, snmplib/openssl_set_key.c,   
+      snmplib/openssl_sha.h, snmplib/openssl_sha1.c,   
+      snmplib/openssl_sha_local.h, snmplib/openssl_spr.h:
+
+   move openssl code into a subdirectory
+
+2010-05-27 04:13  hardaker
+
+   *  testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T050snmpv3trap_olducd:
+
+   fix testing so it uses multiple types of crypto
+
+2010-05-27 04:13  hardaker
+
+   *  acconfig.h, configure, configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   definitions and files for doing internal crypto support
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/scapi.c:
+
+   include internal aes/des headers
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/openssl_cfb128.c:
+
+   localize
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/openssl_cfb128.c, snmplib/openssl_modes.h:
+
+   inital copies of cfb128 modes from openssl
+
+2010-05-27 04:11  hardaker
+
+   * snmplib/openssl_aes_core.c:
+
+   localize
+
+2010-05-27 04:11  hardaker
+
+   * snmplib/openssl_aes_core.c, snmplib/openssl_aes_local.h:
+
+   initial versions of aes_core.c and aes_locl.h
+
+2010-05-27 04:10  hardaker
+
+   * include/net-snmp/library/openssl_aes.h:
+
+   initial copy of aes.h from openssl
+
+2010-05-27 04:10  hardaker
+
+   * snmplib/openssl_aes_cfb.c:
+
+   initial copy of the openssl aes_cfb.c file
+
+2010-05-27 04:10  hardaker
+
+   * snmplib/openssl_des_enc.c:
+
+   include localized copies of the files
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/scapi.c:
+
+   use internal DES
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/openssl_cbc_enc.c:
+
+   localized copy of the cbc_enc.c file from openssl
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/openssl_spr.h:
+
+   des/spr.h from openssl
+
+2010-05-27 04:08  hardaker
+
+   * snmplib/openssl_des_enc.c:
+
+   added des_enc.c from openssl
+
+2010-05-27 04:08  hardaker
+
+   *  include/net-snmp/library/openssl_des.h,   
+      include/net-snmp/library/openssl_md5.h,   
+      include/net-snmp/library/openssl_sha.h:
+
+   local copies of the openssl headers
+
+2010-05-27 04:07  hardaker
+
+   * include/net-snmp/library/openssl_des.h:
+
+   initial copy of openssl's des.h
+
+2010-05-27 04:07  hardaker
+
+   * snmplib/openssl_ncbc_enc.c, snmplib/openssl_set_key.c:
+
+   localized header files
+
+2010-05-27 04:07  hardaker
+
+   *  snmplib/openssl_des_local.h, snmplib/openssl_ncbc_enc.c,   
+      snmplib/openssl_set_key.c:
+
+   inital copies of some of the openssl DES files
+
+2010-05-27 04:06  hardaker
+
+   * snmplib/keytools.c, snmplib/scapi.c:
+
+   finishing porting of internal auth support
+
+2010-05-27 04:06  hardaker
+
+   * configure, configure.d/config_os_libs, snmplib/Makefile.in:
+
+   add internal crypto files to the check/use list
+
+2010-05-27 04:06  hardaker
+
+   *  snmplib/md32_common.h, snmplib/md5_locl.h,   
+      snmplib/openssl_md32_common.h, snmplib/openssl_md5.c,   
+      snmplib/openssl_md5_local.h, snmplib/openssl_sha1.c,   
+      snmplib/openssl_sha_local.h, snmplib/sha_locl.h:
+
+   localized file names with openssl prefixes
+
+2010-05-27 04:05  hardaker
+
+   *  include/net-snmp/openssl_md5.h, snmplib/md5_locl.h,   
+      snmplib/openssl_md5.c:
+
+   localize the md5 implementation
+
+2010-05-27 04:05  hardaker
+
+   *  snmplib/openssl_sha.h, snmplib/openssl_sha1.c,   
+      snmplib/sha_locl.h:
+
+   completely localize the openssl SHA support
+
+2010-05-27 04:04  hardaker
+
+   * snmplib/openssl_sha.h:
+
+   initial verison of sha.h copy
+
+2010-05-27 04:04  hardaker
+
+   *  snmplib/md32_common.h, snmplib/md5_locl.h, snmplib/openssl_md5.c, 
+        snmplib/openssl_sha1.c, snmplib/sha_locl.h:
+
+   added local copies of the openssl crypto functions
+
+2010-05-27 04:04  hardaker
+
+   * snmplib/keytools.c:
+
+   make use of internal crypto hash functions
+
+2010-05-27 04:03  hardaker
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_os_misc2,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   configure checks for internal-crypto support
+
+2010-05-26 22:17  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_api.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/transports/Stlstests:
+
+   properly verify expected server certificates under DTLS; add a
+   new flag in tlsbase to indicate verification has occurred
+
+2010-05-26 21:02  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   compiler warning squashing
+
+2010-05-26 21:02  hardaker
+
+   *  include/net-snmp/library/lcd_time.h,   
+      include/net-snmp/library/scapi.h, snmplib/lcd_time.c,   
+      snmplib/scapi.c:
+
+   add const qualifiers to a few places
+
+2010-05-26 19:46  bvassche
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
+
+   CHANGES: Cygwin: libnetsnmpmibs, libnetsnmphelpers and
+   libnetsnmpagent do now build as a DLL when configured with
+   --enable-shared.
+
+2010-05-26 17:47  bvassche
+
+   * agent/Makefile.in, agent/helpers/Makefile.in:
+
+   NEWS: moved all functions defined in libnetsnmphelpers to
+   libnetsnmpagent. libnetsnmphelpers is now an empty library.
+
+2010-05-26 17:20  bvassche
+
+   *  agent/Makefile.in, agent/bulk_to_next.c,   
+      agent/helpers/Makefile.in, agent/helpers/bulk_to_next.c,   
+      agent/helpers/null.c, agent/helpers/old_api.c, agent/null.c,   
+      agent/old_api.c:
+
+   Reverted r18829 in order to minimize diffs with older branches.
+
+2010-05-25 07:23  magfr
+
+   * testing/fulltests/transports/Stls:
+
+   Tell net-snmp-cert where net-snmp-config is located
+
+2010-05-25 07:14  magfr
+
+   * testing/fulltests/support/clib_build:
+
+   Correct the signature of main. Use #include instead of sourcing
+   to get the code under test in order to get better error messages
+
+2010-05-25 07:11  magfr
+
+   * testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   Add arguments to sprintf statements to make the test work
+
+2010-05-25 07:07  magfr
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c,   
+      testing/fulltests/unit-tests/T002containers_clib.c:
+
+   Remove unused variables and disabled code
+
+2010-05-25 05:20  magfr
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend,   
+      include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/Makefile.depend, snmplib/transports/snmpIPBaseDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c:
+
+   CHANGES: snmplib: Split snmpIPBaseDomain and move the IPv4 parts
+   to IPv4Base and the socket generic parts to SocketBase.
+
+2010-05-24 20:24  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   fix compiler warning; finish tlstmParamsTable lastChanged scalar
+
+2010-05-24 19:28  magfr
+
+   *  testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build:
+
+   Add --external-libs in order to support building the tests on
+   solaris
+
+2010-05-24 13:33  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   argh.. fix fallout from manually (mis)applying patch
+
+2010-05-24 12:59  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmParamsTable,   
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   first pass at tlstmParamsTable
+
+2010-05-24 12:59  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   update defines to match MIB names, per grand-poobah
+
+2010-05-24 12:58  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c:
+
+   update OID to match upcoming RFC
+
+2010-05-24 11:48  bvassche
+
+   *  agent/Makefile.in, agent/bulk_to_next.c,   
+      agent/helpers/Makefile.in, agent/helpers/bulk_to_next.c,   
+      agent/helpers/null.c, agent/helpers/old_api.c, agent/null.c,   
+      agent/old_api.c:
+
+   CHANGES: libnetsnmpagent, libnetsnmphelpers: moved the functions
+   netsnmp_bulk_to_next_fix_requests(),
+   netsnmp_get_bulk_to_next_handler(), netsnmp_register_null(),
+   netsnmp_register_null_context() and netsnmp_register_old_api()
+   from libnetsnmphelpers to libnetsnmpagent.
+   Notes:
+   - This does not affect backwards compatibility for applications
+   that link with $(net-snmp-config --agent-libs) since this
+   involves linking with both libnetsnmphelpers and libnetsnmpagent.
+   - Functions have been moved between libraries by moving entire
+   source files.
+
+2010-05-24 10:10  jsafranek
+
    *  agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
       agent/mibgroup/hardware/fsys/fsys_mntent.c:
 
    Use proper string sizes and make sure strings are
    zero-terminated.
 
+2010-05-24 08:01  bvassche
+
+   *  configure, configure.d/config_os_progs, net-snmp-config.in,   
+      snmplib/Makefile.in:
+
+   CHANGES: Cygwin: libnetsnmp does now build as a DLL when
+   configured with --enable-shared.
+   CHANGES: Cygwin: perl modules do now build (--with-perl-modules).
+   Note: the T060trapdperl_olducd, T061agentperl_olducd and
+   T115agentxperl_olducd tests still fail.
+
+2010-05-23 23:06  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   update filenames/patsh for recent file renames; fix typos
+
+2010-05-23 22:08  magfr
+
+   *  net-snmp-config.in, testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build:
+
+   CHANGES: building: Use the same compiler command and flags for
+   building of tests as for building of the code, thus enabling test
+   of e.g. 32-bit code compiled on a 64-bit platform.
+
+2010-05-23 21:41  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   update include/config file/paths for recent renames
+
+2010-05-23 21:31  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable.c,  
+       agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/tlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/tlstmCertToTSNTable.h,
+         agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable.h:
+
+   rename files for MIB renames
+
+2010-05-23 21:25  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable:
+
+   rename directories to match renames in MIB
+
 2010-05-20 08:48  bvassche
 
    * net-snmp-config.in:
@@ -7201,6 +15934,95 @@
    Swapped link order of -lnetsnmphelpers -lnetsnmpmibs: netsnmpmibs
    depends on netsnmphelpers and not the other way around.
 
+2010-05-20 08:42  bvassche
+
+   *  apps/snmptrapd_log.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   Fixed more compiler warnings.
+
+2010-05-19 18:26  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix stashing
+
+2010-05-19 18:25  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/unit-tests/T001defaultstore_clib.c,   
+      testing/fulltests/unit-tests/T002containers_clib.c:
+
+   output filenames of failed tests
+
+2010-05-19 18:25  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   wipe trailing comment C marker if it exists
+
+2010-05-19 18:25  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   title the SNMPv3 tests
+
+2010-05-19 18:25  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix testing of built titles
+
+2010-05-19 18:24  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   only print failure header if there was at least one
+
+2010-05-19 18:24  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd:
+
+   make descriptive titles work again
+
+2010-05-19 18:24  hardaker
+
+   *  testing/RUNFULLTESTS, testing/fulltests/support/build_capp,   
+      testing/fulltests/support/build_clib,   
+      testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/support/olducd_run,   
+      testing/fulltests/support/run_olducd:
+
+   rename files so prefixing is based on the suite name, not file
+   type
+
+2010-05-19 17:52  bvassche
+
+   *  perl/ASN/Makefile.PL, perl/Makefile.PL, perl/Makefile.subs.pl,   
+      perl/OID/Makefile.PL, perl/SNMP/Makefile.PL,   
+      perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL,   
+      perl/agent/Support/Makefile.PL,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/default_store/Makefile.PL:
+
+   CHANGES: Cygwin: perl: building the Perl modules with the Cygwin
+   Perl package is now possible.
+   (Forward-ported r18688 from the V5.5 branch.)
+
+2010-05-19 17:50  bvassche
+
+   * agent/mibgroup/examples/delayed_instance.c:
+
+   Fixed yet another compiler warning.
+
 2010-05-19 12:05  dts12
 
    *  agent/mibgroup/hardware/fsys.h,   
@@ -7230,12 +16052,97 @@
 
    Fix missing/broken API declarations.
 
-2010-05-18 23:47  tanders
+2010-05-19 08:46  bvassche
 
-   *  agent/mibgroup/host/data_access/swinst_pkginfo.c,   
-      agent/object_monitor.c:
+   * testing/fulltests/support/run_olducd:
 
-   fix syntax errors: #elsif -> #elif
+   Made error messages more clear in case of failure or wrong
+   invocation.
+
+2010-05-19 00:01  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   added test for using a certificate signed by a CA certificate
+
+2010-05-18 23:31  tanders
+
+   * testing/Makefile.in:
+
+   make sure we call the right Perl
+
+2010-05-18 20:39  bvassche
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: agent: include local port number in packet dumps. An
+   example:
+   
+   Received 36 byte packet from UDP:
+   [127.0.0.1]:53909->[127.0.0.1]:1161
+   0000: 30 22 02 01 01 04 06 70 75 62 6C 69 63 A1 15 02
+   0".....public...
+   0016: 04 37 F2 D4 9B 02 01 00 02 01 00 30 07 30 05 06
+   .7.........0.0..
+   0032: 01 01 05 00 ....
+   
+   Received SNMP packet(s) from UDP:
+   [127.0.0.1]:53909->[127.0.0.1]:1161
+   GETNEXT message
+   -- ccitt.1
+   
+   Sending 118 bytes to UDP: [127.0.0.1]:53909->[127.0.0.1]:1161
+   0000: 30 74 02 01 01 04 06 70 75 62 6C 69 63 A2 67 02
+   0t.....public.g.
+   0016: 04 37 F2 D4 9B 02 01 00 02 01 00 30 59 30 57 06
+   .7.........0Y0W.
+   0032: 08 2B 06 01 02 01 01 01 00 04 4B 4C 69 6E 75 78
+   .+........KLinux
+   0048: 20 61 73 75 73 20 32 2E 36 2E 33 33 2E 32 2D 73 asus
+   2.6.33.2-s
+   0064: 63 73 74 20 23 31 20 53 4D 50 20 50 52 45 45 4D cst #1 SMP
+   PREEM
+   0080: 50 54 20 53 61 74 20 41 70 72 20 33 20 32 31 3A PT Sat Apr
+   3 21:
+   0096: 31 30 3A 35 38 20 43 45 53 54 20 32 30 31 30 20 10:58 CEST
+   2010
+   0112: 78 38 36 5F 36 34 x86_64
+
+2010-05-18 19:42  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_persist.c, 
+       
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update tlstmAddrTable
+   - deal with hash type properly for get/set and persistence
+   - add count and last changed scalars
+
+2010-05-18 19:08  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c:
+
+   update to offical OID from upcoming rfc
+
+2010-05-18 16:16  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update to official OIDs from upcoming RFC; add count/last changed
+   scalars
 
 2010-05-18 14:56  dts12
 
@@ -7258,6 +16165,97 @@
 
    Working(?) HAL-based version of hrFSTable.
 
+2010-05-18 14:12  bvassche
+
+   * snmplib/tools.c:
+
+   Fixed a compiler warning.
+
+2010-05-17 21:03  hardaker
+
+   * include/net-snmp/library/snmp_secmod.h:
+
+   use proper TSM security code (4) now that it's official
+
+2010-05-17 18:43  hardaker
+
+   * testing/fulltests/unit-tests/T002containers_clib.c:
+
+   beginning of a container unit test
+
+2010-05-17 18:43  hardaker
+
+   * include/net-snmp/library/testing.h:
+
+   a basic C-code based test reporting mechanism
+
+2010-05-17 18:42  hardaker
+
+   *  testing/fulltests/unit-tests,   
+      testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   basic default_store tests
+
+2010-05-17 18:42  hardaker
+
+   * testing/fulltests/support/build_clib:
+
+   a build system for basic libnetsnmp tests
+
+2010-05-17 18:14  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c,
+         include/net-snmp/library/cert_util.h:
+
+   fix fingerprint bin/hex conversion; add/remove cert sec maps via
+   mib now works
+
+2010-05-17 18:13  rstory
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   new function netsnmp_binary_to_hex
+
+2010-05-17 18:13  rstory
+
+   * snmplib/snmptsm.c:
+
+   fprintf(stderr -> DEBUGMSGTL((
+
+2010-05-17 18:12  rstory
+
+   * snmplib/cert_util.c:
+
+   move check for hash type
+
+2010-05-17 16:34  hardaker
+
+   * testing/RUNTESTS:
+
+   make RUNTESTS work outside the sourcedir
+
+2010-05-17 15:37  hardaker
+
+   * testing/Makefile.in, testing/RUNTESTS:
+
+   made a limited run test possible again without perl
+
+2010-05-17 15:32  dts12
+
+   *  win32/mib_module_includes.h, win32/mib_module_inits.h,   
+      win32/net-snmp/agent/mib_module_config.h,   
+      win32/netsnmpmibs/Makefile.in, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Use newer DisMan Event MIB code for MSVC-based builds
+   (in line with all configure-based builds)
+
+2010-05-17 15:23  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move the return outside the if statement
+
 2010-05-17 15:18  dts12
 
    *  agent/mibgroup/hardware/fsys/hw_fsys.c,   
@@ -7265,28 +16263,81 @@
 
    Provide missing public interface to HAL-based filestore module.
 
-2010-05-17 07:46  jsafranek
+2010-05-17 10:41  bvassche
 
-   * configure, configure.ac:
+   * win32/transports/snmp_transport_inits.h:
 
-   Check configure.d/config_os_headers before
-   configure.d/config_modules_* and fix lm_sensors version detection
+   Follow-up for r18754 (revert r18738): r18754 only partially
+   reverted r18738
+   and hence broke the Win32-build. Finished reversal of r18738 by
+   restoring
+   win32/transports/snmp_transport_inits.h.
 
-2010-05-17 06:53  bvassche
+2010-05-16 18:17  bvassche
 
-   * configure, configure.d/config_modules_lib:
+   * ltmain.sh:
 
-   CHANGES: Cygwin: do neither compile nor link inet_ntop.c and
-   inet_pton.c.
+   Follow-up for r18726: only pass -fstack-protector* flags to the
+   linker instead of all -f* flags such that it becomes less likely
+   that this modification causes trouble with non-GNU toolchains.
 
-2010-05-16 10:05  bvassche
+2010-05-16 18:14  bvassche
 
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
+   * testing/fulltests/default/T059trapdtraphandle_olducd:
 
-   CHANGES: Win32: building: don't warn about signed/unsigned
-   mismatches in comparisons, just like for the Unix builds.
-   (Backported this change from the trunk.)
+   Made shell code for converting a relative path to an absolute
+   path more
+   robust and converted "${...#...}" construct into echo + cut.
+
+2010-05-16 18:12  bvassche
+
+   *  agent/mibgroup/agent/extend.c, agent/mibgroup/util_funcs.c,   
+      apps/snmptrapd_handlers.c:
+
+   More USING_UCD_SNMP_EXTENSIBLE_MODULE to
+   USING_UTILITIES_EXECUTE_MODULE substitutions, necessary to make
+   test 059 and 065 pass.
+
+2010-05-16 17:32  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   fix tests for checking shutdown of applications to not report
+   false negatives
+
+2010-05-16 12:15  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_olducd:
+
+   Made test T059 pass again. This test was recently broken by
+   passing arguments to it with absolute paths instead of relative
+   paths.
+
+2010-05-16 12:14  bvassche
+
+   * testing/fulltests/default/T065agentextend_olducd:
+
+   Added 'SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE'.
+
+2010-05-16 11:42  bvassche
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmp_openssl.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-05-16 11:41  bvassche
+
+   *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+         agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c,
+         apps/sshtosnmp.c:
+
+   Fixed several compiler warnings in old code.
 
 2010-05-16 09:59  bvassche
 
@@ -7295,12 +16346,98 @@
    CHANGES: Win32: winExtDLL: don't trigger a netsnmp_assert() when
    no extension DLLs have been loaded.
 
-2010-05-14 11:04  bvassche
+2010-05-15 17:31  tanders
 
-   * agent/mibgroup/winExtDLL.c:
+   * testing/RUNFULLTESTS:
 
-   Changed assert() into netsnmp_assert() (backported r18353
-   partially).
+   stop-gap fix to unbreak "make test" for the nightly builds
+
+2010-05-15 10:59  bvassche
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
+
+   Reverted r18727 because it caused build errors on Solaris, AIX
+   and HP-UX.
+
+2010-05-15 00:42  hardaker
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/Makefile.depend, snmplib/snmp_transport.c,   
+      win32/build.pl:
+
+   revert r18738 since new transport require dynamicly built header
+   files
+
+2010-05-15 00:40  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   log env variables used to the invoked file
+
+2010-05-14 21:29  hardaker
+
+   * testing/fulltests/support/run_olducd:
+
+   fix script so it can be invoked outside the test environment
+   again
+
+2010-05-14 21:28  hardaker
+
+   * mibs/SNMP-TLS-TM-MIB.txt:
+
+   added the SNMP-TLS-TM-MIB with final IANA assignment slots
+
+2010-05-14 21:27  hardaker
+
+   * snmplib/snmptsm.c:
+
+   use final IANA assigned TSM prefixes
+
+2010-05-14 21:26  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h:
+
+   use final IANA assigned Domain numbers
+
+2010-05-14 21:25  hardaker
+
+   * snmplib/snmp_api.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   set default version and seclevel if tls/dtls
+
+2010-05-14 15:25  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   check rc from secname mapping; clarify comment
+
+2010-05-14 15:22  rstory
+
+   * snmplib/cert_util.c:
+
+   don't use unsorted container; don't free caller's container
+
+2010-05-14 15:22  rstory
+
+   * snmplib/container_binary_array.c:
+
+   add linear_search for unsorted containers
+
+2010-05-14 11:56  bvassche
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/Makefile.depend, snmplib/snmp_transport.c,   
+      win32/build.pl, win32/transports/snmp_transport_inits.h:
+
+   Improved portability by removing the generated file
+   snmplib/transports/snmp_transport_inits.h.
+   Commented out the code in the configure script for generating
+   this header file.
+   Added configure-time code for checking whether the constructors
+   for all configured
+   transports are invoked from snmplib/snmp_transport.c.
 
 2010-05-14 11:00  bvassche
 
@@ -7308,25 +16445,89 @@
 
    Documentation: updated Cygwin build instructions.
 
-2010-05-14 08:54  bvassche
+2010-05-14 09:15  bvassche
 
-   * net-snmp-config.in:
+   *  agent/mibgroup/host/data_access/swinst_null.c,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/snmp_api.c, snmplib/snmp_openssl.c,  
+       snmplib/snmpusm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
 
-   Reverted net-snmp-config.in changes from r18688 because although
-   these changes made the Perl modules build, the Perl module
-   regression tests still failed.
+   Fixed several compiler warnings.
 
-2010-05-13 14:35  jsafranek
+2010-05-14 08:50  bvassche
 
-   * include/net-snmp/library/snmp_logging.h:
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
 
-   add NETSNMP_LOGONCE macro from trunk
+   Added -no-undefined flag to library link commands such that
+   libtool can build DLLs on Win32.
+   Note: building DLLs on Win32 does not yet work because of the
+   circular dependency between
+   libnetsnmphelpers and libnetsnmpagent
+   (see also
+   http://www.net-snmp.org/wiki/index.php/Library_layering).
 
-2010-05-13 09:18  bvassche
+2010-05-14 08:42  bvassche
+
+   * ltmain.sh:
+
+   libtool bug fix: also pass flags starting with -f to the linker
+   since these can affect linking. The flag -fstack-protector e.g.
+   triggers inclusion of libssp.
+
+2010-05-14 08:40  bvassche
+
+   *  configure, configure.d/config_modules_lib,   
+      configure.d/config_os_progs:
+
+   CHANGES: building: abort if the file program could not be found,
+   since this is essential for proper operation of libtool.
+   CHANGES: Cygwin: neither compile nor link winpipe.c.
+
+2010-05-13 08:58  bvassche
 
    * configure, include/net-snmp/net-snmp-config.h.in:
 
-   Ran autoreconf -i.
+   Ran autoreconf.
+
+2010-05-12 20:16  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   CHANGES: Linux: builds again with embedded Perl disabled (bug
+   2985915).
+
+2010-05-12 19:47  bvassche
+
+   *  agent/mibgroup/util_funcs/restart.c,   
+      win32/netsnmpmibs/Makefile.in, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Follow-up for r18684: un-break the Win32 MSVC build.
+
+2010-05-12 19:43  bvassche
+
+   * include/net-snmp/types.h:
+
+   Win32: fixed a typo and made indentation consistent.
+
+2010-05-12 19:11  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   construct temp build files in a separate directory
+
+2010-05-12 19:10  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix recently broken old perl functionality
+
+2010-05-12 18:01  hardaker
+
+   * local/net-snmp-cert:
+
+   added a --short option to shorten the show output to minimalistic
 
 2010-05-12 14:14  jsafranek
 
@@ -7359,6 +16560,137 @@
    define NETSNMP_USE_SENSORS_V3 *before* config_modules_agent
    processes agent/mibgroup/hardware/sensors.h.
 
+2010-05-12 07:03  magfr
+
+   *  include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h:
+
+   CHANGES: snmplib: Add missing dependencies between transports.
+
+2010-05-12 03:08  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix title generation after change to what srcdir meant
+
+2010-05-12 02:30  hardaker
+
+   * local/net-snmp-cert:
+
+   undo last change which turned out to only cause errors if you had
+   a old .conf file around
+
+2010-05-12 02:13  hardaker
+
+   * local/net-snmp-cert:
+
+   fix v3_ca creation extension name
+
+2010-05-12 02:05  rstory
+
+   * snmplib/cert_util.c:
+
+   keep format version # in cert indexes; don't store hash type
+   string in index;
+
+2010-05-12 02:05  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix inverted conversion call; less verbose default debug
+
+2010-05-12 02:05  rstory
+
+   * snmplib/snmp_parse_args.c:
+
+   fix parsing of -T name/value pairs
+
+2010-05-11 23:33  tanders
+
+   * testing/RUNFULLTESTS:
+
+   bug fixing and better error messages for "make test" with
+   Test::Harness
+   (still doesn't work for me, though)
+
+2010-05-11 22:34  tanders
+
+   * testing/RUNFULLTESTS:
+
+   Do NOT hardcode /usr/bin/perl as the Perl path
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix stash file handling
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   long options suck ;-). prefer double dashes for long options to
+   match the rest of the Net-SNMP code base
+
+2010-05-11 20:16  hardaker
+
+   * testing/Makefile.in, testing/RUNFULLTESTS:
+
+   added ability to run only the failed tests from the last run
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   don't force color
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   cleanup of older
+
+2010-05-11 20:15  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   Minimally support the older Test::Harness perl module for running
+   the older tests at least
+
+2010-05-11 20:15  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h, snmplib/snmp_api.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   set a default securityName and securityModel if TLS or DTLS is in
+   use on the client side
+
+2010-05-11 20:15  hardaker
+
+   *  include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpusm.h, snmplib/snmp_api.c,   
+      snmplib/snmpusm.c:
+
+   allow security models to perform more of the session setup; moved
+   more USM specific setup into it's setup routine
+
+2010-05-11 18:02  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix param to lookup peer cert
+
+2010-05-11 16:10  rstory
+
+   * snmplib/snmp_transport.c:
+
+   allow '-' in fqdn; add debug output for host specific config
+
 2010-05-11 15:46  dts12
 
    * win32/libsnmp_dll/libsnmp.def:
@@ -7371,48 +16703,217 @@
 
    Fix perl build under Windows (strtoull not available)
 
-2010-05-11 10:14  bvassche
+2010-05-10 07:07  magfr
 
-   *  net-snmp-config.in, perl/ASN/Makefile.PL, perl/Makefile.PL,   
-      perl/Makefile.subs.pl, perl/OID/Makefile.PL,   
-      perl/SNMP/Makefile.PL, perl/TrapReceiver/Makefile.PL,   
-      perl/agent/Makefile.PL, perl/agent/Support/Makefile.PL,   
-      perl/agent/default_store/Makefile.PL,   
-      perl/default_store/Makefile.PL:
+   *  include/net-snmp/library/snmpSSHDomain.h,   
+      snmplib/transports/snmpSSHDomain.c:
 
-   CHANGES: Cygwin: builds now with embedded Perl support enabled
-   (embedded Perl regression tests do not yet pass however).
+   CHANGES: snmplib: Add missing symbol netsnmp_snmpSSHDomain_len,
+   make netsnmp_snmpSSHDomain const.
 
-2010-05-10 20:31  bvassche
+2010-05-09 22:03  magfr
 
-   * configure, configure.d/config_modules_lib:
+   * testing/fulltests/default/T150solarishostcpu_olducd:
 
-   CHANGES: Cygwin: removed winpipe.c from the list of source files.
-   CHANGES: Cygwin: enabled Unix transport.
+   Do not require quotes around the CPU string as that depends on
+   how the agent is configured.
 
-2010-05-09 16:46  bvassche
+2010-05-09 21:43  magfr
+
+   *  agent/mibgroup/default_modules.h, agent/mibgroup/util_funcs.c,   
+      agent/mibgroup/util_funcs.h, agent/mibgroup/util_funcs/Exit.c,   
+      agent/mibgroup/util_funcs/Exit.h,   
+      agent/mibgroup/util_funcs/restart.c,   
+      agent/mibgroup/util_funcs/restart.h:
+
+   CHANGES: snmpd: Extract the Exit and restart* subroutines from
+   util_func in order to make it possible to build less code for the
+   minimal case.
+
+2010-05-09 16:47  bvassche
+
+   * agent/mibgroup/util_funcs.c:
+
+   Fixed a compiler warning: made sure that the function
+   get_exec_output() returns a value when the preprocessor symbol
+   USING_UCD_SNMP_EXTENSIBLE_MODULE has not been defined.
+
+2010-05-09 16:45  bvassche
 
    *  configure, configure.d/config_modules_agent,   
-      configure.d/config_os_headers, configure.d/config_os_libs,   
-      configure.d/config_os_misc2, configure.d/config_os_progs,   
-      configure.d/config_os_struct_members,   
-      configure.d/config_project_ipv6_types,   
-      include/net-snmp/net-snmp-config.h.in:
+      configure.d/config_modules_lib:
 
-   CHANGES: Cygwin: builds now with OpenSSL enabled.
-   CHANGES: Cygwin: builds now with IPv6 support enabled.
-   CHANGES: MinGW: builds now with IPv6 support enabled.
    CHANGES: Cygwin: builds now also when the source files are
    located on a Samba filesystem instead of a local filesystem.
-   Note: all the above changes are backports from the trunk.
 
-2010-05-09 16:34  bvassche
+2010-05-09 13:05  magfr
 
-   * include/net-snmp/system/cygwin.h:
+   * include/net-snmp/library/snmp_debug.h:
 
-   NEWS: Cygwin: BUG: 2997492: byte order of udpLocalPort is now
-   correct.
-   (Backported r18074 from trunk.)
+   Correct the if that tries to figure out if a sufficiently new gcc
+   is in use.
+
+2010-05-09 12:50  magfr
+
+   * apps/snmptrapd_handlers.c:
+
+   Check for the needed module and not some other one.
+   Log the correct missing symbol.
+
+2010-05-09 09:21  magfr
+
+   *  agent/mibgroup/utilities/execute.c,   
+      agent/mibgroup/utilities/execute.h:
+
+   CHANGES: snmpd: utilities/execute do not need anything from
+   util_funcs, so stop depending on it.
+
+2010-05-09 09:12  magfr
+
+   * agent/mibgroup/utilities/execute.c:
+
+   NEWS: snmpd: Removed the unused function xx_tokenize_exec_command
+   from utilities/execute.
+
+2010-05-09 09:01  magfr
+
+   * include/net-snmp/library/snmp_debug.h, snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Replace the debugging functions with dummies
+   when debugging is disabled.
+
+2010-05-09 08:02  magfr
+
+   * testing/fulltests/transports/T300udp_olducd:
+
+   Check that the UDP transport is enabled
+
+2010-05-09 08:01  magfr
+
+   *  testing/fulltests/transports/Stransport,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   Factor out check for mibII/system_mib
+
+2010-05-09 07:59  magfr
+
+   *  testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   Add missing includes
+
+2010-05-08 23:16  magfr
+
+   * testing/RUNFULLTESTS:
+
+   Additionally fix make test for the uncommon case where builddir
+   == srcdir
+
+2010-05-08 22:55  magfr
+
+   *  testing/Makefile.in, testing/RUNFULLTESTS,   
+      testing/fulltests/support/build_capp,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/run_olducd:
+
+   CHANGES: testing: Make it possible to run the test suite from
+   anywhere.
+   Change the -D option to expect the path of the top source
+   directory.
+   Add an -srcdir option that is an alias for -D.
+   Add an -builddir option to designate the directory where the test
+   object is.
+   Put srcdir and builddir in the environment for the test scripts
+   Factor out the grep part of SKIPIF and SKIPIFNOT to ISDEFINED
+   Use more readable keys in the opts hash in RUNFULLTESTS
+   Adjust everything to use srcdir and builddir
+
+2010-05-08 22:42  magfr
+
+   * testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   Use correct argument types
+
+2010-05-08 22:07  magfr
+
+   * Makefile.in:
+
+   Consolidate the test and test-mibs targets.
+   Expose the testall target in the top makefile.
+
+2010-05-08 22:05  magfr
+
+   * snmplib/snmp_transport.c:
+
+   Do not abort when str is NULL as that is a perfectly valid input.
+
+2010-05-08 22:03  magfr
+
+   * testing/fulltests/snmpv3/T010scapitest_capp.c:
+
+   Use correct argument types
+
+2010-05-08 22:02  magfr
+
+   * testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   Add missing newline
+
+2010-05-07 21:11  rstory
+
+   * configure:
+
+   update for new configure.ac
+
+2010-05-07 19:21  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   fix handling of cert algorithm in fingerprints; convert in/out
+   fingerpints
+   from/to hex
+
+2010-05-07 19:21  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   dont specify hash type for fingerprint
+
+2010-05-07 19:21  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c:
+
+   handle fingerprint types; drop san fields from cert struct;
+   consider directory
+   when partnering keys/certs
+
+2010-05-07 19:20  rstory
+
+   * configure.ac:
+
+   move default prompts earlier
+
+2010-05-06 15:40  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   better SAN extraction; tweak dubgus messages; quiet compiler
+   warnings
+
+2010-05-06 15:39  rstory
+
+   * snmplib/cert_util.c:
+
+   reduce cert debug output; debug instead of log_info in dumps
 
 2010-05-06 14:49  dts12
 
@@ -7421,12 +16922,6 @@
    Don't assume the presence of <string.h>
    (bring into line with all other occurances)
 
-2010-05-06 14:44  dts12
-
-   * win32/win32.dsw:
-
-   Add project dependencies for MSVC builds.
-
 2010-05-06 14:41  dts12
 
    * apps/snmptrapd.c, apps/snmptrapd_log.c, snmplib/callback.c:
@@ -7434,24 +16929,668 @@
    CHANGES: Windows: Fix build under MinGW
    back/forward port of revision 18631
 
-2010-05-06 07:21  bvassche
+2010-05-05 17:43  rstory
 
-   *  configure, configure.d/config_project_ipv6_types,   
-      snmplib/inet_ntop.c, snmplib/inet_pton.c,   
-      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
+   * snmplib/transports/snmpTLSTCPDomain.c:
 
-   CHANGES: Cygwin: building: --enable-ipv6 does now work.
-   (ported the patches r18060 and r18619 to the V5.5 branch).
+   fix type in log msg
 
-2010-05-06 06:33  bvassche
+2010-05-05 17:43  rstory
 
-   *  net-snmp-config.in, testing/TESTCONF.sh,   
+   * local/net-snmp-cert:
+
+   remove import for unused function
+
+2010-05-04 07:12  magfr
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   Negate reason given from SKIPIF
+
+2010-05-03 22:38  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix len in email cmp; more extract debugging
+
+2010-05-03 22:38  rstory
+
+   * snmplib/cert_util.c:
+
+   copy ocert to addional maps
+
+2010-05-03 14:20  marz
+
+   * local/net-snmp-cert:
+
+   remove dependency on perl module not present in CentOS
+
+2010-05-03 03:49  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   don't access struct internals directly
+
+2010-05-03 03:48  rstory
+
+   *  agent/mibgroup/agent/extend.c, agent/mibgroup/util_funcs.c,   
+      apps/snmptrapd_handlers.c:
+
+   fix compiling with-out-mibmodules=utilities/execute
+
+2010-05-01 19:08  magfr
+
+   * testing/fulltests/default/T150solarishostcpu_olducd:
+
+   Correct the sought string to make the test pass when ok.
+
+2010-05-01 17:15  marz
+
+   * local/net-snmp-cert:
+
+   more consistent treatment of keyUsage, basicConstraints, other
+   x509v3 options
+
+2010-04-30 23:37  marz
+
+   * local/certgen-test.pl:
+
+   lame test script but covers a chunk of the code
+
+2010-04-30 23:00  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   mkinstalldirs instead instead of File::Path
+
+2010-04-30 23:00  hardaker
+
+   *  testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/run_olducd:
+
+   ensure net-snmp-config script can be run from the build dir
+
+2010-04-30 21:31  marz
+
+   * local/net-snmp-cert:
+
+   handle gencert --ca
+
+2010-04-30 21:01  rstory
+
+   * snmplib/cert_util.c:
+
+   add help for certSecName; continue building cert indexes even if
+   we cant save
+   to persistent dir
+
+2010-04-30 20:48  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   fix check count for 822 names in the snmpd.log
+
+2010-04-30 20:48  hardaker
+
+   * snmplib/snmp_openssl.c, testing/fulltests/transports/Stlstests:
+
+   fix malloc unnderlength by 1 error
+
+2010-04-30 20:48  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   comment out the 822 tests; they're broken at the moment
+
+2010-04-30 19:36  marz
+
+   * local/net-snmp-cert:
+
+   don't lose SAN when signing w/ CA
+
+2010-04-30 18:46  hardaker
+
+   * snmplib/cert_util.c:
+
+   make name change to rfc822 from typoed 8220
+
+2010-04-30 18:46  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   added tests to do other subjectAltName mapping
+
+2010-04-30 17:31  marz
+
+   * local/net-snmp-cert:
+
+   fix issues 1,2,4 and -C handling
+
+2010-04-29 03:32  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update tlstmCertToTSNTable to use cache + cert_util maps
+   container
+
+2010-04-29 03:31  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   check insert return
+
+2010-04-29 03:31  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_binary_array.c:
+
+   NEWS: snmplib: add remove function to container iterator;
+   implement it for
+   binary_array
+
+2010-04-29 03:31  rstory
+
+   * snmplib/container_binary_array.c:
+
+   make sure container sync incremented on sort, insert and remove
+
+2010-04-28 07:20  bvassche
+
+   * snmplib/inet_ntop.c:
+
+   Removed an obsolete comment.
+
+2010-04-28 00:33  hardaker
+
+   * testing/Makefile.in:
+
+   fix makefile for test target
+
+2010-04-28 00:33  hardaker
+
+   *  testing/Makefile.in, testing/RUNFULLTESTS,   
+      testing/fulltests/support/build_capp:
+
+   make the test suite run outside the source directory again.
+
+2010-04-28 00:33  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   deal with out-of-source tree building
+
+2010-04-28 00:32  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   testing to check certificate to securityname mappings and denials
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   created a mapped user
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/support/build_capp:
+
+   generate object code with -g debugging
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/snmpv3/T010scapitest_capp.c:
+
+   more accurate current API usage for scapi code
+
+2010-04-27 21:13  rstory
+
+   * snmplib/cert_util.c:
+
+   fix cert init duplicate call check
+
+2010-04-27 20:58  rstory
+
+   * snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   convert user fingerprint to lower and strip colons; add extern
+   prototype
+   for cert init so we don't need header
+
+2010-04-27 20:15  rstory
+
+   *  include/net-snmp/library/cert_util.h, man/snmpd.conf.5.def,   
+      snmplib/cert_util.c, snmplib/snmp_api.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   separate cert init and cert loading; add certSecName config token
+
+2010-04-27 03:18  rstory
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   merge NETSNMP_FUNCTION and !NETSNMP_FUNCTION assert cases
+
+2010-04-27 03:02  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   lots of new cert functionality
+   - add ssl funcs for cert extensions and ssl cert chains
+   - functions and new netsmp_cert_map struct for looking up cert
+   mappings
+   - add certificate mapping for secname
+   - add code to build cert chains
+   - add subject to cert index cache
+   - rebuild indexes if any error while parsing index
+   - reformat dump output
+   - add NS_CERT_CA allowed_use flag
+   - add subject, issuer and issuer_cert to netsnmp_cert
+   - move cert container setup to its own function
+   - add cert subject name subcontainer
+
+2010-04-27 03:02  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c:
+
+   move ipv6 specific var decl inside ifdef
+
+2010-04-27 03:02  rstory
+
+   *  agent/helpers/table_tdata.c,   
+      include/net-snmp/agent/table_tdata.h:
+
+   CHANGES: agent: tdata helper now saves flags passed during
+   creation; add tdata
+   flag to NOT create the table container
+
+2010-04-27 03:01  rstory
+
+   *  include/net-snmp/library/container.h, snmplib/container.c,   
+      snmplib/container_binary_array.c:
+
+   NEWS: snmplib: add interface for duplicating a container
+   CHANGES: snmplib: container changes: add flags field to container
+   meta-data;
+   chg binary_array container to use container meta-data flags
+
+2010-04-26 22:32  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   added a test to verify that when the transport is configured with
+   a remote certificate fingerprint the connection is denied
+
+2010-04-26 22:32  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   added tests for -T flag usage and invalid user usage
+
+2010-04-26 20:54  hardaker
+
+   * testing/fulltests/transports/T399alias_olducd:
+
+   have the alias transport source the right Sv3config file
+
+2010-04-26 20:50  hardaker
+
+   *  testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   working support of TLS/DTLS testing including cert generation
+
+2010-04-26 20:49  hardaker
+
+   * local/net-snmp-cert:
+
+   honor the config dir if specified via -C
+
+2010-04-26 20:49  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix realloc call for buffered packets
+
+2010-04-26 20:49  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   proper skip output for reporting reason
+
+2010-04-26 20:49  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   remove trailing whitespace after backslash in macro
+
+2010-04-26 20:48  hardaker
+
+   *  testing/fulltests/transports,   
+      testing/fulltests/transports/Stransport,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/transports/T399alias_olducd,   
+      testing/fulltests/transports/test-localhost.cert,   
+      testing/fulltests/transports/test-localhost.priv,   
+      testing/fulltests/transports/test-user.cert,   
+      testing/fulltests/transports/test-user.priv:
+
+   tests for minimally testing all the transports
+
+2010-04-26 20:48  hardaker
+
+   * testing/README:
+
+   minimally document new RUNFULLTESTS script
+
+2010-04-26 20:48  hardaker
+
+   *  testing/T.c, testing/T2.sh, testing/data.keychange-md5,   
+      testing/data.keychange-sha1, testing/data.keychange-sha1-des,   
+      testing/data.kul-md5, testing/data.kul-sha1, testing/misctest.c,  
+       testing/test_keychange.sh, testing/test_kul.sh:
+
+   deleted old files not worth restoring
+
+2010-04-26 20:48  hardaker
+
+   * testing/eval_testlist:
+
+   remove obsolute test list
+
+2010-04-26 20:47  hardaker
+
+   * testing/fulltests/snmpv3/T020hashtests_capp.c:
+
+   a hash-testing .c file I had laying around
+
+2010-04-26 20:47  hardaker
+
+   * testing/Makefile.in:
+
+   make testall target
+
+2010-04-26 20:47  hardaker
+
+   *  testing/RUNFULLTESTS, testing/etimetest.c,   
+      testing/fulltests/snmpv3,   
+      testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c,   
+      testing/fulltests/support/build_capp,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/keymanagetest.c, testing/scapitest.c:
+
+   move old C-code tests in place
+
+2010-04-26 20:47  hardaker
+
+   *  testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T153solarisswap_olducd:
+
+   skip solaris comments
+
+2010-04-26 20:46  hardaker
+
+   * testing/Makefile.in:
+
+   fix invocation of RUNFULLTESTS
+
+2010-04-26 20:46  hardaker
+
+   *  testing/Makefile.in, testing/fulltests/default,   
+      testing/fulltests/default/Sv1config,   
+      testing/fulltests/default/Sv2cconfig,   
+      testing/fulltests/default/Sv3config,   
+      testing/fulltests/default/Sv3usmconfigagent,   
+      testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/Sv3usmconfigtrapd,   
+      testing/fulltests/default/Sv3vacmconfig,   
+      testing/fulltests/default/Svacmconfig,   
+      testing/fulltests/default/Svanyconfig,   
+      testing/fulltests/default/T001snmpv1get_olducd,   
+      testing/fulltests/default/T014snmpv2cget_olducd,   
+      testing/fulltests/default/T015snmpv2cgetnext_olducd,   
+      testing/fulltests/default/T0160snmpv2cbulkget_olducd,   
+      testing/fulltests/default/T016snmpv2cgetfail_olducd,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_olducd,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_olducd,   
+      testing/fulltests/default/T019snmpv2cnosuch_olducd,   
+      testing/fulltests/default/T020snmpv3get_olducd,   
+      testing/fulltests/default/T021snmpv3getnext_olducd,   
+      testing/fulltests/default/T0220snmpv3bulkget_olducd,   
+      testing/fulltests/default/T022snmpv3getMD5_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T028snmpv3getfail_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T050snmpv3trap_olducd,   
+      testing/fulltests/default/T051snmpv2ctrap_olducd,   
+      testing/fulltests/default/T052snmpv2cinform_olducd,   
+      testing/fulltests/default/T053agentv1trap_olducd,   
+      testing/fulltests/default/T054agentv2ctrap_olducd,   
+      testing/fulltests/default/T055agentv1mintrap_olducd,   
+      testing/fulltests/default/T056agentv2cmintrap_olducd,   
+      testing/fulltests/default/T057trapdauthtest2_olducd,   
+      testing/fulltests/default/T057trapdauthtest3_olducd,   
+      testing/fulltests/default/T057trapdauthtest_olducd,   
+      testing/fulltests/default/T058agentauthtrap_olducd,   
+      testing/fulltests/default/T059trapdtraphandle_olducd,   
+      testing/fulltests/default/T060trapdperl_olducd,   
+      testing/fulltests/default/T061agentperl_olducd,   
+      testing/fulltests/default/T065agentextend_olducd,   
+      testing/fulltests/default/T070com2sec_olducd,   
+      testing/fulltests/default/T071com2sec6_olducd,   
+      testing/fulltests/default/T072com2secunix_olducd,   
+      testing/fulltests/default/T100agenthup_olducd,   
+      testing/fulltests/default/T110agentxget_olducd,   
+      testing/fulltests/default/T111agentxset_olducd,   
+      testing/fulltests/default/T112agentxsetfail_olducd,   
+      testing/fulltests/default/T113agentxtrap_olducd,   
+      testing/fulltests/default/T114agentxagentxtrap_olducd,   
+      testing/fulltests/default/T115agentxperl_olducd,   
+      testing/fulltests/default/T120proxyget_olducd,   
+      testing/fulltests/default/T121proxyset_olducd,   
+      testing/fulltests/default/T122proxysetfail_olducd,   
+      testing/fulltests/default/T130snmpv1vacmget_olducd,   
+      testing/fulltests/default/T131snmpv2cvacmget_olducd,   
+      testing/fulltests/default/T132snmpv3vacmget_olducd,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_olducd,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_olducd,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_olducd,   
+      testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T152hostuptime_olducd,   
+      testing/fulltests/default/T153solarisswap_olducd,   
+      testing/fulltests/default/T160snmpnetstat_olducd,   
+      testing/fulltests/default/T200snmpv2cwalkall_olducd,   
+      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/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/T115agentxperl:
+      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/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix, testing/tests/T100agenthup,   
+      testing/tests/T110agentxget, testing/tests/T111agentxset,   
+      testing/tests/T112agentxsetfail, testing/tests/T113agentxtrap,   
+      testing/tests/T114agentxagentxtrap, 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/test-localhost.cert,   
+      testing/tests/test-localhost.priv, testing/tests/test-user.cert,  
+       testing/tests/test-user.priv:
 
-   CHANGES: Cygwin: fixed bug in regression test infrastructure
-   which made detection of a free UDP port fail.
-   (Backported trunk r18073 and r18080).
+   NEWS: testing: Brand new test suite desigened to eventually test
+   more functionality, provide for support of unit-tests and support
+   of API tests
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   removed a debugging echo
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   more bug fixes for string searches
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   added a new macro to check a trapd count
+
+2010-04-26 20:42  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   use individual output files and fix some tests
+
+2010-04-26 20:42  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/support/olducd_eval_tools.sh:
+
+   made existing test suite put out TAP output
+
+2010-04-26 20:42  hardaker
+
+   *  testing/RUNTESTS, testing/TESTCONF.sh,   
+      testing/eval_oneprogram.sh, testing/eval_onescript.sh,   
+      testing/eval_suite.sh, testing/eval_tools.sh, testing/fulltests,  
+       testing/fulltests/support,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/run_olducd:
+
+   beginning of moving UCD test suite into a larger subdirectory
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   allow running tests that match a regexp
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   summarize tests that failed
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   created the ability to have run_ scripts for executing certain
+   types
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   made the build-script-check routine generic
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   support for build scripts
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   provide infrastructure for building and renaming tests
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   more test infrastructure setup
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   support the keyword 'all'
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   enable group gathering
+
+2010-04-26 20:39  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   creatino of a new testing harness
 
 2010-04-25 17:37  bvassche
 
@@ -7459,21 +17598,63 @@
 
    Documentation update.
 
-2010-04-25 17:01  bvassche
+2010-04-25 15:21  bvassche
 
-   *  snmplib/winservice.c, win32/net-snmp/net-snmp-config.h,   
+   *  win32/net-snmp/net-snmp-config.h,   
       win32/net-snmp/net-snmp-config.h.in:
 
-   Win32: builds again with MSVC 6 without PSDK.
+   Win32: reverted a recent unnecessary modification.
 
-2010-04-25 15:06  bvassche
+2010-04-25 15:00  marz
 
-   *  win32/libnetsnmptrapd/Makefile.in,   
-      win32/net-snmp/agent/mib_module_config.h,   
-      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in,   
-      win32/snmptrapd/Makefile.in:
+   * local/net-snmp-cert:
 
-   Win32: builds again with HAVE_WIN32_PLATFORM_SDK disabled.
+   handle multiple --san args, check error codes on openssl cmds and
+   die on failure
+
+2010-04-25 14:18  bvassche
+
+   * win32/net-snmp/agent/mib_module_config.h:
+
+   Win32: builds again with SDK support disabled.
+
+2010-04-25 14:18  bvassche
+
+   *  win32/libnetsnmptrapd/Makefile.in, win32/netsnmpmibs/Makefile.in, 
+        win32/snmpd/Makefile.in, win32/snmptrapd/Makefile.in:
+
+   Win32: restored consistency between workspace-build and batch
+   build -- made sure that notification_log.c is only included in
+   the netsnmpmibs project.
+
+2010-04-25 13:58  bvassche
+
+   *  include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      win32/libsnmp_dll/libsnmp.def, win32/net-snmp/net-snmp-config.h,  
+       win32/net-snmp/net-snmp-config.h.in,   
+      win32/transports/snmp_transport_inits.h:
+
+   Win32: fixes for recently introduced build breakage.
+
+2010-04-25 13:51  bvassche
+
+   * win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in:
+
+   Win32: builds again with SDK support disabled.
+
+2010-04-25 13:48  bvassche
+
+   *  include/net-snmp/types.h, snmplib/closedir.c, snmplib/opendir.c,  
+       snmplib/readdir.c, snmplib/winservice.c:
+
+   Made sure that the Win32 MSVC 6 non-SDK build works again.
+
+2010-04-25 13:42  bvassche
+
+   * win32/Configure:
+
+   Removed an obsolete transformation rule.
 
 2010-04-25 12:05  bvassche
 
@@ -7482,6 +17663,76 @@
    Made it again possible to disable HAVE_WIN32_PLATFORM_SDK when
    building via win32/build.bat.
 
+2010-04-23 13:14  marz
+
+   * local/net-snmp-cert:
+
+   added --san DNS:a.b.c handling, help text fixes, other bug fixes.
+   Note multiple --san not supported yet
+
+2010-04-21 22:31  hardaker
+
+   * local/Makefile.in:
+
+   build the .made version of net-snmp-cert
+
+2010-04-21 22:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend after moving all the files around
+
+2010-04-21 20:16  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   build trust chain for client cert; add subject to index cache;
+   rebuild indexes
+   if any error while parsing index; reformat dump output
+   - add NS_CERT_CA allowed_use flag
+   - add subject, issuer and issuer_cert to netsnmp_cert
+   - move certToTSN_entry to cert_util header
+   - move container setup to its own function
+   - add subject name subcontainer
+   - add netsnmp_openssl_cert_dump_extensions,
+   netsnmp_openssl_cert_issued_by
+
+2010-04-21 16:16  hardaker
+
+   * man/snmpcmd.1.def:
+
+   document the single-dash / snmp.conf / double-dash precidence
+
+2010-04-21 16:15  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document in the snmp.conf file that the tokens can be used for
+   command line applications too
+
+2010-04-21 16:15  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document the file loading order and how to turn off host-specific
+   config
+
+2010-04-21 15:52  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_transport.h, man/snmp.conf.5.def,   
+      snmplib/read_config.c, snmplib/snmp_api.c,   
+      snmplib/snmp_transport.c:
+
+   NEWS: apps: Generic host-specific configuration snmp.conf files
+   are now read. See the HOST-SPECIFIC FILES section of the
+   snmp.conf manual page.
+
 2010-04-20 12:44  jsafranek
 
    * snmplib/asn1.c:
@@ -7491,15 +17742,255 @@
    This may yield to problems with third-party applications which
    may depend on parsing ugly ASN.1 data - we'll see...
 
-2010-04-18 13:40  bvassche
+2010-04-20 00:12  hardaker
 
-   * snmplib/winpipe.c:
+   * snmplib/transports/snmpTLSBaseDomain.c:
 
-   Added #include <net-snmp/net-snmp-config.h> in file
-   snmplib/winpipe.c such
-   that building on Windows doesn't trigger a warning about
-   including both
-   <stdargs.h> and <varargs.h> in the same source file.
+   combine remote fingerprint checking and check both sides
+
+2010-04-20 00:05  hardaker
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   if the remote fingerprint is specified, require an exact match
+
+2010-04-19 23:44  hardaker
+
+   *  snmplib/fd_event_manager.c, snmplib/snmp_api.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix various minor bugs, especially in output messages
+
+2010-04-19 21:14  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more documentation and prototyping of needed RFC steps
+
+2010-04-19 21:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   convert if error check to return immediately so other code can be
+   outdented
+
+2010-04-19 21:13  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more comments from the RFC text
+
+2010-04-18 15:25  bvassche
+
+   *  include/net-snmp/library/snmp_api.h, snmplib/transports,   
+      win32/build.pl, win32/libsnmp/Makefile.in,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp_dll/Makefile.in,   
+      win32/libsnmp_dll/libsnmp_dll.dsp, win32/netsnmpmibs/Makefile.in, 
+        win32/transports, win32/transports/snmp_transport_inits.h:
+
+   Win32: builds again.
+
+2010-04-16 18:53  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   created a function to extract the securityName from the cert
+
+2010-04-16 18:53  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   don't need to set the accept state for TLS (just DTLS)
+
+2010-04-16 18:53  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more TLS comment documentation and steps taken from the RFC
+
+2010-04-16 13:55  marz
+
+   * local/net-snmp-cert:
+
+   numerous fixes, more verbose default output, additive show flags,
+   arbitrary config param handling, better help text
+
+2010-04-16 13:08  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   don't double declare a struct
+
+2010-04-16 03:30  rstory
+
+   * snmplib/cert_util.c:
+
+   cert util fixes
+   - remove unused vars and duplicate code
+   - check prt before free
+   - new func for type from filename
+   - new functions for finding subsets from filename
+   - fix types in key search function but then ifdef if (unused
+   function)
+
+2010-04-15 22:57  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   use a structure reference to predeclare the structure
+
+2010-04-15 21:25  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   correct declaration of the f_open command now requiring returning
+   a transport
+
+2010-04-15 21:02  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove unneeded config container
+
+2010-04-15 21:02  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy fingerprint transport information into new tls structure
+   within DTLSUDP so per-transport fingerprints can be specified
+
+2010-04-15 21:01  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   properly check for tlsbase pointers in dtlsudp_send()
+
+2010-04-15 21:01  hardaker
+
+   * configure.d/config_os_libs:
+
+   grep the transport list for TLS not just DTLS for checking for
+   -lssl
+
+2010-04-15 21:01  hardaker
+
+   *  snmplib/snmp_api.c, snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more bug fixes and made TLSTCP work with the -T flag
+
+2010-04-15 21:01  hardaker
+
+   * snmplib/snmp_api.c, snmplib/transports/snmpTLSTCPDomain.c:
+
+   make the f_open call assign the new transport pointer to use (and
+   check if NULL as a failure condition
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c:
+
+   begin work moving DTLS config routine in place
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   pass the entire tlsbase to the client_setup
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/container.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h, snmplib/snmp_api.c, 
+        snmplib/transports/snmpTLSBaseDomain.c:
+
+   starting the storing of config data into the tlsbase
+
+2010-04-15 20:59  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   change client ssl setup to allow for direct fingerprint
+   specification of my/their certs
+
+2010-04-15 20:59  hardaker
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmpTLSBaseDomain.h, 
+        snmplib/snmp_api.c, snmplib/transports/snmpTLSTCPDomain.c:
+
+   split TLS into creation/close functions for eventual config
+   passing support
+
+2010-04-15 20:59  hardaker
+
+   * include/net-snmp/library/snmp_transport.h, snmplib/snmp_api.c:
+
+   pass transport config data to the transport f_config() function
+
+2010-04-15 20:59  hardaker
+
+   * snmplib/snmp_api.c:
+
+   return NULL on transport config error
+
+2010-04-15 20:58  hardaker
+
+   *  include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_parse_args.c, snmplib/snmp_transport.c:
+
+   NEWS: apps: -T command line flag can be used to configure
+   transports
+
+2010-04-15 20:58  hardaker
+
+   * snmplib/snmp_api.c:
+
+   check transport NULLness before using
+
+2010-04-15 20:58  hardaker
+
+   *  include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      include/net-snmp/types.h, snmplib/snmp_api.c:
+
+   beginning of work to make transports configurable with
+   supplimental configuration data and new calls for f_open/f_config
+
+2010-04-15 20:58  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   added text in comments from future RFC to document the
+   implementation
+
+2010-04-15 18:51  rstory
+
+   * snmplib/cert_util.c:
+
+   mark pem w/key as identity; tweak partner debug; compare file
+   ctime against index too
+
+2010-04-15 17:09  rstory
+
+   * snmplib/cert_util.c:
+
+   use local space to reformat cert for search
 
 2010-04-15 16:55  bvassche
 
@@ -7517,12 +18008,47 @@
    or V5.5 branches and hence there was no reason to disable this
    preprocessor symbol.
 
+2010-04-15 15:08  marz
+
+   * local/Makefile.in:
+
+   add net-snmp-cert to make/install
+
 2010-04-15 10:52  jsafranek
 
    * testing/tests/T120proxyget, testing/tests/T121proxyset:
 
    Tests not working for TCP should be skipped also for TCP6.
 
+2010-04-14 18:13  rstory
+
+   * snmplib/cert_util.c:
+
+   fix vars/text from cut-n-paste
+
+2010-04-14 17:45  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix comments
+
+2010-04-14 17:45  rstory
+
+   * snmplib/cert_util.c:
+
+   lots of cert updates
+   - change cert subdir searching to match net-snmp-cert
+   - update key type handling
+   - ignore world readable keys
+   - keep type in indexes
+   - tweak cert/key print format
+
+2010-04-14 17:44  rstory
+
+   * local/net-snmp-cert:
+
+   make net-snmp-cert executable
+
 2010-04-14 13:12  jsafranek
 
    *  testing/tests/Svacmconfig, testing/tests/T120proxyget,   
@@ -7564,12 +18090,232 @@
    Studio.
    Partial back port of SVN revisions 17573 and 17696.
 
+2010-04-14 01:47  marz
+
+   * local/net-snmp-cert:
+
+   fix perms on created files -rw-------, umask(077)
+
+2010-04-13 22:15  marz
+
+   * local/net-snmp-cert, local/net-snmp-cert.conf:
+
+   fix perms, add --cn/-c, better dates defaults, snmp-tls org_unit,
+   added initial dummy config file
+
+2010-04-13 14:21  marz
+
+   * local/net-snmp-cert:
+
+   fixes for show cmds, cmdline, help
+
+2010-04-13 02:17  rstory
+
+   * snmplib/cert_util.c:
+
+   add support for key+cert in .pem files; misc tweaks
+
+2010-04-10 23:24  tanders
+
+   * snmplib/read_config.c:
+
+   build fix for C89 compilers (e.g. on HP-UX 10.20)
+
+2010-04-10 22:25  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.h:
+
+   initial cut at tlstmCertToTSNTable
+
+2010-04-10 22:24  rstory
+
+   * include/net-snmp/library/cert_util.h:
+
+   add define of max hash constant
+
+2010-04-10 22:24  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c:
+
+   use cert util check for fingerprint len/algorithm
+
+2010-04-10 12:59  marz
+
+   * local/net-snmp-cert:
+
+   show cmd fixes
+
+2010-04-09 21:32  marz
+
+   * local/net-snmp-cert:
+
+   fairly functional (non-interactive) - be it known: there are bugs
+
+2010-04-09 20:54  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h:
+
+   merge some table_data.conf changes; remove unused code and a
+   bunch of verbose comments
+
+2010-04-08 14:57  rstory
+
+   * local/mib2c-update:
+
+   use full path
+
+2010-04-08 10:55  jsafranek
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      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/sctp-mib/sctpScalars_common.c,   
+      include/net-snmp/data_access/systemstats.h:
+
+   Check results of calls to netsnmp_c64_check32_and_update and log
+   an error.
+   This allows users to relate various 'c64 32 bit check failed'
+   errors with specific counter.
+
+2010-04-08 01:09  rstory
+
+   * include/net-snmp/agent/table_tdata.h:
+
+   add prototype for new function
+
+2010-04-08 01:05  rstory
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: translate NOSUCH*/ENDOFMIB errors during RESERVE1
+   to NOCREATION
+
+2010-04-08 00:56  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   NEWS: snmpd: table_data/tdata next handler will not be called
+   during get
+   processing if no valid rows are found for the handler
+
+2010-04-08 00:56  rstory
+
+   * agent/helpers/table.c:
+
+   NEWS: snmpd: agent will no longer call table handlers if a set
+   request for
+   the handler has invalid indexes
+   CHANGES: snmpd: don't call cleanup on first request on bad
+   indexes. instead,
+   set actual error later, and free request data sets on first
+   request for sets
+
+2010-04-08 00:56  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add function to validate fingerprint varbind
+
+2010-04-07 22:56  magfr
+
+   * configure, configure.d/config_modules_lib:
+
+   Solaris tr doesn't support character ranges reliably (see the
+   autoconf manual), change the expression to one that is simple
+   enough to b supported.
+
 2010-04-07 14:05  dts12
 
    * local/mib2c.table_data.conf:
 
    Insert the cache helper correctly.
 
+2010-04-07 10:40  rstory
+
+   *  agent/helpers/table_container.c, agent/helpers/table_tdata.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/table_container.h:
+
+   CHANGES: snmplib: add functions to remove list/row data from
+   request list
+
+2010-04-07 10:40  rstory
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   ifdef var decl for vars only used in later ifdef block
+
+2010-04-07 10:40  rstory
+
+   *  include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/snmp-tc.h, snmplib/check_varbind.c,   
+      snmplib/snmp-tc.c:
+
+   CHANGES: snmplib: add function to validate RowStatus and
+   StorageType varbinds
+   - also remove some duplicate code and fix comments indent mangled
+
+2010-04-07 10:39  rstory
+
+   * local/mib2c-update, man/mib2c-update.1.def:
+
+   update man page; fix shell redirect; create example rcfile if
+   missing
+
+2010-04-07 07:15  magfr
+
+   * apps/agentxtrap.c:
+
+   Use NETSNMP_DISABLE_MIB_LOADING instead of DISABLE_MIB_LOADING
+
+2010-04-07 00:38  magfr
+
+   * agent/mibgroup/host/data_access/swinst.h:
+
+   CHANGES: snmpd: Only enable hostSwInst rpm support on linux hosts
+   with librpm. This makes it possible to build on non-rpm linux
+   distributions.
+
+2010-04-07 00:14  magfr
+
+   *  testing/tests/T021snmpv3getnext,   
+      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/T059trapdtraphandle, testing/tests/T100agenthup,   
+      testing/tests/T111agentxset, testing/tests/T112agentxsetfail,   
+      testing/tests/T113agentxtrap, testing/tests/T120proxyget,   
+      testing/tests/T121proxyset, testing/tests/T122proxysetfail,   
+      testing/tests/T141snmpv2cvacmgetfail:
+
+   CHANGES: testing: Change the test suite to work even if mib
+   lookup is disabled.
+
+2010-04-07 00:11  magfr
+
+   * testing/tests/T071com2sec6:
+
+   Check for com2sec6, not com2sec.
+
+2010-04-06 22:51  magfr
+
+   * configure, configure.d/config_modules_lib:
+
+   Move directory creation before the directories are used.
+
 2010-04-06 11:03  dts12
 
    * FAQ:
@@ -7590,21 +18336,412 @@
    Document large-disk statistics as latching at 2Tb (rather than
    wrapping).
 
-2010-03-29 17:17  bvassche
+2010-04-06 01:52  rstory
 
-   * configure, configure.d/config_os_progs:
+   * local/mib2c, man/mib2c.1.def:
 
-   Removed -Winline and -Wno-char-subscripts (backported r18286 from
-   the trunk).
+   NEWS: mib2c: mib2c can now optionally run sed on generated code
 
-2010-03-29 15:26  dts12
+2010-04-06 01:49  rstory
 
-   * agent/mibgroup/mibII/vacm_conf.c, snmplib/parse.c:
+   * snmplib/transports/snmpTLSBaseDomain.c:
 
-   Include MIB directory search path in reports of missing MIB
-   files.
-   Include config file search path in reports of missing access
-   control settings.
+   convert C++ comments to C comments
+
+2010-04-06 01:49  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   move ptr check before prt use
+
+2010-04-06 01:49  rstory
+
+   * snmplib/cert_util.c:
+
+   add filename to debug on new certs; make static func to return
+   mode names
+
+2010-04-06 00:47  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   allow a found fingerprint self-signed cert for now; eventually
+   need to respect the MIB config table
+
+2010-04-06 00:12  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   mkdir snmplib/transports when DNE for building outside the source
+   dir
+
+2010-04-06 00:11  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   remove unused vars
+
+2010-04-06 00:11  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove unused variable
+
+2010-04-06 00:11  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   error code cleanup for tlsbase_wrapup_recv
+
+2010-04-05 23:12  hardaker
+
+   * snmplib/cert_util.c:
+
+   more better error/debug codes
+
+2010-04-05 23:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more comments from the future-RFC about the implementation; use
+   flags for server/client specification for expansion
+
+2010-04-05 23:08  hardaker
+
+   * snmplib/cert_util.c:
+
+   better error messages for usage constraints
+
+2010-04-05 23:08  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   move function protection logic in a top-level check
+
+2010-04-02 16:36  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   fix init ordering
+
+2010-04-02 16:36  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   mv tlsbase init function to a proper ctor for auto-calling
+
+2010-04-02 16:36  hardaker
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpTCPIPv6Domain.c, 
+        snmplib/transports/snmpUDPIPv6Domain.c:
+
+   CHANGES: generate the transport initialization function list
+   dynamically and use it
+
+2010-04-02 16:35  hardaker
+
+   *  configure, configure.d/config_modules_lib,   
+      snmplib/snmpAAL5PVCDomain.c, snmplib/snmpAliasDomain.c,   
+      snmplib/snmpCallbackDomain.c, snmplib/snmpDTLSUDPDomain.c,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpIPXDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpIPv6BaseDomain.c,   
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c,   
+      snmplib/snmpSocketBaseDomain.c, snmplib/snmpTCPBaseDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpTLSBaseDomain.c, snmplib/snmpTLSTCPDomain.c,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c, snmplib/transports,   
+      snmplib/transports/snmpAAL5PVCDomain.c,   
+      snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPBaseDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpSTDDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   CHANGES: moved transport code into a separate subdirectory in
+   snmplib
+
+2010-04-02 09:02  magfr
+
+   * agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c:
+
+   Do not attempt to check sizeof void to obtain the amount of
+   memory to copy.
+
+2010-04-01 17:11  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      include/net-snmp/library/cert_util.h:
+
+   instead of fwd declares, require other header
+
+2010-04-01 17:10  rstory
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   fix compiler warning
+
+2010-04-01 17:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   remove outdated debug msg
+
+2010-04-01 17:09  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   use certapi to find certs/keys
+
+2010-04-01 14:40  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   register extraX509SubDir token
+
+2010-04-01 14:18  rstory
+
+   * local/mib2c.table_data.conf:
+
+   check ptr before use
+
+2010-04-01 14:18  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   check ptr before use
+
+2010-04-01 13:13  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_persist.c:
+
+   add persistent storage; token for creating entries in snmpd.conf;
+   fix index
+
+2010-04-01 13:12  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   NEWS: snmplib: new certificate api to support tls/dtls
+
+2010-04-01 13:12  rstory
+
+   * include/net-snmp/library/snmp_openssl.h, snmplib/snmp_openssl.c:
+
+   CHANGES: add functions to get fingerprint from cert and log
+   openssl errs
+
+2010-04-01 12:46  rstory
+
+   * include/net-snmp/library/snmp_debug.h:
+
+   fix typo
+
+2010-04-01 10:33  bvassche
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   Builds again with pre-C90 compilers.
+
+2010-04-01 10:01  rstory
+
+   * local/mib2c.table_data.conf:
+
+   CHANGES: mib2c: table_data template enhancements
+   - add error checks during table init
+   - create cache earlier so we can bail on failure
+   - add option to create/delete row w/out adding/removing from
+   container
+
+2010-04-01 10:00  rstory
+
+   * include/net-snmp/agent/agent_read_config.h:
+
+   add helpful param names as hints in prototype
+
+2010-04-01 10:00  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   search for container specific container before generic
+
+2010-04-01 10:00  rstory
+
+   *  include/net-snmp/library/dir_utils.h,   
+      include/net-snmp/library/file_utils.h, snmplib/dir_utils.c,   
+      snmplib/file_utils.c:
+
+   NEWS: snmplib: enhance file utils and dir utils
+   - add optional stats struct to netsnmp_file
+   - generalize dir container filter, add context to callback
+   - add option to store netsnmp_files (w/stats) in container
+   instead of just name
+
+2010-04-01 10:00  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_binary_array.c:
+
+   add prototype to header; check ptr before dereferencing
+
+2010-03-31 15:34  jsafranek
+
+   *  local/Makefile.in, local/snmp-bridge-mib, man/Makefile.in,   
+      man/snmp-bridge-mib.1, mibs/BRIDGE-MIB.txt, mibs/Makefile.in,   
+      mibs/Makefile.mib:
+
+   NEWS: misc: PATCH: 2952708: from Jens Osterkamp: Added Perl
+   implementation of BRIDGE-MIB
+
+2010-03-31 02:12  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c:
+
+   proper packet labeling for DTLSUDP
+
+2010-03-31 02:11  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   use common context creation code
+
+2010-03-30 23:24  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   change TLS method to TLSv1 from SSLv23
+
+2010-03-30 23:23  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   move more common data and functionality into the TLS base
+
+2010-03-30 23:20  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   minor TLS code cleanup
+
+2010-03-30 20:28  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   rework if() wrapping for less confusion in error handling
+
+2010-03-30 20:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   code consolidation in start_new_cached_connectio
+
+2010-03-30 20:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   rename generic 'bio' pointer to 'read_bio' for better readability
+
+2010-03-30 20:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   move buffered data creation to a separate function for reuse
+
+2010-03-30 17:52  marz
+
+   * local/net-snmp-cert:
+
+   initial cert gen wrapper script - not working
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   clean up error output so it doesn't report want_read and
+   want_write errors
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   renaming of sending function for clarity and check one more
+   location for needed outgoing packets
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   added dtlsudp tracing tokens
+
+2010-03-30 17:27  hardaker
+
+   * include/net-snmp/library/snmp_debug.h:
+
+   CHANGES: added a new DEBUGTRACETOK() macro
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   better comments and more work on sending buffered data in the
+   right spots
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   fix arguments to get_commonName
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   beginning of caching of packets before they can be sent via DTLS
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   handle SSL_WANT_READ/WRITE better; still need to buffer outgoing
+   write data
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   minor change to output error printing
 
 2010-03-29 15:20  dts12
 
@@ -7690,14 +18827,6 @@
    Do not only save snmpd / snmptrapd logs but also the stdout /
    stderr output generated by these processes.
 
-2010-03-28 18:00  bvassche
-
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
-
-   Partially reverted r18382 on the 5.5 branch in order to preserve
-   backwards compatibility with already released Windows-headers.
-
 2010-03-28 16:09  bvassche
 
    * perl/SNMP/t/startagent.pl:
@@ -7732,40 +18861,11 @@
 
    Fixed a recently reintroduced compiler warning.
 
-2010-03-28 12:04  bvassche
+2010-03-27 18:42  bvassche
 
-   * perl/default_store/test.pl:
+   * Makefile.in:
 
-   Backported r18287 from the trunk.
-
-2010-03-27 19:19  bvassche
-
-   * perl/OID/OID.xs, perl/SNMP/SNMP.xs:
-
-   Builds again.
-
-2010-03-27 18:57  bvassche
-
-   *  perl/ASN/ASN.xs, perl/OID/OID.xs, perl/SNMP/SNMP.xs,   
-      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/ppport.h,   
-      perl/agent/agent.xs:
-
-   Backported r18282, r18283 and r18312 from trunk, which fix most
-   compiler warnings triggered by compilation of the XSUBs.
-
-2010-03-27 18:52  bvassche
-
-   *  perl/ASN/ASN.xs, perl/ASN/Makefile.PL, perl/OID/Makefile.PL,   
-      perl/OID/OID.xs, perl/TrapReceiver/Makefile.PL,   
-      perl/TrapReceiver/TrapReceiver.xs, perl/agent/Makefile.PL,   
-      perl/agent/Support/Makefile.PL, perl/agent/agent.xs,   
-      perl/agent/default_store/Makefile.PL,   
-      perl/agent/default_store/default_store.xs,   
-      perl/default_store/Makefile.PL,   
-      perl/default_store/default_store.xs:
-
-   Backported r18248, which makes compilation of the Perl XSUBs more
-   silent.
+   Added a check for invocation of calloc() from XSUBs.
 
 2010-03-26 19:16  bvassche
 
@@ -7777,11 +18877,43 @@
    redefining malloc etc. nor trigger "Free to wrong pool" errors on
    Windows.
 
-2010-03-26 12:04  bvassche
+2010-03-26 14:44  bvassche
+
+   *  include/net-snmp/library/snmpIPBaseDomain.h,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c:
+
+   Refactoring: introduced a new function:
+   netsnmp_set_non_blocking_mode().
+
+2010-03-26 11:58  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/utilities/execute.c,  
+       apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmptest.c, apps/snmptrapd_handlers.c, apps/snmptrapd_log.c, 
+        snmplib/int64.c, snmplib/mib.c, snmplib/parse.c,   
+      snmplib/read_config.c, snmplib/snmp_logging.c,   
+      snmplib/snmp_parse_args.c, snmplib/snmpv3.c,   
+      snmplib/text_utils.c:
+
+   Fixed compiler warnings about using variables of type char as an
+   array subscript. Note: as far as I know these warnings are only
+   reported when using the Cygwin glibc headers.
+
+2010-03-26 10:41  bvassche
 
    * snmplib/strtoull.c:
 
-   Removed a superfluous #include directive.
+   Added missing #include directive (on Windows MSVC was complaining
+   about size_t while processing <net-snmp/library/system.h>).
 
 2010-03-25 20:07  bvassche
 
@@ -7815,14 +18947,25 @@
 
 2010-03-25 15:06  bvassche
 
-   *  configure, configure.d/config_os_functions,   
-      include/net-snmp/library/system.h,   
-      include/net-snmp/net-snmp-config.h.in, perl/SNMP/SNMP.xs,   
+   *  include/net-snmp/library/system.h, perl/SNMP/SNMP.xs,   
       perl/agent/agent.xs:
 
    CHANGES: BUG: 2969872: made sure that SOCK_STARTUP is invoked
    before init_agent() on Windows.
 
+2010-03-25 13:39  jsafranek
+
+   *  apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/main.c, apps/snmpset.c, apps/snmpstatus.c,   
+      apps/snmptable.c, apps/snmptest.c, apps/snmptrap.c,   
+      apps/snmpusm.c, apps/snmpvacm.c, apps/snmpwalk.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   Use macros instead of magic numbers as netsnmp_parse_args return
+   codes.
+
 2010-03-25 13:30  bvassche
 
    *  win32/Configure, win32/libsnmp_dll/libsnmp.def,   
@@ -7834,11 +18977,64 @@
    which of the functions in this DLL have been declared as
    NETSNMP_IMPORT.
 
-2010-03-25 13:27  bvassche
+2010-03-24 20:11  rstory
 
-   * include/net-snmp/library/snmpUDPIPv6Domain.h:
+   * snmplib/snmp_enum.c:
 
-   Windows DLL build fix.
+   don't use passed ptr as temp var; use snmp_enum_lists in init
+   test
+
+2010-03-24 20:10  rstory
+
+   * include/net-snmp/library/default_store.h:
+
+   add NETSNMP_DS_LIB_CERT_EXTRA_SUBDIR
+
+2010-03-24 20:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c, snmplib/snmp_api.c:
+
+   move cert init earlier (have tls_bootstrap call it)
+
+2010-03-24 20:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   fix compiler warnings; add cert debug msgs in server setup; free
+   ssl log data
+
+2010-03-24 10:47  jsafranek
+
+   *  apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/main.c, apps/snmpset.c, apps/snmpstatus.c,   
+      apps/snmptable.c, apps/snmptest.c, apps/snmptrap.c,   
+      apps/snmpusm.c, apps/snmpvacm.c, apps/snmpwalk.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   CHANGES: apps: return nozero exit code when parsing of certain
+   parameter fails.
+   E.g. '-A' parameter with too short passphrase or Ku key
+   generation in general.
+
+2010-03-24 07:11  magfr
+
+   * apps/agentxtrap.c:
+
+   Correct the type of the id/description of the Open-PDU.
+
+2010-03-22 18:29  bvassche
+
+   * Makefile.in:
+
+   Updates for "make checks":
+   - Made sure that exit code 0 is generated when the check is
+   successful and that
+   exit code 1 is generated when the check failed.
+   - Made "makefilecheck" skip Subversion bookkeeping files and also
+   the makefile
+   that contains "makefilecheck".
 
 2010-03-22 16:10  dts12
 
@@ -7847,6 +19043,16 @@
    Fix typo in default IpAddress value
    (See Bug #2972141)
 
+2010-03-22 15:44  rstory
+
+   *  Makefile.in, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/winExtDLL.c, agent/snmp_agent.c,   
+      apps/snmpnetstat/main.c, snmplib/callback.c,   
+      snmplib/read_config.c, snmplib/strtok_r.c, snmplib/strtoull.c:
+
+   change all assert() to netsnmp_assert(); add assertcheck to top
+   level makefile
+
 2010-03-22 15:24  bvassche
 
    * mibs/UCD-DISKIO-MIB.txt:
@@ -7854,6 +19060,14 @@
    Follow-up for r18349: added missing comma such that it is again
    possible to compile UCD-DISKIO-MIB.
 
+2010-03-22 14:36  dts12
+
+   * agent/snmpd.c, snmplib/snmp_parse_args.c:
+
+   Fix build when MIB loading is disabled (broken by SVN revision
+   18341)
+   Report default MIB path for client apps too.
+
 2010-03-22 13:59  dts12
 
    *  man/snmp_api_errstring.3, man/snmp_close.3, man/snmp_error.3,   
@@ -7880,18 +19094,87 @@
    ASN varbinds with ASN type zero. Note: this code change does not
    change the agent behavior.
 
+2010-03-20 20:21  bvassche
+
+   *  include/net-snmp/library/mib.h,   
+      include/net-snmp/library/read_config.h:
+
+   Builds again with MSVC.
+
+2010-03-20 20:20  bvassche
+
+   * agent/mibgroup/ucd-snmp/loadave.c:
+
+   Added a trailing backslash (should have been added in the
+   previous commit).
+
+2010-03-20 19:36  bvassche
+
+   *  agent/agent_registry.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsDebug.c,   
+      agent/mibgroup/agent/nsLogging.c, agent/mibgroup/agentx/master.c, 
+       
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+         agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/interfaces.c,  
+       agent/mibgroup/mibII/route_write.c,   
+      agent/mibgroup/mibII/vacm_conf.c, agent/mibgroup/misc/ipfwacc.c,  
+       agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c,
+         agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+         agent/mibgroup/util_funcs.c, agent/snmpd.c,   
+      apps/snmpnetstat/route.c, apps/snmptrapd.c,   
+      include/net-snmp/agent/table_dataset.h, include/net-snmp/types.h, 
+        snmplib/snmpIPv6BaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv6Domain.c, snmplib/system.c, snmplib/tools.c,   
+      snmplib/winpipe.c, snmplib/winservice.c:
+
+   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.
+
 2010-03-20 19:16  bvassche
 
    * agent/mibgroup/winExtDLL.c:
 
    Fixed the compiler warnings reported by gcc (MinGW).
 
+2010-03-20 19:05  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for sigprocmask.
+
 2010-03-20 09:14  bvassche
 
    * agent/mibgroup/winExtDLL.c:
 
    Refactoring: moved duplicated code into a new function.
 
+2010-03-19 22:56  dts12
+
+   * agent/mibgroup/mibII/vacm_conf.c, agent/snmpd.c, snmplib/parse.c:
+
+   Report MIB and config directories search paths on errors
+   (and in the help message)
+
 2010-03-19 13:12  bvassche
 
    * agent/agent_registry.c:
@@ -7927,11 +19210,94 @@
    by every request for which a response with non-zero error status
    is sent back.
 
-2010-03-17 13:41  bvassche
+2010-03-18 16:29  rstory
+
+   *  agent/mibgroup/agent/nsLogging.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
+
+   keep count of enabled logs; use this count to determine when to
+   log to stderr
+
+2010-03-18 16:28  rstory
+
+   *  apps/snmptranslate.c, apps/snmptrapd.c, snmplib/cert_util.c,   
+      snmplib/snmp_logging.c, snmplib/snmp_parse_args.c:
+
+   NEWS: snmplib: new snmp token logOption allows specifying log
+   destinations vi conf files
+   - if stderr log enabled because of no log destination, turn it
+   off when a
+   log destination is enabled
+   - don't call netsnmp_enable_stderrlog() from apps anymore
+
+2010-03-18 15:31  rstory
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv4BaseDomain.c:
+
+   udp transport inheritance tweaks
+   - move basic udp recvfrom/sendto code from UDPDomain to
+   UDPBaseDomain
+   - tweak upd recvfrom/sendto to call udpbase verstion
+   - tweak udpipv4 recvfrom/sendto to call udpbase version
+   - also fixed netsnmp_ipv4_* -> netsnmp_udpipv4_*
+   - tweak DTLSUDPDomain ot use udpbase_* instead of udp_*
+
+2010-03-18 15:21  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/snmp_api.c:
+
+   protect cert header and init call with ifdefs
+
+2010-03-17 19:01  rstory
+
+   * snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSTCPDomain.c:
+
+   use new utility routine for cert names
+
+2010-03-17 19:01  rstory
+
+   * snmplib/cert_util.c:
+
+   move snmp_openssl header after openssl headers
+
+2010-03-17 19:00  rstory
+
+   * include/net-snmp/library/snmp_openssl.h, snmplib/snmp_openssl.c:
+
+   add routines to pull/dump names from X509 certs
+
+2010-03-17 19:00  rstory
+
+   * snmplib/cert_util.c:
+
+   use enum lists to manage directory indexes
+
+2010-03-17 19:00  rstory
+
+   * snmplib/snmp_enum.c:
+
+   initialize static storage before use; protect enum init from
+   multiple calls
+
+2010-03-17 18:54  rstory
+
+   * README.agent-mibs:
+
+   add info about new tsm/tls mibs
+
+2010-03-17 18:54  rstory
+
+   * snmplib/snmpTLSBaseDomain.c, snmplib/snmp_api.c:
+
+   move cert init to snmp init
+
+2010-03-17 13:37  bvassche
 
    * mibs/NET-SNMP-AGENT-MIB.txt, mibs/NET-SNMP-EXTEND-MIB.txt:
 
-   Minor MIB fixes (backported r18320, r18321 and r18325).
+   Updated MIB revision history.
 
 2010-03-17 13:29  bvassche
 
@@ -7946,6 +19312,25 @@
    CHANGES: BUG: 2971257: Fixed winExtDLL handling of multi-varbind
    getNext requests with OIDs in reverse lexicographical order.
 
+2010-03-17 10:25  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   More winExtDLL debug output tuning.
+
+2010-03-16 19:31  bvassche
+
+   * mibs/NET-SNMP-AGENT-MIB.txt:
+
+   Compiles now with MIB compilers that do not recognize a double
+   dash as the end of a MIB comment.
+
+2010-03-16 19:27  bvassche
+
+   * mibs/NET-SNMP-EXTEND-MIB.txt:
+
+   Fixed two syntax errors.
+
 2010-03-16 19:18  bvassche
 
    * agent/mibgroup/winExtDLL.c:
@@ -7953,6 +19338,272 @@
    CHANGES: Win32: winExtDLL: fixed a bug in getNext handling that
    could cause the MIB output to be truncated.
 
+2010-03-16 18:50  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Made winExtDLL debug output more detailed.
+
+2010-03-16 15:24  bvassche
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h:
+
+   Made sure that C++ programs that include Net-SNMP header files
+   compile again.
+
+2010-03-15 07:20  magfr
+
+   * agent/helpers/instance.c:
+
+   Make it compile with --disable-deprecated again.
+
+2010-03-15 07:19  magfr
+
+   * agent/helpers/debug_handler.c:
+
+   Disable all the printing if debug output is off.
+
+2010-03-15 00:17  tanders
+
+   * perl/TrapReceiver/TrapReceiver.xs, perl/agent/agent.xs:
+
+   fix compiler warnings regarding printf format
+
+2010-03-15 00:07  tanders
+
+   * 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+         agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   fix compiler warnings regarding printf format
+
+2010-03-14 21:05  rstory
+
+   * agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   make sure header ifdef name is unique
+
+2010-03-14 21:04  rstory
+
+   *  agent/mibgroup/host/data_access/swinst.h,   
+      agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   add missing init/shutdown prototypes to fix compiler warnings
+
+2010-03-14 21:03  rstory
+
+   * snmplib/data_list.c:
+
+   move debug message earlier
+
+2010-03-14 21:02  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_list_ssll.c:
+
+   add prototype for netsnmp_init_container; fix compler warning
+
+2010-03-14 20:51  magfr
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   Correct netsnmp_assert_or_return and netsnmp_assert_or_msgreturn
+   for the NETSNMP_NO_DEBUGGING case
+
+2010-03-14 19:10  rstory
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/snmpTLSBaseDomain.c:
+
+   rename cert init/shutdown funcs; only compile cert_utils if
+   using/have SSL; init certs from tls base
+
+2010-03-14 19:09  rstory
+
+   * snmplib/cert_util.c:
+
+   call netsnmp_init_openssl instead of netsnmp_init_tlsbase
+
+2010-03-14 19:09  rstory
+
+   * include/net-snmp/library/snmp_api.h:
+
+   update for renamed objects in version 08 of the dtls draft
+
+2010-03-14 19:08  rstory
+
+   *  agent/mibgroup/tlstm-mib, agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tsm-mib, agent/mibgroup/tsm-mib.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats,   
+      agent/mibgroup/tsm-mib/snmpTsmStats.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   import initial code for dtls mibs
+
+2010-03-14 19:08  rstory
+
+   * mibs/TLSTM-MIB.txt:
+
+   TLSTM-MIB from draft-ietf-isms-dtls-tm-09.txt
+
+2010-03-14 17:21  bvassche
+
+   * agent/helpers/snmp_get_statistic.c, agent/mibgroup/mibII/icmp.c:
+
+   Fixed a few more compiler warnings.
+
+2010-03-14 14:10  bvassche
+
+   * perl/default_store/test.pl:
+
+   Follow-up for r17384: changed NETSNMP_DS_MAX_SUBIDS from 40 to
+   48.
+
+2010-03-14 13:53  bvassche
+
+   * configure, configure.d/config_os_progs:
+
+   Changes:
+   - Removed -Wno-char-subscripts from DEVFLAGS. Using a variable or
+   expression of
+   type char as an array index is almost always an error.
+   Furthermore,
+   -Wchar-subscript does not trigger any warnings on the Net-SNMP
+   code base.
+   - Removed -Winline from DEVFLAGS. Not only was nobody paying
+   attention to the
+   messages triggered by -Winline, but recent versions of the gcc
+   compiler are
+   better than humans at deciding which functions should be inlined
+   and which
+   ones not.
+
+2010-03-14 13:39  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Reran autoreconf.
+
+2010-03-14 13:39  bvassche
+
+   *  agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_status.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
+
+   Fixed several compiler warnings.
+
+2010-03-14 13:36  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   Removed the '0x' prefix again from a debug statement that was
+   introduced in r18282.
+
+2010-03-13 19:07  bvassche
+
+   *  perl/ASN/ASN.xs, perl/OID/OID.xs, perl/SNMP/SNMP.xs,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/ppport.h,   
+      perl/agent/agent.xs:
+
+   Fixed most compiler warnings triggered by the source code in the
+   perl subdirectory.
+   Note: these changes may contain some real bug fixes.
+
+2010-03-13 09:57  bvassche
+
+   * snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-03-13 01:16  hardaker
+
+   * acconfig.h, configure, include/net-snmp/net-snmp-config.h.in:
+
+   define the TLSTCP DOMAIN
+
+2010-03-13 01:16  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   fix ifdef typo
+
+2010-03-12 20:26  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   change debugging symbol names to a generic tls string
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   initial working SNMP over TLS over TCP connection
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   print a more complete OpenSSL stack
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmptsm.c:
+
+   fix assert statements
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   added an accepted_bio pointer for the bio after SSL_accept
+
+2010-03-12 20:21  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   add the ability for f_copy and f_config
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   missing ;
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   add a f_copy pointer
+
+2010-03-12 20:20  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   return int not int * on error
+
+2010-03-12 20:20  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   added a f_config function for transports
+
 2010-03-12 11:53  dts12
 
    * apps/snmptable.c:
@@ -7968,18 +19619,36 @@
    Remove duplicate definition of
    getulongfromsysclassnetstatistics()
 
+2010-03-11 16:52  dts12
+
+   * man/snmpcmd.1.def:
+
+   Document the format of the -e/-E command line options.
+
 2010-03-11 16:47  dts12
 
    * agent/helpers/table_dataset.c:
 
    Remove mention of the (abandoned) 'dataset2' helper.
 
-2010-03-11 16:03  dts12
+2010-03-11 15:59  dts12
+
+   * snmplib/cert_util.c:
+
+   Don't initialise the TLS transport unless it's actually been
+   configured in.
+
+2010-03-11 15:47  rstory
 
    * testing/eval_suite.sh:
 
-   Use SNMP_TMPDIR instead of TMPDIR
-   Backport of revision 18262
+   use SNMP_TMPDIR instead of TMPDIR
+
+2010-03-11 15:31  rstory
+
+   * snmplib/snmptsm.c:
+
+   query right bool (tsm prefix is lib bool, not app)
 
 2010-03-11 15:08  dts12
 
@@ -8081,6 +19750,130 @@
    CHANGES: snmpd: PATCH: 2950845: Fix ifHighSpeed calculation
    Patch provided by Leonardo Chiquitto
 
+2010-03-11 08:26  bvassche
+
+   *  perl/ASN/ASN.xs, perl/ASN/Makefile.PL, perl/OID/Makefile.PL,   
+      perl/OID/OID.xs, perl/TrapReceiver/Makefile.PL,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/agent/Makefile.PL,   
+      perl/agent/Support/Makefile.PL, perl/agent/agent.xs,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/agent/default_store/default_store.xs,   
+      perl/default_store/Makefile.PL,   
+      perl/default_store/default_store.xs:
+
+   Made compilation of the Perl module NetSNMP.pm on Windows more
+   silent: added compiler flags -D_CRT_SECURE_NO_WARNINGS
+   -D_CRT_NONSTDC_NO_WARNINGS and made sure that #include
+   <net-snmp/net-snmp-config.h> occurs before any other include file
+   that defines _WIN32_WINNT.
+
+2010-03-10 23:31  rstory
+
+   *  include/net-snmp/library/cert_util.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c:
+
+   NEWS: snmplib: create indexes for certificates in config path
+
+2010-03-10 18:48  bvassche
+
+   * snmplib/snmpSocketBaseDomain.c:
+
+   Added "#include <unistd.h>" such that on Unix systems the
+   compiler does not print a warning about a missing declaration for
+   the function close().
+
+2010-03-10 18:30  rstory
+
+   *  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:
+
+   update version to 5.6.dev
+
+2010-03-10 18:29  rstory
+
+   * local/Version-Munge.pl:
+
+   CHANGES: building: update Version-Munge for renamed configure.ac
+
+2010-03-10 18:29  rstory
+
+   * configure.ac:
+
+   CHANGES: building: save configure cache every once in while
+
+2010-03-10 16:12  bvassche
+
+   * win32/libsnmp/Makefile.in:
+
+   Reordered some of the Makefile rules in order to minimize the
+   diffs with libsnmp_dll/Makefile.in.
+
+2010-03-10 16:10  bvassche
+
+   * win32/libsnmp_dll/Makefile.in:
+
+   Win32, batch building: DLL builds again.
+
+2010-03-10 16:07  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Fixed a recently introduced compiler warning by adding a forward
+   declaration for the function _cache_free().
+
+2010-03-10 16:06  bvassche
+
+   * snmplib/container.c:
+
+   Builds again on Win32.
+
+2010-03-10 04:17  rstory
+
+   * README:
+
+   add missing contributors
+
+2010-03-10 04:17  rstory
+
+   * include/net-snmp/library/container.h, snmplib/container.c:
+
+   CHANGES: snmplib: fix potential double free in CONTAINER_FREE
+   - also added several compare routines
+
+2010-03-10 04:17  rstory
+
+   *  agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h:
+
+   CHANGES: snmplib: when freeing a cache, stop timer and call cache
+   free func
+   - also add netsnmp_cache_remove
+
+2010-03-10 03:52  rstory
+
+   *  README, agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/container.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c, snmplib/container.c:
+
+   undo commit 18234
+
+2010-03-10 03:41  rstory
+
+   *  README, agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/container.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c, snmplib/container.c:
+
+   Merge branch 'pullme' of ../trunk-staging
+
 2010-03-09 17:48  bvassche
 
    * include/net-snmp/mib_api.h:
@@ -8094,15 +19887,6 @@
 
    Simplified two makefiles used by build.bat (Win32).
 
-2010-03-09 17:44  bvassche
-
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
-
-   CHANGES: Win32: building: libsnmp.dll builds now with MSVC 2002
-   and above without triggering a linker error about strtoull.
-   (Backported trunk r17886.)
-
 2010-03-09 17:24  bvassche
 
    * perl/SNMP/SNMP.xs:
@@ -8119,6 +19903,89 @@
    adding the MSVC compiler flags -D_CRT_SECURE_NO_WARNINGS
    -D_CRT_NONSTDC_NO_WARNINGS.
 
+2010-03-09 17:09  rstory
+
+   * snmplib/read_config.c:
+
+   remove debug msg used during debugging
+
+2010-03-09 17:02  marz
+
+   * local/net-snmp-cert:
+
+   initial cert wrapper - testing repo write privs
+
+2010-03-09 10:20  bvassche
+
+   * win32/netsnmpmibs/Makefile.in:
+
+   Removed duplicate build rules. These duplicate rules were
+   harmless but triggered a warning.
+
+2010-03-09 02:38  rstory
+
+   * include/net-snmp/library/dir_utils.h, snmplib/dir_utils.c:
+
+   CHANGES: snmplib: directory container enhancements
+   - fix potential memory leak
+   - add filter callback to filter files returned
+   - add option to return relative and not full paths
+   - add option to sort returned list
+   - add option to return empty container instead of NULL if no
+   files found
+   - change default container name to directory that was scanned
+   - tweak debug/log messages
+
+2010-03-08 23:07  rstory
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/util_funcs/get_pid_from_inode.c,   
+      include/net-snmp/library/snmp_logging.h:
+
+   CHANGES: snmpd: define and use new NETSNMP_LOGONCE macro
+
+2010-03-08 22:44  rstory
+
+   * man/snmp_config.5.def, snmplib/read_config.c:
+
+   NEWS: snmplib: conf files can now include other conf files
+   - also tweaked debug tokens here and there
+
+2010-03-08 22:43  rstory
+
+   * snmplib/snmp_transport.c:
+
+   fix typo (caused external reference when DTLSUDP configured
+   without dtlstcp)
+
+2010-03-06 02:27  rstory
+
+   *  include/net-snmp/library/container.h, snmplib/container.c,   
+      snmplib/container_binary_array.c, snmplib/container_list_ssll.c:
+
+   NEWS: snmplib: netsnmp_container enhancements:
+   - add free_item function; defaults to
+   netsnmp_container_simple_free
+   - add CONTAINER_FREE_ALL macro/function (like CONTAINER_CLEAR but
+   calls container free_item for each item in primary container)
+   - add ability to set options on binary_array containers
+
+2010-03-02 17:55  bvassche
+
+   * win32/libsnmp/Makefile.in:
+
+   Made sure that win32/build.bat works again by adding missing
+   source file names. Sorted source file names alphabetically too.
+
 2010-03-02 16:54  bvassche
 
    *  win32/Configure, win32/netsnmpmibs/Makefile.in,   
@@ -8172,12 +20039,187 @@
    netsnmpmibs and netsnmpmibssdk): applied the necessary changes to
    the win32/Configure script and win32/Makefile.in.
 
-2010-02-28 11:40  bvassche
+2010-02-27 13:11  bvassche
 
-   * win32/net-snmp/net-snmp-config.h.in:
+   *  agent/mibgroup/agent/nsCache.c, include/net-snmp/config_api.h,   
+      include/net-snmp/library/asn1.h,   
+      include/net-snmp/library/callback.h,   
+      include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/container.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/fd_event_manager.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/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/snmpCallbackDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmp_alarm.h,   
+      include/net-snmp/library/snmp_api.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_logging.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/snmpusm.h,   
+      include/net-snmp/library/snmpv3.h,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h,   
+      include/net-snmp/library/ucd_compat.h,   
+      include/net-snmp/library/vacm.h,   
+      include/net-snmp/library/winpipe.h, include/net-snmp/mib_api.h,   
+      include/net-snmp/pdu_api.h, include/net-snmp/session_api.h,   
+      include/net-snmp/varbind_api.h, include/net-snmp/version.h,   
+      snmplib/getopt.c, snmplib/gettimeofday.c, snmplib/mib.c,   
+      snmplib/parse.c, snmplib/snmp_alarm.c, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c, snmplib/snmp_debug.c, snmplib/snmpv3.c,   
+      snmplib/strlcpy.c, snmplib/strtok_r.c, snmplib/strtoull.c,   
+      snmplib/tools.c, snmplib/ucd_compat.c, snmplib/winpipe.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
 
-   Follow-up for r18181: synchronized net-snmp-config.h.in with
-   net-snmp-config.h.
+   CHANGES: Win32: declared all functions that are exported from the
+   Net-SNMP DLL as NETSNMP_IMPORT. The result is a minor
+   optimization: code that uses the Net-SNMP DLL will now call the
+   DLL-exported functions directly instead of indirectly via the
+   stub in the import library.
+
+2010-02-27 11:50  bvassche
+
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   Removed a redundant strncasecmp() declaration.
+
+2010-02-27 09:57  bvassche
+
+   * snmplib/strtok_r.c:
+
+   Fixed a typo in a source code comment.
+
+2010-02-27 09:56  bvassche
+
+   * snmplib/snmp_transport.c:
+
+   Follow-up for r18189 (rstory): builds again on Windows.
+
+2010-02-25 17:53  bvassche
+
+   *  win32/encode_keychange/encode_keychange.dsp,   
+      win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.dsp, win32/libagent/libagent.vcproj,   
+      win32/libhelpers/libhelpers.dsp,   
+      win32/libhelpers/libhelpers.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.dsp,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.dsp,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.dsp,   
+      win32/snmpd/snmpd.vcproj, win32/snmpdelta/snmpdelta.dsp,   
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.dsp,   
+      win32/snmpdf/snmpdf.vcproj, win32/snmpget/snmpget.dsp,   
+      win32/snmpget/snmpget.vcproj, win32/snmpgetnext/snmpgetnext.dsp,  
+       win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/snmpnetstat/snmpnetstat.vcproj, win32/snmpset/snmpset.dsp,  
+       win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.dsp,   
+      win32/snmpstatus/snmpstatus.vcproj,   
+      win32/snmptable/snmptable.dsp, win32/snmptable/snmptable.vcproj,  
+       win32/snmptest/snmptest.dsp, win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.dsp,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.dsp, win32/snmptrap/snmptrap.vcproj,   
+      win32/snmptrapd/snmptrapd.dsp, win32/snmptrapd/snmptrapd.vcproj,  
+       win32/snmpusm/snmpusm.dsp, win32/snmpusm/snmpusm.vcproj,   
+      win32/snmpvacm/snmpvacm.dsp, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.dsp, win32/snmpwalk/snmpwalk.vcproj,   
+      win32/win32.dsw, win32/win32.sln, win32/win32dll.dsw,   
+      win32/win32dll.sln:
+
+   Reverted r18207 (dsp/dsw to vcproj/sln conversion) except the
+   suppression
+   list changes. The goal of this conversion was twofold: not only
+   to be able
+   to load the project files in MSVC 2002 - 2008 but also to be able
+   to commit
+   changes made from inside the MSVC 2008 IDE. Unfortunately
+   converting dsp/dsw
+   files to vcproj/sln files with MSVC 2008 makes it impossible to
+   load the
+   vcproj/sln files with earlier MSVC versions. Why on earth did
+   Microsoft
+   decide to put a version number in XML files ?
+
+2010-02-24 19:41  bvassche
+
+   *  win32, win32/encode_keychange,   
+      win32/encode_keychange/encode_keychange.dsp,   
+      win32/encode_keychange/encode_keychange.vcproj, win32/libagent,   
+      win32/libagent/libagent.dsp, win32/libagent/libagent.vcproj,   
+      win32/libhelpers, win32/libhelpers/libhelpers.dsp,   
+      win32/libhelpers/libhelpers.vcproj, win32/libnetsnmptrapd,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, win32/libsnmp,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll, win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj, win32/netsnmpmibs,   
+      win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj, win32/snmpbulkget,   
+      win32/snmpbulkget/snmpbulkget.dsp,   
+      win32/snmpbulkget/snmpbulkget.vcproj, win32/snmpbulkwalk,   
+      win32/snmpbulkwalk/snmpbulkwalk.dsp,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd,   
+      win32/snmpd/snmpd.dsp, win32/snmpd/snmpd.vcproj, win32/snmpdelta, 
+        win32/snmpdelta/snmpdelta.dsp, win32/snmpdelta/snmpdelta.vcproj,
+         win32/snmpdf, win32/snmpdf/snmpdf.dsp,   
+      win32/snmpdf/snmpdf.vcproj, win32/snmpget,   
+      win32/snmpget/snmpget.dsp, win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext, win32/snmpgetnext/snmpgetnext.dsp,   
+      win32/snmpgetnext/snmpgetnext.vcproj, win32/snmpnetstat,   
+      win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/snmpnetstat/snmpnetstat.vcproj, win32/snmpset,   
+      win32/snmpset/snmpset.dsp, win32/snmpset/snmpset.vcproj,   
+      win32/snmpstatus, win32/snmpstatus/snmpstatus.dsp,   
+      win32/snmpstatus/snmpstatus.vcproj, win32/snmptable,   
+      win32/snmptable/snmptable.dsp, win32/snmptable/snmptable.vcproj,  
+       win32/snmptest, win32/snmptest/snmptest.dsp,   
+      win32/snmptest/snmptest.vcproj, win32/snmptranslate,   
+      win32/snmptranslate/snmptranslate.dsp,   
+      win32/snmptranslate/snmptranslate.vcproj, win32/snmptrap,   
+      win32/snmptrap/snmptrap.dsp, win32/snmptrap/snmptrap.vcproj,   
+      win32/snmptrapd, win32/snmptrapd/snmptrapd.dsp,   
+      win32/snmptrapd/snmptrapd.vcproj, win32/snmpusm,   
+      win32/snmpusm/snmpusm.dsp, win32/snmpusm/snmpusm.vcproj,   
+      win32/snmpvacm, win32/snmpvacm/snmpvacm.dsp,   
+      win32/snmpvacm/snmpvacm.vcproj, win32/snmpwalk,   
+      win32/snmpwalk/snmpwalk.dsp, win32/snmpwalk/snmpwalk.vcproj,   
+      win32/win32.dsw, win32/win32.sln, win32/win32dll.dsw,   
+      win32/win32dll.sln:
+
+   (reverted) CHANGES: Win32: building: converted .dsp/.dsw files to
+   .vcproj/.sln files. This implies that support for MSVC 6.0 has
+   been dropped and the minimum Microsoft Visual Studio version
+   required to build the Net-SNMP source code is Microsoft Visual
+   Studio .NET (2002).
 
 2010-02-23 19:03  bvassche
 
@@ -8194,6 +20236,67 @@
    CHANGES: building: made sure that the configure script does no
    longer invoke "tail -1", which is not POSIX-compliant.
 
+2010-02-23 18:45  hardaker
+
+   *  testing/tests/T300udp, testing/tests/T310tcp,   
+      testing/tests/T320udpv6, testing/tests/T330tcpv6,   
+      testing/tests/T350unix, testing/tests/T360dtlsudp,   
+      testing/tests/T399alias:
+
+   Removed all transport tests since it's impossible to determine
+   where they can safely operate (was stopping tanders' nightly
+   tests from succeeding)
+
+2010-02-23 18:41  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   more error and debugging output
+
+2010-02-23 18:40  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   fix the server context generator to actually, um, return the
+   context.
+
+2010-02-23 18:40  hardaker
+
+   * agent/agent_trap.c:
+
+   initialize the 'res' variable since it's checked
+
+2010-02-23 18:39  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   more progress toward a real implementation
+
+2010-02-23 18:38  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   tlstcp ctor invocation
+
+2010-02-23 18:38  hardaker
+
+   * include/net-snmp/library/snmpTLSTCPDomain.h:
+
+   require TLSBase
+
+2010-02-23 18:37  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   added host identifier as output
+
+2010-02-23 18:35  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   significant more work on the TLS TCP domain
+
 2010-02-23 17:43  bvassche
 
    * configure, include/net-snmp/net-snmp-config.h.in:
@@ -8201,6 +20304,12 @@
    Follow-up for r18193 (jsafranek): reran autoreconf for the trunk
    and the 5.5 branch.
 
+2010-02-23 14:58  rstory
+
+   * snmplib/snmp_api.c:
+
+   use NETSNMP_PRIz instead of %z
+
 2010-02-23 12:27  jsafranek
 
    * configure.d/config_os_libs:
@@ -8208,6 +20317,38 @@
    CHANGES: building: Fixed compilation with rpm-4.6.
    Turn on the legacy API when rpm-4.6 is detected.
 
+2010-02-23 07:38  bvassche
+
+   * snmplib/snmp_alarm.c, snmplib/snmp_api.c:
+
+   Reverted r18000 (disabling SIGALRM support) because this involves
+   a backwards-incompatible change.
+
+2010-02-23 00:36  rstory
+
+   * snmplib/snmpTCPDomain.c:
+
+   fix typo in comment
+
+2010-02-23 00:34  rstory
+
+   * snmplib/snmp_api.c:
+
+   debug msg tweaks; use new tranport functions
+   - add debug header for snmp version
+   - add length to debug send/receive messages
+   - use new tranport functions for send/recv/finding peer address
+
+2010-02-23 00:25  rstory
+
+   *  include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c:
+
+   add netsnmp_transport_peer_string, netsnmp_transport_send &
+   netsnmp_transport_recv
+   - moves transport manipulation into transport code
+   - central place for logging/debugging sent/received data
+
 2010-02-22 19:33  bvassche
 
    *  configure, configure.d/config_modules_agent,   
@@ -8216,25 +20357,45 @@
    CHANGES: building: made sure that the configure script does no
    longer invoke "tail -1", which is not POSIX-compliant.
 
-2010-02-21 19:23  bvassche
+2010-02-22 19:21  bvassche
 
-   *  snmplib/tools.c, win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
+   * agent/agent_registry.c:
 
-   CHANGES: Win32: made sure that redefining malloc() etc. in
-   win32/net-snmp/net-snmp-config.h does not trigger strange
-   compiler and linker errors.
-   
-   (Backported trunk r17910 and r18165).
+   Follow-up for r18186. Regression test 34 (whether authentication
+   failure traps are sent by snmpd) passes now again.
 
-2010-02-21 19:20  bvassche
+2010-02-22 09:18  bvassche
 
-   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+   * agent/agent_registry.c:
 
-   CHANGES: Win32: exported
-   netsnmp_query_get_default_session_unchecked() from netsnmp.dll.
-   
-   (Backported trunk r17918.)
+   CHANGES: snmpd: made sure that handler registration failure does
+   not create dangling pointers in the MIB subtree registry.
+
+2010-02-22 09:11  bvassche
+
+   * agent, apps, apps/snmpnetstat:
+
+   Updated Subversion ignore list.
+
+2010-02-22 08:42  bvassche
+
+   * configure:
+
+   Follow-up for r18084: fixed libeay32 (OpenSSL) configure test for
+   MinGW.
+
+2010-02-22 08:31  bvassche
+
+   * configure.d/config_os_libs:
+
+   Follow-up for r18084: fixed libeay32 (OpenSSL) configure test for
+   MinGW.
+
+2010-02-22 08:13  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Builds again with MinGW when IPv6 support is enabled.
 
 2010-02-21 18:58  bvassche
 
@@ -8267,7 +20428,8 @@
 
 2010-02-21 17:39  bvassche
 
-   *  snmplib/snmpUDPIPv6Domain.c, win32/net-snmp/net-snmp-config.h,   
+   *  snmplib/snmpIPv6BaseDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      win32/net-snmp/net-snmp-config.h,   
       win32/net-snmp/net-snmp-config.h.in:
 
    More Win32 IPv6 source code consistency improvements:
@@ -8280,27 +20442,12 @@
    - Replaced '#if NETSNMP_ENABLE_IPV6' by '#ifdef
    NETSNMP_ENABLE_IPV6'.
 
-2010-02-20 09:10  bvassche
+2010-02-21 08:30  tanders
 
-   * apps/snmptable.c:
+   * snmplib/snmpIPBaseDomain.c:
 
-   Backported trunk r17883, which fixes a typo introduced in r17881.
-
-2010-02-19 20:23  bvassche
-
-   *  agent/mibgroup/utilities/iquery.c,   
-      include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
-
-   CHANGES: agent: do not complain that iquerySecName is missing in
-   snmpd.conf when its value won't be used.
-   
-   (Backported trunk r17917.)
-
-2010-02-19 19:44  bvassche
-
-   * win32/bin, win32/lib:
-
-   Updated Subversion ignore list.
+   make sure that INADDR_NONE is defined (fixes build error on
+   Solaris)
 
 2010-02-19 19:39  bvassche
 
@@ -8309,58 +20456,109 @@
    Synchronized win32/net-snmp/net-snmp-config.h and
    win32/net-snmp/net-snmp-config.h.in.
 
-2010-02-19 19:36  bvassche
-
-   *  agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
-      agent/snmpd.c, apps/snmptable.c, apps/snmptrapd.c,   
-      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
-
-   CHANGES: Win32: line buffering does now work when Net-SNMP is
-   built with MSVC. This makes it a lot easier to debug Net-SNMP on
-   Win32 since each line does now appear in the output as soon as it
-   has been generated.
-   
-   This is a backport of r17881 from the trunk.
-
 2010-02-19 14:18  bvassche
 
-   *  include/net-snmp/library/system.h, win32/libsnmp_dll/libsnmp.def, 
-        win32/libsnmp_dll/libsnmp.def.in:
+   * include/net-snmp/library/system.h:
 
    CHANGES: Win32: libsnmp builds again as a DLL when IPv6 is
    enabled.
 
-2010-02-19 13:02  bvassche
+2010-02-19 13:22  bvassche
 
-   *  README.win32, agent/mibgroup/winExtDLL.c, snmplib/winservice.c,   
-      win32/MgmtApi-winExtDLL.h, win32/Snmp-winExtDLL.h,   
+   * win32/libsnmp_dll/libsnmp.def.in:
+
+   Follow up for r18164: synchronized libsnmp.def.in with
+   libsnmp.def
+
+2010-02-19 09:05  bvassche
+
+   * win32/net-snmp/net-snmp-config.h:
+
+   CHANGES: Win32: added #include <malloc.h> in
+   win32/net-snmp/net-snmp-config.h such that the MSVC compiler
+   doesn't get confused by the malloc redefinition when building
+   libsnmp as a DLL.
+
+2010-02-19 08:59  bvassche
+
+   *  include/net-snmp/library/snmp_parse_args.h,   
+      win32/libsnmp_dll/libsnmp.def:
+
+   Exported netsnmp_parse_args() such that the Net-SNMP applications
+   build again when libsnmp is built as a DLL.
+
+2010-02-19 08:56  bvassche
+
+   * snmplib/keytools.c, win32/net-snmp/net-snmp-config.h:
+
+   CHANGES: Win32: building: moved MSVC OpenSSL linker settings from
+   snmplib/keytools.c to win32/net-snmp/net-snmp-config.h such that
+   these settings are not only effective when building snmplib as a
+   static library but also when any Net-SNMP application is built
+   that links with snmplib as a static library or as a DLL.
+
+2010-02-19 08:32  bvassche
+
+   * snmplib/keytools.c:
+
+   Win32 cleanup: MSVC / DLL tests now use the officially endorsed
+   macro names.
+
+2010-02-19 07:50  bvassche
+
+   * win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Builds again.
+
+2010-02-19 06:47  magfr
+
+   *  agent/agent_trap.c, agent/mibgroup/ucd-snmp/proxy.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   NEWS: snmplib: PATCH: 2942940: from "Bill Fenner": Add a new
+   function, netsnmp_parse_args, that is like snmp_parse_args but
+   takes an additional bitmask, flags, to affect the behaviour. Also
+   remove the magic handling of some application names.
+
+2010-02-18 14:22  bvassche
+
+   * win32/bin:
+
+   Updated Subversion ignore list.
+
+2010-02-18 14:20  bvassche
+
+   *  win32/libhelpers/libhelpers.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libsnmp/libsnmp.dsp, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Sorted names of source files alphabetically.
+
+2010-02-18 13:03  bvassche
+
+   *  README.win32, snmplib/winservice.c, win32/libsnmp/libsnmp.dsp,   
       win32/net-snmp/net-snmp-config.h,   
       win32/netsnmpmibs/netsnmpmibs.dsp, win32/netsnmpmibssdk,   
-      win32/snmpdsdk, win32/win32.dsw, win32/win32sdk.dsw:
+      win32/snmpdsdk, win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/win32.dsw, win32/win32sdk.dsw:
 
-   CHANGES: Win32: building: winExtDLL module is only built if
-   USING_WINEXTDLL_MODULE is defined.
-   CHANGES: Win32: building: simplified building winExtDLL by
-   including a copy of the MinGW headers <snmp.h> and <mgmtapi.h>.
-   CHANGES: Win32: building: dropped support for building Net-SNMP
-   with MSVC 6.0 without Platform SDK.
-   CHANGES: Win32: building: added project dependencies in win32.dsw
-   such that the Microsoft Visual Studio IDE can figure out the
-   proper project build order.
+   CHANGES: Win32: dropped support for building Net-SNMP with
+   Microsoft Visual Studio 6.0 without platform SDK. Building
+   Net-SNMP with Microsoft Visual Studio 6.0 + PSDK or any later
+   version of MSVC is still possible however.
    
-   (these changes have been backported from trunk revisions 17884,
-   18157 and 18163).
+   Note: if in the future for whatever reason it should become
+   necessary again to be able to build Net-SNMP with MSVC without
+   relying on the platform SDK headers, please #ifdef out the MIB
+   code that relies on the PSDK headers instead of splitting the
+   workspace files again.
 
-2010-02-19 12:35  bvassche
+2010-02-18 12:57  bvassche
 
-   * include/net-snmp/library/system.h:
+   * snmplib/snmpIPv6BaseDomain.c:
 
-   CHANGES: Win32: building: builds again with MSVC 6.0.
-   
-   Backported r17869: changed the return type of strtoull() from
-   'unsigned
-   long long' (which is not valid C89) to 'uint64_t' (declared in
-   <net-snmp/net-snmp-config.h>).
+   dos2unix.
 
 2010-02-18 09:45  bvassche
 
@@ -8377,6 +20575,119 @@
    on typedefs or struct definitions.
    - Ran this header file through indent.
 
+2010-02-18 09:26  bvassche
+
+   *  snmplib/snmpIPBaseDomain.c, snmplib/snmpIPV6BaseDomain.c,   
+      snmplib/snmpIPv6BaseDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      win32/libsnmp/libsnmp.dsp:
+
+   Changes:
+   - Builds again with MSVC.
+   - Fixed a few compiler warnings reported by MSVC (passing int
+   instead of u_short to htons() / function declarations that were
+   missing because of missing #include directives).
+
+2010-02-16 17:16  bvassche
+
+   * include/net-snmp/types.h:
+
+   CHANGES: Win32: The header file <sys/timeb.h> is no longer
+   included from <net-snmp/types.h>. Or: the header file
+   <sys/timeb.h> will have to be included explicitly in source files
+   that need the declaration of the function ftime().
+   
+   Note: compared to r18024 and before, this change does not affect
+   BSD systems -- <sys/timeb.h> was only included from
+   <net-snmp/types.h> on BSD systems in revisions r18025..r18152.
+
+2010-02-14 19:29  bvassche
+
+   * include/net-snmp/system/freebsd8.h:
+
+   Builds now on FreeBSD version 8.0.
+
+2010-02-13 20:59  magfr
+
+   *  include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h:
+
+   Adjust the placement of ;'s in order to
+   a) Avoid warnings about spurious semicolons
+   b) Not have unterminated declarations in headers
+
+2010-02-12 02:57  rstory
+
+   * local/mib2c:
+
+   CHANGES: mib2c: update inline documentation; add storagetype test
+   for columns
+
+2010-02-12 01:50  rstory
+
+   * include/net-snmp/library/snmp_api.h:
+
+   fix typo in define
+
+2010-02-12 01:05  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   fix sed processing on white-space adding solaris machines
+
+2010-02-10 23:56  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   add top srcdir to cpp search path
+
+2010-02-10 23:52  hardaker
+
+   * include/net-snmp/types.h:
+
+   freebsd needs time.h above timeb.h
+
+2010-02-10 23:37  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   use sed with multireplace on a line to fix possible whitespace
+   issue on solaris
+
+2010-02-10 23:22  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   beginning work for TLS separation into separate files with a base
+   file
+
+2010-02-10 23:21  hardaker
+
+   * include/net-snmp/library/snmpUDPIPv4BaseDomain.h:
+
+   move base transport creation function out of linux ifdefs
+
+2010-02-10 23:21  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   moved another error logging function
+
+2010-02-10 23:20  hardaker
+
+   * mibs/NET-SNMP-TC.txt:
+
+   added TLS over TCP
+
 2010-02-10 16:39  dts12
 
    *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
@@ -8392,6 +20703,274 @@
    CHANGES: python: Support null-bytes in octet strings
    Patch supplied by Tommy Beadle
 
+2010-02-10 00:59  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   moved TLS infrastructure into a base domain file
+
+2010-02-10 00:04  hardaker
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      snmplib/snmpIPv6BaseDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   moved socket6 functions to the ipv6 base
+
+2010-02-10 00:03  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   white space formatting
+
+2010-02-10 00:03  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c:
+
+   moved udp_send/recv to udpbase
+
+2010-02-10 00:02  hardaker
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpSocketBaseDomain.c, snmplib/snmpUDPDomain.c:
+
+   move netsnmp_sock_buffer_set into socketbase
+
+2010-02-10 00:02  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv4BaseDomain.c:
+
+   move ipv4 specific UDP transport creation to udpipv4 base
+
+2010-02-10 00:01  hardaker
+
+   *  snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   made common functions be referenced directly by the transports
+   and removed original functionality; they were static so there is
+   no backwards compat issues
+
+2010-02-10 00:00  hardaker
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpSocketBaseDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved socket based close to a socket based domain common to many
+   things
+
+2010-02-09 23:59  hardaker
+
+   *  include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      snmplib/snmpTCPBaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c:
+
+   move TCP common functions to a TCPBase domain implementation
+
+2010-02-09 23:57  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c:
+
+   warning cleanup
+
+2010-02-09 23:56  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   tmStateReference should be using the indexed addr_pair
+
+2010-02-09 23:56  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   make netsnmp_dtlsudp_close make use of netsnmp_baseudp_close
+
+2010-02-09 23:55  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved base UDP socket creation into a common base function and
+   made use of it
+
+2010-02-09 23:54  hardaker
+
+   * include/net-snmp/library/snmpIPBaseDomain.h:
+
+   proper _H ifdef checks
+
+2010-02-09 23:54  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c:
+
+   added a raw UDP base domain
+
+2010-02-09 23:53  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPBaseDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpIPv6BaseDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   created a UDP IPv4 base; moved and reused more infrastructure
+
+2010-02-09 23:51  hardaker
+
+   *  include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved ipv4 address formatting into snmpIPv4BaseDomain
+
+2010-02-09 23:51  hardaker
+
+   * snmplib/snmpIPv6BaseDomain.c:
+
+   v6 domain infrastructure files
+
+2010-02-09 23:51  hardaker
+
+   *  include/net-snmp/library/snmpIPV4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      snmplib/snmpIPV4BaseDomain.c, snmplib/snmpIPV6BaseDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c:
+
+   v6 domain infrastructure files
+
+2010-02-09 23:50  hardaker
+
+   *  configure, include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPV4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpIPV4BaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   New IPv4 and IP base transport files
+
+2010-02-09 23:48  hardaker
+
+   * configure.d/config_modules_lib:
+
+   don't double include transport modules
+
+2010-02-09 23:48  hardaker
+
+   * include/net-snmp/library/snmpIPXDomain.h:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:46  hardaker
+
+   * configure.d/config_modules_lib:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:45  hardaker
+
+   *  include/net-snmp/library/snmpAAL5PVCDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUnixDomain.h:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:43  hardaker
+
+   * configure.d/config_modules_lib:
+
+   check for and report config_errors in transport headers
+
+2010-02-09 23:43  hardaker
+
+   * configure.d/config_os_headers:
+
+   allow a NETSNMP_QUICK_CHECK env variable to bypass header checks
+
+2010-02-09 23:42  hardaker
+
+   * configure.d/config_modules_lib:
+
+   better comments
+
+2010-02-09 23:42  hardaker
+
+   * configure.d/config_modules_lib:
+
+   check for config_require macros in transport headers for
+   force-including of other things
+
+2010-02-09 23:41  hardaker
+
+   *  include/net-snmp/library/snmp_transport.h, perl/agent/agent.xs,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   define a standardized indexed addr_pair instead of using one
+   labeled only for UDP everywhere
+
+2010-02-09 23:40  hardaker
+
+   * snmplib/snmptsm.c:
+
+   fix transport prefix list for incoming messages
+
+2010-02-09 23:40  hardaker
+
+   * include/net-snmp/library/snmptsm.h, snmplib/snmptsm.c:
+
+   remove the security level from the TSM cache; previous existence
+   from from a draft copy of the TSM RFC and is now stored entirely
+   in the tm reference
+
+2010-02-09 23:39  hardaker
+
+   * snmplib/snmptsm.c:
+
+   implement incoming TSM procedures according to RFC text
+
+2010-02-09 23:39  hardaker
+
+   * snmplib/snmptsm.c:
+
+   implement outgoing TSM procedures according to RFC text
+
+2010-02-09 23:39  hardaker
+
+   * include/net-snmp/library/snmpDTLSUDPDomain.h:
+
+   create defined sized array and length variable
+
 2010-02-05 09:52  jsafranek
 
    * 
@@ -8402,7 +20981,7 @@
    CHANGES: snmpd: fixed filedescriptior leak in Etherlike-MIB and
    RMON-MIB
 
-2010-02-05 09:48  jsafranek
+2010-02-04 15:57  jsafranek
 
    *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
       agent/mibgroup/mibII/interfaces.c,   
@@ -8413,19 +20992,65 @@
    Some interfaces can report their real speed, even they are down.
    And if they can't, the fallback to 10Mbps is still there.
 
-2010-02-01 01:07  tanders
+2010-02-01 14:47  bvassche
 
-   * testing/tests/T055agentv1mintrap:
+   * agent/mibgroup/examples/example.c:
 
-   Follow-up for r18093: same changes for all branches
+   Fixed the compiler warnings triggered by the source file
+   agent/mibgroup/examples/example.c.
+
+2010-02-01 14:45  bvassche
+
+   * README.win32, snmplib/keytools.c:
+
+   CHANGES: Win32: building: simplified the procedure for building
+   with SNMPv3 support enabled (OpenSSL).
+
+2010-02-01 14:34  bvassche
+
+   *  agent/helpers/cache_handler.c, agent/helpers/instance.c,   
+      agent/helpers/old_api.c, agent/helpers/stash_cache.c,   
+      agent/helpers/watcher.c, agent/mibgroup/winExtDLL.c,   
+      snmplib/large_fd_set.c, snmplib/md5.c, snmplib/snmpAliasDomain.c, 
+        snmplib/snmp_parse_args.c:
+
+   Made sure that all calls to free() are intercepted when building
+   with dmalloc
+   support enabled. Included <dmalloc.h> in those source files where
+   it was not
+   yet included, and provided a wrapper function for free() where
+   the address of
+   this function was taken (Dmalloc can only intercept free() when
+   it is called
+   directly but not when it is called through a function pointer).
+
+2010-02-01 10:49  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   NEWS: building: Building Net-SNMP with dmalloc support enabled is
+   again possible.
 
 2010-02-01 01:05  tanders
 
    *  testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap,   
-      testing/tests/T056agentv2cmintrap, testing/tests/T113agentxtrap:
+      testing/tests/T055agentv1mintrap,   
+      testing/tests/T056agentv2cmintrap, testing/tests/T113agentxtrap,  
+       testing/tests/T114agentxagentxtrap:
 
    CHANGES: building: 'make test TESTOPTS="-P tcp"' works fine now
 
+2010-01-31 08:02  bvassche
+
+   * configure, configure.d/config_os_misc2:
+
+   Follow-up for r18084: fixed an sh syntax error in the configure
+   script
+   that was triggered on systems without libcrypto and without
+   libeay32.
+   The following error was reported:
+   configure[33136]: x: unknown test operator
+
 2010-01-29 20:07  jsafranek
 
    * testing/tests/T059trapdtraphandle:
@@ -8439,6 +21064,128 @@
    Fix test 35 when configure option '--with-temp-file-pattern' was
    used and the directory for temp. files does not exist yet.
 
+2010-01-29 15:07  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/closedir.c,   
+      snmplib/gettimeofday.c, snmplib/opendir.c, snmplib/readdir.c,   
+      snmplib/system.c, win32/libsnmp/libsnmp.dsp:
+
+   Moved the source code of the opendir(), readdir(), closedir() and
+   gettimeofday() replacements for MSVC from snmplib/system.c to
+   separate source files in snmplib.
+
+2010-01-29 08:57  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   Configure script consistency improvement: renamed the variable
+   "saved_LIBS" into "netsnmp_save_LIBS".
+
+2010-01-29 06:39  magfr
+
+   *  configure, configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      testing/tests/T072com2secunix:
+
+   CHANGES: testing: Check the size of sun_path and use that to
+   generate the maximal size strings for stressing com2secunix.
+
+2010-01-27 15:16  bvassche
+
+   * testing/eval_tools.sh:
+
+   NEWS: MinGW: running the regression test suite is again possible
+   ('make test').
+
+2010-01-27 14:43  bvassche
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_os_misc2,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: Cygwin: building with another OpenSSL package than the
+   Cygwin-provided packages openssl and openssl-devel is again
+   possible.
+   NEWS: MinGW: building with OpenSSL works again.
+
+2010-01-26 21:27  magfr
+
+   * agent/agent_trap.c, include/net-snmp/agent/agent_trap.h:
+
+   CHANGES: snmplib: Make the context argument of send_v3trap,
+   send_trap_vars_with_context and netsnmp_send_traps refer to a
+   const char*.
+
+2010-01-26 21:24  magfr
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c:
+
+   Correct misspelling - #elsif to #elif
+
+2010-01-26 21:21  magfr
+
+   * snmplib/snmpUDPDomain.c:
+
+   Apparently not all systems define INET_ADDRSTRLEN so add it if it
+   is missing.
+
+2010-01-26 15:46  bvassche
+
+   * testing/TESTCONF.sh:
+
+   Added netstat path for MinGW.
+
+2010-01-26 15:00  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   fix stat names
+
+2010-01-26 15:00  hardaker
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   define netsnmp_assert_or_msgreturn
+
+2010-01-26 14:59  hardaker
+
+   * snmplib/snmptsm.c:
+
+   use netsnmp_assert_or_return
+
+2010-01-26 14:58  hardaker
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   define netsnmp_assert_or_return
+
+2010-01-26 14:58  hardaker
+
+   * snmplib/snmptsm.c:
+
+   update comments to reflect RFC5591 as the document describing the
+   implementation
+
+2010-01-26 11:43  bvassche
+
+   * include/net-snmp/system/cygwin.h:
+
+   NEWS: Cygwin: BUG: 2939168: byte order of udpLocalPort is now
+   correct.
+
+2010-01-26 10:46  bvassche
+
+   *  net-snmp-config.in, testing/TESTCONF.sh,   
+      testing/tests/T030snmpv3usercreation,   
+      testing/tests/T115agentxperl:
+
+   NEWS: Cygwin: BUG: 2939168: fixed test infrastructure ("make
+   test"). This has been fixed by using the proper environment
+   separator character and by adding the path of the netstat
+   executable for Cygwin in testing/TESTCONF.sh.
+
 2010-01-26 09:27  jsafranek
 
    * agent/mibgroup/host/hr_swinst.c:
@@ -8455,12 +21202,628 @@
    whole process
    is restarted only three times, to prevent endless loop.
 
+2010-01-25 22:16  magfr
+
+   *  agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmpv3/usmUser.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/disk.c, snmplib/scapi.c,   
+      snmplib/snmp_api.c:
+
+   CHANGES: snmplib, snmpd: Do not check if values of type size_t
+   are less than 0.
+
+2010-01-25 22:11  magfr
+
+   * agent/mibgroup/util_funcs/header_simple_table.c:
+
+   CHANGES: snmpd: Check the range of oid values towards the maximum
+   oid value, notULONG_MAX
+
+2010-01-25 20:01  rstory
+
+   * configure, configure.d/config_os_libs:
+
+   only bail on missing libiphlpapi for xwinsock2
+
+2010-01-25 19:57  rstory
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+
+   rename MAX_STATS to NETSNMP_STAT_MAX_STATS
+
+2010-01-25 19:53  rstory
+
+   * agent/helpers/snmp_get_statistic.c:
+
+   update for new path to snmp_get_statistics; check for index
+   overflow
+
+2010-01-25 19:44  rstory
+
+   *  agent/helpers/Makefile.in, agent/mibgroup/Makefile.depend,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.h,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.h,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.h,   
+      agent/mibgroup/target/target_counters_5_5.c,   
+      agent/mibgroup/target/target_counters_5_5.h:
+
+   update for new path to snmp_get_statistics
+
+2010-01-25 16:03  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   use *current* copy of the MIB when generating stats
+
+2010-01-25 16:01  rstory
+
+   *  agent/helpers/snmp_get_statistic.c,   
+      agent/mibgroup/utilities/snmp_get_statistic.c,   
+      agent/mibgroup/utilities/snmp_get_statistic.h,   
+      include/net-snmp/agent/all_helpers.h,   
+      include/net-snmp/agent/snmp_get_statistic.h:
+
+   move snmp_get_statistic helper to helpers dir; update all_helpers
+   header
+
+2010-01-25 14:34  bvassche
+
+   * apps/agentxtrap.c:
+
+   Replaced explicit declarations of optind, optopt and optarg by
+   #include <unistd.h> because explicitly declaring these variables
+   is not compatible with Cygwin.
+
+2010-01-25 14:25  bvassche
+
+   * snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   NEWS: Cygwin: IPv6 is only supported under Cygwin 1.7 or later.
+   The old implementation of IPv6 support in Net-SNMP under Cygwin
+   involved a strange mixture of Cygwin and Winsock2 socket calls,
+   which was too hard to maintain.
+   NEWS: Cygwin: builds again with IPv6 support enabled
+   (--enable-ipv6). At least Net-SNMP 5.5 doesn't build under Cygwin
+   with IPv6 support enabled. The configure script reported
+   "checking ipv6 stack type ... result: "unknown, no" ... error:
+   IPv6 transports not available if IPv6 support is not enabled".
+
+2010-01-25 14:13  bvassche
+
+   * snmplib/inet_ntop.c, snmplib/inet_pton.c:
+
+   Added missing #include <string.h>.
+
+2010-01-25 14:10  bvassche
+
+   * configure, configure.d/config_project_ipv6_types:
+
+   Added configure test for the IPv6 stack included in Cygwin
+   version 1.7.
+   IPv6 support is one of the new features of Cygwin 1.7. For more
+   information,
+   see also http://cygwin.com/cygwin-ug-net/ov-new1.7.html.
+
+2010-01-25 12:40  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs:
+
+   CHANGES: Cygwin: the message "configure: WARNING: winsock.h:
+   present but cannot be compiled" does no longer appear when
+   running the configure script.
+   Follow-up for r18050: re-enabled libiphlpapi and iphlpapi.h tests
+   for non-MinGW platforms since the Cygwin build needs these.
+
+2010-01-25 07:28  magfr
+
+   *  configure, configure.d/config_os_functions, snmplib/inet_ntop.c,  
+       snmplib/inet_pton.c:
+
+   CHANGES: building: Use autoconf to decide if inet_ntop.c and
+   inet_pton.c are to be compiled.
+
+2010-01-25 07:09  bvassche
+
+   * configure, configure.d/config_os_struct_members:
+
+   CHANGES: MinGW: struct sockaddr_in6.sin6_scope_id configure test
+   does now work.
+
+2010-01-25 05:14  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   TLSTM counter stats
+
+2010-01-25 05:13  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   add in TSM needed counter definitions
+
+2010-01-25 05:12  hardaker
+
+   * mibs/SNMP-TSM-MIB.txt, mibs/rfclist:
+
+   added the SNMP-TSM-MIB
+
+2010-01-24 14:43  magfr
+
+   * agent/agent_registry.c, include/net-snmp/agent/agent_registry.h:
+
+   NEWS: snmpd: Made subtree_context_cache::context_name a const
+   char*.
+
+2010-01-24 14:27  magfr
+
+   * include/net-snmp/library/tools.h:
+
+   CHANGES: snmplib: Prevent gcc ped-warning for
+   NETSNMP_REMOVE_CONST
+
+2010-01-24 13:27  magfr
+
+   * apps/snmpusm.c:
+
+   CHANGES: snmpusm: Prefer to use a variable of the right type over
+   an ugly cast. Lessen the scope of the variable as well.
+
+2010-01-24 12:59  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs, configure.d/config_os_progs:
+
+   CHANGES: building: Introduced the variable 'with_socklib' in the
+   configure script. This variable is set to "winsock2" for MinGW
+   and to "default" for all other systems. Winsock2 tests are only
+   run if this variable is set to "winsock2" (MinGW).
+
+2010-01-24 12:53  magfr
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   Remove superfluous debug logs.
+
+2010-01-24 12:45  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Windows, compiler warning fixes: fixed warnings about char * /
+   unsigned char *
+   mismatches.
+
+2010-01-24 12:44  bvassche
+
+   * snmplib/snmpUDPDomain.c:
+
+   Windows, compiler warning fix: make inet_ntop() and inet_pton()
+   declarations
+   available to the compiler.
+
+2010-01-24 12:44  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   Windows, compiler warning fix: made sure that <ws2tcpip.h> will
+   be included
+   from <net-snmp/types.h> such that the compiler doesn't complain
+   about struct
+   sockaddr_in6 being used before being defined.
+
+2010-01-24 11:42  bvassche
+
+   * man:
+
+   Updated Subversion ignore list.
+
+2010-01-24 11:41  bvassche
+
+   *  agent/agent_index.c, agent/agent_read_config.c,   
+      agent/agent_registry.c, agent/agent_trap.c, agent/mib_modules.c,  
+       agent/mibgroup/Rmon/alarm.c, agent/mibgroup/Rmon/event.c,   
+      agent/mibgroup/Rmon/history.c, agent/mibgroup/Rmon/statistics.c,  
+       agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/mibII/at.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/vacm_vars.c, agent/mibgroup/mibincl.h,   
+      agent/mibgroup/smux/smux.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/file.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/proc.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/util_funcs.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/snmpbulkget.c,   
+      apps/snmpbulkwalk.c, apps/snmpdelta.c, apps/snmpdf.c,   
+      apps/snmpget.c, apps/snmpgetnext.c, apps/snmpset.c,   
+      apps/snmpstatus.c, apps/snmptable.c, apps/snmptest.c,   
+      apps/snmptrap.c, apps/snmpusm.c, apps/snmpvacm.c,   
+      apps/snmpwalk.c, include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-includes.h, snmplib/lcd_time.c,   
+      snmplib/mib.c, snmplib/parse.c, snmplib/read_config.c,   
+      snmplib/scapi.c, snmplib/snmp-tc.c, snmplib/snmp_alarm.c,   
+      snmplib/snmp_api.c, snmplib/snmp_auth.c, snmplib/snmp_client.c,   
+      snmplib/snmp_logging.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmpksm.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/system.c, snmplib/tools.c, snmplib/vacm.c:
+
+   Cleanup (Windows): removed superfluous #include <sys/timeb.h>
+   directives. This header file
+   has only to be included from snmplib/system.c because of the
+   _ftime() call in that file.
+
+2010-01-24 10:43  bvassche
+
+   * apps/snmpnetstat/inet.c:
+
+   The macro 'C()' now casts its result from unsigned long to
+   unsigned int.
+   This change fixes a compiler warnings about format specification
+   mismatches
+   and fixes a bug (incorrect snmpnetstat output) on big endian
+   systems.
+
+2010-01-24 10:33  bvassche
+
+   * man/config_api.3:
+
+   Follow-up for r17946: removed generated man pages from
+   repository.
+
+2010-01-24 10:31  bvassche
+
+   * include/net-snmp/library/winservice.h, snmplib/winservice.c:
+
+   Moved two declarations of static functions from .h to .c.
+
+2010-01-24 10:21  magfr
+
+   * agent/mibgroup/agent/nsModuleTable.c:
+
+   Remove unnecessary casts.
+
+2010-01-24 10:19  bvassche
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   CHANGES: snmplib: builds again when HAVE_GETADDRINFO is not
+   defined.
+
+2010-01-24 10:03  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/inet_ntop.c,   
+      snmplib/inet_ntop.h, snmplib/inet_pton.c, snmplib/inet_pton.h,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv6Domain.c:
+
+   Changes:
+   - Added configure tests for inet_ntop() and inet_pton().
+   - Added header files snmplib/inet_ntop.h and snmplib/inet_pton.h.
+   - Replaced "extern inet_ntop(...);" and "extern inet_pton(...);"
+   by #include "inet_ntop/pton.h".
+   - Converted snmplib/inet_ntop.c and snmplib/inet_pton.c from K&R
+   C to ANSI C.
+   - Replaced the inet_aton() calls that were introduced in r18033
+   in snmplib/snmpUDPDomain.c by inet_pton() calls such that it is
+   again possible to build Net-SNMP on Windows.
+
+2010-01-24 06:08  magfr
+
+   * include/net-snmp/library/snmpDTLSUDPDomain.h:
+
+   CHANGES: snmplib: Remove declarations of functions that don't
+   exist or are declared elsewhere.
+
+2010-01-24 05:48  magfr
+
+   * agent/agent_trap.c:
+
+   NEWS: snmplib: Removed the unused variables warm_start_oid,
+   link_down_oid, link_up_oid, auth_fail_oid and egp_xxx_oid.
+
+2010-01-23 22:06  magfr
+
+   *  testing/tests/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix:
+
+   Better set of SKIPIF/SKIPIFNOTS
+
+2010-01-23 20:31  magfr
+
+   * testing/tests/T071com2sec6, testing/tests/T072com2secunix:
+
+   Be correct in what it is that is tested in the header.
+
+2010-01-23 20:27  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: snmplib: Changed the com2sec directives to fail if there
+   are too few arguments. Additionally changed the storage structure
+   to not allocate more space than necessary.
+
+2010-01-23 20:22  magfr
+
+   *  testing/tests/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix:
+
+   new tests checking the error handling of the com2sec* directives
+
+2010-01-23 19:17  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r18025: builds again with Microsoft Visual Studio.
+
+2010-01-23 17:51  bvassche
+
+   * configure, configure.ac:
+
+   CHANGES: building: OS header detection check is now run before
+   IPv6 stack detection.
+   CHANGES: Solaris: sockaddr_in6.sin6_addr configure test does now
+   work.
+
+2010-01-23 17:42  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   Fixed a Solaris-specific compiler warning.
+
+2010-01-23 17:00  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/mingw32.h:
+
+   MinGW: added configure test for <sys/timeb.h> and also for struct
+   timezone.
+
+2010-01-23 16:32  bvassche
+
+   *  include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      snmplib/snmpUDPIPv6Domain.c:
+
+   MinGW: made sure that the IPv6-related datatypes are available
+   before being used.
+
+2010-01-23 16:30  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Added #undef HAVE_WINDOWS_H.
+
+2010-01-23 16:28  bvassche
+
+   * include/net-snmp/types.h:
+
+   MinGW: made gettimeofday() declaration available for the
+   compiler.
+
+2010-01-23 16:27  bvassche
+
+   * snmplib/snmp_api.c:
+
+   MinGW: made gettimeofday() declaration available for the
+   compiler.
+
+2010-01-23 16:26  bvassche
+
+   * snmplib/inet_pton.c:
+
+   Made sure that the compiler does not complain about a missing
+   prototype for isdigit().
+
+2010-01-23 16:24  bvassche
+
+   * configure, configure.d/config_os_headers:
+
+   MinGW: iphlpapi.h configure test does now work.
+
+2010-01-23 15:10  bvassche
+
+   * configure, configure.d/config_project_ipv6_types:
+
+   Renamed the Winsock2 IPv6 stack from 'mingw' into 'winsock2'.
+
+2010-01-23 15:07  bvassche
+
+   *  agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/route_write.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/udpTable.c,   
+      agent/mibgroup/mibII/var_route.c, agent/snmpd.c,   
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c,   
+      apps/snmpnetstat/winstub.h, configure,   
+      configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in, include/net-snmp/types.h,  
+       snmplib/inet_ntop.c, snmplib/inet_pton.c,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpSSHDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Improved portability between the supported Win32 compilation
+   environments as follows:
+   - Made sure that the <winsock2.h> and <ws2tcpip.h> header files
+   are only included from <net-snmp/types.h>.
+   - Added configure check for <iphlpapi.h>.
+   - Replaced several WIN32 / cygwin tests by a HAVE_IPHLPAPI_H
+   test.
+   - Documented that win32/net-snmp/net-snmp-config.h is only used
+   for the MSVC build.
+
+2010-01-22 16:46  bvassche
+
+   * snmplib/tools.c:
+
+   Follow-up for r17910: builds again with Microsoft Visual Studio
+   6.
+
+2010-01-22 16:41  bvassche
+
+   * agent/mibgroup/winExtDLL.c, win32/MgmtApi-winExtDLL.h:
+
+   Follow up for r18016: builds again with Microsoft Visual Studio.
+
+2010-01-22 14:13  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   Follow-up for r18016: made MinGW libiphlpapi check more robust.
+
+2010-01-22 13:32  bvassche
+
+   *  README.win32, aclocal.m4, agent/agent_index.c,   
+      agent/agent_read_config.c, agent/agent_registry.c,   
+      agent/agent_trap.c, agent/mib_modules.c,   
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/header_complex.c, agent/mibgroup/host_res.h,   
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c,   
+      agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/mibII_common.h,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/route_write.c,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/struct.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/target.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/file.c,   
+      agent/mibgroup/ucd-snmp/loadave.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/util_funcs.c, agent/mibgroup/winExtDLL.c,   
+      agent/mibgroup/winExtDLL.h, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/encode_keychange.c,   
+      apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/winstub.c, 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_handlers.c, apps/snmptrapd_log.c,   
+      apps/snmptrapd_sql.c, apps/snmpusm.c, apps/snmpvacm.c,   
+      apps/snmpwalk.c, configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_struct_members,   
+      configure.d/config_project_ipv6_types,   
+      include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/mingw32.h, include/net-snmp/types.h,   
+      snmplib/asn1.c, snmplib/callback.c, snmplib/default_store.c,   
+      snmplib/int64.c, snmplib/keytools.c, snmplib/large_fd_set.c,   
+      snmplib/lcd_time.c, snmplib/md5.c, snmplib/mib.c,   
+      snmplib/parse.c, snmplib/read_config.c, snmplib/scapi.c,   
+      snmplib/snmp.c, snmplib/snmp_alarm.c, snmplib/snmp_api.c,   
+      snmplib/snmp_auth.c, snmplib/snmp_client.c, snmplib/snmp_debug.c, 
+        snmplib/snmp_logging.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmpksm.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/system.c, snmplib/tools.c, snmplib/vacm.c,   
+      snmplib/winpipe.c, win32/Snmp-winExtDLL.h,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   NEWS: MinGW: winExtDLL compiles now under MinGW.
+   CHANGES: MinGW: building Net-SNMP works again.
+   
+   Detailed overview:
+   * Changes in the configure script:
+
+   - socket() library check passes again on MinGW.
+   - Added library checks for libws2_32, libregex and libsnmpapi.
+   - Added check for the winsock2.h and ws2tcpip.h header files.
+   - Added check for the chown() and localtime_r() functions.
+   - sockaddr_in6.sin6_scope_id check does now work on MinGW.
+   - Added IPv6 stack type called "mingw".
+   * Source code changes:
+
+   - Include <winsock2.h> from <net-snmp/types.h> instead of
+   <winsock.h>
+   under MinGW such that IPv6 support is available.
+   - Moved #include <winsock.h> from .c files to <net-snmp/types.h>.
+   - Added a copy of the MinGW header file <snmp.h> (which is not
+   copyrighted)
+   as win32/Snmp-winExtDLL.h.
+   - agent: only call chown() when available (HAVE_CHOWN).
+   * Documentation changes: updated README.win32.
+
+
+2010-01-22 08:34  magfr
+
+   * snmplib/read_config.c:
+
+   CHANGES: snmplib: Do not cast from char* to char*
+
 2010-01-22 00:39  hardaker
 
    * COPYING:
 
    Copyright file update for SPARTA, Inc.
 
+2010-01-22 00:22  hardaker
+
+   * snmplib/snmptsm.c:
+
+   add proper prefixes in TSM for SSH, DTLS, etc, based on the
+   domain
+
+2010-01-22 00:20  hardaker
+
+   * dist/patme:
+
+   added 5.5 branch
+
+2010-01-22 00:20  hardaker
+
+   * dist/makerelease.xml:
+
+   minor echo output change
+
+2010-01-21 20:51  rstory
+
+   * snmplib/snmp_api.c:
+
+   move comment next to code it is talking about; No code change
+
 2010-01-21 14:55  jsafranek
 
    * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
@@ -8471,6 +21834,12 @@
    The kernel might provide longer fields, especially on 64-bit
    systems.
 
+2010-01-20 12:42  bvassche
+
+   * PORTING, local/snmpcheck.def:
+
+   Fixed typo: replaced 'necissary' by 'necessary'.
+
 2010-01-20 08:53  jsafranek
 
    * man/snmpnetstat.1.def:
@@ -8505,6 +21874,107 @@
    (rpm
    version only)
 
+2010-01-11 23:58  tanders
+
+   * apps/Makefile.in:
+
+   add PERLLDOPTS_FOR_APPS to agentxtrap link line (fixes
+   "libperl.so not
+   found" errors)
+
+2010-01-11 00:11  tanders
+
+   *  testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap,   
+      testing/tests/T055agentv1mintrap,   
+      testing/tests/T056agentv2cmintrap, testing/tests/T113agentxtrap,  
+       testing/tests/T114agentxagentxtrap:
+
+   get rid of using deprecated syntax for trap/inform sinks
+
+2010-01-08 08:42  bvassche
+
+   * snmplib/snmp_alarm.c, snmplib/snmp_api.c:
+
+   CHANGES: snmplib: obsoleted NETSNMP_DS_LIB_ALARM_DONT_USE_SIG.
+   From now on using SIGALRM to trigger Net-SNMP alarm handlers is
+   no longer supported.
+   
+   Motivation: as known libnetsnmp supports time-based alarms via
+   the functions
+   snmp_alarm_register(), run_alarms() and other functions. Two
+   different ways to
+   trigger the function run_alarms() are supported inside
+   libnetsnmp:
+   1. By making sure that the timeout argument of select() is small
+   enough such
+   that select() returns before the next alarm must be handled (when
+   the
+   variable NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to one, which
+   is the
+   default).
+   2. By making sure that the kernel fires SIGALRM at the time when
+   run_alarms()
+   should be called (when the variable
+   NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set
+   to zero, which has to be configured explicitly).
+   
+   The following issues are associated with the second approach:
+   1. Alarm functions are used inside Net-SNMP to e.g. refresh
+   cached table
+   contents. As far as I can see there is nothing in the Net-SNMP
+   source code
+   that prevents the following from happening: a table refresh
+   triggered via
+   SIGALRM while a row is being removed from a cached table. This
+   can result
+   in dangling pointer dereferences and even a crash.
+   2. POSIX restricts signal handlers to calling functions that are
+   either reentrant
+   or non-interruptible
+   (http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04).
+   Standard I/O functions like printf() and fprintf() are neither
+   reentrant nor
+   non-interruptible. run_alarms() is called from inside a signal
+   handler, which
+   means that this restriction applies to the function run_alarms()
+   itself and
+   all functions called by it (which includes the alarm callback
+   functions).
+   Or: e.g. snmp_log() and its callers must not be called from
+   inside run_alarms()
+   when this function is invoked from inside a signal handler. This
+   is a severe
+   restriction, and one that is hard to work with.
+   3. Not all software developers know how to make sure that signal
+   delivery works
+   correctly in a multithreaded context. POSIX does not guarantee to
+   which thread
+   a signal like SIGALRM will be delivered, unless that signal has
+   been blocked
+   before thread creation and is unblocked after thread creation
+   (see also
+   http://www.opengroup.org/onlinepubs/009695399/functions/pthread_sigmask.html).
+   This is relevant for the Net-SNMP project not only because a
+   worker thread is
+   created inside
+   agent/mibgroup/if-mib/data_access/interface_linux.c but also
+   because libnetsnmp is often used inside multithreaded software.
+   Currently no
+   attempt is made to make sure that SIGALRM is processed by the
+   Net-SNMP event
+   processing loop thread. If SIGALRM is processed by another
+   thread, this will
+   result in one or more data races.
+   
+   Because all the difficulties associated with processing alarms
+   from inside a
+   signal handler function, and because fixing these would require
+   more effort than
+   it is worth, NETSNMP_DS_LIB_ALARM_DONT_USE_SIG has been
+   deprecated and from now
+   on approach (1) is the only supported approach to trigger alarm
+   handlers.
+
 2010-01-07 19:42  hardaker
 
    * agent/mibgroup/hardware/cpu/cpu_sysctl.c:
@@ -8512,6 +21982,271 @@
    Patch from Stephen Hemminger to fix a minor memleak in cpu
    sysctrl fetching
 
+2010-01-07 16:21  bvassche
+
+   *  include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpusm.c, snmplib/vacm.c:
+
+   Removed read_config_read_ascii_string(), and made sure that
+   read_config_read_octet_string() '\0'-terminates the output buffer
+   in all cases.
+   Updated documentation and unit tests.
+
+2010-01-07 14:41  bvassche
+
+   * snmplib/snmpusm.c:
+
+   Removed three superfluous casts because these triggered a
+   compiler warning
+   when compiled with MSVC.
+
+2010-01-07 13:28  bvassche
+
+   * snmplib/read_config.c:
+
+   Reverted the read_config_read_octet_string() changes from r17992
+   because these
+   caused the following Valgrind complaint during snmpd startup:
+   
+   ==25201== Conditional jump or move depends on uninitialised
+   value(s)
+   ==25201== at 0x4047B14: netsnmp_send_traps (agent_trap.c:798)
+   ==25201== by 0x4048128: send_enterprise_trap_vars
+   (agent_trap.c:853)
+   ==25201== by 0x404819D: send_trap_vars (agent_trap.c:963)
+   ==25201== by 0x404825B: send_easy_trap (agent_trap.c:1011)
+   ==25201== by 0x804B5D2: main (snmpd.c:394)
+
+2010-01-07 12:30  bvassche
+
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c:
+
+   Fixed a format specification mismatch.
+
+2010-01-07 12:19  bvassche
+
+   * include/net-snmp/agent/sysORTable.h:
+
+   Depending on the context, assigning a char * pointer to
+   sysORTable::OR_descr does or does not transfer
+   ownership. So whether OR_descr is declared as char * or as const
+   char *, there will always be at
+   least one statement on which the compiler complains about a char
+   *  / const char * mismatch. The only    solution is to cast away
+      const where appropriate to make sure    that the compiler does not
+      complain,    as implemented in this patch.  2010-01-07 11:46 
+      bvassche
+
+
+   * snmplib/snmpusm.c:
+
+   usm_save_user(): when writing user->name and user->secName, only
+   write the ASCII data and not the
+   terminating '\0'. Since both items are read by calling
+   read_config_read_ascii_string(), writing
+   the terminating '\0' is not necessary to guarantee that the data
+   read back is terminated properly.
+
+2010-01-07 09:13  bvassche
+
+   * snmplib/read_config.c:
+
+   Changed the behavior of read_config_read_octet_string(): until
+   now this
+   function terminated the output buffer in some cases with '\0'
+   (when the
+   input was in the format 0x... and a buffer overflow occurred and
+   also
+   when the input was in ASCII format, but not when the input was in
+   format
+   0x... and no buffer overflow occurred). Changed this such that
+   this
+   function does no longer terminate the input buffer with '\0'.
+   This
+   change was possible because inside the Net-SNMP project all
+   callers that
+   needed a '\0' terminated string have been converted to use
+   read_config_read_ascii_string() instead.
+
+2010-01-06 17:52  bvassche
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/snmp_mib.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/udp.c, agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/tunnel/tunnel.c:
+
+   Reverted r17968 and r17972.
+
+2010-01-06 15:40  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/mibII/vacm_conf.c:
+
+   Fixed more compiler warnings related to the use of the const
+   keyword.
+
+2010-01-06 15:38  bvassche
+
+   * agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c:
+
+   Fixed a format specification mismatch.
+
+2010-01-06 15:36  bvassche
+
+   * include/net-snmp/library/snmpusm.h:
+
+   Changed argument type from char * into const char *. Should have
+   been included in r17975.
+
+2010-01-06 15:33  bvassche
+
+   *  agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/utilities/override.c:
+
+   Fixed several compiler warnings about char * / u_char *
+   mismatches.
+
+2010-01-06 15:31  bvassche
+
+   *  agent/agent_read_config.c,   
+      include/net-snmp/agent/agent_read_config.h,   
+      include/net-snmp/config_api.h, snmplib/read_config.c:
+
+   Added the functions register_const_config_handler() and
+   snmpd_register_const_config_handler(), which
+   accept a parser function that does not modify the string that it
+   parses. Using these functions results
+   in easier to read code than using the non-const handler
+   registration functions and casting the parser
+   function explicitly from (void(*)(const char*, const char*)) to
+   (void(*)(const char*, char*)).
+
+2010-01-06 15:27  bvassche
+
+   * snmplib/snmpusm.c:
+
+   Fixed a compiler warning about discarding the const qualifier.
+
+2010-01-06 14:48  bvassche
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Added read_config_read_objid_const().
+
+2010-01-06 14:42  bvassche
+
+   * agent/mibgroup/tunnel/tunnel.c:
+
+   Duplicated the second argument of REGISTER_SYSOR_TABLE() /
+   REGISTER_SYSOR_ENTRY()
+   since that argument is freed while unregistering such an entry.
+   Not sure whether
+   this could actually trigger a call of free() with a constant
+   string as argument
+   and I'm neither sure about whether or not this could have
+   triggered a crash.
+
+2010-01-06 14:34  bvassche
+
+   * include/net-snmp/library/vacm.h, snmplib/vacm.c:
+
+   For those VACM functions that do not modify the strings passed as
+   arguments,
+   changed the argument type from char * to const char *.
+
+2010-01-06 14:27  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   Fixed a compiler warning about discarding the const qualifier.
+
+2010-01-06 14:26  bvassche
+
+   * agent/mibgroup/sctp-mib/sctpScalars_common.c:
+
+   Removed an unused variable.
+
+2010-01-06 14:14  bvassche
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/snmp_mib.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/udp.c, agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c:
+
+   Duplicated the second argument of REGISTER_SYSOR_TABLE() /
+   REGISTER_SYSOR_ENTRY()
+   since that argument is freed while unregistering such an entry.
+   Not sure whether
+   this could actually trigger a call of free() with a constant
+   string as argument
+   and I'm neither sure about whether or not this could have
+   triggered a crash.
+
+2010-01-06 14:08  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.h:
+
+   Fixed several compiler warnings about discarding the const
+   qualifier.
+
+2010-01-06 14:06  bvassche
+
+   * agent/helpers/table.c, agent/helpers/table_dataset.c:
+
+   Fixed several compiler warnings about char * / u_char *
+   mismatches.
+
+2010-01-06 14:04  bvassche
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Changes:
+   - Added new functions skip_white_const(), skip_not_white_const(),
+   skip_token_const(), copy_nword_const() and
+   read_config_read_octet_string_const().
+   - Changed return type of read_config_read_ascii_string() from
+   char * to
+   const char *. Note: this does not affect backwards compatibility
+   since this
+   function has not yet been included in any release.
+   - Fixed documentation of read_config_read_octet_string() and
+   read_config_read_ascii_string().
+   - Reduced number of cast-away-const constructs in read_config.c.
+
+2010-01-06 13:35  bvassche
+
+   * include/net-snmp/library/tools.h:
+
+   Refined the implementation of the macro NETSNMP_REMOVE_CONST():
+   when using
+   the gcc compiler, it is now verified whether the types (const t)
+   and typeof(e)
+   are compatible, where t is the first argument and e the second
+   argument of
+   this macro.
+
 2010-01-06 13:33  jsafranek
 
    * agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/at.h:
@@ -8533,6 +22268,94 @@
    CHANGES: snmplib: BUGS: 2922390: Fix test for missing contextName
    parameter
 
+2010-01-06 11:57  bvassche
+
+   *  agent/snmp_perl.c, include/net-snmp/library/tools.h,   
+      snmplib/container.c, snmplib/container_binary_array.c,   
+      snmplib/container_list_ssll.c, snmplib/parse.c,   
+      snmplib/snmp_service.c:
+
+   Changes:
+   - Introduced a new macro NETSNMP_REMOVE_CONST() that allows to
+   cast
+   away constness without that gcc -Wcast-qual reports a warning.
+   - Made casting away constness explicit by introducing the
+   NETSNMP_REMOVE_CONST() macro. This suppresses the warning
+   gcc -Wcast-qual printed for these statements.
+
+2010-01-06 11:46  bvassche
+
+   * agent/mibgroup/tunnel/tunnel.c, snmplib/snmpUDPIPv6Domain.c:
+
+   Fixed compiler warnings about discarding the const qualifier.
+
+2010-01-06 09:14  magfr
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c, agent/snmp_agent.c,   
+      apps/agentxtrap.c, snmplib/large_fd_set.c, snmplib/snmp_api.c:
+
+   Do not use 0 when referring to NULL.
+
+2010-01-06 08:26  bvassche
+
+   * include/net-snmp/library/system.h, snmplib/system.c:
+
+   Changed argument types of calculate_time_diff() and
+   calculate_sectime_diff()
+   from struct timeval * to const struct timeval *. Note: this does
+   not affect
+   backwards compatibility.
+
+2010-01-06 08:23  bvassche
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   Changes (no functionality has been modified):
+   - Removed diskio_parse_config() declaration because that function
+   is neither called nor defined in the source file diskio.c.
+   - Added declaration for getstats() such that gcc does not
+   complain about a missing declaration.
+   - Linux: changed visibility of getstats() from global to static
+   for consistency with the BSD and Darwin implementations of
+   getstats().
+
+2010-01-06 08:00  bvassche
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/utilities/iquery.c:
+
+   Fixed compiler warnings about char * / u_char * mismatches.
+
+2010-01-06 02:18  magfr
+
+   *  apps/Makefile.in, configure, configure.d/config_modules_agent,   
+      man/Makefile.in, testing/tests/T114agentxagentxtrap:
+
+   CHANGES: apps: Only build agentxtrap if the agentx libraries are
+   built. Add a test case for agentxtrap.
+   
+   The enablement/disablement is inspiered by automake conditionals
+
+2010-01-06 01:59  magfr
+
+   * agent/mibgroup/agentx/client.c:
+
+   Remove unused variable starttime.
+
+2010-01-05 22:54  magfr
+
+   *  agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/logmatch.h:
+
+   CHANGES: Hide most functions and variables in the logmatch
+   module. Cleaned up the header accordingly. Remove the need for
+   forward declarations by reordering the functions.
+
 2010-01-05 22:33  dts12
 
    * python/netsnmp/client_intf.c:
@@ -8573,6 +22396,99 @@
 
    Remove generated man pages from repository.
 
+2010-01-04 16:44  bvassche
+
+   * snmplib/read_config.c:
+
+   Fixed a past-end-of-buffer read that occurred when an ASCII
+   string was
+   passed as the first argument of read_config_read_octet_string() /
+   read_config_read_ascii_string() and the third argument (*len)
+   equals 0.
+
+2010-01-04 16:41  bvassche
+
+   * snmplib/read_config.c:
+
+   Fixed compiler warnings about casting away 'const'.
+
+2010-01-04 16:27  bvassche
+
+   * snmplib/read_config.c:
+
+   Added unit test for read_config_read_octet_string() and
+   read_config_read_ascii_string().
+
+2010-01-04 10:45  jsafranek
+
+   * snmplib/mib.c:
+
+   Use correct oid length in table indexes.
+
+2010-01-04 08:10  bvassche
+
+   * snmplib/snmp_alarm.c:
+
+   Made sure that snmp_alarm.c can be compiled again with C89
+   compilers: for C89
+   it is required that initializers are constant expressions.
+
+2010-01-03 16:28  magfr
+
+   *  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:
+
+   Rename netsnmp_arch_tcpconn_delete to
+   netsnmp_arch_tcpconn_entry_delete in order to be consistent with
+   the header file and all the other functions in the module.
+
+2010-01-03 16:26  magfr
+
+   *  agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h,  
+       include/net-snmp/data_access/ip_scalars.h,   
+      include/net-snmp/data_access/systemstats.h:
+
+   Add missing declarations.
+
+2009-12-30 12:49  bvassche
+
+   *  include/net-snmp/library/tools.h,   
+      include/net-snmp/library/types.h:
+
+   Follow-up for r17933: fixed the issue that including the header
+   file
+   <net-snmp/library/types.h> from <net-snmp/library/tools.h>
+   triggers
+   compiler errors during the configure process (complaints about
+   <netsnmp/net-snmp-config.h> not being included before
+   <net-snmp/types.h>).
+   Note: this does not solve the underlying problem that MIB code
+   must not
+   include the header file <net-snmp/types.h> because doing so would
+   trigger a
+   circular dependency during the configure step (MIB code is
+   compiled during
+   the configure step, while the configure step generates
+   <netsnmp/net-snmp-config.h> and <net-snmp/types.h> needs
+   <netsnmp/net-snmp-config.h>).
+
+2009-12-30 11:48  bvassche
+
+   * apps, man:
+
+   Follow-up for r17919: updated Subversion ignore lists.
+
+2009-12-28 18:03  bvassche
+
+   * agent/agent_index.c:
+
+   Fixed a past-end-of-buffer read. Found this by analyzing compiler
+   warnings.
+   Note: the affected function, register_string_index(), isn't
+   called from
+   anywhere inside the Net-SNMP project itself.
+
 2009-12-23 09:49  jsafranek
 
    *  agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
@@ -8590,6 +22506,49 @@
    Returning structure with pointers inside is not the best thing to
    do.
 
+2009-12-22 16:05  bvassche
+
+   *  include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpusm.c, snmplib/vacm.c:
+
+   Fixed several past-end-of-buffer reads.
+
+2009-12-22 12:02  bvassche
+
+   *  agent/mibgroup/Rmon/agutil.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/host/hr_swinst.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, include/net-snmp/agent/snmp_agent.h,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h,   
+      include/net-snmp/library/types.h, man/netsnmp_util.3,   
+      snmplib/system.c, snmplib/tools.c, win32/libsnmp_dll/libsnmp.def, 
+        win32/libsnmp_dll/libsnmp.def.in:
+
+   Reverted the backwards-incompatible changes of r17913:
+   - Restored the definition of the DIFFTIMEVAL() macro.
+   - Restored the definitions of the functions
+   calculate_time_diff(),
+   uatime_ready(), marker_tticks() and timeval_tticks().
+   - starttime is again a global variable instead of a static one.
+   Also implemented the following changes:
+   - Moved the marker_t typedef from net-snmp/library/tools.h to
+   net-snmp/library/types.h.
+   - Added a new typedef, const_marker_t.
+   - For those atime_*() / uatime_*() / *_tticks() functions that do
+   not change
+   their arguments, declared these arguments const_marker_t instead
+   of marker_t.
+   - Renamed netsnmp_get_starttime() and netsnmp_set_starttime() to
+   netsnmp_get_agent_starttime() and netsnmp_set_agent_starttime()
+   respectively. Moved these functions from tools.c to system.c.
+   - Removed the function atime_hsubtract() (was introduced in
+   r17913) and
+   introduced a new function, netsnmp_set_agent_uptime().
+
 2009-12-22 07:59  bvassche
 
    * snmplib/read_config.c:
@@ -8636,6 +22595,30 @@
    triggered by
    parsing the persistentDir keyword.
 
+2009-12-21 13:32  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Applied a slightly modified version of patch #2901122. Changes:
+   - New feature: specifying ASN type SNMP_NOSUCHINSTANCE as the
+   third argument
+   of netsnmp_set_row_column() will cause an SNMP GetRequest /
+   GetNextRequest to
+   return the error code noSuchInstance (SNMPv2) or noSuchName
+   (SNMPv1). This
+   makes it possible to have a cached table with one or more
+   "holes".
+   - Performance optimization: do not free() / malloc() the memory
+   for storing
+   the cached value if the value has not been modified.
+   - Performance optimization: do not free() / malloc() the memory
+   for storing
+   the cached value if the length of the value has not been
+   modified.
+   - Performance optimization: if the size of the cached value
+   shrunk, use
+   realloc() instead of free() and malloc().
+
 2009-12-21 12:23  bvassche
 
    * snmplib/read_config.c:
@@ -8702,12 +22685,119 @@
    varbind included in traps generated by Net-SNMP itself (e.g.
    coldStart)."
 
-2009-12-21 10:50  bvassche
+2009-12-21 10:09  bvassche
 
-   * README.win32:
+   *  agent/agent_trap.c, man/netsnmp_agent_trap.3,   
+      snmplib/snmp_alarm.c:
 
-   Backported r17901 (spelling fixes and hrSystemUptime
-   documentation).
+   Spelling fix: replaced all occurrences of 'specifc' by
+   'specific'.
+
+2009-12-21 10:06  bvassche
+
+   * snmplib/snmp_alarm.c:
+
+   Refactoring: eliminated duplicated code by reimplementing
+   snmp_alarm_register() using snmp_alarm_register_hr(). Neither the
+   Net-SNMP API nor the behavior of snmp_alarm_register() has been
+   changed.
+
+2009-12-20 11:10  magfr
+
+   *  apps/Makefile.in, apps/agentxtrap.c, man/Makefile.in,   
+      man/agentxtrap.1.def:
+
+   NEWS: apps: Add command to send AgentX notify requests to a
+   master agent.
+
+2009-12-17 16:44  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Follow-up for r17917 -- builds again on Windows systems.
+
+2009-12-17 16:03  bvassche
+
+   *  agent/mibgroup/utilities/iquery.c,   
+      include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   Follow-up for r17903 / patch 2911323 "Fix agent lockup when
+   monitoring
+   AgentX-delegated information" (submitted by myself). That patch
+   did not only
+   fix the lockup but also made snmpd print a warning during startup
+   when
+   iquerySecName was not configured. This warning was printed even
+   when no
+   internal queries were performed. This warning is now only printed
+   just before
+   the first internal query is made (during the first call of
+   netsnmp_query_get_default_session() instead of during creation of
+   the internal
+   session).
+
+2009-12-17 13:55  bvassche
+
+   * agent/mibgroup/Rmon/agutil.c:
+
+   RMON MIB source code compiles again -- should have been included
+   in r17913.
+
+2009-12-17 13:18  bvassche
+
+   * agent/mibgroup/Rmon/agutil.c, snmplib/system.c:
+
+   Modified the implementation of calculate_sectime_diff() and
+   AGUTIL_sys_up_time() such that these functions normalize the
+   tv_usec field of
+   struct timeval properly. Note: this source code modification does
+   not affect
+   the return value of the aforementioned two functions.
+
+2009-12-17 13:11  bvassche
+
+   * man/netsnmp_util.3:
+
+   Removed documentation of the DIFFTIMEVAL() macro -- should have
+   been included
+   in r17913.
+
+2009-12-17 13:05  bvassche
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/host/hr_swinst.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h, man/netsnmp_util.3,   
+      snmplib/snmp_alarm.c, snmplib/system.c, snmplib/tools.c,   
+      win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Converted starttime from a global variable into a static variable
+   and applied the following changes:
+   - Added two new macros: NETSNMP_TIMERADD() and
+   NETSNMP_TIMERSUB().
+   - Added three new functions: netsnmp_get_starttime(),
+   netsnmp_set_starttime() and atime_hsubtract().
+   - Replaced gettimeofday() + calculate_time_diff() calls by a call
+   to netsnmp_get_agent_uptime().
+   - Removed the macro DIFFTIMEVAL() because it was not used inside
+   the Net-SNMP project and because it contained a bug.
+   - Removed the functions calculate_time_diff(), uatime_ready(),
+   marker_tticks() and timeval_tticks().
+
+2009-12-17 12:44  bvassche
+
+   *  agent/mibgroup/agentx/master_admin.c,   
+      win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Bug fix: according to RFC 2571 the unit of snmpEngineTime is one
+   second,
+   not one hundredth of a second.
 
 2009-12-17 10:03  dts12
 
@@ -8715,6 +22805,55 @@
 
    Fix typo.
 
+2009-12-16 12:30  bvassche
+
+   *  snmplib/tools.c, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Windows-only bug fixes:
+   - Fixed the strange build errors that occurred when compiling
+   libnetsnmp as a DLL and when either <stdlib.h> or <string.h> was
+   included after <net-snmp-config.h> instead of before.
+   - For debug builds with Microsoft Visual Studio, fixed the
+   mismatches between the _malloc_dbg() call invoked by strdup() and
+   free()-ing strdup()-ed memory by including the <crtdbg.h> header
+   in tools.c and by defining the preprocessor symbol
+   _CRTDBG_MAP_ALLOC. Detected via the memory checker included in
+   Intel Parallel Studio.
+
+2009-12-14 17:23  tanders
+
+   *  perl/agent/agent.xs, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   sync definition of netsnmp_udp_addr_pair in Perl with the changes
+   in
+   r17855 and r17908
+
+2009-12-14 13:55  jsafranek
+
+   * snmplib/snmpTCPDomain.c:
+
+   Fix TCP transport broken by rev. 17855 - copies of
+   netsnmp_udp_addr_pair in snmpTCPDomain.c and snmpUDPDomain.c must
+   be the same.
+
+2009-12-11 14:43  hardaker
+
+   * apps/snmpusm.c, man/snmpusm.1.def:
+
+   CHANGES: snmpusm: patch from Martin Bjorklund to add a -Cw option
+   to use createAndWait for agents that are strict about not
+   allowing a row to be set to active until the authentication
+   password has been changed; plus white-space clean up, manual
+   additions and help output modifications by hardaker
+
+2009-12-11 14:35  bvassche
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   Fixed a compiler warning about a format specifier mismatch.
+
 2009-12-11 14:06  bvassche
 
    * README.win32, agent/mibgroup/winExtDLL.c:
@@ -8744,12 +22883,20 @@
    CHANGES: snmpd: PATCHES: 2911323: Fix agent lockup when
    monitoring AgentX-delegated information
 
-2009-12-10 14:53  dts12
+2009-12-10 13:59  bvassche
 
-   * agent/mibgroup/agentx/subagent.c:
+   * README.win32:
 
-   Backport of SVN revisions 17870/17894,
-   to handle const warnings.
+   Changes:
+   - Added information about Microsoft's implementation of
+   hrSystemUptime.0.
+   - Fixed a few typos.
+
+2009-12-10 13:01  bvassche
+
+   * agent/agent_registry.c:
+
+   Added missing newline in a logging statement.
 
 2009-12-10 12:54  bvassche
 
@@ -8764,6 +22911,61 @@
    has been
    detected.
 
+2009-12-10 12:37  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   OIDs in debug messages generated by the winExtDLL module are now
+   printed in
+   symbolic form instead of numeric form.
+
+2009-12-10 08:57  bvassche
+
+   * win32/win32sdk.dsw:
+
+   Project dependencies should now really be correct. Should have
+   been included
+   in r17873.
+
+2009-12-10 08:41  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Changes (only source code comments have been changed):
+   - Removed a note that contradicted the instructions in
+   README.win32.
+   - Updated build instructions after the addition of the file
+   win32/Snmp-winExtDLL.h in r17830.
+
+2009-12-10 08:17  bvassche
+
+   * apps/snmpdf.c, apps/snmpstatus.c:
+
+   Made file header comments consistent with the descriptions in the
+   respective man pages.
+
+2009-12-10 03:04  magfr
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Made sure that agent_sysOR_callback won't trigger a warning when
+   registered as a callback. Change agentx_reopen_sysORTable in
+   order to avoid warnings of const removal.
+
+2009-12-09 15:05  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   - Moved the declaration of the variable 'newline' inside the
+   function
+   log_handler_stdouterr() because this variable is only used by
+   that function.
+   - Documented the purpose of the variable 'newline'.
+   - Bug fix: made sure that the call log_handler_stdouterr() does
+   not trigger an
+   invalid memory access (str[-1]) when an empty string is passed to
+   this function.
+
 2009-12-09 14:37  jsafranek
 
    *  agent/mibgroup/ip-mib/data_access/arp_linux.c,   
@@ -8776,6 +22978,60 @@
    bytes. Snmpd on Linux was not able to parse /proc/net/arp then
    and produced ugly 'ioctl 35123 returned -1' to log.
 
+2009-12-09 12:27  bvassche
+
+   * README.win32:
+
+   Added missing -Lo in a command line example.
+
+2009-12-09 12:16  bvassche
+
+   * win32/snmpdsdk/snmpd.dsp:
+
+   Added snmpapi.lib to the linker input list of snmpd.exe.
+   Apparently Visual
+   Studio 2005 and 2008 need this library in the linker input list
+   when linking
+   the exe, while for Visual Studio 6 it is sufficient when this
+   library is
+   present in the linker input list of netsnmpmibs.lib.
+
+2009-12-09 08:45  bvassche
+
+   * README.win32:
+
+   Updated README.win32: because of r17884 and r17873, the build
+   process became simpler.
+
+2009-12-09 08:22  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def.in:
+
+   Export strtoull -- should have been included in r17886.
+
+2009-12-09 08:21  bvassche
+
+   * README.win32:
+
+   Reverted r17700 for README.win32: because of r17886, modifying
+   the
+   strtoull line in win32/libsnmp_dll/libsnmp.def is no longer
+   necessary.
+
+2009-12-09 08:12  bvassche
+
+   *  win32/libsnmp_dll/libsnmp.def, win32/net-snmp/net-snmp-config.h,  
+       win32/net-snmp/net-snmp-config.h.in:
+
+   Windows: switched from _strtoui64() to strtoull() for Microsoft
+   Visual Studio
+   2002 and later because the former is not fully POSIX compliant.
+   The strtoull()
+   unit test produces the following output for _strtoui64() with
+   MSVC 2008:
+   test 14 failed (input "0x"): expected end 1, got end 0
+   test 16 failed (input "0x"): expected end 1, got end 0
+
 2009-12-08 21:54  magfr
 
    * agent/mibgroup/util_funcs.c, snmplib/system.c:
@@ -8783,6 +23039,167 @@
    CHANGES: snmplib, snmpd: Make sure that a mask is given to open
    when O_CREAT is specified
 
+2009-12-08 16:20  bvassche
+
+   * win32/win32.dsw:
+
+   Made dependencies between exe's and lib's explicit such that
+   Visual
+   Studio can figure out the proper build order instead of the user
+   having
+   to figure this out.
+
+2009-12-08 15:47  bvassche
+
+   * apps/snmptable.c:
+
+   Builds again on Unix systems (fixed a typo introduced in r17881).
+
+2009-12-08 15:37  bvassche
+
+   * win32/snmpnetstat/snmpnetstat.dsp:
+
+   Added missing #define HAVE_WIN32_PLATFORM_SDK. Without this
+   define the Microsoft
+   Visual Studio compiler complains about a benign redefinition of
+   type socklen_t.
+
+2009-12-08 15:28  bvassche
+
+   *  agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/snmpd.c, apps/snmptable.c, apps/snmptrapd.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
+
+   Cleaned up the code for setting line buffering:
+   - Instead of having calls to setvbuf() in multiple files, there
+   is now one call
+   to setvbuf() from the new function netsnmp_set_filelog. These
+   source files
+   are: snmplib/snmp_logging.c, agent/snmpd.c, apps/snmptrapd.c,
+   apps/snmptable.c
+   and agent\mibgroup\disman\traceroute\traceRouteCtlTable.c.
+   - Using -Lo / -Le does now enable line buffering for stdout /
+   stderr respectively.
+   - Removed code in snmpd.c and snmptrapd.c for setting line
+   buffering on stdout
+   since setting line buffering on stdout is now triggered by the
+   command-line
+   option -Lo.
+   Bugs fixed:
+   - Line buffering mode is now also set for stderr when the
+   command-line option
+   -Le has been specified.
+   - Line buffering mode is now set correctly for stdout on Windows
+   systems
+   (command-line option -Lo).
+
+2009-12-08 12:32  bvassche
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   Fixed a compiler warning about local variables that were defined
+   but
+   not used by only enabling the local variable definitions on the
+   platform that uses these variables (Linux).
+
+2009-12-08 12:26  bvassche
+
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   Added #include "mibgroup/util_funcs.h". Fixes a compiler warning.
+
+2009-12-08 12:25  bvassche
+
+   * apps/snmpnetstat/main.c:
+
+   Include the gethostent() / sethostent() declarations before using
+   these
+   functions. Fixes a compiler warning on Windows systems.
+
+2009-12-08 12:11  bvassche
+
+   * apps/snmptrapd_handlers.c:
+
+   Fixed an inconsistency (which is allowed by the ANSI C standard)
+   between
+   function declaration and function definition of
+   netsnmp_add_global_traphandler and
+   netsnmp_add_default_traphandler such
+   that the Microsoft Visual Studio compiler does no longer complain
+   about
+   this.
+
+2009-12-08 12:08  bvassche
+
+   * snmplib/snmp_service.c:
+
+   Fixed a compiler warning: made sure that the compiler does not
+   complain about implicitly casting away constness.
+
+2009-12-08 12:07  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Only compile the winExtDLL source code if the preprocessor macro
+   USING_WINEXTDLL_MODULE has been defined.
+
+2009-12-08 12:03  bvassche
+
+   * win32/libsnmp/libsnmp.dsp:
+
+   Added missing #define HAVE_WIN32_PLATFORM_SDK.
+
+2009-12-08 12:01  bvassche
+
+   * win32/win32sdk.dsw:
+
+   Made dependencies between exe's and lib's explicit such that
+   Visual
+   Studio can figure out the proper build order instead of the user
+   having
+   to figure out the build order.
+
+2009-12-08 09:46  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Windows / Microsoft Visual Studio: disabled the compiler warning
+   about
+   signed/unsigned mismatches (4018) because this warning does not
+   yield
+   any useful information.
+
+2009-12-08 09:17  bvassche
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r17639 (patch 2780411 -- fix compiler warnings):
+   applied
+   this patch to net-snmp-config.h.in too such that
+   net-snmp-config.h and
+   net-snmp-config.h.in match again.
+
+2009-12-08 08:16  bvassche
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Made sure that agentx_sysOR_callback() does not trigger a
+   compiler
+   warning when the third argument passed to this function has been
+   declared const.
+
+2009-12-08 08:14  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   Changed the return type of strtoull() from 'unsigned long long'
+   (which
+   is not valid C89) to 'uint64_t' (declared in
+   <net-snmp/net-snmp-config.h>).
+   This change makes the Net-SNMP source code compile again with
+   MSVC 6.0.
+
 2009-12-07 10:46  dts12
 
    * apps/snmptable.c:
@@ -8790,6 +23207,33 @@
    Tweak missing subidentifier processing to be more type-aware.
    (An issue with AIX, at least)
 
+2009-12-06 18:38  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: Make the lists of com2Sec*Entries static
+
+2009-12-06 18:34  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   Make the iterator variable in netsnmp_*_getSecName const
+
+2009-12-06 18:29  magfr
+
+   *  agent/mibgroup/mibII/vacm_conf.c,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: Change the types of the return values of
+   netsnmp_*_getSecName from char* to const char* since they point
+   into internal structures.
+
 2009-12-05 20:19  tanders
 
    * include/net-snmp/library/system.h:
@@ -8804,12 +23248,6 @@
    compile with
    NETSNMP_CLEAN_NAMESPACE
 
-2009-12-05 17:19  tanders
-
-   * agent/mibgroup/disman/schedule/schedCore.c:
-
-   apply r17854 build fix to all affected branches
-
 2009-12-02 15:39  jsafranek
 
    *  agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c,   
@@ -8856,6 +23294,36 @@
    CHANGES: agent: BUGS: 2841008: Protect against crash following
    failed AgentX response
 
+2009-12-01 07:34  jsafranek
+
+   *  include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPDomain.c:
+
+   CHANGES: snmplib: Fix responding to broadcast requests.
+   UDP responses are sent with source IP address which was
+   destination of
+   appropriate requests (implemented in SVN rev. 15215). But if the
+   destination
+   of a request is broadcast IP address, the request was sent with
+   the broadcast
+   address as source. sendmsg() on Linux does not support this and
+   returns error
+   -> response is not sent. In order to send responses from the same
+   interface,
+   interface index of the appropriate interface must be used.
+
+2009-12-01 00:29  magfr
+
+   * agent/mibgroup/disman/schedule/schedCore.c:
+
+   Make it possible to actually compile after 17852.
+
+2009-12-01 00:24  magfr
+
+   * agent/mibgroup/ucd-snmp/proc.c:
+
+   Make it possible to actually compile after 17842.
+
 2009-11-30 16:55  dts12
 
    * agent/mibgroup/disman/schedule/schedCore.c:
@@ -8929,6 +23397,16 @@
    handling.
    Patch supplied by Gowtham Thommandra.
 
+2009-11-30 14:32  dts12
+
+   * agent/mibgroup/ucd-snmp/proc.c, man/snmpd.conf.5.def:
+
+   CHANGES: agent: PATCH: 2883092: Support monitoring processes that
+   should not be running.
+   Patch provided by Christian (cg75).
+   
+   Qn: Should this functionality be back-ported to earlier lines?
+
 2009-11-30 14:12  dts12
 
    * agent/mibgroup/agentx/subagent.c:
@@ -8950,6 +23428,139 @@
 
    Remove executable attribute from source files.
 
+2009-11-25 20:35  magfr
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      local/mib2c.notify.conf:
+
+   CHANGES: snmpd: Make all the oids and oid lengths in agent_trap.c
+   const and use them from everywhere.
+
+2009-11-25 20:27  magfr
+
+   * snmplib/Makefile.in:
+
+   CHANGES: snmplib: Install library/oid.h. Thanks to "Tomasz Lis"
+   who spotted the bug.
+
+2009-11-25 09:47  bvassche
+
+   * include/net-snmp/agent/instance.h:
+
+   Comment-only change: changed the name in the file header from
+   testhandler.h
+   to instance.h such that it now matches the filename.
+
+2009-11-24 07:49  magfr
+
+   * agent/agent_trap.c:
+
+   Remove unnecessary cast
+
+2009-11-23 07:07  magfr
+
+   * agent/agent_trap.c, include/net-snmp/agent/agent_trap.h:
+
+   CHANGES: snmpd: Make the enterprise argument of
+   netsnmp_send_traps and send_enterprise_trap_vars const
+
+2009-11-23 07:02  magfr
+
+   * include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   CHANGES: snmplib: Make the name argument to find_varbind_in_list
+   const
+
+2009-11-22 23:25  magfr
+
+   * agent/mibgroup/Rmon/event.c, agent/mibgroup/smux/smux.h:
+
+   Remove some local redeclarations of functions
+
+2009-11-22 01:03  magfr
+
+   *  win32/config.h.borland, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building, Win32: Remove a few unused configure symbols
+
+2009-11-21 08:01  bvassche
+
+   * win32/Snmp-winExtDLL.h, win32/snmp-winextdll.h:
+
+   Replaced an accidentally committed file by the proper contents.
+
+2009-11-20 16:29  bvassche
+
+   * win32/net-snmp/net-snmp-config.h:
+
+   Reverted accidentally merged changes.
+
+2009-11-20 16:26  bvassche
+
+   *  win32/lib, win32/net-snmp/net-snmp-config.h,   
+      win32/snmp-winextdll.h:
+
+   Updated Subversion ignore list.
+
+2009-11-20 16:18  bvassche
+
+   *  agent/helpers/table_iterator.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable_access.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/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/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+         agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.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,
+         local/mib2c-conf.d/mfd-interface.m2c,   
+      local/mib2c.access_functions.conf,   
+      local/mib2c.iterate_access.conf, snmplib/read_config.c:
+
+   Spelling fix in C source code comments: replaced 'retrival' by
+   'retrieval'.
+
+2009-11-20 16:15  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Fixed a naming inconsistency: replaced two occurrences winExtDll
+   by winExtDLL in source code comments.
+
 2009-11-19 22:52  magfr
 
    *  agent/helpers/watcher.c, agent/mibgroup/mibII/system_mib.c,   
@@ -8967,6 +23578,23 @@
    bits' in IP-MIB and TCP-MIB
    The counters, which grow fast are now cut to 32bits.
 
+2009-11-12 08:26  magfr
+
+   * agent/snmpd.c:
+
+   Use big printf's instead of many small ones to save a few hundred
+   bytes on the final executable size.
+
+2009-11-12 02:24  magfr
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/Makefile.in,   
+      snmplib/strlcpy.c, snmplib/strtok_r.c, snmplib/strtol.c,   
+      snmplib/strtoul.c, snmplib/strtoull.c:
+
+   CHANGES: building: Use AC_REPLACE_FUNCS to handle code that is
+   missing on some platforms.
+
 2009-11-11 09:00  dts12
 
    * local/mib2c.iterate.conf, local/mib2c.table_data.conf:
@@ -8975,6 +23603,55 @@
    Return success/failure values from cache load routine.
    Problem identified by Xuan.
 
+2009-10-30 09:51  magfr
+
+   *  include/net-snmp/library/asn1.h, include/net-snmp/library/oid.h,  
+       include/net-snmp/types.h:
+
+   NEWS: snmplib: Revert 17808, instead factor out the declaration
+   of oid to it's own file and include that file from both types.h
+   and asn1.h
+
+2009-10-30 08:28  magfr
+
+   *  agent/helpers/table.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/struct.h, agent/mibgroup/ucd-snmp/memory.c,   
+      apps/snmpnetstat/if.c, configure,   
+      configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, include/net-snmp/types.h,  
+       snmplib/mib.c, snmplib/oid_stash.c, snmplib/read_config.c,   
+      snmplib/snmp_debug.c, snmplib/snmpusm.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmplib, snmpd, snmpnetstat: Add correct size prefixes
+   when printing variables of type oid.
+
+2009-10-30 08:07  magfr
+
+   * include/net-snmp/types.h:
+
+   CHANGES: snmplib: Change oid to be a 32-bit type on ILP64 and
+   LP64 platforms.
+
+2009-10-30 08:05  magfr
+
+   * include/net-snmp/library/asn1.h:
+
+   NEWS: snmplib: Remove the oid typedef from
+   <net-snmp/library/asn1.h>. It is still present in
+   <net-snmp/types.h>, use that file.
+
+2009-10-28 16:48  hardaker
+
+   * agent/snmp_vars.c:
+
+   don't require subagent_init() if not only building master agent
+   code
+
 2009-10-27 06:44  magfr
 
    *  local/mib2c-conf.d/generic-table-indexes-to-oid.m2i,   
@@ -8985,6 +23662,19 @@
 
    CHANGES: mib2c: Remove unnecessary casts to u_char*
 
+2009-10-14 23:12  magfr
+
+   * apps/encode_keychange.c, snmplib/scapi.c:
+
+   CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van
+   Assche": Replace SNMP_ZERO of arrays with a memset.
+
+2009-10-12 20:28  magfr
+
+   * snmplib/parse.c:
+
+   Lessen the scope of the rp variable to the smallest possible one.
+
 2009-10-09 12:38  jsafranek
 
    * snmplib/snmp_client.c:
@@ -9052,16 +23742,24 @@
    information crashing the agent.
    Problem reported by Inyaven Sakarai.
 
-2009-09-24 03:49  hardaker
+2009-09-27 14:59  alex_b
 
-   * .:
+   *  win32/dist/README.build.win32.txt, win32/dist/build-binary.pl,   
+      win32/dist/scripts/mandir2html:
 
-   5.5 branched
+   Win32: Binary build instructions and script updates.
 
+2009-09-24 00:08  hardaker
 
-----------------------------------------------------------------------
+   * NEWS:
 
-Changes: V5.4 -> V5.5
+   version update
+
+2009-09-23 23:54  hardaker
+
+   * ChangeLog:
+
+   version update
 
 2009-09-23 23:42  hardaker
 
@@ -9142,6 +23840,18 @@
 
    fix typos
 
+2009-09-14 22:49  hardaker
+
+   * CHANGES:
+
+   version update
+
+2009-09-14 22:48  hardaker
+
+   * ChangeLog:
+
+   version update
+
 2009-09-14 22:39  hardaker
 
    *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3,   
@@ -9351,61 +24061,6 @@
 
    Version number update
 
-2009-08-26 17:38  hardaker
-
-   *  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
-
-2009-08-26 17:29  hardaker
-
-   *  FAQ, README, configure, configure.ac, dist/Makefile,   
-      dist/net-snmp.spec:
-
-   Version number update
-
 2009-08-26 17:28  hardaker
 
    * dist/makerelease.xml:
@@ -9528,66 +24183,6 @@
 
    documentation update
 
-2009-08-10 23:10  hardaker
-
-   * dist/makerelease.xml:
-
-   fix typo in svn2cl line
-
-2009-08-10 23:05  hardaker
-
-   * snmplib/Makefile.depend:
-
-   make depend
-
-2009-08-10 21:32  hardaker
-
-   *  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
-
 2009-08-10 21:21  hardaker
 
    *  dist/makerelease.xml, man/pdu_api.3, man/session_api.3,   
@@ -10052,6 +24647,13603 @@
 
    Updates to AGENT section.
 
+
+
+----------------------------------------------------------------------
+
+Changes: V5.6.rc1 -> V5.6.rc2
+
+2010-09-04 01:57  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-09-04 00:59  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-09-03 22:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix tlstcp parsing of host names.
+
+2010-09-03 22:13  hardaker
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c:
+
+   check the return code of fgets and fopen before inserting the
+   results.
+
+2010-09-03 22:12  hardaker
+
+   * snmplib/snmp_alarm.c:
+
+   Patch from tanders to fix broken alarms after the previous
+   re-entrant patch
+
+2010-09-03 22:05  hardaker
+
+   * snmplib/transports/snmpUnixDomain.c:
+
+   CHANGES: snmplib: patch 3058645: from jorisesaturnus: modified
+   version of the patch to use MSG_DONTWAIT for the unix domain
+   socket
+
+2010-09-03 21:56  hardaker
+
+   * agent/mibgroup/util_funcs/get_pid_from_inode.c:
+
+   CHANGES: snmpd: PATCH: 3058140: from takevos: check that inode is
+   non-zero
+
+2010-09-03 21:50  hardaker
+
+   * agent/mibgroup/util_funcs/get_pid_from_inode.c:
+
+   CHANGES: snmpd: PATCH: 3053428: from takevos: fix
+   get_pid_from_inode when the inode is not found.
+
+2010-09-03 20:20  hardaker
+
+   * snmplib/snmp_api.c:
+
+   remove the duplicate return before the error codes get set.
+
+2010-09-01 18:04  magfr
+
+   * agent/mibgroup/hardware/cpu/cpu.c:
+
+   CHANGES: snmpd: Log before returning.
+
+2010-09-01 02:43  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   TLS send_notify on closure and some memory clean-up patches
+
+2010-08-31 17:58  hardaker
+
+   * snmplib/snmp_api.c:
+
+   Only print the security/context EngineID mismatch note under USM
+
+2010-08-25 15:13  rstory
+
+   * CHANGES:
+
+   remove reference to reverted patch 3042765
+
+2010-08-25 15:13  rstory
+
+   * acconfig.h:
+
+   add note on where to find content used to generate
+   net-snmp-config.h.in
+
+2010-08-25 02:45  rstory
+
+   * snmplib/snmp_client.c:
+
+   revert r19342, patch 3042765, which broke client tcp disconnect
+   handling
+
+2010-08-25 02:45  rstory
+
+   * snmplib/cert_util.c:
+
+   fix more code broken by 'compiler warning fix' in r19179
+
+2010-08-25 02:45  rstory
+
+   * testing/fulltests/tls/STlsUsers:
+
+   check for conf errors after agent startup; enable logTimestamp;
+   make sure
+   all cert name/tags are unique
+
+2010-08-24 21:04  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix error string to discuss the right failed openssl new
+   invocation
+
+2010-08-24 05:37  magfr
+
+   * apps/snmpusm.c:
+
+   CHANGES: snmpusm: Correct ifdefs, remove dead variables.
+
+	
+----------------------------------------------------------------------
+
+Changes: V5.6.pre3 -> V5.6.rc1
+
+2010-08-19 21:11  hardaker
+
+   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+
+   make depend
+
+2010-08-19 21:10  hardaker
+
+   * include/net-snmp/system/nto-qnx6.h:
+
+   // -> C comments
+
+2010-08-19 20:36  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-08-19 20:14  hardaker
+
+   * snmplib/snmp_client.c:
+
+   CHANGES: snmplib: PATCH 3042765: from mehaf: make
+   snmp_synch_response_cb() re-entrant
+
+2010-08-19 20:14  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   turn off cookie exchanges until a complete code set can be
+   written to support it based on the required function callbacks
+
+2010-08-17 18:31  rstory
+
+   * agent/snmpd.c:
+
+   add missing call to store persistent data as needed
+
+2010-08-17 18:31  rstory
+
+   * snmplib/mib.c:
+
+   CHANGES: snmplib: when displaying a byte as single digit hex
+   value, default to
+   prefixing with 0 unless there is a seperator or addition hint
+   data
+
+2010-08-17 10:31  bvassche
+
+   * apps/snmpusm.c:
+
+   Fixed a compiler warning about an unused label that was triggered
+   when
+   compiling without SSL support.
+
+2010-08-16 23:11  hardaker
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.h:
+
+   CHANGES: snmpd: patch 2790249: from willpwillp: reduce cache time
+   for the iftable to 3seconds to increase accuracy
+
+2010-08-16 16:26  hardaker
+
+   * perl/TrapReceiver/TrapReceiver.xs:
+
+   CHANGES: perl: patch 3046371: from christophb4: Fix memory leak
+   in SNMPv1 trap handling.
+
+2010-08-16 16:03  hardaker
+
+   * agent/mibgroup/mibII/mta_sendmail.c:
+
+   CHANGES: snmpd: patch 2825653: from bru5ce: fix sendmail.cf
+   parsing in certain conditions
+
+2010-08-16 10:16  dts12
+
+   * man/Makefile.in:
+
+   Build netsnmp_agent_api.3 man page from template
+
+2010-08-16 09:20  dts12
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: PATCH: 2911361: Documentation (Provided by Tomasz
+   Lis)
+
+2010-08-16 08:06  dts12
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: PATCH: 2911361: Re-order code to group related
+   functions together
+
+2010-08-16 07:42  dts12
+
+   * perl/SNMP/SNMP.xs:
+
+   CHANGES: perl: PATCH: 2995098: Fix creation of SNMPv3 sessions
+   with API_SINGLE
+
+2010-08-14 16:30  dts12
+
+   * agent/agent_read_config.c:
+
+   CHANGES: snmpd: PATCH: 2911361: Remove redundant variables
+
+2010-08-14 16:23  dts12
+
+   * agent/agent_handler.c:
+
+   CHANGES: snmpd: PATCH: 2904900: Documentation plus assorted
+   handler code fixes
+
+2010-08-14 09:28  dts12
+
+   *  man/Makefile.in, man/netsnmp_config_api.3.def,   
+      man/netsnmp_mib_api.3.def, man/netsnmp_pdu_api.3.def,   
+      man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def,   
+      man/netsnmp_trap_api.3.def, man/netsnmp_varbind_api.3.def,   
+      man/snmp_alarm.3.def:
+
+   Restore agent API man page
+   Don't try to extract multiple man page links per line
+   (which runs into problems with OS-specific line endings).
+   Instead, ensure the man page NAME section lists one
+   routine per line
+
+2010-08-13 23:50  hardaker
+
+   * man/Makefile.in:
+
+   fix broken Makefile after man page moves
+
+2010-08-13 23:50  hardaker
+
+   * mibs/SNMP-TLS-TM-MIB.txt, mibs/rfclist:
+
+   updated TLS MIB to current copy
+
+2010-08-13 23:50  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   replaced RFC comment number
+
+2010-08-13 23:50  hardaker
+
+   * include/net-snmp/library/snmp_alarm.h, snmplib/snmp_alarm.c:
+
+   CHANGES: snmplib: patch: 3042770: from mehaf: Made run_alarms()
+   reentrant
+
+2010-08-13 23:44  hardaker
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   CHANGES: snmpd: PATCH: 3044512: from philwebster: fix sysobjectid
+   directive.
+
+2010-08-13 19:00  rstory
+
+   *  testing/fulltests/support/simple_TESTCONF.sh,   
+      testing/fulltests/tls/STsmPrefix:
+
+   use 127.0.0.1 instead of localhost as default SNMP_TEST_DEST so
+   TLS tests work
+
+2010-08-13 18:50  hardaker
+
+   *  include/net-snmp/session_api.h, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c:
+
+   CHANGES: snmplib: implemented a fix for the issue reported in
+   patch #3042770. Created a snmp_select_info_flags function, and
+   similar, that allow for alarms to not be run. This is then used
+   in the synch_response functions to avoid 100% CPU loops
+
+2010-08-13 18:50  hardaker
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h,
+         apps/snmptrapd.c:
+
+   make snmptrapd register the certtosecname table in the agentx
+   registrations
+
+2010-08-13 18:49  hardaker
+
+   * local/mib2c.conf:
+
+   minor wording additions
+
+2010-08-13 15:04  hardaker
+
+   *  agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/memory/memory_aix.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/udp.c, agent/mibgroup/ucd-snmp/diskio.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/memory_aix4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c:
+
+   CHANGES: aix: PATCH: 2886598: from exsnafu: Header fixes for
+   compiling on AIX6
+
+2010-08-13 15:04  hardaker
+
+   *  agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_storage.c, apps/snmpnetstat/inet6.c,   
+      configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/nto-qnx6.h:
+
+   NEWS: ports: PATCH: 2836895: from seanboudreau: support for QNX6
+
+2010-08-13 14:33  dts12
+
+   *  man/Makefile.in, man/netsnmp_agent_api.3.def,   
+      man/netsnmp_config_api.3.def, man/netsnmp_mib_api.3.def,   
+      man/netsnmp_pdu_api.3.def, man/netsnmp_sess_api.3.def,   
+      man/netsnmp_session_api.3.def, man/netsnmp_trap_api.3.def,   
+      man/netsnmp_varbind_api.3.def:
+
+   'enforce netsnmp prefixes
+
+2010-08-13 14:29  dts12
+
+   * man/netsnmp_varbind_api.3.def, man/varbind_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:29  dts12
+
+   * man/netsnmp_trap_api.3.def, man/snmp_trap_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_sess_api.3.def, man/snmp_sess_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_agent_api.3.def, man/snmp_agent_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:28  dts12
+
+   * man/netsnmp_session_api.3.def, man/session_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/netsnmp_pdu_api.3.def, man/pdu_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/mib_api.3.def, man/netsnmp_mib_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:27  dts12
+
+   * man/config_api.3.def, man/netsnmp_config_api.3.def:
+
+   enforce netsnmp prefix
+
+2010-08-13 14:20  dts12
+
+   * Makefile.in, doxygen.conf:
+
+   Don't automatically generate man pages
+
+2010-08-13 14:18  dts12
+
+   *  man/snmp_api_errstring.3, man/snmp_close.3, 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_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:
+
+   Remove redundant man page links
+   (Should be generated automatically, but don't exist any more
+   anyway)
+
+2010-08-13 14:13  dts12
+
+   *  man/Makefile.in, man/add_mibdir.3, man/add_module_replacement.3,  
+       man/get_module_node.3, man/init_mib.3, man/init_mib_internals.3, 
+        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/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/shutdown_mib.3:
+
+   Remove Doxygen-generated man pages, and those linking
+   individual routines to the appropriate man page.
+   (These are better generated dynamically)
+
+2010-08-13 12:19  dts12
+
+   * local/mib2c.iterate.conf, local/mib2c.table_data.conf:
+
+   Prompt for whether to generate caching code or not.
+
+2010-08-13 12:19  dts12
+
+   * local/mib2c.conf:
+
+   Rework guidance questions when selecting the best table framework
+   to use.
+   Ensure table handling code doesn't overwrite scalar handling
+   code.
+   Check that the starting point is suitable for MfD framework.
+
+2010-08-12 15:40  rstory
+
+   * snmplib/cert_util.c:
+
+   fix code broken by 'compiler warning fix' in r19179
+
+2010-08-12 15:39  rstory
+
+   * agent/mibgroup/snmpv3mibs.h:
+
+   fix typo in comment
+
+2010-08-11 22:08  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove a duplicate value check
+
+2010-08-11 22:08  hardaker
+
+   * testing/fulltests/tls/STlsUsers:
+
+   add a test where we can trust a CA-signed cert and we don't trust
+   the CA
+
+2010-08-11 22:08  hardaker
+
+   * testing/fulltests/tls/STlsUsers:
+
+   test a directly mapped CA certificate
+
+2010-08-11 22:08  hardaker
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   change the laConfig to read-write to match the patch
+
+2010-08-11 22:07  hardaker
+
+   * agent/mibgroup/ucd-snmp/loadave.c:
+
+   NEWS: snmpd: PATCH: 2931446: from ahmake: make the load averages
+   writable.
+
+2010-08-11 06:43  magfr
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   CHANGES: Silence some compilation warnings from test cases.
+
+2010-08-09 21:09  magfr
+
+   * perl/SNMP/SNMP.xs:
+
+   CHANGES: Handle embedded %'s in the result message.
+
+2010-08-09 21:07  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   CHANGES: Do no double declare the index values.
+
+2010-08-05 11:49  dts12
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Update "auth*" usage message with context support
+
+2010-08-02 20:08  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntctl.c:
+
+   Fix two silly mistakes.
+
+2010-08-02 14:18  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntctl.c:
+
+   AIX filesystem types are tagged as integers, not strings.
+
+2010-08-02 13:49  tanders
+
+   * configure, configure.d/config_os_progs:
+
+   fix Perl system() configure check to work reliably on systems
+   that lack
+   Perl
+
+2010-08-02 11:08  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   CHANGES: testing: made it possible to analyze all code covered by
+   the regression tests with a dynamic analyzer, at least if that
+   analyzer supports following child processes. An example:
+   
+   rm -rf /tmp/snmp-test-*
+   make -s
+   SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="valgrind
+   --trace-children=yes --track-origins=yes" make -s test
+   grep -i uninitialised /tmp/snmp-test-* | xargs less
+
+2010-08-02 11:02  bvassche
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpTCPDomain.c:
+
+   Fixed the following two Valgrind complaints:
+   
+   Conditional jump or move depends on uninitialised value(s)
+   at 0x6D702E0: vfprintf (in /lib64/libc-2.11.2.so)
+   by 0x6D99D11: vsnprintf (in /lib64/libc-2.11.2.so)
+   by 0x6D7A412: snprintf (in /lib64/libc-2.11.2.so)
+   by 0x6E14437: inet_ntoa (in /lib64/libc-2.11.2.so)
+   by 0x5E5E219: netsnmp_ipv4_fmtaddr (snmpIPv4BaseDomain.c:215)
+   by 0x5E65717: netsnmp_tcp_fmtaddr (snmpTCPDomain.c:70)
+   by 0x5E567EC: netsnmp_transport_peer_string
+   (snmp_transport.c:224)
+   by 0x5E2479A: _sess_process_packet (snmp_api.c:5441)
+   by 0x5E25E37: _sess_read (snmp_api.c:6037)
+   by 0x5E261DA: snmp_sess_read2 (snmp_api.c:6149)
+   by 0x5E26282: snmp_read2 (snmp_api.c:5740)
+   by 0x404DE4: main (snmpd.c:1227)
+   Uninitialised value was created by a heap allocation
+   at 0x4C270A5: malloc (vg_replace_malloc.c:236)
+   by 0x5E65739: netsnmp_tcp_accept (snmpTCPDomain.c:82)
+   by 0x5E25383: _sess_read (snmp_api.c:5786)
+   by 0x5E261DA: snmp_sess_read2 (snmp_api.c:6149)
+   by 0x5E26282: snmp_read2 (snmp_api.c:5740)
+   by 0x404DE4: main (snmpd.c:1227)
+   
+   Conditional jump or move depends on uninitialised value(s)
+   at 0x6F7B2E0: vfprintf (in /lib64/libc-2.11.2.so)
+   by 0x6FA4D11: vsnprintf (in /lib64/libc-2.11.2.so)
+   by 0x6F85412: snprintf (in /lib64/libc-2.11.2.so)
+   by 0x701F437: inet_ntoa (in /lib64/libc-2.11.2.so)
+   by 0x56FA219: netsnmp_ipv4_fmtaddr (snmpIPv4BaseDomain.c:215)
+   by 0x5701717: netsnmp_tcp_fmtaddr (snmpTCPDomain.c:70)
+   by 0x56F27EC: netsnmp_transport_peer_string
+   (snmp_transport.c:224)
+   by 0x56F294F: netsnmp_transport_send (snmp_transport.c:248)
+   by 0x56BC487: snmp_sess_async_send (snmp_api.c:5204)
+   by 0x56BC651: snmp_async_send (snmp_api.c:4998)
+   by 0x56BC677: snmp_send (snmp_api.c:4984)
+   by 0x5698440: snmp_synch_response_cb (snmp_client.c:1006)
+   Uninitialised value was created by a heap allocation
+   at 0x4C270A5: malloc (vg_replace_malloc.c:236)
+   by 0x5701B3E: netsnmp_tcp_transport (snmpTCPDomain.c:163)
+   by 0x5701E6F: netsnmp_tcp_create_tstring (snmpTCPDomain.c:305)
+   by 0x56F3804: netsnmp_tdomain_transport_full
+   (snmp_transport.c:601)
+   by 0x56F3ACC: netsnmp_transport_open_client
+   (snmp_transport.c:669)
+   by 0x54344F6: subagent_open_master_session (subagent.c:758)
+   by 0x54349C8: agentx_reopen_session (subagent.c:869)
+   by 0x5434D00: subagent_startup (subagent.c:99)
+   by 0x56EAEB7: snmp_call_callbacks (callback.c:338)
+   by 0x56DE6FB: read_configs (read_config.c:1018)
+   by 0x56C287E: init_snmp (snmp_api.c:850)
+   by 0x40477B: main (snmptrapd.c:1048)
+
+2010-08-01 06:11  bvassche
+
+   * CHANGES, NEWS:
+
+   Fixed spelling errors reported by ispell -l.
+
+2010-08-01 06:00  bvassche
+
+   *  snmplib/snmp_enum.c,   
+      testing/fulltests/unit-tests/T004snmp_enum_clib.c:
+
+   Fixed a typo in a text string in a unit test: resturant ->
+   restaurant.
+
+2010-08-01 05:53  bvassche
+
+   * include/net-snmp/library/snmp_enum.h:
+
+   Documented behavior of se_add_pair_to_slist().
+
+2010-07-31 23:50  tanders
+
+   * include/net-snmp/system/darwin10.h:
+
+   Follow-up for r19266: add missing header file to support Mac OS X
+   10.6
+   (Snow Leopard - "darwin10")
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.6.pre2 -> V5.6.pre3
+
+2010-07-31 20:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-07-31 20:24  hardaker
+
+   *  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
+
+2010-07-31 20:16  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-07-31 20:11  hardaker
+
+   * dist/makerelease.xml:
+
+   changed the name of the readme section to call out NEWS-too
+
+2010-07-31 20:10  hardaker
+
+   * NEWS:
+
+   added missing news items
+
+2010-07-30 13:06  hardaker
+
+   * snmplib/snmp_client.c:
+
+   CHANGES: python: PATCH 3035328: from: sws: check the results of
+   session creation for a failure case.
+
+2010-07-30 13:00  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: patch 3035578: from sws: keep error codes up to
+   date
+
+2010-07-29 15:48  dts12
+
+   * configure:
+
+   Add support for Mac OS X 10.6 (Snow Leopard - "darwin10")
+   (On the assumption that this is the same as Mac OS X 10.5
+   (Leopard - "darwin9"))
+
+2010-07-29 15:47  dts12
+
+   *  Makefile.in, configure.d/config_os_progs,   
+      configure.d/config_project_perl_python:
+
+   Add support for Mac OS X 10.6 (Snow Leopard - "darwin10")
+   (On the assumption that this is the same as Mac OS X 10.5
+   (Leopard - "darwin9"))
+
+2010-07-29 15:03  dts12
+
+   * include/net-snmp/output_api.h:
+
+   Provide a definition of 'va_list' for varargs-based APIs
+
+2010-07-29 14:58  dts12
+
+   *  acconfig.h, agent/auto_nlist.c, agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/fsys.h, agent/mibgroup/hardware/memory.h, 
+        agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/host/hr_swrun.c, 
+        agent/mibgroup/host/hrh_filesys.c, agent/mibgroup/mibII/icmp.c, 
+        agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/ucd-snmp/diskio.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/proc.c, configure,   
+      configure.d/config_os_progs,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/system.c:
+
+   Add preliminary support for AIX 7
+   (on the assumption that this is identical to AIX 6)
+
+2010-07-29 14:56  dts12
+
+   * configure, configure.d/config_project_perl_python:
+
+   Disable embedded perl by default on architecures where
+   this seems to cause problems (HP-UX & Mac OS X)
+
+2010-07-29 11:13  dts12
+
+   * snmplib/read_config.c:
+
+   Guard against blank 'include*' lines.
+   Handle relative 'includeFile' paths
+
+2010-07-29 10:47  dts12
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Return an indication of whether config files are actually
+   processed.
+   Report problems with failing to include config files.
+
+2010-07-28 14:44  dts12
+
+   *  include/net-snmp/config_api.h,   
+      include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/snmp_debug.h,   
+      include/net-snmp/library/snmp_logging.h,   
+      include/net-snmp/mib_api.h, include/net-snmp/output_api.h,   
+      include/net-snmp/pdu_api.h, include/net-snmp/session_api.h,   
+      include/net-snmp/varbind_api.h, man/config_api.3.def,   
+      man/mib_api.3.def, man/session_api.3.def, man/varbind_api.3.def,  
+       win32/libsnmp_dll/libsnmp.def:
+
+   Bring man page documentation, header files and Windows DLL
+   definitions
+   of top-level public API calls into line with each other.
+
+2010-07-28 14:40  dts12
+
+   * snmplib/snmp_api.c:
+
+   Fix misnamed comment
+
+2010-07-28 14:36  dts12
+
+   *  agent/mibgroup/default_modules.h, configure,   
+      configure.d/config_modules_agent,   
+      configure.d/config_project_with_enable:
+
+   Don't mix SMIv1 and SMIv2 MIBs in the list of default MIBs to
+   load.
+   Use newer SMIv2 versions (which include suitable display hints)
+   rather than the original RFC1213 MIB (which doesn't)
+
+2010-07-28 14:10  dts12
+
+   * snmplib/read_config.c:
+
+   Fix indentation for 'includeSearch' processing code.
+
+2010-07-28 14:09  dts12
+
+   * snmplib/read_config.c:
+
+   Extend 'include' config file processing to cover three
+   different modes of working:
+   - look for the file on the config search path
+   - include the specified file by name
+   - ioad the contents of the specified directory
+   Use different config tokens to distinguish these cases.
+
+2010-07-27 11:12  hardaker
+
+   * agent/kernel.c, agent/kernel.h, agent/snmp_vars.c:
+
+   CHANGES: snmpd: patch 2912520: from listom: Free kmem references
+   on shutdown
+
+2010-07-27 10:54  hardaker
+
+   * mibs/SMUX-MIB.txt:
+
+   CHANGES: mibs: patch 2974716: from bvassche: fix issues in the
+   SMUX-MIB
+
+2010-07-27 08:54  hardaker
+
+   * configure.d/config_modules_lib:
+
+   include the new security-hedaers module
+
+2010-07-27 08:54  hardaker
+
+   * local/snmp-bridge-mib:
+
+   remote debugging/processing stderr output
+
+2010-07-27 08:54  hardaker
+
+   * local/snmp-bridge-mib:
+
+   CHANGES: snmpd: patch: 3028923: from jenso: new copy of the
+   bridge-mib perl implementation
+
+2010-07-27 08:31  hardaker
+
+   *  Makefile.in, configure.d/config_modules_security_modules,   
+      dist/generation-scripts/gen-security-headers.in:
+
+   separate out the security header/init generation
+
+2010-07-27 08:31  hardaker
+
+   * configure.d/config_modules_transports:
+
+   transport configure portion
+
+2010-07-27 08:30  hardaker
+
+   *  Makefile.in, configure, configure.ac,   
+      configure.d/config_modules_lib, dist/generation-scripts,   
+      dist/generation-scripts/gen-transport-headers.in,   
+      dist/generation-scripts/gen-variables.in:
+
+   move transport header generation to a separate file and create an
+   external separate script for generating it
+
+2010-07-27 08:14  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/mnttypes.h:
+
+   CHANGES: snmpd: report gfs filesystems in hrStorageTable and
+   hrFSTable.
+
+2010-07-24 15:42  dts12
+
+   * snmplib/read_config.c:
+
+   Don't lose track of which config file was being parsed,
+   when processing an included config file.
+   Fixes a bug with reporting later config errors.
+
+2010-07-24 15:36  dts12
+
+   * snmplib/snmp_transport.c:
+
+   Don't lose track of which config file is being parsed,
+   when opening a new SNMP session.
+   Fixes a bug with reporting later config errors.
+
+2010-07-23 03:12  hardaker
+
+   * dist/makerelease.xml:
+
+   add the TLS modules to the list of test modules
+
+2010-07-21 19:25  nba
+
+   * agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c:
+
+   Fix typo in doxygen comment
+
+2010-07-21 19:24  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   Fix typo in speed computation
+
+2010-07-21 19:21  nba
+
+   * snmplib/snmp_secmod.c:
+
+   Include generated security-includes.h
+
+2010-07-21 19:20  nba
+
+   *  include/net-snmp/library/snmpksm.h,   
+      include/net-snmp/library/snmptsm.h:
+
+   Fix init func name (copy-paste glitch)
+
+2010-07-21 19:18  nba
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   Remove superfluous semicolon
+
+2010-07-21 19:18  nba
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Out of order declaration
+
+2010-07-21 19:17  nba
+
+   * snmplib/snmp_logging.c:
+
+   Log error on file open error
+
+2010-07-21 19:16  nba
+
+   * configure.d/config_modules_lib:
+
+   Speling error
+
+2010-07-21 18:10  nba
+
+   * mibs/ianalist, mibs/rfclist, mibs/rfcmibs.diff:
+
+   Update for current RFCs
+
+2010-07-21 18:08  nba
+
+   * mibs/IANAifType-MIB.txt:
+
+   Current version from IANA
+
+2010-07-21 18:05  nba
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   r17495 erroneously disabled diskIOLAx for linux
+
+2010-07-20 10:38  jsafranek
+
+   * snmplib/system.c:
+
+   CHANGES: snmplib: fixed potential buffer overflow when generating
+   temp. file names
+
+2010-07-20 07:32  jsafranek
+
+   *  agent/snmpd.c, apps/agentxtrap.c, apps/snmptranslate.c,   
+      apps/snmptrapd.c, man/snmpcmd.1.def, man/snmptranslate.1.def,   
+      man/snmptrapd.8.def, snmplib/snmp_parse_args.c:
+
+   Describe -D usage as -D[TOKEN] instead of -D [TOKEN]
+
+2010-07-17 15:10  rstory
+
+   * mibs/SNMP-TLS-TM-MIB.txt:
+
+   update display hint to some less ambiguous (and that works with
+   our lib)
+
+2010-07-17 04:13  rstory
+
+   * testing/Makefile.in:
+
+   fix testsimple for builddir!=srcdir
+
+2010-07-17 04:12  rstory
+
+   * testing/Makefile.in:
+
+   add testsimple target
+
+2010-07-16 19:21  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   release iterator when done with it
+
+2010-07-15 18:28  hardaker
+
+   * snmplib/snmpusm.c:
+
+   CHANGES: snmplib: fix issue with USM using inactive users
+
+2010-07-15 01:35  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   don't use strndup (portability)
+
+2010-07-15 01:35  rstory
+
+   * snmplib/cert_util.c:
+
+   include appropriate string header; define NAME_MAX if not already
+   defined;
+   don't use strndup (portability)
+
+2010-07-15 01:35  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   check that some newer openssl macros are defined before using
+   them; include
+   appropriate string header
+
+2010-07-15 01:35  rstory
+
+   *  configure, configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   check for dtls support in openssl
+
+2010-07-15 01:34  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   don't compile dtls domain if no dtls support in openssl
+
+2010-07-15 01:34  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   ifdef protection for later sha algorithms
+
+2010-07-15 01:34  rstory
+
+   *  include/net-snmp/system/darwin.h,   
+      include/net-snmp/system/darwin7.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h:
+
+   darwin openssl does not support more recent sha algorithms
+
+2010-07-15 01:33  rstory
+
+   * agent/mibgroup/target/target.c:
+
+   fix typo in ifdef test
+
+2010-07-15 01:33  rstory
+
+   * agent/mibgroup/if-mib/ifTable/ifTable.c:
+
+   fix cut-n-paste error in included file name
+
+2010-07-14 15:08  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   fix the fix: put PRIz spec in correct place
+
+2010-07-14 15:03  rstory
+
+   * testing/fulltests/tls/STlsUsers:
+
+   specify SNMP version on commandline
+
+2010-07-14 15:03  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   quiet compiler
+
+2010-07-14 15:02  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   quiet compiler warnings
+
+2010-07-13 20:03  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         apps/snmptls.c, include/net-snmp/library/cert_util.h:
+
+   include ssl.h before cert_util.h
+
+2010-07-13 20:03  rstory
+
+   * snmplib/cert_util.c:
+
+   add debug output for found cert
+
+2010-07-13 16:24  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix typo in log msg
+
+2010-07-12 10:26  bvassche
+
+   * agent/mibgroup/mibII/interfaces.c:
+
+   CHANGES: Win32 and Cygwin: made sure that accessing the mibII
+   interfaces table does not trigger out-of-range array accesses
+   (was detected by BoundsChecker).
+
+2010-07-12 10:21  bvassche
+
+   * agent/mibgroup/mibII/vacm_vars.c:
+
+   Fixed a dangling-pointer-read that was introduced in r19018. In
+   r19018 the type of groupSubtreeLen was changed from int to
+   size_t, which changed the behavior of the loop "while
+   (groupSubtreeLen-- > 0) ...": instead of not executing the loop
+   body when groupSubtreeLen was negative, r19018 caused the body of
+   that loop to be executed. Detected by running snmpd under
+   BoundsChecker while performing a MIB walk.
+
+2010-07-12 10:12  bvassche
+
+   * agent/mibgroup/mibII/at.c:
+
+   Reverted r19047 (which was wrong) and implemented a proper fix
+   for the compiler warnings about signed/unsigned mismatches.
+
+2010-07-12 10:09  bvassche
+
+   * agent/snmp_agent.c:
+
+   Removed an obsolete comment.
+
+2010-07-12 10:08  bvassche
+
+   * agent/helpers/table_container.c, win32/mib_module_includes.h:
+
+   Suppressed more MSVC compiler warnings.
+
+2010-07-12 04:45  rstory
+
+   * testing/fulltests/tls/STlsVars:
+
+   add comment with object name for numeric ids
+
+2010-07-12 04:45  rstory
+
+   *  agent/mibgroup/target/target.c,   
+      include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   new function to get serverId from snmpTlstmAddrTable data; use
+   new api
+   to config serviceId for trap transport when sending traps
+
+2010-07-11 11:18  bvassche
+
+   * configure, configure.d/config_os_functions:
+
+   CHANGES: BUG: 3027900: when cross-compiling it is now assumed
+   that memcmp() is available instead of assuming that it is not
+   available.
+
+2010-07-11 10:30  bvassche
+
+   * agent/mibgroup/disman/event/mteTriggerConf.c:
+
+   Fixed compiler warnings triggered by r19197.
+
+2010-07-10 20:00  rstory
+
+   * testing/RUNFULLTESTS:
+
+   sync up help output and options processing
+
+2010-07-09 15:13  bvassche
+
+   * README.win32:
+
+   Updated Cygwin section in README.win32.
+
+2010-07-09 15:13  bvassche
+
+   *  agent/helpers/instance.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c:
+
+   CHANGES: Win32: Suppressed "implicit cast from int to u_char"
+   warnings generated by MSVC.
+
+2010-07-09 15:11  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   Testing: made the debug output that appears in the "invoked" file
+   even more verbose.
+
+2010-07-09 15:10  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32 MSVC build fixes.
+
+2010-07-08 19:30  marz
+
+   *  local/certgen-test.pl, local/net-snmp-cert,   
+      local/net-snmp-cert.conf:
+
+   adds per identity configuration file support so defaults can be
+   customised on cmdline w -i <identity> - see net-snmp-cert.conf
+   for examples and some help info
+
+2010-07-08 12:17  dts12
+
+   * agent/agent_read_config.c:
+
+   CHANGES: snmpd: BUG: 3003981: Protect against buffer overflow
+
+2010-07-08 11:19  dts12
+
+   * agent/mibgroup/agent/extend.c:
+
+   CHANGES: snmpd: BUG: 3019243: Register execFix compatability
+   directive correctly.
+
+2010-07-07 10:19  bvassche
+
+   *  testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_simple:
+
+   CHANGES: Cygwin and MinGW: tests T110, T111, T112, T120, T121 and
+   T122 do now pass when snmpd is built with winExtDLL support
+   enabled.
+
+2010-07-06 18:59  bvassche
+
+   *  ChangeLog, agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         local/mib2c-conf.d/mfd-persistence.m2i,   
+      testing/fulltests/support/simple_eval_tools.sh:
+
+   Made regression tests easier to debug by including ok / not ok
+   status in the "invoked" file.
+   Spelling fixes: remeber -> remember; seperator -> separator.
+
+2010-07-06 15:04  bvassche
+
+   *  testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   Test T065 does now really pass on MinGW.
+
+2010-07-05 10:01  bvassche
+
+   * testing/Makefile.in:
+
+   Added curly braces such that '||' and '&&' are evaluated in the
+   correct order.
+
+2010-07-04 11:37  bvassche
+
+   * apps:
+
+   Updated Subversion ignore list.
+
+2010-07-04 11:34  bvassche
+
+   * testing/Makefile.in:
+
+   Fall back from RUNFULLTESTS to RUNTESTS if neither TAP::Harness
+   nor Test::Harness is available.
+
+2010-07-04 11:21  bvassche
+
+   * testing/fulltests/support/simple_run:
+
+   Made sure that the test number in /tmp/snmp-tests-$testnum is set
+   to something more meaningful than just "0".
+
+2010-07-04 11:20  bvassche
+
+   * testing/RUNTESTS:
+
+   Split a long comment line.
+
+2010-07-04 10:52  bvassche
+
+   * testing/RUNTESTS:
+
+   Bug fix: made sure that srcdir is computed correctly if `dirname
+   $0` = .
+
+2010-07-02 16:27  bvassche
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs:
+
+   Simplified r19181 (Fixed TLSTCP-enabled build for platforms with
+   non-empty $(EXEEXT), i.e. Cygwin and MinGW).
+
+2010-07-01 18:15  bvassche
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs:
+
+   Fixed TLSTCP-enabled build for platforms with non-empty
+   $(EXEEXT), i.e. Cygwin and MinGW.
+
+2010-07-01 18:11  bvassche
+
+   * apps/snmptls.c:
+
+   Fixed yet another recently introduced compiler warning.
+
+2010-07-01 17:53  bvassche
+
+   * snmplib/cert_util.c:
+
+   Fixed two recently introduced compiler warnings.
+
+2010-07-01 00:19  hardaker
+
+   * CHANGES, NEWS:
+
+   version update
+
+2010-07-01 00:13  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-07-01 00:03  hardaker
+
+   *  agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      snmplib/Makefile.depend:
+
+   make depend
+
+2010-06-30 23:55  hardaker
+
+   *  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
+
+----------------------------------------------------------------------
+
+Changes: V5.6.pre1 -> V5.6.pre2
+
+2010-06-30 23:55  hardaker
+
+   *  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
+
+2010-06-30 23:48  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, python/netsnmp/tests/snmpd.conf:
+
+   Version number update
+
+2010-06-30 23:45  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   missed two tokens in the man pgaes
+
+2010-06-30 23:45  hardaker
+
+   *  man/snmpcmd.1.def, man/snmpd.8.def,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/SCipherTests, testing/fulltests/tls/SCrl,   
+      testing/fulltests/tls/STlsAgentTrap,   
+      testing/fulltests/tls/STlsServer,   
+      testing/fulltests/tls/STlsServerSession,   
+      testing/fulltests/tls/STlsTrapdUser,   
+      testing/fulltests/tls/STlsUsers,   
+      testing/fulltests/tls/STsmPrefix,   
+      testing/fulltests/transports/Stlstests:
+
+   rename the defX509 tokens to something more friendly: clientCert
+   and serverCert
+
+2010-06-30 23:44  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   top-file comment updates
+
+2010-06-30 23:44  hardaker
+
+   * snmplib/cert_util.c:
+
+   don't call cert_find with a NULL argument
+
+2010-06-30 23:44  hardaker
+
+   * snmplib/cert_util.c:
+
+   allow def certs to be specified using a filename
+
+2010-06-30 23:41  tanders
+
+   * testing/fulltests/support/simple_run:
+
+   fix syntax error
+
+2010-06-30 23:01  hardaker
+
+   * snmplib/cert_util.c:
+
+   turn a couple of non-critical errors into debug statements per
+   discussion with rstory
+
+2010-06-30 23:00  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   make the regexp pattern match for tests to run case insensitive
+
+2010-06-30 23:00  hardaker
+
+   * python/netsnmp/client.py:
+
+   import stderr from sys, per discussion on -users
+
+2010-06-30 22:17  hardaker
+
+   *  snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   add back in the default port specifier
+
+2010-06-30 22:17  hardaker
+
+   * local/net-snmp-cert:
+
+   enable pulling the private key over http
+
+2010-06-30 22:17  hardaker
+
+   * local/net-snmp-cert:
+
+   move URL collection into a sub function
+
+2010-06-30 22:16  hardaker
+
+   * local/net-snmp-cert:
+
+   added ability to pull a cert from a URL
+
+2010-06-30 22:16  hardaker
+
+   * local/net-snmp-cert:
+
+   fix argument bug in the is_url function
+
+2010-06-30 20:49  hardaker
+
+   * apps/snmptls.c:
+
+   remove debugging code
+
+2010-06-30 20:27  hardaker
+
+   *  testing/fulltests/tls/T117DtlsCNSession_simple,   
+      testing/fulltests/tls/T117dtlsCNSession_simple:
+
+   rename file for consistency
+
+2010-06-30 20:01  rstory
+
+   * configure:
+
+   update for new snmptls app
+
+2010-06-30 20:00  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   remove accidentally checked int debug code
+
+2010-06-30 19:59  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   define OIDs based on SNMP_TLS_TM_BASE
+
+2010-06-30 19:59  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   auto-transistion between notReady/notInService
+
+2010-06-30 19:57  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   auto-transistion between notReady/notInService; add
+   snmp_store_needed on commit
+
+2010-06-30 19:56  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   use new fingerprint parse/build functions; remove bad length
+   check; auto
+   transition between notReady and notInService
+
+2010-06-30 19:55  rstory
+
+   * mibs/TLSTM-MIB.txt:
+
+   remove pre-rfc mib; see SNMP-TLS-TM-MIB.txt instead
+
+2010-06-30 19:54  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   consolidate multiple files
+
+2010-06-30 19:53  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   make hash type parse routine public; add routines to build/parse
+   SnmpTLSFingerprint
+
+2010-06-30 19:51  rstory
+
+   *  Makefile.in, apps/Makefile.in, apps/snmptls.c,   
+      configure.d/config_os_libs:
+
+   NEWS: snmptls: new app for managing (D)TLS config via
+   SNMP-TLS-TM-MIB tables
+
+2010-06-30 19:50  rstory
+
+   *  agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.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/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c:
+
+   call new snmp_store_needed() function after a commit in tables
+   that
+   have persistent store
+
+2010-06-30 19:49  rstory
+
+   * include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   NEWS: snmplib: new experimental simple state machine
+   NEWS: snmplib: new experimental row creation API which uses a
+   state machine
+   to try really hard to create a row from a given varbind list
+
+2010-06-30 19:48  rstory
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmp_api.h,   
+      snmplib/snmp_api.c:
+
+   NEWS: snmpd: new API for indicating that persistent store needs
+   to be saved after the current request finishes processing
+
+2010-06-30 19:46  rstory
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   add some new wrapper macros
+
+2010-06-30 15:59  hardaker
+
+   *  testing/fulltests/tls/STlsCNSession,   
+      testing/fulltests/tls/STlsSanSession,   
+      testing/fulltests/tls/STlsServerSession,   
+      testing/fulltests/tls/T115DtlsSanSession_simple,   
+      testing/fulltests/tls/T116TlsSanSession_simple,   
+      testing/fulltests/tls/T117dtlsCNSession_simple,   
+      testing/fulltests/tls/T118TlsCNSession_simple:
+
+   added checks for checking direct passing of localhost to the
+   expected name
+
+2010-06-30 15:59  hardaker
+
+   * testing/fulltests/tls/STlsServer:
+
+   check for wildcard support
+
+2010-06-30 15:58  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   support SAN and CN wildcard matching per spec
+
+2010-06-30 15:00  hardaker
+
+   *  testing/fulltests/tls/SCipherTests, testing/fulltests/tls/SCrl,   
+      testing/fulltests/tls/STlsAgentTrap,   
+      testing/fulltests/tls/STlsName, testing/fulltests/tls/STlsSan,   
+      testing/fulltests/tls/STlsServer,   
+      testing/fulltests/tls/STlsTrapdUser,   
+      testing/fulltests/tls/STlsUsers, testing/fulltests/tls/STlsVars,  
+       testing/fulltests/tls/STsmPrefix,   
+      testing/fulltests/tls/ScipherTests,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/Stlsnametests,   
+      testing/fulltests/tls/Stlssantests,   
+      testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlstrapdusertests,   
+      testing/fulltests/tls/Stlsuserstests,   
+      testing/fulltests/tls/Stlsvars, testing/fulltests/tls/Stsmprefix, 
+        testing/fulltests/tls/T101DtlsUser_simple,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102TlsUser_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/tls/T111DtlsServer_simple,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112TlsServer_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple,   
+      testing/fulltests/tls/T113DtlsSan_simple,   
+      testing/fulltests/tls/T113dtlsudpsan_simple,   
+      testing/fulltests/tls/T114TlsSan_simple,   
+      testing/fulltests/tls/T114tlstcpsan_simple,   
+      testing/fulltests/tls/T121DtlsTrap_simple,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122TlsTrap_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple,   
+      testing/fulltests/tls/T131DtlsAgentTrap_simple,   
+      testing/fulltests/tls/T131dtlsudpagenttraptests_simple,   
+      testing/fulltests/tls/T132TlsAgentTrap_simple,   
+      testing/fulltests/tls/T132tlstcpagenttraptests_simple,   
+      testing/fulltests/tls/T141DtlsCrl_simple,   
+      testing/fulltests/tls/T141dtlsudpcrl_simple,   
+      testing/fulltests/tls/T142TlsCrl_simple,   
+      testing/fulltests/tls/T142tlstcpcrl_simple,   
+      testing/fulltests/tls/T151DtlsCiphers_simple,   
+      testing/fulltests/tls/T151dtlsciphers_simple,   
+      testing/fulltests/tls/T152TlsCiphers_simple,   
+      testing/fulltests/tls/T152tlsciphers_simple,   
+      testing/fulltests/tls/T200TlsIpv6_simple,   
+      testing/fulltests/tls/T200tlsipv6_simple,   
+      testing/fulltests/tls/T300TlsPerl.t,   
+      testing/fulltests/tls/T300tlstcpperl.t,   
+      testing/fulltests/tls/T301DtlsPerl.t,   
+      testing/fulltests/tls/T301dtlsperl.t,   
+      testing/fulltests/tls/T401DtlsTsmPrefix_simple,   
+      testing/fulltests/tls/T401dtlstsmprefix_simple,   
+      testing/fulltests/tls/T402TlsTsmPrefix_simple,   
+      testing/fulltests/tls/T402tlstsmprefix_simple:
+
+   moved test files around for better naming
+
+2010-06-30 14:58  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy dtls transport address to the expected hostname
+
+2010-06-30 14:58  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   set the expected hostname from the transport string if possible
+
+2010-06-30 14:58  hardaker
+
+   * local/net-snmp-cert:
+
+   a bit more help output by default
+
+2010-06-29 22:29  tanders
+
+   * apps/snmptrapd_auth.c:
+
+   Follow-up for r19116: make sure we include agent config
+
+2010-06-29 22:18  magfr
+
+   *  agent/mibgroup/host/hr_print.h,   
+      agent/mibgroup/if-mib/data_access/interface.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.h,   
+      agent/mibgroup/ucd-snmp/extensible.h:
+
+   Add missing config_requires
+
+2010-06-29 17:33  hardaker
+
+   * man/snmpcmd.1.def:
+
+   rework the snmpcmd manual page to separate out the flags into
+   sections appropriate for their usage type
+
+2010-06-29 16:51  marz
+
+   * local/net-snmp-cert:
+
+   pod docs, some default val fixes, info output normalized
+
+2010-06-29 16:32  hardaker
+
+   * agent/mibgroup/target/target.c:
+
+   added ssh.h include
+
+2010-06-29 16:27  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   reorganize the manual page a bit for SNMPv3 and TLS
+
+2010-06-29 16:27  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix default tls registrations
+
+2010-06-29 16:26  hardaker
+
+   * agent/snmp_agent.c:
+
+   check for NULL transports after an open fails
+
+2010-06-29 16:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   moving logging around so that openssl errors are printed on
+   failures
+
+2010-06-29 16:26  hardaker
+
+   *  testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stsmprefix:
+
+   fix some non-interactive invocation issues
+
+2010-06-29 16:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move some common code into a common function
+
+2010-06-28 19:13  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/ScipherTests,   
+      testing/fulltests/tls/T151dtlsciphers_simple,   
+      testing/fulltests/tls/T152tlsciphers_simple:
+
+   cipher suite selection and tests for it
+
+2010-06-28 19:12  hardaker
+
+   * python/LICENSE:
+
+   license updates
+
+2010-06-28 19:12  hardaker
+
+   *  python/README, python/netsnmp/client.py,   
+      python/netsnmp/client_intf.c:
+
+   SNMPv3 over TLS support
+
+2010-06-28 19:12  hardaker
+
+   * python/netsnmp/tests/test.py:
+
+   better output showing test types
+
+2010-06-28 00:54  tanders
+
+   *  man/mib_api.3.def, man/netsnmp_agent.3, man/netsnmp_container.3,  
+       man/netsnmp_example_scalar_int.3, man/netsnmp_handler.3,   
+      man/netsnmp_library.3, man/netsnmp_mib_utilities.3,   
+      man/netsnmp_table.3, man/snmpcmd.1.def, man/snmptrapd.conf.5.def:
+
+   CHANGES: man: clean up manual pages
+   (from Debian patch 56_manpage)
+
+2010-06-27 23:29  tanders
+
+   * apps/snmptrapd.c, apps/snmptrapd_auth.c:
+
+   CHANGES: build: Do not call vacm_standard_views() or
+   init_vacm_config_tokens() if the corresponding module was not
+   compiled
+   (from Debian patch 61_vacm_missing_dependency_check)
+
+2010-06-27 03:23  marz
+
+   * local/net-snmp-cert:
+
+   fix app tag completions
+
+2010-06-27 00:56  marz
+
+   * local/net-snmp-cert, local/net-snmp-cert.conf:
+
+   handle config file setting interactive, true/false values handled
+   in config
+
+2010-06-26 20:58  marz
+
+   * local/net-snmp-cert:
+
+   fix some bugs w/ spaces in names and app tag help
+
+2010-06-26 19:38  marz
+
+   *  testing/fulltests/tls/S300tlsperl.pl,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/transports/Stlstests:
+
+   fix tests to use non-interactive -I
+
+2010-06-26 17:46  marz
+
+   * local/certgen-test.pl, local/net-snmp-cert:
+
+   better interactive, ?=help, <tab> compl, more help, SAN loop
+   format and termination fix, tolerate spaces in fields and
+   filenames, more complete error output, embryonic import from url
+
+2010-06-26 13:48  bvassche
+
+   *  snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c, 
+        snmplib/transports/snmpTLSTCPDomain.c:
+
+   More compiler warning fixes.
+
+2010-06-26 13:47  bvassche
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Fixed the errors in acconfig.h and regenerated
+   net-snmp-config.h.in.
+
+2010-06-26 13:44  bvassche
+
+   * agent/mibgroup/smux/smux.c:
+
+   Fixed compiler warnings triggered by SMUX MIB implementation.
+
+2010-06-26 00:45  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/Stlssantests,   
+      testing/fulltests/tls/T113dtlsudpsan_simple,   
+      testing/fulltests/tls/T114tlstcpsan_simple:
+
+   fixes and testing for checking SAN DNS names from the server
+
+2010-06-26 00:44  hardaker
+
+   *  testing/fulltests/tls/Stlsnametests,   
+      testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple:
+
+   genericize the server name tests
+
+2010-06-25 23:01  hardaker
+
+   *  agent/mibgroup/tsm-mib.h,   
+      agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.c,   
+      agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h,   
+      snmplib/snmptsm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/Stsmprefix,   
+      testing/fulltests/tls/T401dtlstsmprefix_simple,   
+      testing/fulltests/tls/T402tlstsmprefix_simple:
+
+   useprefix scalar testing and support
+
+2010-06-25 23:01  hardaker
+
+   * testing/fulltests/tls/Scrltests:
+
+   remove debugging lines
+
+2010-06-25 23:00  hardaker
+
+   * testing/fulltests/tls/Scrltests:
+
+   put in only minimial debug flags
+
+2010-06-25 23:00  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/tls/Scrltests,   
+      testing/fulltests/tls/T141dtlsudpcrl_simple,   
+      testing/fulltests/tls/T142tlstcpcrl_simple:
+
+   code and test cases for CRL handling
+
+2010-06-25 15:24  bvassche
+
+   * testing/fulltests/default/T060trapdperl_simple:
+
+   Added a newline at the end of each line printed by the Perl
+   interpreter.
+
+2010-06-25 13:08  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   reduce number of resend attempts and timeout
+
+2010-06-25 13:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h, snmplib/cert_util.c, 
+        snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   warning fixes
+
+2010-06-25 13:08  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   remove logic typo from previous commit
+
+2010-06-25 13:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      testing/fulltests/tls/T200tlsipv6_simple:
+
+   IPv6 fixes for TCP
+
+2010-06-25 13:01  jsafranek
+
+   * snmplib/snmp_api.c:
+
+   Reverting 19095, it breaks tests
+
+2010-06-25 09:40  jsafranek
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmptranslate: fixed printing of ranges with UNSIGNED
+   type.
+
+2010-06-24 23:55  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix function names for stat increases
+
+2010-06-24 23:52  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix errors in comments
+
+2010-06-24 23:44  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   comments for 5.4 for dtls
+
+2010-06-24 23:44  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   comments for 5.3.2
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   client side connect comments
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   counter and comment improvements
+
+2010-06-24 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   update counter calls and comment text
+
+2010-06-24 19:03  bvassche
+
+   *  testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   Moved LD_LIBRARY_PATH setup from individual tests scripts to
+   simple_TESTCONF.sh.
+
+2010-06-24 19:02  bvassche
+
+   * testing/fulltests/support/simple_run:
+
+   Fixed a comment.
+
+2010-06-24 17:48  bvassche
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   Should have been included in r19084.
+
+2010-06-24 17:47  bvassche
+
+   *  snmplib/cert_util.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-06-24 12:30  tanders
+
+   * configure, configure.d/config_os_progs:
+
+   "test -e" isn't portable; use "test -x" instead for the Perl
+   system()
+   check
+
+2010-06-23 11:14  jsafranek
+
+   * agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c:
+
+   CHANGES: snmpd: fixed value of IP-MIB::ipv6InterfaceForwarding on
+   Linux
+   
+   The value was 0 (not forwarding) or 1 (forwarding), should be 2
+   and 1
+   instead - netsnmp_interface_entry.forwarding_v6 is boolean, not
+   TruthValue.
+
+2010-06-22 23:06  hardaker
+
+   * snmplib/cert_util.c, testing/fulltests/tls/Stlsuserstests:
+
+   support for certSecName mapping from a local cert file name and a
+   test for it
+
+2010-06-22 22:44  hardaker
+
+   * perl/SNMP/SNMP.pm:
+
+   documenation update to clean up and include TLS parameters
+
+2010-06-22 22:44  hardaker
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   support for passing identities and full working version
+
+2010-06-22 22:44  hardaker
+
+   *  testing/fulltests/tls/S300tlsperl.pl,   
+      testing/fulltests/tls/T300tlstcpperl.t,   
+      testing/fulltests/tls/T301dtlsperl.t:
+
+   perl TLS/DTLS tests
+
+2010-06-22 22:43  hardaker
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   first ptach on SNMP/TLS creating a new session function
+
+2010-06-22 22:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   first working support for a delayed close() to attempt to sending
+   outstanding packets in the queue; this is required for snmptrap
+   to work at all when sending traps (not informs) over DTLS
+
+2010-06-22 19:03  bvassche
+
+   *  testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/support/simple_TESTCONF.sh:
+
+   CHANGES: MinGW: tests T059 and T065 do now pass.
+
+2010-06-22 19:01  bvassche
+
+   * apps/snmpnetstat/inet6.c:
+
+   The width argument for %.*d must have type int, not size_t. This
+   bug was introduced in r19014.
+
+2010-06-22 18:57  bvassche
+
+   * agent/mibgroup/utilities/execute.c:
+
+   CHANGES: MinGW: run_shell_command() with either input or output
+   (but not both) does now work.
+   This did not work until now because on MinGW mkstemp() generates
+   a MinGW-style path (/tmp/...) while system() invokes cmd.exe and
+   hence expects a Windows-style path (C:\...).
+
+2010-06-22 17:39  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   Also report the port specification if [ $SNMP_VERBOSE -gt 0 ].
+
+2010-06-22 17:38  bvassche
+
+   *  testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   Replaced an explicit test for MinGW by a test on HAVE_SIGHUP.
+
+2010-06-22 17:36  bvassche
+
+   *  configure, configure.d/config_os_misc4,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for SIGHUP.
+
+2010-06-22 17:35  bvassche
+
+   * testing/RUNTESTS:
+
+   Report which tests failed, if any.
+
+2010-06-22 08:37  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   Fixed an error in a comment block.
+
+2010-06-21 19:26  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_simple:
+
+   Rearranged the implementation of this test such that it is no
+   longer necessary
+   to invoke simple_eval_tools.sh when this script is invoked as a
+   trap handler
+   by snmptrapd.
+
+2010-06-21 08:01  dts12
+
+   * snmplib/large_fd_set.c:
+
+   Ensure that fdset structure is resized sufficiently
+   to accomodate the specified socket ID.
+   Problem reported by Shiyalei.
+
+2010-06-20 19:32  dts12
+
+   *  snmplib/cert_util.c, snmplib/cmu_compat.c, snmplib/pkcs.c,   
+      snmplib/snprintf.c:
+
+   Avoid duplicate (unused) symbols.
+
+2010-06-20 19:31  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_simple:
+
+   Commented out debug code.
+
+2010-06-20 19:30  bvassche
+
+   * testing/RUNTESTS, testing/fulltests/support/simple_run:
+
+   Restored summary success/failure count reporting.
+   Also, moved kill.exe test back to RUNTESTS.
+
+2010-06-20 19:29  bvassche
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   CHANGES: testing: add the test name to the start of the file
+   "invoked".
+
+2010-06-20 19:27  bvassche
+
+   *  testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   CHANGES: MinGW: testing: skip the tests that require SIGHUP since
+   MinGW does not support SIGHUP.
+
+2010-06-20 15:19  bvassche
+
+   * configure, configure.d/config_os_progs, testing/Makefile.in:
+
+   Added a configure test that detects whether or not Perl's
+   system() function
+   invokes a POSIX shell. "make test" does now fall back to RUNTESTS
+   if not.
+
+2010-06-20 15:16  bvassche
+
+   *  snmplib/snmp_transport.c, snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   Builds again on MinGW -- added #include <net-snmp/types.h> where
+   necessary.
+   Note: although <net-snmp/types.h> is included indirectly from the
+   *     *transport.h    header files, these #include statements are
+      necessary because of    a pesky    circular dependence between
+      <net-snmp/types.h> and    <net-snmp/library/snmp_api.h>. 
+      2010-06-20 15:12  bvassche
+
+
+   * testing/fulltests/support/simple_run:
+
+   CHANGES: MinGW: refuse to run the regression tests if kill.exe
+   cannot be found.
+
+2010-06-20 15:11  bvassche
+
+   * testing/RUNTESTS:
+
+   Shortened the srcdir path by making sure that it does not contain
+   /..
+
+2010-06-19 18:30  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   Added support for running RUNFULLTESTS with Test::Harness in
+   another directory than the source directory.
+
+2010-06-19 16:41  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   complete rewrite of params to use table_dataset instead of
+   create-dataset
+
+2010-06-19 16:41  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   use text for hash type in persistent store
+
+2010-06-19 16:40  rstory
+
+   *  agent/mibgroup/Rmon/rows.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c:
+
+   quiet compiler warnings
+
+2010-06-19 16:40  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix missing specifier in debug
+
+2010-06-19 16:39  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   use define instead of constant; fix check for rows to save
+
+2010-06-19 16:39  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add remove/find function for maps/addrs/params; rename params
+   tag->name;
+   destroy -> free; group recent trust functions together in src;
+   don't store
+   params fp as binary; hand text args for hash type (e.g --sha1)
+
+2010-06-18 15:35  bvassche
+
+   * agent/mibgroup/mibII/at.c:
+
+   CHANGES: Cygwin: corrected error handling in mibII/at.
+
+2010-06-18 07:23  bvassche
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Fixed a compiler warning.
+
+2010-06-18 01:42  magfr
+
+   * snmplib/keytools.c:
+
+   Do not define ret twice when NETSNMP_USE_INTERNAL_CRYPTO is set.
+
+2010-06-18 01:39  magfr
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   Corrected typo.
+
+2010-06-18 00:31  hardaker
+
+   * CHANGES, NEWS:
+
+   better NEWS and CHANGES files
+
+2010-06-17 20:39  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2010-06-17 20:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-06-17 18:59  hardaker
+
+   *  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
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.5 -> V5.6.pre1
+
+2010-06-17 20:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2010-06-17 18:59  hardaker
+
+   *  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
+
+2010-06-17 18:55  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2010-06-17 18:54  hardaker
+
+   * Makefile.top:
+
+   version update
+
+2010-06-17 18:39  hardaker
+
+   * dist/makerelease.xml:
+
+   re-enable some commands
+
+2010-06-17 17:46  hardaker
+
+   * testing/fulltests/tls/Stlsvars:
+
+   forgot missing quotes in SET output
+
+2010-06-17 17:46  hardaker
+
+   *  testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/Stlsvars:
+
+   tls testing cleanup
+
+2010-06-17 17:45  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   more fixes for address printing; more to come
+
+2010-06-17 17:45  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   mostly properly set remote/local transport parameters
+
+2010-06-17 17:45  hardaker
+
+   *  testing/fulltests/tls/Stlsagenttraptests,   
+      testing/fulltests/tls/T131dtlsudpagenttraptests_simple,   
+      testing/fulltests/tls/T132tlstcpagenttraptests_simple:
+
+   tests for agents sending of traps over (D)TLS
+
+2010-06-17 17:45  hardaker
+
+   *  testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple:
+
+   move export statements to the support file for simplicity
+
+2010-06-17 17:44  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move tls bootstrapping to post_premib so other config tokens can
+   use the cert loading results
+
+2010-06-17 17:44  hardaker
+
+   * testing/fulltests/unit-tests/T004snmp_enum_clib.c:
+
+   added snmp_enum tests pulled from the main() test at the bottom
+   of the original .c file
+
+2010-06-17 16:00  dts12
+
+   * agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Eliminate "differ in signedness" warning
+
+2010-06-17 00:14  hardaker
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   revert UDP changes from r18984 since it broke the UDP transport;
+   the struct probably needs to match another struct somewhere else
+
+2010-06-16 23:26  hardaker
+
+   * snmplib/cert_util.c:
+
+   add a new KEYWORD output for debugging purposes
+
+2010-06-16 23:26  hardaker
+
+   * agent/agent_trap.c:
+
+   use config_and_open for opening the transport
+
+2010-06-16 23:26  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   extra debugging statements
+
+2010-06-16 22:14  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   explicitly declare trust certificates to transport
+
+2010-06-16 22:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   cleanup some lost memory on closing
+
+2010-06-16 21:56  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix typos
+
+2010-06-16 21:34  dts12
+
+   *  agent/agent_registry.c, agent/helpers/row_merge.c,   
+      agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c,
+         agent/mibgroup/ucd-snmp/disk.c,
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/pass.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/snmp_agent.c:
+
+   Eliminate (most) "signed and unsigned comparison" warnings from
+   agent code [-Wsign-compare]
+
+2010-06-16 20:16  dts12
+
+   *  snmplib/asn1.c, snmplib/check_varbind.c,   
+      snmplib/container_binary_array.c, snmplib/dir_utils.c,   
+      snmplib/keytools.c, snmplib/large_fd_set.c, snmplib/parse.c,   
+      snmplib/read_config.c, snmplib/scapi.c, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/text_utils.c, snmplib/vacm.c:
+
+   Eliminate (most) "signed and unsigned comparison" warnings from
+   library code [-Wsign-compare]
+
+2010-06-16 19:36  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove older no-longer-needed-duplicate-config entries
+
+2010-06-16 19:14  dts12
+
+   * snmplib/vacm.c:
+
+   Fix processing of view masks (misplaced parentheses)
+
+2010-06-16 18:45  dts12
+
+   *  apps/agentxtrap.c, apps/snmpnetstat/if.c,   
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c,   
+      apps/snmptable.c, apps/snmptrapd_log.c, apps/snmpusm.c:
+
+   Eliminate "signed and unsigned comparison" from app code
+   [-Wsign-compare]
+
+2010-06-16 17:22  hardaker
+
+   * testing/fulltests/tls/Stlstrapdusertests:
+
+   check for informs sent over tls transports
+
+2010-06-16 17:22  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy other valuse from parent tlsbase data
+
+2010-06-16 17:21  hardaker
+
+   *  testing/fulltests/tls/Stlstrapdusertests,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T121dtlsudptraptests_simple,   
+      testing/fulltests/tls/T122tlstcptraptests_simple:
+
+   added basic trap sending and receiving tests
+
+2010-06-16 17:21  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   remove no longer needed temp file touches
+
+2010-06-16 17:20  hardaker
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmp_transport.h,   
+      snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   added a new function and transport flag to indicate if the f_open
+   call has been called yet
+
+2010-06-16 17:20  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   unused var warning cleanup
+
+2010-06-16 17:19  hardaker
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   added trustCert configuration token
+
+2010-06-16 17:19  hardaker
+
+   * testing/fulltests/tls/Stlsuserstests:
+
+   minor tweaks for testing clarity
+
+2010-06-16 17:18  hardaker
+
+   *  testing/fulltests/tls/Stlsuserstests,   
+      testing/fulltests/tls/T101dtlsudpusertests_simple,   
+      testing/fulltests/tls/T102tlstcpusertests_simple,   
+      testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_simple:
+
+   moved complex (D)TLS to a separate section and made the transport
+   tests only test minimal support
+
+2010-06-16 17:17  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   add mechanisms for specifying and expecting the hostname of the
+   far side
+
+2010-06-16 17:17  hardaker
+
+   *  testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlsvars:
+
+   tests for verifying server certificate check failures
+
+2010-06-16 17:17  hardaker
+
+   *  testing/fulltests/tls, testing/fulltests/tls/Stlsservertests,   
+      testing/fulltests/tls/Stlsvars,   
+      testing/fulltests/tls/T111dtlsudpservertests_simple,   
+      testing/fulltests/tls/T112tlstcpservertests_simple:
+
+   testing for checking client side verification of server
+   certificates
+
+2010-06-16 17:16  hardaker
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   setup for a hostname config option
+
+2010-06-16 17:16  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   setup for a hostname config option
+
+2010-06-16 17:15  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   check to make suer ssl pointer has been created via f_open call
+
+2010-06-16 15:02  dts12
+
+   * agent/snmp_perl.h, apps/snmptrapd.c:
+
+   Declare 'shutdown_perl' properly.
+
+2010-06-16 14:37  dts12
+
+   * agent/snmpd.c, snmplib/keytools.c, snmplib/lcd_time.c:
+
+   Eliminate "signed and unsigned type in conditional expression"
+   warnings [-Wsign-compare]
+
+2010-06-16 14:27  dts12
+
+   * agent/mibgroup/target/target.c:
+
+   Eliminate "unused variable" warning
+
+2010-06-16 14:22  dts12
+
+   *  agent/helpers/old_api.c, agent/helpers/row_merge.c,   
+      agent/helpers/table_dataset.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/snmpd.c, snmplib/transports/snmpUDPBaseDomain.c:
+
+   Eliminate various "implicit conversion" warnings [-Wc++-compat]
+
+2010-06-16 13:13  dts12
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c,   
+      agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/tcpTable.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      apps/snmpvacm.c, snmplib/tools.c:
+
+   Eliminate (most) signed-vs-unsigned warnings from numeric scanf
+   processing [-pedantic]
+
+2010-06-16 03:28  rstory
+
+   *  agent/helpers/table_tdata.c,   
+      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,
+         agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.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/sysORTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         snmplib/container.c:
+
+   the great un-named container hunt
+
+2010-06-16 03:27  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   share cache between table and count scalar; when reading config,
+   add to
+   library containers for active rows, table containers for inactive
+   rows;
+   user cert_util apis instead of direct container manipulation;
+   when
+   saving inactive map rows, skip all but nonVolatile
+
+2010-06-16 03:26  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix debug token typo
+
+2010-06-16 03:25  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add api for adding entries to tltsm addr, params and cert map
+   containers;
+   register se slist pair earlier so they are available during
+   config parsing;
+   make sure config strings are null terminated
+
+2010-06-15 21:42  dts12
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Suppress warnings:
+   'struct nlmsghdr defined inside parameter list' and
+   'function _load_v6 declared but never defined'
+
+2010-06-15 21:30  dts12
+
+   *  agent/kernel.c, apps/snmptrapd_sql.c, snmplib/cert_util.c,   
+      snmplib/cmu_compat.c, snmplib/pkcs.c, snmplib/snprintf.c:
+
+   Eliminate "empty translation unit" warnings [-pedantic]
+
+2010-06-15 07:07  magfr
+
+   * testing/fulltests/unit-tests/T003copy_nword_clib.c:
+
+   Add test of copy_nword
+
+2010-06-14 21:32  dts12
+
+   *  agent/mibgroup/disman/event/mteEvent.h,   
+      agent/mibgroup/disman/event/mteTrigger.h,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/disman/schedule/schedCore.c:
+
+   Eliminate "overflow in implicit constant conversion" warnings
+   [-Wc++-compat]
+
+2010-06-14 15:51  dts12
+
+   * agent/snmpd.c, apps/encode_keychange.c, snmplib/read_config.c:
+
+   Eliminate "string length greater than 509" warnings [-pedantic]
+
+2010-06-14 15:19  dts12
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   Eliminate "initializer element is not computable" warnings
+   [-pedantic]
+
+2010-06-14 05:27  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   update count handlers to count non-active rows too
+
+2010-06-14 05:12  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c:
+
+   only tweak storageType for active rows; reset entry flags when
+   removing from
+   cert_util maps; when createing rows from cert_util maps, set
+   stragetType to
+   volatile if nonVolatile flag not set; dont free cache in
+   cache_load on err
+
+2010-06-14 05:10  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   move tlstmAddr table config parsing to cert_util; add cache to
+   merge cert_util
+   addrs (active) and non-active rows;
+
+2010-06-14 05:10  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add nonVolatile flag to tlstmAddr table; set container name; skip
+   '0x' in fp
+
+2010-06-14 05:09  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   change LOG_ERR to LOG_INFO for non-error log msg
+
+2010-06-13 21:02  dts12
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.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/ifTable/ifTable.c,   
+      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_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_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/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.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/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c,
+         local/mib2c-conf.d/mfd-interface.m2c:
+
+   Eliminate (most) "implicit conversion" warnings from
+   MfD-based MIB module code, and MfD template [-Wc++-compat]
+
+2010-06-12 21:33  dts12
+
+   *  agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/event/mteEventConf.c,   
+      agent/mibgroup/disman/event/mteObjectsConf.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/expr/expExpressionConf.c,   
+      agent/mibgroup/disman/expr/expObjectConf.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/memory/memory_linux.c,   
+      agent/mibgroup/hardware/memory/memory_solaris.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_disk.c, agent/mibgroup/mibII/sysORTable.c, 
+        agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/ucd-snmp/disk.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/mibgroup/utilities/override.c:
+
+   Eliminate (most) "implicit conversion" warnings from (non-MfD)
+   MIB module code. [-Wc++-compat]
+
+2010-06-12 10:26  dts12
+
+   *  agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_registry.c, agent/agent_sysORTable.c,   
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c,   
+      agent/helpers/mode_end_call.c, agent/helpers/row_merge.c,   
+      agent/helpers/scalar.c, agent/helpers/stash_cache.c,   
+      agent/helpers/table_array.c, agent/helpers/table_container.c,   
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c,   
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c,   
+      agent/snmp_agent.c, apps/snmptrapd.c, apps/snmptrapd_log.c,   
+      snmplib/dir_utils.c, snmplib/file_utils.c,   
+      snmplib/large_fd_set.c, snmplib/snmp_api.c:
+
+   Eliminate (most) "implicit conversion" warnings from library,
+   apps and agent framework+helpers code. [-Wc++-compat]
+
+2010-06-10 20:01  rstory
+
+   * agent/mibgroup/target/target.c:
+
+   lookup cert keys for tls domains; use SEC_MODEL define instead of
+   hardcoded
+   constant; add SEC_MODEL_TSM to allowed sec models for mpModel
+   SNMP_VERSION_3
+
+2010-06-10 20:00  rstory
+
+   * agent/mibgroup/notification/snmpNotifyTable.c:
+
+   default to readOnly/active for bad config
+
+2010-06-10 20:00  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   add debug; switch to SEC_MODEL_TSM and warn if other secmode set,
+   instead
+   of simply logging that it won't work
+
+2010-06-10 19:59  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   check ptrs before dereference
+
+2010-06-10 19:58  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   move snmpTlstmAddrTable data management to cert_util; implement
+   TARGET_ADDR
+   and TARGET_PARAMS lookup in cert API
+
+2010-06-10 19:47  rstory
+
+   * snmplib/snmp_api.c:
+
+   update sec model define missed in earlier checkin
+
+2010-06-10 19:46  rstory
+
+   * agent/agent_trap.c:
+
+   config trapsess transports on creation; simplify ifdefs for
+   DISABLE_SNMPV1
+
+2010-06-10 19:46  rstory
+
+   *  include/net-snmp/library/snmp.h,   
+      include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpusm.h, snmplib/snmpksm.c,   
+      snmplib/snmptsm.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   auto switch to v3 for (d)tls sessions instead of logging that
+   others wont
+   work; define TSM sec model with other sec models; consistently
+   use
+   SNMP_SEC_MODEL_* in the code, using #defines for backwards
+   compatibility
+   w/*_SECURITY_MODEL
+
+2010-06-10 19:46  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   certToTSN: move mib related persistence back into mib module;
+   cert_util: add tlstmParams persistence; use slist for cert map
+   type name
+   mapping;
+
+2010-06-10 19:45  rstory
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix compiler warning (const)
+
+2010-06-10 04:58  magfr
+
+   * agent/agent_handler.c:
+
+   Add missing indentation of a do-while loop to make the code
+   readable.
+
+2010-06-09 22:57  hardaker
+
+   * local/net-snmp-cert:
+
+   comment out keyUsage so proper self-signed certs are generated
+
+2010-06-09 22:57  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   solidify certificate acceptance for the client side
+
+2010-06-09 22:57  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix array typo
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   log openssl errors on accept failure
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/snmp_api.c:
+
+   register default ports for tls/dtls
+
+2010-06-09 22:56  hardaker
+
+   * snmplib/cert_util.c:
+
+   do proper STORE loading of trusted certificates rather than file
+   based loading
+
+2010-06-09 22:56  hardaker
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   added two new APIs: netsnmp_cert_trust and netsnmp_cert_trust_ca
+
+2010-06-09 22:55  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   added straight 'tls' transport name
+
+2010-06-09 22:55  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   added straight 'dtls' transport name
+
+2010-06-08 21:05  magfr
+
+   * agent/Makefile.in:
+
+   Install agent_read_config.h in 5.6 as well. It disappeared in
+   r18843.
+
+2010-06-08 09:25  dts12
+
+   *  agent/mibgroup/hardware/fsys/hw_fsys.h,   
+      agent/mibgroup/host/hrh_filesys.c,   
+      agent/mibgroup/ucd-snmp/disk_hw.c:
+
+   Remove (or activate) unused variables.
+   Fix misnamed function declaration.
+
+2010-06-08 07:11  dts12
+
+   * include/net-snmp/agent/hardware/fsys.h:
+
+   API changes for preliminary HAL_based implementation of UCD disk
+   module.
+   (Omitted from revision 18932 checkin)
+
+2010-06-08 04:18  rstory
+
+   * agent/Makefile.in:
+
+   update makefile for moved helper headers
+
+2010-06-07 20:18  jsafranek
+
+   * agent/mibgroup/host/hr_proc.c:
+
+   Reverting rev. 17616, the necessary check is already in rev.
+   17415.
+
+2010-06-06 03:45  magfr
+
+   * configure, configure.d/config_project_paths:
+
+   CHANGES: building: In case exec_prefix is unset then set it to
+   '${prefix}' in order to pick up overrides of $prefix in make
+   install.
+
+2010-06-04 04:06  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   do a better job of verifying fingerprints of remote servers
+   pulling fingerprints from a number of possible places
+
+2010-06-04 04:05  hardaker
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   go ahead and log output file for easier debugging in errors
+
+2010-06-04 04:05  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   fix typo
+
+2010-06-04 04:05  hardaker
+
+   * snmplib/scapi.c:
+
+   remove comment about random being inadequate; we're doing the
+   best we can based on what we have
+
+2010-06-04 04:04  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use another user for testing snmpapp default certificate
+
+2010-06-04 04:04  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   run a default test without a local key to ensure the snmpapp type
+   is picked up
+
+2010-06-04 04:04  hardaker
+
+   * snmplib/cert_util.c:
+
+   add a special case for the local identity and pull it from a
+   filename of the init_snmp() registered type name
+
+2010-06-04 04:03  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   doc update
+
+2010-06-04 04:03  hardaker
+
+   * testing/fulltests/perl/T105unix.t:
+
+   unix socket test
+
+2010-06-04 04:03  hardaker
+
+   *  testing/fulltests/perl/T103udp6.t,   
+      testing/fulltests/perl/T104tcp6.t:
+
+   ipv6 tests
+
+2010-06-04 04:02  hardaker
+
+   *  testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   mention test name is IPv4
+
+2010-06-04 04:02  hardaker
+
+   *  testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   check that transport was configured
+
+2010-06-04 04:02  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   add support for net-snmp-config.h checks
+
+2010-06-04 04:01  hardaker
+
+   *  testing/fulltests/perl/NetSNMPTestTransport.pm,   
+      testing/fulltests/perl/T101udp.t,   
+      testing/fulltests/perl/T102tcp.t:
+
+   some basic transport checking for perl: udp and tcp
+
+2010-06-04 04:01  hardaker
+
+   * testing/fulltests/perl, testing/fulltests/perl/T001basic.t:
+
+   basic tests for perl
+
+2010-06-04 04:01  hardaker
+
+   * testing/fulltests/support/NetSNMPTest.pm:
+
+   infrastructure module for testing perl support
+
+2010-06-03 15:56  dts12
+
+   * dist/makerelease.xml:
+
+   Point LIB{CURRENT,AGE,REVISION} documentation to the correct
+   file.
+   Warn about 'makedepend' picking up testing module code.
+   Emphasis update of 'download.html' page
+   Mention update of Official Patches
+   Suppress broken commands
+
+2010-06-03 15:16  dts12
+
+   *  agent/mibgroup/ucd-snmp/disk_hw.c,   
+      agent/mibgroup/ucd-snmp/disk_hw.h, agent/mibgroup/ucd_snmp.h:
+
+   Preliminary HAL_based implementation of UCD disk module.
+   Ensures consistent reporting between UCD and HostRes FSys usage
+   and extends 'skipNFSInHostResources' config to UCD disk stats.
+
+2010-06-03 15:13  dts12
+
+   * agent/mibgroup/hardware/fsys/hw_fsys.c:
+
+   Fix broken size calculations.
+   Support 64-bit size/usage values.
+
+2010-06-02 14:52  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use --with-ca instead of --ca
+
+2010-06-02 14:51  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   use the new -brief option for fingerprint capturing
+
+2010-06-02 14:40  marz
+
+   * local/net-snmp-cert:
+
+   fix --with-ca handling, fix CA newcerts bookkeeping
+
+2010-06-02 10:57  jsafranek
+
+   *  agent/mibgroup/disman/mteEventTable.c,   
+      agent/mibgroup/utilities/override.c:
+
+   CHANGES: snmpd: fixed potential buffer overflow in parsing OIDs
+   in config files.
+
+2010-06-02 00:24  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   check that CA certificates created after snmpd starts are still
+   usable; check all output fingerprints to ensure they were
+   properly created
+
+2010-06-02 00:23  hardaker
+
+   * local/net-snmp-cert:
+
+   add missing directory and file suffix to ca invocations
+
+2010-06-02 00:21  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   check that certificate output fingerprints were found
+
+2010-06-02 00:20  hardaker
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   two new functions for value comparison test output
+
+2010-06-02 00:16  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/transports/Stls:
+
+   remove no-longer-used self-signed certificate token specifier (we
+   require a copy of the key)
+
+2010-06-02 00:08  hardaker
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      testing/fulltests/transports/Stlstests:
+
+   - changed 'fingerprint' token to more generic 'identity' keyword
+   - added the ability for netsnmp_cert_find to try multiple types
+   (FP & file)
+   - and provide test suite test for it.
+
+2010-06-01 20:12  bvassche
+
+   *  testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T115agentxperl_simple:
+
+   Made sure that the Perl extension modules can load the Net-SNMP
+   DLLs while running the Net-SNMP regression tests.
+
+2010-06-01 16:47  marz
+
+   * local/certgen-test.pl, local/net-snmp-cert:
+
+   major update bug fixes and features - interactive mode, separate
+   CA dirs, gen csr from cert, fingerprint display --brief,
+   eliminate sed, openssl.conf overwrite and templating
+
+2010-06-01 14:48  bvassche
+
+   * agent/helpers/table.c:
+
+   Fixed a typo in a source code comment.
+
+2010-06-01 14:25  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
+
+   CHANGES: snmpd: fixed IP-MIB::ipIfStatsReasmReqds value.
+   
+   Just fixing a stupid typo.
+
+2010-05-31 10:43  bvassche
+
+   * configure, configure.d/config_modules_lib:
+
+   CHANGES: Cygwin: enabled Unix transport.
+   (Forward-ported r18687 from the V5.5 branch).
+
+2010-05-30 22:52  tanders
+
+   * testing/RUNFULLTESTS:
+
+   enable to run with older Perl (e.g. Perl 5.00405 as shipped with
+   IRIX
+   6.5)
+
+2010-05-30 22:49  tanders
+
+   * testing/RUNFULLTESTS:
+
+   polish documentation
+
+2010-05-30 20:19  magfr
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in, apps/Makefile.in,   
+      net-snmp-config.in, net-snmp-create-v3-user.in,   
+      perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL:
+
+   CHANGES: building: Do not link with libnetsnmphelpers any more as
+   it is empty.
+
+2010-05-30 19:18  magfr
+
+   * include/net-snmp/library/snmp.h, snmplib/snmp.c:
+
+   CHANGES: snmplib: Use a void argument for the data argument of
+   xdump.
+
+2010-05-30 19:18  bvassche
+
+   * agent/snmp_perl.c:
+
+   CHANGES: BUG: 2051742: added missing PERL_SYS_INIT3() call (see
+   also man perlembed).
+
+2010-05-30 19:16  bvassche
+
+   * include/net-snmp/library/container.h:
+
+   Fixed a compiler warning (free() called without being declared
+   first).
+
+2010-05-30 16:56  magfr
+
+   *  acconfig.h, agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/smux/smux.h, configure,   
+      configure.d/config_modules_lib,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmplib: Do not require that the UDP transport is included.
+
+2010-05-30 12:00  magfr
+
+   *  include/net-snmp/library/snmpCallbackDomain.h,   
+      include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpSSHDomain.h,   
+      include/net-snmp/library/snmpSTDDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpAAL5PVCDomain.c, 
+        snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpSTDDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   CHANGES: snmplib: Correct dependencies between transports. Remove
+   unnecessary includes.
+
+2010-05-30 06:21  bvassche
+
+   * agent/helpers/Makefile.in, agent/helpers/dummy.c:
+
+   Made sure that libnetsnmphelpers is not empty such that building
+   Net-SNMP on AIX and IRIX is again possible.
+
+2010-05-29 09:52  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   Follow-up for r18902: works again without TAP::Harness.
+
+2010-05-28 23:23  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix long-ago broken verbosity
+
+2010-05-28 23:05  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix more previously broken option renames; change -d to
+   master-directory and add as a real argument
+
+2010-05-28 23:05  hardaker
+
+   *  testing/fulltests/default/T001snmpv1get_simple,   
+      testing/fulltests/default/T014snmpv2cget_simple,   
+      testing/fulltests/default/T015snmpv2cgetnext_simple,   
+      testing/fulltests/default/T0160snmpv2cbulkget_simple,   
+      testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_simple,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_simple,   
+      testing/fulltests/default/T019snmpv2cnosuch_simple,   
+      testing/fulltests/default/T020snmpv3get_simple,   
+      testing/fulltests/default/T021snmpv3getnext_simple,   
+      testing/fulltests/default/T0220snmpv3bulkget_simple,   
+      testing/fulltests/default/T022snmpv3getMD5_simple,   
+      testing/fulltests/default/T023snmpv3getMD5AES_simple,   
+      testing/fulltests/default/T023snmpv3getMD5DES_simple,   
+      testing/fulltests/default/T024snmpv3getSHA1_simple,   
+      testing/fulltests/default/T025snmpv3getSHADES_simple,   
+      testing/fulltests/default/T026snmpv3getSHAAES_simple,   
+      testing/fulltests/default/T028snmpv3getfail_simple,   
+      testing/fulltests/default/T030snmpv3usercreation_simple,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_simple,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T049snmpv3informpriv_simple,   
+      testing/fulltests/default/T050snmpv3trap_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T054agentv2ctrap_simple,   
+      testing/fulltests/default/T055agentv1mintrap_simple,   
+      testing/fulltests/default/T056agentv2cmintrap_simple,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T058agentauthtrap_simple,   
+      testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/default/T070com2sec_simple,   
+      testing/fulltests/default/T071com2sec6_simple,   
+      testing/fulltests/default/T072com2secunix_simple,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_simple,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_simple,   
+      testing/fulltests/default/T130snmpv1vacmget_simple,   
+      testing/fulltests/default/T131snmpv2cvacmget_simple,   
+      testing/fulltests/default/T132snmpv3vacmget_simple,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_simple,   
+      testing/fulltests/default/T150solarishostcpu_simple,   
+      testing/fulltests/default/T151solarishostdisk_simple,   
+      testing/fulltests/default/T152hostuptime_simple,   
+      testing/fulltests/default/T153solarisswap_simple,   
+      testing/fulltests/default/T160snmpnetstat_simple,   
+      testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/transports/T300udp_simple,   
+      testing/fulltests/transports/T310tcp_simple,   
+      testing/fulltests/transports/T320udpv6_simple,   
+      testing/fulltests/transports/T330tcpv6_simple,   
+      testing/fulltests/transports/T350unix_simple,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_simple,   
+      testing/fulltests/transports/T399alias_simple:
+
+   more missing olducd renames
+
+2010-05-28 22:57  hardaker
+
+   *  testing/RUNTESTS, testing/fulltests/default/T001snmpv1get_olducd, 
+        testing/fulltests/default/T001snmpv1get_simple,   
+      testing/fulltests/default/T014snmpv2cget_olducd,   
+      testing/fulltests/default/T014snmpv2cget_simple,   
+      testing/fulltests/default/T015snmpv2cgetnext_olducd,   
+      testing/fulltests/default/T015snmpv2cgetnext_simple,   
+      testing/fulltests/default/T0160snmpv2cbulkget_olducd,   
+      testing/fulltests/default/T0160snmpv2cbulkget_simple,   
+      testing/fulltests/default/T016snmpv2cgetfail_olducd,   
+      testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_olducd,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_simple,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_olducd,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_simple,   
+      testing/fulltests/default/T019snmpv2cnosuch_olducd,   
+      testing/fulltests/default/T019snmpv2cnosuch_simple,   
+      testing/fulltests/default/T020snmpv3get_olducd,   
+      testing/fulltests/default/T020snmpv3get_simple,   
+      testing/fulltests/default/T021snmpv3getnext_olducd,   
+      testing/fulltests/default/T021snmpv3getnext_simple,   
+      testing/fulltests/default/T0220snmpv3bulkget_olducd,   
+      testing/fulltests/default/T0220snmpv3bulkget_simple,   
+      testing/fulltests/default/T022snmpv3getMD5_olducd,   
+      testing/fulltests/default/T022snmpv3getMD5_simple,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5AES_simple,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_simple,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_simple,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_simple,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_simple,   
+      testing/fulltests/default/T028snmpv3getfail_olducd,   
+      testing/fulltests/default/T028snmpv3getfail_simple,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_simple,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_simple,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_simple,   
+      testing/fulltests/default/T050snmpv3trap_olducd,   
+      testing/fulltests/default/T050snmpv3trap_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_olducd,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_olducd,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T053agentv1trap_olducd,   
+      testing/fulltests/default/T053agentv1trap_simple,   
+      testing/fulltests/default/T054agentv2ctrap_olducd,   
+      testing/fulltests/default/T054agentv2ctrap_simple,   
+      testing/fulltests/default/T055agentv1mintrap_olducd,   
+      testing/fulltests/default/T055agentv1mintrap_simple,   
+      testing/fulltests/default/T056agentv2cmintrap_olducd,   
+      testing/fulltests/default/T056agentv2cmintrap_simple,   
+      testing/fulltests/default/T057trapdauthtest2_olducd,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_olducd,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_olducd,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T058agentauthtrap_olducd,   
+      testing/fulltests/default/T058agentauthtrap_simple,   
+      testing/fulltests/default/T059trapdtraphandle_olducd,   
+      testing/fulltests/default/T059trapdtraphandle_simple,   
+      testing/fulltests/default/T060trapdperl_olducd,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_olducd,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T065agentextend_olducd,   
+      testing/fulltests/default/T065agentextend_simple,   
+      testing/fulltests/default/T070com2sec_olducd,   
+      testing/fulltests/default/T070com2sec_simple,   
+      testing/fulltests/default/T071com2sec6_olducd,   
+      testing/fulltests/default/T071com2sec6_simple,   
+      testing/fulltests/default/T072com2secunix_olducd,   
+      testing/fulltests/default/T072com2secunix_simple,   
+      testing/fulltests/default/T100agenthup_olducd,   
+      testing/fulltests/default/T100agenthup_simple,   
+      testing/fulltests/default/T110agentxget_olducd,   
+      testing/fulltests/default/T110agentxget_simple,   
+      testing/fulltests/default/T111agentxset_olducd,   
+      testing/fulltests/default/T111agentxset_simple,   
+      testing/fulltests/default/T112agentxsetfail_olducd,   
+      testing/fulltests/default/T112agentxsetfail_simple,   
+      testing/fulltests/default/T113agentxtrap_olducd,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_olducd,   
+      testing/fulltests/default/T114agentxagentxtrap_simple,   
+      testing/fulltests/default/T115agentxperl_olducd,   
+      testing/fulltests/default/T115agentxperl_simple,   
+      testing/fulltests/default/T120proxyget_olducd,   
+      testing/fulltests/default/T120proxyget_simple,   
+      testing/fulltests/default/T121proxyset_olducd,   
+      testing/fulltests/default/T121proxyset_simple,   
+      testing/fulltests/default/T122proxysetfail_olducd,   
+      testing/fulltests/default/T122proxysetfail_simple,   
+      testing/fulltests/default/T130snmpv1vacmget_olducd,   
+      testing/fulltests/default/T130snmpv1vacmget_simple,   
+      testing/fulltests/default/T131snmpv2cvacmget_olducd,   
+      testing/fulltests/default/T131snmpv2cvacmget_simple,   
+      testing/fulltests/default/T132snmpv3vacmget_olducd,   
+      testing/fulltests/default/T132snmpv3vacmget_simple,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_olducd,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_olducd,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_olducd,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_simple,   
+      testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T150solarishostcpu_simple,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T151solarishostdisk_simple,   
+      testing/fulltests/default/T152hostuptime_olducd,   
+      testing/fulltests/default/T152hostuptime_simple,   
+      testing/fulltests/default/T153solarisswap_olducd,   
+      testing/fulltests/default/T153solarisswap_simple,   
+      testing/fulltests/default/T160snmpnetstat_olducd,   
+      testing/fulltests/default/T160snmpnetstat_simple,   
+      testing/fulltests/default/T200snmpv2cwalkall_olducd,   
+      testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/olducd_run,   
+      testing/fulltests/support/simple_TESTCONF.sh,   
+      testing/fulltests/support/simple_eval_tools.sh,   
+      testing/fulltests/support/simple_run,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T300udp_simple,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T310tcp_simple,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T320udpv6_simple,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_simple,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T350unix_simple,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T360dtlsudp_simple,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/transports/T361tlstcp_simple,   
+      testing/fulltests/transports/T399alias_olducd,   
+      testing/fulltests/transports/T399alias_simple:
+
+   renamed 'olducd' to 'simple' to put a more positive spin on them
+
+2010-05-28 22:54  hardaker
+
+   * testing/README, testing/RUNFULLTESTS:
+
+   documentation for the test suite
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/tests/test.py:
+
+   revert unintentionanally committed test test
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c, python/netsnmp/tests/test.py:
+
+   free variables again
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   fix walks so that multiple walks terminate properly
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   patch to handle testing of looping of multiple varbinds in a walk
+
+2010-05-28 22:53  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   inital patch to prevent looping walks
+
+2010-05-28 20:53  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   implement cert lookup by filename
+
+2010-05-28 07:02  magfr
+
+   * snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Add const declarations to the disabled versions
+   of the debugging code as well.
+
+2010-05-28 02:12  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   add persistence; check for col mods while row active
+
+2010-05-28 02:11  rstory
+
+   *  agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_dataset.h:
+
+   CHANGES: agentlib: new functions to make stash ptr and newrow
+   available to
+   table_dataset handlers
+   nonews: fix typo; tabs to spaces; use sizeof instead of constant
+
+2010-05-27 18:59  bvassche
+
+   *  include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_client.h,   
+      win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp,   
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Win32 build fixes.
+
+2010-05-27 18:24  bvassche
+
+   * testing/RUNFULLTESTS:
+
+   "make test" without TAP::Harness (was broken by r18802).
+
+2010-05-27 15:15  bvassche
+
+   *  agent/mibgroup/mibII/interfaces.c,   
+      include/net-snmp/library/lcd_time.h,   
+      include/net-snmp/library/md5.h, include/net-snmp/library/scapi.h, 
+        include/net-snmp/library/snmp_debug.h, snmplib/lcd_time.c,   
+      snmplib/md5.c, snmplib/scapi.c, snmplib/snmp_debug.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c:
+
+   Fixed several compiler warnings. Most fixes involved adding the
+   "const" keyword.
+
+2010-05-27 13:52  jsafranek
+
+   * agent/mibgroup/target/snmpTargetAddrEntry.c:
+
+   CHANGES: snmpd: BUG: 2972579: fixed checking of
+   snmpTargetAddrRowStatus SET requests.
+
+2010-05-27 13:41  hardaker
+
+   *  testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_run:
+
+   revert part of 18885: test files should be able to be run by
+   themselves too
+
+2010-05-27 11:19  jsafranek
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      include/net-snmp/data_access/interface.h:
+
+   CHANGES: correctly calculate ifXTable.ifHCInUcastPkts on 32-bit
+   Linux
+   
+   Linux does not provide standalone counter for incoming unicast
+   packets (iucast)
+   - it provides counter of all packets (iall) + separate counter
+   for the multicast
+   ones (imcast). Previous implementation of ifTable read these
+   counters and
+   calculated iucast = iall - imcast *before* these values were
+   expanded into
+   64bits. This produced errors on 32bit systems when iall
+   overflowed to zero and
+   imcast was nozero -> iucast got negative and 'c64 32 bit check
+   failed' error in
+   snmpd log. Now the agent expands these values to 64bits first and
+   *     *then* performs    the calculation, using a new flag. 
+      2010-05-27 08:18  magfr
+
+
+   *  testing/RUNFULLTESTS, testing/RUNTESTS,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_run:
+
+   CHANGES: testing: Move the setting of MIBDIRS from the support
+   script to the drivers since it is needed for the C tests as well.
+
+2010-05-27 08:09  magfr
+
+   * testing/RUNTESTS:
+
+   CHANGES: testing: Use olducd_run, not run_olducd. Change srcdir
+   to refer to the top directory and not the testing subdirectory as
+   that is what is expected in the test scripts.
+
+2010-05-27 05:17  hardaker
+
+   *  testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   warning squashing
+
+2010-05-27 05:16  hardaker
+
+   *  include/net-snmp/library/keytools.h,   
+      include/net-snmp/library/lcd_time.h, snmplib/keytools.c,   
+      snmplib/lcd_time.c:
+
+   more const correctness
+
+2010-05-27 04:18  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   tests for agent-not-known-user-certificates
+
+2010-05-27 04:16  hardaker
+
+   * README.snmpv3:
+
+   reference the itnernal support and related documentation
+
+2010-05-27 04:16  hardaker
+
+   * snmplib/openssl/OPENSSL-LICENSE, snmplib/openssl/README:
+
+   internal OpenSSL support documentation
+
+2010-05-27 04:16  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   NEWS: libnetsnmp: Support for a stream-line stripped down version
+   of internal OpenSSL support using --with-openssl=internal
+
+2010-05-27 04:15  hardaker
+
+   *  include/net-snmp/library/openssl_aes.h,   
+      include/net-snmp/library/openssl_des.h,   
+      include/net-snmp/openssl_md5.h,   
+      snmplib/openssl/openssl_aes_cfb.c,   
+      snmplib/openssl/openssl_aes_local.h,   
+      snmplib/openssl/openssl_des_local.h,   
+      snmplib/openssl/openssl_set_key.c, snmplib/openssl/openssl_spr.h, 
+        snmplib/scapi.c:
+
+   remove more dependencies for external openssl headers
+
+2010-05-27 04:15  hardaker
+
+   *  configure, configure.d/config_os_libs, snmplib/openssl,   
+      snmplib/openssl/openssl_aes_cfb.c,   
+      snmplib/openssl/openssl_aes_core.c,   
+      snmplib/openssl/openssl_aes_local.h,   
+      snmplib/openssl/openssl_cbc_enc.c,   
+      snmplib/openssl/openssl_cfb128.c,   
+      snmplib/openssl/openssl_des_enc.c,   
+      snmplib/openssl/openssl_des_local.h,   
+      snmplib/openssl/openssl_md32_common.h,   
+      snmplib/openssl/openssl_md5.c,   
+      snmplib/openssl/openssl_md5_local.h,   
+      snmplib/openssl/openssl_modes.h,   
+      snmplib/openssl/openssl_ncbc_enc.c,   
+      snmplib/openssl/openssl_set_key.c, snmplib/openssl/openssl_sha.h, 
+        snmplib/openssl/openssl_sha1.c,   
+      snmplib/openssl/openssl_sha_local.h,   
+      snmplib/openssl/openssl_spr.h, snmplib/openssl_aes_cfb.c,   
+      snmplib/openssl_aes_core.c, snmplib/openssl_aes_local.h,   
+      snmplib/openssl_cbc_enc.c, snmplib/openssl_cfb128.c,   
+      snmplib/openssl_des_enc.c, snmplib/openssl_des_local.h,   
+      snmplib/openssl_md32_common.h, snmplib/openssl_md5.c,   
+      snmplib/openssl_md5_local.h, snmplib/openssl_modes.h,   
+      snmplib/openssl_ncbc_enc.c, snmplib/openssl_set_key.c,   
+      snmplib/openssl_sha.h, snmplib/openssl_sha1.c,   
+      snmplib/openssl_sha_local.h, snmplib/openssl_spr.h:
+
+   move openssl code into a subdirectory
+
+2010-05-27 04:13  hardaker
+
+   *  testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T050snmpv3trap_olducd:
+
+   fix testing so it uses multiple types of crypto
+
+2010-05-27 04:13  hardaker
+
+   *  acconfig.h, configure, configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   definitions and files for doing internal crypto support
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/scapi.c:
+
+   include internal aes/des headers
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/openssl_cfb128.c:
+
+   localize
+
+2010-05-27 04:12  hardaker
+
+   * snmplib/openssl_cfb128.c, snmplib/openssl_modes.h:
+
+   inital copies of cfb128 modes from openssl
+
+2010-05-27 04:11  hardaker
+
+   * snmplib/openssl_aes_core.c:
+
+   localize
+
+2010-05-27 04:11  hardaker
+
+   * snmplib/openssl_aes_core.c, snmplib/openssl_aes_local.h:
+
+   initial versions of aes_core.c and aes_locl.h
+
+2010-05-27 04:10  hardaker
+
+   * include/net-snmp/library/openssl_aes.h:
+
+   initial copy of aes.h from openssl
+
+2010-05-27 04:10  hardaker
+
+   * snmplib/openssl_aes_cfb.c:
+
+   initial copy of the openssl aes_cfb.c file
+
+2010-05-27 04:10  hardaker
+
+   * snmplib/openssl_des_enc.c:
+
+   include localized copies of the files
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/scapi.c:
+
+   use internal DES
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/openssl_cbc_enc.c:
+
+   localized copy of the cbc_enc.c file from openssl
+
+2010-05-27 04:09  hardaker
+
+   * snmplib/openssl_spr.h:
+
+   des/spr.h from openssl
+
+2010-05-27 04:08  hardaker
+
+   * snmplib/openssl_des_enc.c:
+
+   added des_enc.c from openssl
+
+2010-05-27 04:08  hardaker
+
+   *  include/net-snmp/library/openssl_des.h,   
+      include/net-snmp/library/openssl_md5.h,   
+      include/net-snmp/library/openssl_sha.h:
+
+   local copies of the openssl headers
+
+2010-05-27 04:07  hardaker
+
+   * include/net-snmp/library/openssl_des.h:
+
+   initial copy of openssl's des.h
+
+2010-05-27 04:07  hardaker
+
+   * snmplib/openssl_ncbc_enc.c, snmplib/openssl_set_key.c:
+
+   localized header files
+
+2010-05-27 04:07  hardaker
+
+   *  snmplib/openssl_des_local.h, snmplib/openssl_ncbc_enc.c,   
+      snmplib/openssl_set_key.c:
+
+   inital copies of some of the openssl DES files
+
+2010-05-27 04:06  hardaker
+
+   * snmplib/keytools.c, snmplib/scapi.c:
+
+   finishing porting of internal auth support
+
+2010-05-27 04:06  hardaker
+
+   * configure, configure.d/config_os_libs, snmplib/Makefile.in:
+
+   add internal crypto files to the check/use list
+
+2010-05-27 04:06  hardaker
+
+   *  snmplib/md32_common.h, snmplib/md5_locl.h,   
+      snmplib/openssl_md32_common.h, snmplib/openssl_md5.c,   
+      snmplib/openssl_md5_local.h, snmplib/openssl_sha1.c,   
+      snmplib/openssl_sha_local.h, snmplib/sha_locl.h:
+
+   localized file names with openssl prefixes
+
+2010-05-27 04:05  hardaker
+
+   *  include/net-snmp/openssl_md5.h, snmplib/md5_locl.h,   
+      snmplib/openssl_md5.c:
+
+   localize the md5 implementation
+
+2010-05-27 04:05  hardaker
+
+   *  snmplib/openssl_sha.h, snmplib/openssl_sha1.c,   
+      snmplib/sha_locl.h:
+
+   completely localize the openssl SHA support
+
+2010-05-27 04:04  hardaker
+
+   * snmplib/openssl_sha.h:
+
+   initial verison of sha.h copy
+
+2010-05-27 04:04  hardaker
+
+   *  snmplib/md32_common.h, snmplib/md5_locl.h, snmplib/openssl_md5.c, 
+        snmplib/openssl_sha1.c, snmplib/sha_locl.h:
+
+   added local copies of the openssl crypto functions
+
+2010-05-27 04:04  hardaker
+
+   * snmplib/keytools.c:
+
+   make use of internal crypto hash functions
+
+2010-05-27 04:03  hardaker
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_os_misc2,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   configure checks for internal-crypto support
+
+2010-05-26 22:17  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_api.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      testing/fulltests/transports/Stlstests:
+
+   properly verify expected server certificates under DTLS; add a
+   new flag in tlsbase to indicate verification has occurred
+
+2010-05-26 21:02  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   compiler warning squashing
+
+2010-05-26 21:02  hardaker
+
+   *  include/net-snmp/library/lcd_time.h,   
+      include/net-snmp/library/scapi.h, snmplib/lcd_time.c,   
+      snmplib/scapi.c:
+
+   add const qualifiers to a few places
+
+2010-05-26 19:46  bvassche
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
+
+   CHANGES: Cygwin: libnetsnmpmibs, libnetsnmphelpers and
+   libnetsnmpagent do now build as a DLL when configured with
+   --enable-shared.
+
+2010-05-26 17:47  bvassche
+
+   * agent/Makefile.in, agent/helpers/Makefile.in:
+
+   NEWS: moved all functions defined in libnetsnmphelpers to
+   libnetsnmpagent. libnetsnmphelpers is now an empty library.
+
+2010-05-26 17:20  bvassche
+
+   *  agent/Makefile.in, agent/bulk_to_next.c,   
+      agent/helpers/Makefile.in, agent/helpers/bulk_to_next.c,   
+      agent/helpers/null.c, agent/helpers/old_api.c, agent/null.c,   
+      agent/old_api.c:
+
+   Reverted r18829 in order to minimize diffs with older branches.
+
+2010-05-25 07:23  magfr
+
+   * testing/fulltests/transports/Stls:
+
+   Tell net-snmp-cert where net-snmp-config is located
+
+2010-05-25 07:14  magfr
+
+   * testing/fulltests/support/clib_build:
+
+   Correct the signature of main. Use #include instead of sourcing
+   to get the code under test in order to get better error messages
+
+2010-05-25 07:11  magfr
+
+   * testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   Add arguments to sprintf statements to make the test work
+
+2010-05-25 07:07  magfr
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c,   
+      testing/fulltests/unit-tests/T002containers_clib.c:
+
+   Remove unused variables and disabled code
+
+2010-05-25 05:20  magfr
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend,   
+      include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/Makefile.depend, snmplib/transports/snmpIPBaseDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c:
+
+   CHANGES: snmplib: Split snmpIPBaseDomain and move the IPv4 parts
+   to IPv4Base and the socket generic parts to SocketBase.
+
+2010-05-24 20:24  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   fix compiler warning; finish tlstmParamsTable lastChanged scalar
+
+2010-05-24 19:28  magfr
+
+   *  testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build:
+
+   Add --external-libs in order to support building the tests on
+   solaris
+
+2010-05-24 13:33  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   argh.. fix fallout from manually (mis)applying patch
+
+2010-05-24 12:59  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmParamsTable,   
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h:
+
+   first pass at tlstmParamsTable
+
+2010-05-24 12:59  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   update defines to match MIB names, per grand-poobah
+
+2010-05-24 12:58  rstory
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c:
+
+   update OID to match upcoming RFC
+
+2010-05-24 11:48  bvassche
+
+   *  agent/Makefile.in, agent/bulk_to_next.c,   
+      agent/helpers/Makefile.in, agent/helpers/bulk_to_next.c,   
+      agent/helpers/null.c, agent/helpers/old_api.c, agent/null.c,   
+      agent/old_api.c:
+
+   CHANGES: libnetsnmpagent, libnetsnmphelpers: moved the functions
+   netsnmp_bulk_to_next_fix_requests(),
+   netsnmp_get_bulk_to_next_handler(), netsnmp_register_null(),
+   netsnmp_register_null_context() and netsnmp_register_old_api()
+   from libnetsnmphelpers to libnetsnmpagent.
+   Notes:
+   - This does not affect backwards compatibility for applications
+   that link with $(net-snmp-config --agent-libs) since this
+   involves linking with both libnetsnmphelpers and libnetsnmpagent.
+   - Functions have been moved between libraries by moving entire
+   source files.
+
+2010-05-24 10:10  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntent.c:
+
+   Use proper string sizes and make sure strings are
+   zero-terminated.
+
+2010-05-24 08:01  bvassche
+
+   *  configure, configure.d/config_os_progs, net-snmp-config.in,   
+      snmplib/Makefile.in:
+
+   CHANGES: Cygwin: libnetsnmp does now build as a DLL when
+   configured with --enable-shared.
+   CHANGES: Cygwin: perl modules do now build (--with-perl-modules).
+   Note: the T060trapdperl_olducd, T061agentperl_olducd and
+   T115agentxperl_olducd tests still fail.
+
+2010-05-23 23:06  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c:
+
+   update filenames/patsh for recent file renames; fix typos
+
+2010-05-23 22:08  magfr
+
+   *  net-snmp-config.in, testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build:
+
+   CHANGES: building: Use the same compiler command and flags for
+   building of tests as for building of the code, thus enabling test
+   of e.g. 32-bit code compiled on a 64-bit platform.
+
+2010-05-23 21:41  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h:
+
+   update include/config file/paths for recent renames
+
+2010-05-23 21:31  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable.c,  
+       agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/tlstmAddrTable_persist.c,
+         agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/tlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/tlstmCertToTSNTable.h,
+         agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable.h:
+
+   rename files for MIB renames
+
+2010-05-23 21:25  rstory
+
+   *  agent/mibgroup/tlstm-mib/snmpTlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable:
+
+   rename directories to match renames in MIB
+
+2010-05-20 08:48  bvassche
+
+   * net-snmp-config.in:
+
+   Swapped link order of -lnetsnmphelpers -lnetsnmpmibs: netsnmpmibs
+   depends on netsnmphelpers and not the other way around.
+
+2010-05-20 08:42  bvassche
+
+   *  apps/snmptrapd_log.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   Fixed more compiler warnings.
+
+2010-05-19 18:26  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix stashing
+
+2010-05-19 18:25  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/unit-tests/T001defaultstore_clib.c,   
+      testing/fulltests/unit-tests/T002containers_clib.c:
+
+   output filenames of failed tests
+
+2010-05-19 18:25  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   wipe trailing comment C marker if it exists
+
+2010-05-19 18:25  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T020hashtests_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   title the SNMPv3 tests
+
+2010-05-19 18:25  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix testing of built titles
+
+2010-05-19 18:24  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   only print failure header if there was at least one
+
+2010-05-19 18:24  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd:
+
+   make descriptive titles work again
+
+2010-05-19 18:24  hardaker
+
+   *  testing/RUNFULLTESTS, testing/fulltests/support/build_capp,   
+      testing/fulltests/support/build_clib,   
+      testing/fulltests/support/capp_build,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/support/olducd_run,   
+      testing/fulltests/support/run_olducd:
+
+   rename files so prefixing is based on the suite name, not file
+   type
+
+2010-05-19 17:52  bvassche
+
+   *  perl/ASN/Makefile.PL, perl/Makefile.PL, perl/Makefile.subs.pl,   
+      perl/OID/Makefile.PL, perl/SNMP/Makefile.PL,   
+      perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL,   
+      perl/agent/Support/Makefile.PL,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/default_store/Makefile.PL:
+
+   CHANGES: Cygwin: perl: building the Perl modules with the Cygwin
+   Perl package is now possible.
+   (Forward-ported r18688 from the V5.5 branch.)
+
+2010-05-19 17:50  bvassche
+
+   * agent/mibgroup/examples/delayed_instance.c:
+
+   Fixed yet another compiler warning.
+
+2010-05-19 12:05  dts12
+
+   *  agent/mibgroup/hardware/fsys.h,   
+      agent/mibgroup/hardware/fsys/fsys_mntctl.c:
+
+   First-draft support for AIX filesystem HAL module (untested)
+
+2010-05-19 11:25  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntent.c:
+
+   Support for Solaris-style 'getmntent' API.
+
+2010-05-19 09:57  dts12
+
+   *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/mnttypes.h:
+
+   Simplify the handling of unknown/unwanted file systems.
+
+2010-05-19 09:30  dts12
+
+   *  agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.h,   
+      agent/mibgroup/host/hrh_filesys.c,   
+      include/net-snmp/agent/hardware/fsys.h:
+
+   Fix missing/broken API declarations.
+
+2010-05-19 08:46  bvassche
+
+   * testing/fulltests/support/run_olducd:
+
+   Made error messages more clear in case of failure or wrong
+   invocation.
+
+2010-05-19 00:01  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   added test for using a certificate signed by a CA certificate
+
+2010-05-18 23:31  tanders
+
+   * testing/Makefile.in:
+
+   make sure we call the right Perl
+
+2010-05-18 20:39  bvassche
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: agent: include local port number in packet dumps. An
+   example:
+   
+   Received 36 byte packet from UDP:
+   [127.0.0.1]:53909->[127.0.0.1]:1161
+   0000: 30 22 02 01 01 04 06 70 75 62 6C 69 63 A1 15 02
+   0".....public...
+   0016: 04 37 F2 D4 9B 02 01 00 02 01 00 30 07 30 05 06
+   .7.........0.0..
+   0032: 01 01 05 00 ....
+   
+   Received SNMP packet(s) from UDP:
+   [127.0.0.1]:53909->[127.0.0.1]:1161
+   GETNEXT message
+   -- ccitt.1
+   
+   Sending 118 bytes to UDP: [127.0.0.1]:53909->[127.0.0.1]:1161
+   0000: 30 74 02 01 01 04 06 70 75 62 6C 69 63 A2 67 02
+   0t.....public.g.
+   0016: 04 37 F2 D4 9B 02 01 00 02 01 00 30 59 30 57 06
+   .7.........0Y0W.
+   0032: 08 2B 06 01 02 01 01 01 00 04 4B 4C 69 6E 75 78
+   .+........KLinux
+   0048: 20 61 73 75 73 20 32 2E 36 2E 33 33 2E 32 2D 73 asus
+   2.6.33.2-s
+   0064: 63 73 74 20 23 31 20 53 4D 50 20 50 52 45 45 4D cst #1 SMP
+   PREEM
+   0080: 50 54 20 53 61 74 20 41 70 72 20 33 20 32 31 3A PT Sat Apr
+   3 21:
+   0096: 31 30 3A 35 38 20 43 45 53 54 20 32 30 31 30 20 10:58 CEST
+   2010
+   0112: 78 38 36 5F 36 34 x86_64
+
+2010-05-18 19:42  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_persist.c, 
+       
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update tlstmAddrTable
+   - deal with hash type properly for get/set and persistence
+   - add count and last changed scalars
+
+2010-05-18 19:08  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c:
+
+   update to offical OID from upcoming rfc
+
+2010-05-18 16:16  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update to official OIDs from upcoming RFC; add count/last changed
+   scalars
+
+2010-05-18 14:56  dts12
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: PATCH: 2001656: Handle null-termination of
+   string values properly.
+   Based on the principles of the patch from Tommy Beadle.
+
+2010-05-18 14:38  dts12
+
+   *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/hardware/fsys/mnttypes.h, agent/mibgroup/host.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,   
+      include/net-snmp/agent/hardware/fsys.h:
+
+   Working(?) HAL-based version of hrFSTable.
+
+2010-05-18 14:12  bvassche
+
+   * snmplib/tools.c:
+
+   Fixed a compiler warning.
+
+2010-05-17 21:03  hardaker
+
+   * include/net-snmp/library/snmp_secmod.h:
+
+   use proper TSM security code (4) now that it's official
+
+2010-05-17 18:43  hardaker
+
+   * testing/fulltests/unit-tests/T002containers_clib.c:
+
+   beginning of a container unit test
+
+2010-05-17 18:43  hardaker
+
+   * include/net-snmp/library/testing.h:
+
+   a basic C-code based test reporting mechanism
+
+2010-05-17 18:42  hardaker
+
+   *  testing/fulltests/unit-tests,   
+      testing/fulltests/unit-tests/T001defaultstore_clib.c:
+
+   basic default_store tests
+
+2010-05-17 18:42  hardaker
+
+   * testing/fulltests/support/build_clib:
+
+   a build system for basic libnetsnmp tests
+
+2010-05-17 18:14  rstory
+
+   * 
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c,
+         include/net-snmp/library/cert_util.h:
+
+   fix fingerprint bin/hex conversion; add/remove cert sec maps via
+   mib now works
+
+2010-05-17 18:13  rstory
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   new function netsnmp_binary_to_hex
+
+2010-05-17 18:13  rstory
+
+   * snmplib/snmptsm.c:
+
+   fprintf(stderr -> DEBUGMSGTL((
+
+2010-05-17 18:12  rstory
+
+   * snmplib/cert_util.c:
+
+   move check for hash type
+
+2010-05-17 16:34  hardaker
+
+   * testing/RUNTESTS:
+
+   make RUNTESTS work outside the sourcedir
+
+2010-05-17 15:37  hardaker
+
+   * testing/Makefile.in, testing/RUNTESTS:
+
+   made a limited run test possible again without perl
+
+2010-05-17 15:32  dts12
+
+   *  win32/mib_module_includes.h, win32/mib_module_inits.h,   
+      win32/net-snmp/agent/mib_module_config.h,   
+      win32/netsnmpmibs/Makefile.in, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Use newer DisMan Event MIB code for MSVC-based builds
+   (in line with all configure-based builds)
+
+2010-05-17 15:23  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   move the return outside the if statement
+
+2010-05-17 15:18  dts12
+
+   *  agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      include/net-snmp/agent/hardware/fsys.h:
+
+   Provide missing public interface to HAL-based filestore module.
+
+2010-05-17 10:41  bvassche
+
+   * win32/transports/snmp_transport_inits.h:
+
+   Follow-up for r18754 (revert r18738): r18754 only partially
+   reverted r18738
+   and hence broke the Win32-build. Finished reversal of r18738 by
+   restoring
+   win32/transports/snmp_transport_inits.h.
+
+2010-05-16 18:17  bvassche
+
+   * ltmain.sh:
+
+   Follow-up for r18726: only pass -fstack-protector* flags to the
+   linker instead of all -f* flags such that it becomes less likely
+   that this modification causes trouble with non-GNU toolchains.
+
+2010-05-16 18:14  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_olducd:
+
+   Made shell code for converting a relative path to an absolute
+   path more
+   robust and converted "${...#...}" construct into echo + cut.
+
+2010-05-16 18:12  bvassche
+
+   *  agent/mibgroup/agent/extend.c, agent/mibgroup/util_funcs.c,   
+      apps/snmptrapd_handlers.c:
+
+   More USING_UCD_SNMP_EXTENSIBLE_MODULE to
+   USING_UTILITIES_EXECUTE_MODULE substitutions, necessary to make
+   test 059 and 065 pass.
+
+2010-05-16 17:32  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   fix tests for checking shutdown of applications to not report
+   false negatives
+
+2010-05-16 12:15  bvassche
+
+   * testing/fulltests/default/T059trapdtraphandle_olducd:
+
+   Made test T059 pass again. This test was recently broken by
+   passing arguments to it with absolute paths instead of relative
+   paths.
+
+2010-05-16 12:14  bvassche
+
+   * testing/fulltests/default/T065agentextend_olducd:
+
+   Added 'SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE'.
+
+2010-05-16 11:42  bvassche
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmp_openssl.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-05-16 11:41  bvassche
+
+   *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+         agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c,
+         apps/sshtosnmp.c:
+
+   Fixed several compiler warnings in old code.
+
+2010-05-16 09:59  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   CHANGES: Win32: winExtDLL: don't trigger a netsnmp_assert() when
+   no extension DLLs have been loaded.
+
+2010-05-15 17:31  tanders
+
+   * testing/RUNFULLTESTS:
+
+   stop-gap fix to unbreak "make test" for the nightly builds
+
+2010-05-15 10:59  bvassche
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
+
+   Reverted r18727 because it caused build errors on Solaris, AIX
+   and HP-UX.
+
+2010-05-15 00:42  hardaker
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/Makefile.depend, snmplib/snmp_transport.c,   
+      win32/build.pl:
+
+   revert r18738 since new transport require dynamicly built header
+   files
+
+2010-05-15 00:40  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   log env variables used to the invoked file
+
+2010-05-14 21:29  hardaker
+
+   * testing/fulltests/support/run_olducd:
+
+   fix script so it can be invoked outside the test environment
+   again
+
+2010-05-14 21:28  hardaker
+
+   * mibs/SNMP-TLS-TM-MIB.txt:
+
+   added the SNMP-TLS-TM-MIB with final IANA assignment slots
+
+2010-05-14 21:27  hardaker
+
+   * snmplib/snmptsm.c:
+
+   use final IANA assigned TSM prefixes
+
+2010-05-14 21:26  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h:
+
+   use final IANA assigned Domain numbers
+
+2010-05-14 21:25  hardaker
+
+   * snmplib/snmp_api.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   set default version and seclevel if tls/dtls
+
+2010-05-14 15:25  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   check rc from secname mapping; clarify comment
+
+2010-05-14 15:22  rstory
+
+   * snmplib/cert_util.c:
+
+   don't use unsorted container; don't free caller's container
+
+2010-05-14 15:22  rstory
+
+   * snmplib/container_binary_array.c:
+
+   add linear_search for unsorted containers
+
+2010-05-14 11:56  bvassche
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/Makefile.depend, snmplib/snmp_transport.c,   
+      win32/build.pl, win32/transports/snmp_transport_inits.h:
+
+   Improved portability by removing the generated file
+   snmplib/transports/snmp_transport_inits.h.
+   Commented out the code in the configure script for generating
+   this header file.
+   Added configure-time code for checking whether the constructors
+   for all configured
+   transports are invoked from snmplib/snmp_transport.c.
+
+2010-05-14 11:00  bvassche
+
+   * README.win32:
+
+   Documentation: updated Cygwin build instructions.
+
+2010-05-14 09:15  bvassche
+
+   *  agent/mibgroup/host/data_access/swinst_null.c,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/cert_util.c, snmplib/snmp_api.c, snmplib/snmp_openssl.c,  
+       snmplib/snmpusm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed several compiler warnings.
+
+2010-05-14 08:50  bvassche
+
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
+
+   Added -no-undefined flag to library link commands such that
+   libtool can build DLLs on Win32.
+   Note: building DLLs on Win32 does not yet work because of the
+   circular dependency between
+   libnetsnmphelpers and libnetsnmpagent
+   (see also
+   http://www.net-snmp.org/wiki/index.php/Library_layering).
+
+2010-05-14 08:42  bvassche
+
+   * ltmain.sh:
+
+   libtool bug fix: also pass flags starting with -f to the linker
+   since these can affect linking. The flag -fstack-protector e.g.
+   triggers inclusion of libssp.
+
+2010-05-14 08:40  bvassche
+
+   *  configure, configure.d/config_modules_lib,   
+      configure.d/config_os_progs:
+
+   CHANGES: building: abort if the file program could not be found,
+   since this is essential for proper operation of libtool.
+   CHANGES: Cygwin: neither compile nor link winpipe.c.
+
+2010-05-13 08:58  bvassche
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Ran autoreconf.
+
+2010-05-12 20:16  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   CHANGES: Linux: builds again with embedded Perl disabled (bug
+   2985915).
+
+2010-05-12 19:47  bvassche
+
+   *  agent/mibgroup/util_funcs/restart.c,   
+      win32/netsnmpmibs/Makefile.in, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Follow-up for r18684: un-break the Win32 MSVC build.
+
+2010-05-12 19:43  bvassche
+
+   * include/net-snmp/types.h:
+
+   Win32: fixed a typo and made indentation consistent.
+
+2010-05-12 19:11  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   construct temp build files in a separate directory
+
+2010-05-12 19:10  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix recently broken old perl functionality
+
+2010-05-12 18:01  hardaker
+
+   * local/net-snmp-cert:
+
+   added a --short option to shorten the show output to minimalistic
+
+2010-05-12 14:14  jsafranek
+
+   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c:
+
+   CHANGES: snmpd: fixed a memory leak in TCP-MIB.
+
+2010-05-12 13:02  jsafranek
+
+   * agent/mibgroup/hardware/sensors/lmsensors_v3.c:
+
+   CHANGES: snmpd: fixed memory leak when reading sensors for
+   LM-SENSORS-MIB.
+
+2010-05-12 12:57  dts12
+
+   * perl/agent/agent.xs:
+
+   Revert revision 18689
+   Latest Win32 builds include support for strtoull.
+
+2010-05-12 12:05  jsafranek
+
+   *  agent/mibgroup/hardware/sensors.h,   
+      configure.d/config_modules_lib, configure.d/config_os_headers:
+
+   CHANGES: building: added detection of lm_sensors version.
+   I am not Autoconf guru, so I hope I got it right. The goal is to
+   define NETSNMP_USE_SENSORS_V3 *before* config_modules_agent
+   processes agent/mibgroup/hardware/sensors.h.
+
+2010-05-12 07:03  magfr
+
+   *  include/net-snmp/library/snmpTLSTCPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h:
+
+   CHANGES: snmplib: Add missing dependencies between transports.
+
+2010-05-12 03:08  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix title generation after change to what srcdir meant
+
+2010-05-12 02:30  hardaker
+
+   * local/net-snmp-cert:
+
+   undo last change which turned out to only cause errors if you had
+   a old .conf file around
+
+2010-05-12 02:13  hardaker
+
+   * local/net-snmp-cert:
+
+   fix v3_ca creation extension name
+
+2010-05-12 02:05  rstory
+
+   * snmplib/cert_util.c:
+
+   keep format version # in cert indexes; don't store hash type
+   string in index;
+
+2010-05-12 02:05  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix inverted conversion call; less verbose default debug
+
+2010-05-12 02:05  rstory
+
+   * snmplib/snmp_parse_args.c:
+
+   fix parsing of -T name/value pairs
+
+2010-05-11 23:33  tanders
+
+   * testing/RUNFULLTESTS:
+
+   bug fixing and better error messages for "make test" with
+   Test::Harness
+   (still doesn't work for me, though)
+
+2010-05-11 22:34  tanders
+
+   * testing/RUNFULLTESTS:
+
+   Do NOT hardcode /usr/bin/perl as the Perl path
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   fix stash file handling
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   long options suck ;-). prefer double dashes for long options to
+   match the rest of the Net-SNMP code base
+
+2010-05-11 20:16  hardaker
+
+   * testing/Makefile.in, testing/RUNFULLTESTS:
+
+   added ability to run only the failed tests from the last run
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   don't force color
+
+2010-05-11 20:16  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   cleanup of older
+
+2010-05-11 20:15  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   Minimally support the older Test::Harness perl module for running
+   the older tests at least
+
+2010-05-11 20:15  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h, snmplib/snmp_api.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   set a default securityName and securityModel if TLS or DTLS is in
+   use on the client side
+
+2010-05-11 20:15  hardaker
+
+   *  include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpusm.h, snmplib/snmp_api.c,   
+      snmplib/snmpusm.c:
+
+   allow security models to perform more of the session setup; moved
+   more USM specific setup into it's setup routine
+
+2010-05-11 18:02  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   fix param to lookup peer cert
+
+2010-05-11 16:10  rstory
+
+   * snmplib/snmp_transport.c:
+
+   allow '-' in fqdn; add debug output for host specific config
+
+2010-05-11 15:46  dts12
+
+   * win32/libsnmp_dll/libsnmp.def:
+
+   Ensure 'netsnmp_read_module' is available for perl build.
+
+2010-05-11 15:44  dts12
+
+   * perl/agent/agent.xs:
+
+   Fix perl build under Windows (strtoull not available)
+
+2010-05-10 07:07  magfr
+
+   *  include/net-snmp/library/snmpSSHDomain.h,   
+      snmplib/transports/snmpSSHDomain.c:
+
+   CHANGES: snmplib: Add missing symbol netsnmp_snmpSSHDomain_len,
+   make netsnmp_snmpSSHDomain const.
+
+2010-05-09 22:03  magfr
+
+   * testing/fulltests/default/T150solarishostcpu_olducd:
+
+   Do not require quotes around the CPU string as that depends on
+   how the agent is configured.
+
+2010-05-09 21:43  magfr
+
+   *  agent/mibgroup/default_modules.h, agent/mibgroup/util_funcs.c,   
+      agent/mibgroup/util_funcs.h, agent/mibgroup/util_funcs/Exit.c,   
+      agent/mibgroup/util_funcs/Exit.h,   
+      agent/mibgroup/util_funcs/restart.c,   
+      agent/mibgroup/util_funcs/restart.h:
+
+   CHANGES: snmpd: Extract the Exit and restart* subroutines from
+   util_func in order to make it possible to build less code for the
+   minimal case.
+
+2010-05-09 16:47  bvassche
+
+   * agent/mibgroup/util_funcs.c:
+
+   Fixed a compiler warning: made sure that the function
+   get_exec_output() returns a value when the preprocessor symbol
+   USING_UCD_SNMP_EXTENSIBLE_MODULE has not been defined.
+
+2010-05-09 16:45  bvassche
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_modules_lib:
+
+   CHANGES: Cygwin: builds now also when the source files are
+   located on a Samba filesystem instead of a local filesystem.
+
+2010-05-09 13:05  magfr
+
+   * include/net-snmp/library/snmp_debug.h:
+
+   Correct the if that tries to figure out if a sufficiently new gcc
+   is in use.
+
+2010-05-09 12:50  magfr
+
+   * apps/snmptrapd_handlers.c:
+
+   Check for the needed module and not some other one.
+   Log the correct missing symbol.
+
+2010-05-09 09:21  magfr
+
+   *  agent/mibgroup/utilities/execute.c,   
+      agent/mibgroup/utilities/execute.h:
+
+   CHANGES: snmpd: utilities/execute do not need anything from
+   util_funcs, so stop depending on it.
+
+2010-05-09 09:12  magfr
+
+   * agent/mibgroup/utilities/execute.c:
+
+   NEWS: snmpd: Removed the unused function xx_tokenize_exec_command
+   from utilities/execute.
+
+2010-05-09 09:01  magfr
+
+   * include/net-snmp/library/snmp_debug.h, snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Replace the debugging functions with dummies
+   when debugging is disabled.
+
+2010-05-09 08:02  magfr
+
+   * testing/fulltests/transports/T300udp_olducd:
+
+   Check that the UDP transport is enabled
+
+2010-05-09 08:01  magfr
+
+   *  testing/fulltests/transports/Stransport,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   Factor out check for mibII/system_mib
+
+2010-05-09 07:59  magfr
+
+   *  testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   Add missing includes
+
+2010-05-08 23:16  magfr
+
+   * testing/RUNFULLTESTS:
+
+   Additionally fix make test for the uncommon case where builddir
+   == srcdir
+
+2010-05-08 22:55  magfr
+
+   *  testing/Makefile.in, testing/RUNFULLTESTS,   
+      testing/fulltests/support/build_capp,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/run_olducd:
+
+   CHANGES: testing: Make it possible to run the test suite from
+   anywhere.
+   Change the -D option to expect the path of the top source
+   directory.
+   Add an -srcdir option that is an alias for -D.
+   Add an -builddir option to designate the directory where the test
+   object is.
+   Put srcdir and builddir in the environment for the test scripts
+   Factor out the grep part of SKIPIF and SKIPIFNOT to ISDEFINED
+   Use more readable keys in the opts hash in RUNFULLTESTS
+   Adjust everything to use srcdir and builddir
+
+2010-05-08 22:42  magfr
+
+   * testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   Use correct argument types
+
+2010-05-08 22:07  magfr
+
+   * Makefile.in:
+
+   Consolidate the test and test-mibs targets.
+   Expose the testall target in the top makefile.
+
+2010-05-08 22:05  magfr
+
+   * snmplib/snmp_transport.c:
+
+   Do not abort when str is NULL as that is a perfectly valid input.
+
+2010-05-08 22:03  magfr
+
+   * testing/fulltests/snmpv3/T010scapitest_capp.c:
+
+   Use correct argument types
+
+2010-05-08 22:02  magfr
+
+   * testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   Add missing newline
+
+2010-05-07 21:11  rstory
+
+   * configure:
+
+   update for new configure.ac
+
+2010-05-07 19:21  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   fix handling of cert algorithm in fingerprints; convert in/out
+   fingerpints
+   from/to hex
+
+2010-05-07 19:21  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   dont specify hash type for fingerprint
+
+2010-05-07 19:21  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c:
+
+   handle fingerprint types; drop san fields from cert struct;
+   consider directory
+   when partnering keys/certs
+
+2010-05-07 19:20  rstory
+
+   * configure.ac:
+
+   move default prompts earlier
+
+2010-05-06 15:40  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   better SAN extraction; tweak dubgus messages; quiet compiler
+   warnings
+
+2010-05-06 15:39  rstory
+
+   * snmplib/cert_util.c:
+
+   reduce cert debug output; debug instead of log_info in dumps
+
+2010-05-06 14:49  dts12
+
+   * snmplib/inet_ntop.c, snmplib/inet_pton.c:
+
+   Don't assume the presence of <string.h>
+   (bring into line with all other occurances)
+
+2010-05-06 14:41  dts12
+
+   * apps/snmptrapd.c, apps/snmptrapd_log.c, snmplib/callback.c:
+
+   CHANGES: Windows: Fix build under MinGW
+   back/forward port of revision 18631
+
+2010-05-05 17:43  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix type in log msg
+
+2010-05-05 17:43  rstory
+
+   * local/net-snmp-cert:
+
+   remove import for unused function
+
+2010-05-04 07:12  magfr
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   Negate reason given from SKIPIF
+
+2010-05-03 22:38  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix len in email cmp; more extract debugging
+
+2010-05-03 22:38  rstory
+
+   * snmplib/cert_util.c:
+
+   copy ocert to addional maps
+
+2010-05-03 14:20  marz
+
+   * local/net-snmp-cert:
+
+   remove dependency on perl module not present in CentOS
+
+2010-05-03 03:49  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   don't access struct internals directly
+
+2010-05-03 03:48  rstory
+
+   *  agent/mibgroup/agent/extend.c, agent/mibgroup/util_funcs.c,   
+      apps/snmptrapd_handlers.c:
+
+   fix compiling with-out-mibmodules=utilities/execute
+
+2010-05-01 19:08  magfr
+
+   * testing/fulltests/default/T150solarishostcpu_olducd:
+
+   Correct the sought string to make the test pass when ok.
+
+2010-05-01 17:15  marz
+
+   * local/net-snmp-cert:
+
+   more consistent treatment of keyUsage, basicConstraints, other
+   x509v3 options
+
+2010-04-30 23:37  marz
+
+   * local/certgen-test.pl:
+
+   lame test script but covers a chunk of the code
+
+2010-04-30 23:00  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   mkinstalldirs instead instead of File::Path
+
+2010-04-30 23:00  hardaker
+
+   *  testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/run_olducd:
+
+   ensure net-snmp-config script can be run from the build dir
+
+2010-04-30 21:31  marz
+
+   * local/net-snmp-cert:
+
+   handle gencert --ca
+
+2010-04-30 21:01  rstory
+
+   * snmplib/cert_util.c:
+
+   add help for certSecName; continue building cert indexes even if
+   we cant save
+   to persistent dir
+
+2010-04-30 20:48  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   fix check count for 822 names in the snmpd.log
+
+2010-04-30 20:48  hardaker
+
+   * snmplib/snmp_openssl.c, testing/fulltests/transports/Stlstests:
+
+   fix malloc unnderlength by 1 error
+
+2010-04-30 20:48  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   comment out the 822 tests; they're broken at the moment
+
+2010-04-30 19:36  marz
+
+   * local/net-snmp-cert:
+
+   don't lose SAN when signing w/ CA
+
+2010-04-30 18:46  hardaker
+
+   * snmplib/cert_util.c:
+
+   make name change to rfc822 from typoed 8220
+
+2010-04-30 18:46  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   added tests to do other subjectAltName mapping
+
+2010-04-30 17:31  marz
+
+   * local/net-snmp-cert:
+
+   fix issues 1,2,4 and -C handling
+
+2010-04-29 03:32  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c:
+
+   update tlstmCertToTSNTable to use cache + cert_util maps
+   container
+
+2010-04-29 03:31  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   check insert return
+
+2010-04-29 03:31  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_binary_array.c:
+
+   NEWS: snmplib: add remove function to container iterator;
+   implement it for
+   binary_array
+
+2010-04-29 03:31  rstory
+
+   * snmplib/container_binary_array.c:
+
+   make sure container sync incremented on sort, insert and remove
+
+2010-04-28 07:20  bvassche
+
+   * snmplib/inet_ntop.c:
+
+   Removed an obsolete comment.
+
+2010-04-28 00:33  hardaker
+
+   * testing/Makefile.in:
+
+   fix makefile for test target
+
+2010-04-28 00:33  hardaker
+
+   *  testing/Makefile.in, testing/RUNFULLTESTS,   
+      testing/fulltests/support/build_capp:
+
+   make the test suite run outside the source directory again.
+
+2010-04-28 00:33  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   deal with out-of-source tree building
+
+2010-04-28 00:32  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests:
+
+   testing to check certificate to securityname mappings and denials
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/transports/Stls:
+
+   created a mapped user
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/support/build_capp:
+
+   generate object code with -g debugging
+
+2010-04-28 00:32  hardaker
+
+   * testing/fulltests/snmpv3/T010scapitest_capp.c:
+
+   more accurate current API usage for scapi code
+
+2010-04-27 21:13  rstory
+
+   * snmplib/cert_util.c:
+
+   fix cert init duplicate call check
+
+2010-04-27 20:58  rstory
+
+   * snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   convert user fingerprint to lower and strip colons; add extern
+   prototype
+   for cert init so we don't need header
+
+2010-04-27 20:15  rstory
+
+   *  include/net-snmp/library/cert_util.h, man/snmpd.conf.5.def,   
+      snmplib/cert_util.c, snmplib/snmp_api.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   separate cert init and cert loading; add certSecName config token
+
+2010-04-27 03:18  rstory
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   merge NETSNMP_FUNCTION and !NETSNMP_FUNCTION assert cases
+
+2010-04-27 03:02  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   lots of new cert functionality
+   - add ssl funcs for cert extensions and ssl cert chains
+   - functions and new netsmp_cert_map struct for looking up cert
+   mappings
+   - add certificate mapping for secname
+   - add code to build cert chains
+   - add subject to cert index cache
+   - rebuild indexes if any error while parsing index
+   - reformat dump output
+   - add NS_CERT_CA allowed_use flag
+   - add subject, issuer and issuer_cert to netsnmp_cert
+   - move cert container setup to its own function
+   - add cert subject name subcontainer
+
+2010-04-27 03:02  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c:
+
+   move ipv6 specific var decl inside ifdef
+
+2010-04-27 03:02  rstory
+
+   *  agent/helpers/table_tdata.c,   
+      include/net-snmp/agent/table_tdata.h:
+
+   CHANGES: agent: tdata helper now saves flags passed during
+   creation; add tdata
+   flag to NOT create the table container
+
+2010-04-27 03:01  rstory
+
+   *  include/net-snmp/library/container.h, snmplib/container.c,   
+      snmplib/container_binary_array.c:
+
+   NEWS: snmplib: add interface for duplicating a container
+   CHANGES: snmplib: container changes: add flags field to container
+   meta-data;
+   chg binary_array container to use container meta-data flags
+
+2010-04-26 22:32  hardaker
+
+   * testing/fulltests/transports/Stlstests:
+
+   added a test to verify that when the transport is configured with
+   a remote certificate fingerprint the connection is denied
+
+2010-04-26 22:32  hardaker
+
+   *  testing/fulltests/transports/Stls,   
+      testing/fulltests/transports/Stlstests,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   added tests for -T flag usage and invalid user usage
+
+2010-04-26 20:54  hardaker
+
+   * testing/fulltests/transports/T399alias_olducd:
+
+   have the alias transport source the right Sv3config file
+
+2010-04-26 20:50  hardaker
+
+   *  testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd:
+
+   working support of TLS/DTLS testing including cert generation
+
+2010-04-26 20:49  hardaker
+
+   * local/net-snmp-cert:
+
+   honor the config dir if specified via -C
+
+2010-04-26 20:49  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   fix realloc call for buffered packets
+
+2010-04-26 20:49  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   proper skip output for reporting reason
+
+2010-04-26 20:49  hardaker
+
+   *  testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c:
+
+   remove trailing whitespace after backslash in macro
+
+2010-04-26 20:48  hardaker
+
+   *  testing/fulltests/transports,   
+      testing/fulltests/transports/Stransport,   
+      testing/fulltests/transports/T300udp_olducd,   
+      testing/fulltests/transports/T310tcp_olducd,   
+      testing/fulltests/transports/T320udpv6_olducd,   
+      testing/fulltests/transports/T330tcpv6_olducd,   
+      testing/fulltests/transports/T350unix_olducd,   
+      testing/fulltests/transports/T360dtlsudp_olducd,   
+      testing/fulltests/transports/T361tlstcp_olducd,   
+      testing/fulltests/transports/T399alias_olducd,   
+      testing/fulltests/transports/test-localhost.cert,   
+      testing/fulltests/transports/test-localhost.priv,   
+      testing/fulltests/transports/test-user.cert,   
+      testing/fulltests/transports/test-user.priv:
+
+   tests for minimally testing all the transports
+
+2010-04-26 20:48  hardaker
+
+   * testing/README:
+
+   minimally document new RUNFULLTESTS script
+
+2010-04-26 20:48  hardaker
+
+   *  testing/T.c, testing/T2.sh, testing/data.keychange-md5,   
+      testing/data.keychange-sha1, testing/data.keychange-sha1-des,   
+      testing/data.kul-md5, testing/data.kul-sha1, testing/misctest.c,  
+       testing/test_keychange.sh, testing/test_kul.sh:
+
+   deleted old files not worth restoring
+
+2010-04-26 20:48  hardaker
+
+   * testing/eval_testlist:
+
+   remove obsolute test list
+
+2010-04-26 20:47  hardaker
+
+   * testing/fulltests/snmpv3/T020hashtests_capp.c:
+
+   a hash-testing .c file I had laying around
+
+2010-04-26 20:47  hardaker
+
+   * testing/Makefile.in:
+
+   make testall target
+
+2010-04-26 20:47  hardaker
+
+   *  testing/RUNFULLTESTS, testing/etimetest.c,   
+      testing/fulltests/snmpv3,   
+      testing/fulltests/snmpv3/T010scapitest_capp.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c,   
+      testing/fulltests/snmpv3/T050etimetest_capp.c,   
+      testing/fulltests/support/build_capp,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/keymanagetest.c, testing/scapitest.c:
+
+   move old C-code tests in place
+
+2010-04-26 20:47  hardaker
+
+   *  testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T153solarisswap_olducd:
+
+   skip solaris comments
+
+2010-04-26 20:46  hardaker
+
+   * testing/Makefile.in:
+
+   fix invocation of RUNFULLTESTS
+
+2010-04-26 20:46  hardaker
+
+   *  testing/Makefile.in, testing/fulltests/default,   
+      testing/fulltests/default/Sv1config,   
+      testing/fulltests/default/Sv2cconfig,   
+      testing/fulltests/default/Sv3config,   
+      testing/fulltests/default/Sv3usmconfigagent,   
+      testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/Sv3usmconfigtrapd,   
+      testing/fulltests/default/Sv3vacmconfig,   
+      testing/fulltests/default/Svacmconfig,   
+      testing/fulltests/default/Svanyconfig,   
+      testing/fulltests/default/T001snmpv1get_olducd,   
+      testing/fulltests/default/T014snmpv2cget_olducd,   
+      testing/fulltests/default/T015snmpv2cgetnext_olducd,   
+      testing/fulltests/default/T0160snmpv2cbulkget_olducd,   
+      testing/fulltests/default/T016snmpv2cgetfail_olducd,   
+      testing/fulltests/default/T017snmpv2ctov1getfail_olducd,   
+      testing/fulltests/default/T018snmpv1tov2cgetfail_olducd,   
+      testing/fulltests/default/T019snmpv2cnosuch_olducd,   
+      testing/fulltests/default/T020snmpv3get_olducd,   
+      testing/fulltests/default/T021snmpv3getnext_olducd,   
+      testing/fulltests/default/T0220snmpv3bulkget_olducd,   
+      testing/fulltests/default/T022snmpv3getMD5_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5AES_olducd,   
+      testing/fulltests/default/T023snmpv3getMD5DES_olducd,   
+      testing/fulltests/default/T024snmpv3getSHA1_olducd,   
+      testing/fulltests/default/T025snmpv3getSHADES_olducd,   
+      testing/fulltests/default/T026snmpv3getSHAAES_olducd,   
+      testing/fulltests/default/T028snmpv3getfail_olducd,   
+      testing/fulltests/default/T030snmpv3usercreation_olducd,   
+      testing/fulltests/default/T035snmpv3trapdusermgmt_olducd,   
+      testing/fulltests/default/T049snmpv3inform_olducd,   
+      testing/fulltests/default/T049snmpv3informauth_olducd,   
+      testing/fulltests/default/T049snmpv3informpriv_olducd,   
+      testing/fulltests/default/T050snmpv3trap_olducd,   
+      testing/fulltests/default/T051snmpv2ctrap_olducd,   
+      testing/fulltests/default/T052snmpv2cinform_olducd,   
+      testing/fulltests/default/T053agentv1trap_olducd,   
+      testing/fulltests/default/T054agentv2ctrap_olducd,   
+      testing/fulltests/default/T055agentv1mintrap_olducd,   
+      testing/fulltests/default/T056agentv2cmintrap_olducd,   
+      testing/fulltests/default/T057trapdauthtest2_olducd,   
+      testing/fulltests/default/T057trapdauthtest3_olducd,   
+      testing/fulltests/default/T057trapdauthtest_olducd,   
+      testing/fulltests/default/T058agentauthtrap_olducd,   
+      testing/fulltests/default/T059trapdtraphandle_olducd,   
+      testing/fulltests/default/T060trapdperl_olducd,   
+      testing/fulltests/default/T061agentperl_olducd,   
+      testing/fulltests/default/T065agentextend_olducd,   
+      testing/fulltests/default/T070com2sec_olducd,   
+      testing/fulltests/default/T071com2sec6_olducd,   
+      testing/fulltests/default/T072com2secunix_olducd,   
+      testing/fulltests/default/T100agenthup_olducd,   
+      testing/fulltests/default/T110agentxget_olducd,   
+      testing/fulltests/default/T111agentxset_olducd,   
+      testing/fulltests/default/T112agentxsetfail_olducd,   
+      testing/fulltests/default/T113agentxtrap_olducd,   
+      testing/fulltests/default/T114agentxagentxtrap_olducd,   
+      testing/fulltests/default/T115agentxperl_olducd,   
+      testing/fulltests/default/T120proxyget_olducd,   
+      testing/fulltests/default/T121proxyset_olducd,   
+      testing/fulltests/default/T122proxysetfail_olducd,   
+      testing/fulltests/default/T130snmpv1vacmget_olducd,   
+      testing/fulltests/default/T131snmpv2cvacmget_olducd,   
+      testing/fulltests/default/T132snmpv3vacmget_olducd,   
+      testing/fulltests/default/T140snmpv1vacmgetfail_olducd,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_olducd,   
+      testing/fulltests/default/T142snmpv3vacmgetfail_olducd,   
+      testing/fulltests/default/T150solarishostcpu_olducd,   
+      testing/fulltests/default/T151solarishostdisk_olducd,   
+      testing/fulltests/default/T152hostuptime_olducd,   
+      testing/fulltests/default/T153solarisswap_olducd,   
+      testing/fulltests/default/T160snmpnetstat_olducd,   
+      testing/fulltests/default/T200snmpv2cwalkall_olducd,   
+      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/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/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix, testing/tests/T100agenthup,   
+      testing/tests/T110agentxget, testing/tests/T111agentxset,   
+      testing/tests/T112agentxsetfail, testing/tests/T113agentxtrap,   
+      testing/tests/T114agentxagentxtrap, 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/test-localhost.cert,   
+      testing/tests/test-localhost.priv, testing/tests/test-user.cert,  
+       testing/tests/test-user.priv:
+
+   NEWS: testing: Brand new test suite desigened to eventually test
+   more functionality, provide for support of unit-tests and support
+   of API tests
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   removed a debugging echo
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   more bug fixes for string searches
+
+2010-04-26 20:43  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   added a new macro to check a trapd count
+
+2010-04-26 20:42  hardaker
+
+   * testing/fulltests/support/olducd_eval_tools.sh:
+
+   use individual output files and fix some tests
+
+2010-04-26 20:42  hardaker
+
+   *  testing/RUNFULLTESTS,   
+      testing/fulltests/support/olducd_eval_tools.sh:
+
+   made existing test suite put out TAP output
+
+2010-04-26 20:42  hardaker
+
+   *  testing/RUNTESTS, testing/TESTCONF.sh,   
+      testing/eval_oneprogram.sh, testing/eval_onescript.sh,   
+      testing/eval_suite.sh, testing/eval_tools.sh, testing/fulltests,  
+       testing/fulltests/support,   
+      testing/fulltests/support/olducd_TESTCONF.sh,   
+      testing/fulltests/support/olducd_eval_tools.sh,   
+      testing/fulltests/support/run_olducd:
+
+   beginning of moving UCD test suite into a larger subdirectory
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   allow running tests that match a regexp
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   summarize tests that failed
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   created the ability to have run_ scripts for executing certain
+   types
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   made the build-script-check routine generic
+
+2010-04-26 20:41  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   support for build scripts
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   provide infrastructure for building and renaming tests
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   more test infrastructure setup
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   support the keyword 'all'
+
+2010-04-26 20:40  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   enable group gathering
+
+2010-04-26 20:39  hardaker
+
+   * testing/RUNFULLTESTS:
+
+   creatino of a new testing harness
+
+2010-04-25 17:37  bvassche
+
+   * README.win32:
+
+   Documentation update.
+
+2010-04-25 15:21  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32: reverted a recent unnecessary modification.
+
+2010-04-25 15:00  marz
+
+   * local/net-snmp-cert:
+
+   handle multiple --san args, check error codes on openssl cmds and
+   die on failure
+
+2010-04-25 14:18  bvassche
+
+   * win32/net-snmp/agent/mib_module_config.h:
+
+   Win32: builds again with SDK support disabled.
+
+2010-04-25 14:18  bvassche
+
+   *  win32/libnetsnmptrapd/Makefile.in, win32/netsnmpmibs/Makefile.in, 
+        win32/snmpd/Makefile.in, win32/snmptrapd/Makefile.in:
+
+   Win32: restored consistency between workspace-build and batch
+   build -- made sure that notification_log.c is only included in
+   the netsnmpmibs project.
+
+2010-04-25 13:58  bvassche
+
+   *  include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      win32/libsnmp_dll/libsnmp.def, win32/net-snmp/net-snmp-config.h,  
+       win32/net-snmp/net-snmp-config.h.in,   
+      win32/transports/snmp_transport_inits.h:
+
+   Win32: fixes for recently introduced build breakage.
+
+2010-04-25 13:51  bvassche
+
+   * win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in:
+
+   Win32: builds again with SDK support disabled.
+
+2010-04-25 13:48  bvassche
+
+   *  include/net-snmp/types.h, snmplib/closedir.c, snmplib/opendir.c,  
+       snmplib/readdir.c, snmplib/winservice.c:
+
+   Made sure that the Win32 MSVC 6 non-SDK build works again.
+
+2010-04-25 13:42  bvassche
+
+   * win32/Configure:
+
+   Removed an obsolete transformation rule.
+
+2010-04-25 12:05  bvassche
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   Made it again possible to disable HAVE_WIN32_PLATFORM_SDK when
+   building via win32/build.bat.
+
+2010-04-23 13:14  marz
+
+   * local/net-snmp-cert:
+
+   added --san DNS:a.b.c handling, help text fixes, other bug fixes.
+   Note multiple --san not supported yet
+
+2010-04-21 22:31  hardaker
+
+   * local/Makefile.in:
+
+   build the .made version of net-snmp-cert
+
+2010-04-21 22:31  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend after moving all the files around
+
+2010-04-21 20:16  rstory
+
+   *  include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/snmp_openssl.h, snmplib/cert_util.c,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   build trust chain for client cert; add subject to index cache;
+   rebuild indexes
+   if any error while parsing index; reformat dump output
+   - add NS_CERT_CA allowed_use flag
+   - add subject, issuer and issuer_cert to netsnmp_cert
+   - move certToTSN_entry to cert_util header
+   - move container setup to its own function
+   - add subject name subcontainer
+   - add netsnmp_openssl_cert_dump_extensions,
+   netsnmp_openssl_cert_issued_by
+
+2010-04-21 16:16  hardaker
+
+   * man/snmpcmd.1.def:
+
+   document the single-dash / snmp.conf / double-dash precidence
+
+2010-04-21 16:15  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document in the snmp.conf file that the tokens can be used for
+   command line applications too
+
+2010-04-21 16:15  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document the file loading order and how to turn off host-specific
+   config
+
+2010-04-21 15:52  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_transport.h, man/snmp.conf.5.def,   
+      snmplib/read_config.c, snmplib/snmp_api.c,   
+      snmplib/snmp_transport.c:
+
+   NEWS: apps: Generic host-specific configuration snmp.conf files
+   are now read. See the HOST-SPECIFIC FILES section of the
+   snmp.conf manual page.
+
+2010-04-20 12:44  jsafranek
+
+   * snmplib/asn1.c:
+
+   CHANGES: snmplib: PATCH: 2971270: refuse to parse ASN.1 tokens
+   with wrong type field.
+   This may yield to problems with third-party applications which
+   may depend on parsing ugly ASN.1 data - we'll see...
+
+2010-04-20 00:12  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   combine remote fingerprint checking and check both sides
+
+2010-04-20 00:05  hardaker
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   if the remote fingerprint is specified, require an exact match
+
+2010-04-19 23:44  hardaker
+
+   *  snmplib/fd_event_manager.c, snmplib/snmp_api.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   fix various minor bugs, especially in output messages
+
+2010-04-19 21:14  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more documentation and prototyping of needed RFC steps
+
+2010-04-19 21:14  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   convert if error check to return immediately so other code can be
+   outdented
+
+2010-04-19 21:13  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more comments from the RFC text
+
+2010-04-18 15:25  bvassche
+
+   *  include/net-snmp/library/snmp_api.h, snmplib/transports,   
+      win32/build.pl, win32/libsnmp/Makefile.in,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp_dll/Makefile.in,   
+      win32/libsnmp_dll/libsnmp_dll.dsp, win32/netsnmpmibs/Makefile.in, 
+        win32/transports, win32/transports/snmp_transport_inits.h:
+
+   Win32: builds again.
+
+2010-04-16 18:53  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   created a function to extract the securityName from the cert
+
+2010-04-16 18:53  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   don't need to set the accept state for TLS (just DTLS)
+
+2010-04-16 18:53  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more TLS comment documentation and steps taken from the RFC
+
+2010-04-16 13:55  marz
+
+   * local/net-snmp-cert:
+
+   numerous fixes, more verbose default output, additive show flags,
+   arbitrary config param handling, better help text
+
+2010-04-16 13:08  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   don't double declare a struct
+
+2010-04-16 03:30  rstory
+
+   * snmplib/cert_util.c:
+
+   cert util fixes
+   - remove unused vars and duplicate code
+   - check prt before free
+   - new func for type from filename
+   - new functions for finding subsets from filename
+   - fix types in key search function but then ifdef if (unused
+   function)
+
+2010-04-15 22:57  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   use a structure reference to predeclare the structure
+
+2010-04-15 21:25  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   correct declaration of the f_open command now requiring returning
+   a transport
+
+2010-04-15 21:02  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove unneeded config container
+
+2010-04-15 21:02  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   copy fingerprint transport information into new tls structure
+   within DTLSUDP so per-transport fingerprints can be specified
+
+2010-04-15 21:01  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   properly check for tlsbase pointers in dtlsudp_send()
+
+2010-04-15 21:01  hardaker
+
+   * configure.d/config_os_libs:
+
+   grep the transport list for TLS not just DTLS for checking for
+   -lssl
+
+2010-04-15 21:01  hardaker
+
+   *  snmplib/snmp_api.c, snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more bug fixes and made TLSTCP work with the -T flag
+
+2010-04-15 21:01  hardaker
+
+   * snmplib/snmp_api.c, snmplib/transports/snmpTLSTCPDomain.c:
+
+   make the f_open call assign the new transport pointer to use (and
+   check if NULL as a failure condition
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c:
+
+   begin work moving DTLS config routine in place
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   pass the entire tlsbase to the client_setup
+
+2010-04-15 21:00  hardaker
+
+   *  include/net-snmp/library/container.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h, snmplib/snmp_api.c, 
+        snmplib/transports/snmpTLSBaseDomain.c:
+
+   starting the storing of config data into the tlsbase
+
+2010-04-15 20:59  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   change client ssl setup to allow for direct fingerprint
+   specification of my/their certs
+
+2010-04-15 20:59  hardaker
+
+   *  agent/snmp_agent.c, include/net-snmp/library/snmpTLSBaseDomain.h, 
+        snmplib/snmp_api.c, snmplib/transports/snmpTLSTCPDomain.c:
+
+   split TLS into creation/close functions for eventual config
+   passing support
+
+2010-04-15 20:59  hardaker
+
+   * include/net-snmp/library/snmp_transport.h, snmplib/snmp_api.c:
+
+   pass transport config data to the transport f_config() function
+
+2010-04-15 20:59  hardaker
+
+   * snmplib/snmp_api.c:
+
+   return NULL on transport config error
+
+2010-04-15 20:58  hardaker
+
+   *  include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_parse_args.c, snmplib/snmp_transport.c:
+
+   NEWS: apps: -T command line flag can be used to configure
+   transports
+
+2010-04-15 20:58  hardaker
+
+   * snmplib/snmp_api.c:
+
+   check transport NULLness before using
+
+2010-04-15 20:58  hardaker
+
+   *  include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      include/net-snmp/types.h, snmplib/snmp_api.c:
+
+   beginning of work to make transports configurable with
+   supplimental configuration data and new calls for f_open/f_config
+
+2010-04-15 20:58  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   added text in comments from future RFC to document the
+   implementation
+
+2010-04-15 18:51  rstory
+
+   * snmplib/cert_util.c:
+
+   mark pem w/key as identity; tweak partner debug; compare file
+   ctime against index too
+
+2010-04-15 17:09  rstory
+
+   * snmplib/cert_util.c:
+
+   use local space to reformat cert for search
+
+2010-04-15 16:55  bvassche
+
+   * win32/net-snmp/agent/mib_module_config.h:
+
+   Partially reverted r18496:
+   - Commented out #define NETSNMP_USE_DLL again in file
+   win32/net-snmp/net-snmp-config.h on the 5.4 branch. This change
+   had been committed unintentionally.
+   - Re-enabled #define
+   USING_NOTIFICATION_LOG_MIB_NOTIFICATION_LOG_MODULE in
+   win32/net-snmp/agent/mib_module_config.h on the trunk and the
+   V5.5 branch. While build.bat reports an error on earlier branches
+   with this symbol enabled, there is no such problem on the trunk
+   or V5.5 branches and hence there was no reason to disable this
+   preprocessor symbol.
+
+2010-04-15 15:08  marz
+
+   * local/Makefile.in:
+
+   add net-snmp-cert to make/install
+
+2010-04-15 10:52  jsafranek
+
+   * testing/tests/T120proxyget, testing/tests/T121proxyset:
+
+   Tests not working for TCP should be skipped also for TCP6.
+
+2010-04-14 18:13  rstory
+
+   * snmplib/cert_util.c:
+
+   fix vars/text from cut-n-paste
+
+2010-04-14 17:45  rstory
+
+   * snmplib/snmp_openssl.c:
+
+   fix comments
+
+2010-04-14 17:45  rstory
+
+   * snmplib/cert_util.c:
+
+   lots of cert updates
+   - change cert subdir searching to match net-snmp-cert
+   - update key type handling
+   - ignore world readable keys
+   - keep type in indexes
+   - tweak cert/key print format
+
+2010-04-14 17:44  rstory
+
+   * local/net-snmp-cert:
+
+   make net-snmp-cert executable
+
+2010-04-14 13:12  jsafranek
+
+   *  testing/tests/Svacmconfig, testing/tests/T120proxyget,   
+      testing/tests/T121proxyset, testing/tests/T122proxysetfail:
+
+   Fixed tests 'Proxy GET/SET support' and 'SNMPv2 vacm denial
+   support' with udp6 transport.
+
+2010-04-14 09:47  dts12
+
+   *  win32, win32/bin, win32/dist, win32/dist/htmlhelp,   
+      win32/dist/installer, win32/dist/scripts, win32/encode_keychange, 
+        win32/lib, win32/libagent, win32/libhelpers,   
+      win32/libnetsnmptrapd, win32/libsnmp, win32/libsnmp_dll,   
+      win32/libucdmibs, win32/local, win32/net-snmp,   
+      win32/net-snmp/agent, win32/net-snmp/library, 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:
+
+   Don't try to SVN-manage the Windows batch build infrastructure
+   (add release, debug, Makefile to the previous ignore list)
+
+2010-04-14 08:16  dts12
+
+   * win32/libsnmp_dll/libsnmp.def:
+
+   Fix Windows batch build using Visual Studio with dynamic linking.
+   Unreferenced symbol introduced by SVN revision 18393
+
+2010-04-14 08:08  dts12
+
+   * win32/net-snmp/agent/mib_module_config.h:
+
+   CHANGES: Win32: Fix batch build using recent versions of Visual
+   Studio.
+   Partial back port of SVN revisions 17573 and 17696.
+
+2010-04-14 01:47  marz
+
+   * local/net-snmp-cert:
+
+   fix perms on created files -rw-------, umask(077)
+
+2010-04-13 22:15  marz
+
+   * local/net-snmp-cert, local/net-snmp-cert.conf:
+
+   fix perms, add --cn/-c, better dates defaults, snmp-tls org_unit,
+   added initial dummy config file
+
+2010-04-13 14:21  marz
+
+   * local/net-snmp-cert:
+
+   fixes for show cmds, cmdline, help
+
+2010-04-13 02:17  rstory
+
+   * snmplib/cert_util.c:
+
+   add support for key+cert in .pem files; misc tweaks
+
+2010-04-10 23:24  tanders
+
+   * snmplib/read_config.c:
+
+   build fix for C89 compilers (e.g. on HP-UX 10.20)
+
+2010-04-10 22:25  rstory
+
+   *  agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/tlstmCertToTSNTable/tlstmCertToTSNTable.h:
+
+   initial cut at tlstmCertToTSNTable
+
+2010-04-10 22:24  rstory
+
+   * include/net-snmp/library/cert_util.h:
+
+   add define of max hash constant
+
+2010-04-10 22:24  rstory
+
+   * agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c:
+
+   use cert util check for fingerprint len/algorithm
+
+2010-04-10 12:59  marz
+
+   * local/net-snmp-cert:
+
+   show cmd fixes
+
+2010-04-09 21:32  marz
+
+   * local/net-snmp-cert:
+
+   fairly functional (non-interactive) - be it known: there are bugs
+
+2010-04-09 20:54  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h:
+
+   merge some table_data.conf changes; remove unused code and a
+   bunch of verbose comments
+
+2010-04-08 14:57  rstory
+
+   * local/mib2c-update:
+
+   use full path
+
+2010-04-08 10:55  jsafranek
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      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/sctp-mib/sctpScalars_common.c,   
+      include/net-snmp/data_access/systemstats.h:
+
+   Check results of calls to netsnmp_c64_check32_and_update and log
+   an error.
+   This allows users to relate various 'c64 32 bit check failed'
+   errors with specific counter.
+
+2010-04-08 01:09  rstory
+
+   * include/net-snmp/agent/table_tdata.h:
+
+   add prototype for new function
+
+2010-04-08 01:05  rstory
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: translate NOSUCH*/ENDOFMIB errors during RESERVE1
+   to NOCREATION
+
+2010-04-08 00:56  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   NEWS: snmpd: table_data/tdata next handler will not be called
+   during get
+   processing if no valid rows are found for the handler
+
+2010-04-08 00:56  rstory
+
+   * agent/helpers/table.c:
+
+   NEWS: snmpd: agent will no longer call table handlers if a set
+   request for
+   the handler has invalid indexes
+   CHANGES: snmpd: don't call cleanup on first request on bad
+   indexes. instead,
+   set actual error later, and free request data sets on first
+   request for sets
+
+2010-04-08 00:56  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   add function to validate fingerprint varbind
+
+2010-04-07 22:56  magfr
+
+   * configure, configure.d/config_modules_lib:
+
+   Solaris tr doesn't support character ranges reliably (see the
+   autoconf manual), change the expression to one that is simple
+   enough to b supported.
+
+2010-04-07 14:05  dts12
+
+   * local/mib2c.table_data.conf:
+
+   Insert the cache helper correctly.
+
+2010-04-07 10:40  rstory
+
+   *  agent/helpers/table_container.c, agent/helpers/table_tdata.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/table_container.h:
+
+   CHANGES: snmplib: add functions to remove list/row data from
+   request list
+
+2010-04-07 10:40  rstory
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   ifdef var decl for vars only used in later ifdef block
+
+2010-04-07 10:40  rstory
+
+   *  include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/snmp-tc.h, snmplib/check_varbind.c,   
+      snmplib/snmp-tc.c:
+
+   CHANGES: snmplib: add function to validate RowStatus and
+   StorageType varbinds
+   - also remove some duplicate code and fix comments indent mangled
+
+2010-04-07 10:39  rstory
+
+   * local/mib2c-update, man/mib2c-update.1.def:
+
+   update man page; fix shell redirect; create example rcfile if
+   missing
+
+2010-04-07 07:15  magfr
+
+   * apps/agentxtrap.c:
+
+   Use NETSNMP_DISABLE_MIB_LOADING instead of DISABLE_MIB_LOADING
+
+2010-04-07 00:38  magfr
+
+   * agent/mibgroup/host/data_access/swinst.h:
+
+   CHANGES: snmpd: Only enable hostSwInst rpm support on linux hosts
+   with librpm. This makes it possible to build on non-rpm linux
+   distributions.
+
+2010-04-07 00:14  magfr
+
+   *  testing/tests/T021snmpv3getnext,   
+      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/T059trapdtraphandle, testing/tests/T100agenthup,   
+      testing/tests/T111agentxset, testing/tests/T112agentxsetfail,   
+      testing/tests/T113agentxtrap, testing/tests/T120proxyget,   
+      testing/tests/T121proxyset, testing/tests/T122proxysetfail,   
+      testing/tests/T141snmpv2cvacmgetfail:
+
+   CHANGES: testing: Change the test suite to work even if mib
+   lookup is disabled.
+
+2010-04-07 00:11  magfr
+
+   * testing/tests/T071com2sec6:
+
+   Check for com2sec6, not com2sec.
+
+2010-04-06 22:51  magfr
+
+   * configure, configure.d/config_modules_lib:
+
+   Move directory creation before the directories are used.
+
+2010-04-06 11:03  dts12
+
+   * FAQ:
+
+   Python is apparently client-side only.
+
+2010-04-06 10:06  dts12
+
+   * agent/snmpd.c:
+
+   Set supplementary groups before changing UID
+   (which probably involves giving up privileges)
+
+2010-04-06 08:57  dts12
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   Document large-disk statistics as latching at 2Tb (rather than
+   wrapping).
+
+2010-04-06 01:52  rstory
+
+   * local/mib2c, man/mib2c.1.def:
+
+   NEWS: mib2c: mib2c can now optionally run sed on generated code
+
+2010-04-06 01:49  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   convert C++ comments to C comments
+
+2010-04-06 01:49  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   move ptr check before prt use
+
+2010-04-06 01:49  rstory
+
+   * snmplib/cert_util.c:
+
+   add filename to debug on new certs; make static func to return
+   mode names
+
+2010-04-06 00:47  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   allow a found fingerprint self-signed cert for now; eventually
+   need to respect the MIB config table
+
+2010-04-06 00:12  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   mkdir snmplib/transports when DNE for building outside the source
+   dir
+
+2010-04-06 00:11  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   remove unused vars
+
+2010-04-06 00:11  hardaker
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   remove unused variable
+
+2010-04-06 00:11  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   error code cleanup for tlsbase_wrapup_recv
+
+2010-04-05 23:12  hardaker
+
+   * snmplib/cert_util.c:
+
+   more better error/debug codes
+
+2010-04-05 23:08  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   more comments from the future-RFC about the implementation; use
+   flags for server/client specification for expansion
+
+2010-04-05 23:08  hardaker
+
+   * snmplib/cert_util.c:
+
+   better error messages for usage constraints
+
+2010-04-05 23:08  hardaker
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   move function protection logic in a top-level check
+
+2010-04-02 16:36  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   fix init ordering
+
+2010-04-02 16:36  hardaker
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c:
+
+   mv tlsbase init function to a proper ctor for auto-calling
+
+2010-04-02 16:36  hardaker
+
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpTCPIPv6Domain.c, 
+        snmplib/transports/snmpUDPIPv6Domain.c:
+
+   CHANGES: generate the transport initialization function list
+   dynamically and use it
+
+2010-04-02 16:35  hardaker
+
+   *  configure, configure.d/config_modules_lib,   
+      snmplib/snmpAAL5PVCDomain.c, snmplib/snmpAliasDomain.c,   
+      snmplib/snmpCallbackDomain.c, snmplib/snmpDTLSUDPDomain.c,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpIPXDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpIPv6BaseDomain.c,   
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c,   
+      snmplib/snmpSocketBaseDomain.c, snmplib/snmpTCPBaseDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpTLSBaseDomain.c, snmplib/snmpTLSTCPDomain.c,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c, snmplib/transports,   
+      snmplib/transports/snmpAAL5PVCDomain.c,   
+      snmplib/transports/snmpAliasDomain.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPBaseDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpIPv6BaseDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpSTDDomain.c,   
+      snmplib/transports/snmpSocketBaseDomain.c,   
+      snmplib/transports/snmpTCPBaseDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   CHANGES: moved transport code into a separate subdirectory in
+   snmplib
+
+2010-04-02 09:02  magfr
+
+   * agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c:
+
+   Do not attempt to check sizeof void to obtain the amount of
+   memory to copy.
+
+2010-04-01 17:11  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      include/net-snmp/library/cert_util.h:
+
+   instead of fwd declares, require other header
+
+2010-04-01 17:10  rstory
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   fix compiler warning
+
+2010-04-01 17:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   remove outdated debug msg
+
+2010-04-01 17:09  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   use certapi to find certs/keys
+
+2010-04-01 14:40  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   register extraX509SubDir token
+
+2010-04-01 14:18  rstory
+
+   * local/mib2c.table_data.conf:
+
+   check ptr before use
+
+2010-04-01 14:18  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   check ptr before use
+
+2010-04-01 13:13  rstory
+
+   *  agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_internal.h,
+        
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable_persist.c:
+
+   add persistent storage; token for creating entries in snmpd.conf;
+   fix index
+
+2010-04-01 13:12  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/cert_util.c:
+
+   NEWS: snmplib: new certificate api to support tls/dtls
+
+2010-04-01 13:12  rstory
+
+   * include/net-snmp/library/snmp_openssl.h, snmplib/snmp_openssl.c:
+
+   CHANGES: add functions to get fingerprint from cert and log
+   openssl errs
+
+2010-04-01 12:46  rstory
+
+   * include/net-snmp/library/snmp_debug.h:
+
+   fix typo
+
+2010-04-01 10:33  bvassche
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   Builds again with pre-C90 compilers.
+
+2010-04-01 10:01  rstory
+
+   * local/mib2c.table_data.conf:
+
+   CHANGES: mib2c: table_data template enhancements
+   - add error checks during table init
+   - create cache earlier so we can bail on failure
+   - add option to create/delete row w/out adding/removing from
+   container
+
+2010-04-01 10:00  rstory
+
+   * include/net-snmp/agent/agent_read_config.h:
+
+   add helpful param names as hints in prototype
+
+2010-04-01 10:00  rstory
+
+   * agent/helpers/table_tdata.c:
+
+   search for container specific container before generic
+
+2010-04-01 10:00  rstory
+
+   *  include/net-snmp/library/dir_utils.h,   
+      include/net-snmp/library/file_utils.h, snmplib/dir_utils.c,   
+      snmplib/file_utils.c:
+
+   NEWS: snmplib: enhance file utils and dir utils
+   - add optional stats struct to netsnmp_file
+   - generalize dir container filter, add context to callback
+   - add option to store netsnmp_files (w/stats) in container
+   instead of just name
+
+2010-04-01 10:00  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_binary_array.c:
+
+   add prototype to header; check ptr before dereferencing
+
+2010-03-31 15:34  jsafranek
+
+   *  local/Makefile.in, local/snmp-bridge-mib, man/Makefile.in,   
+      man/snmp-bridge-mib.1, mibs/BRIDGE-MIB.txt, mibs/Makefile.in,   
+      mibs/Makefile.mib:
+
+   NEWS: misc: PATCH: 2952708: from Jens Osterkamp: Added Perl
+   implementation of BRIDGE-MIB
+
+2010-03-31 02:12  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c:
+
+   proper packet labeling for DTLSUDP
+
+2010-03-31 02:11  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   use common context creation code
+
+2010-03-30 23:24  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   change TLS method to TLSv1 from SSLv23
+
+2010-03-30 23:23  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   move more common data and functionality into the TLS base
+
+2010-03-30 23:20  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   minor TLS code cleanup
+
+2010-03-30 20:28  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   rework if() wrapping for less confusion in error handling
+
+2010-03-30 20:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   code consolidation in start_new_cached_connectio
+
+2010-03-30 20:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   rename generic 'bio' pointer to 'read_bio' for better readability
+
+2010-03-30 20:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   move buffered data creation to a separate function for reuse
+
+2010-03-30 17:52  marz
+
+   * local/net-snmp-cert:
+
+   initial cert gen wrapper script - not working
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   clean up error output so it doesn't report want_read and
+   want_write errors
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   renaming of sending function for clarity and check one more
+   location for needed outgoing packets
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   added dtlsudp tracing tokens
+
+2010-03-30 17:27  hardaker
+
+   * include/net-snmp/library/snmp_debug.h:
+
+   CHANGES: added a new DEBUGTRACETOK() macro
+
+2010-03-30 17:27  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   better comments and more work on sending buffered data in the
+   right spots
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   fix arguments to get_commonName
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   beginning of caching of packets before they can be sent via DTLS
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   handle SSL_WANT_READ/WRITE better; still need to buffer outgoing
+   write data
+
+2010-03-30 17:26  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   minor change to output error printing
+
+2010-03-29 15:20  dts12
+
+   * snmplib/vacm.c:
+
+   NEWS: snmpd: Fix handling of multiple matching VACM entries.
+   (Use the "best" match, rather than the first one).
+   Reported by Adam Lewis.
+   Note that this could potentially affect the behaviour of
+   existing access control configurations.
+
+2010-03-29 15:16  bvassche
+
+   * perl/agent/agent.xs:
+
+   CHANGES: perl:
+   NetSNMP::agent::netsnmp_request_infoPtr::getValue(): don't return
+   a pointer to a buffer on the stack. How can this have worked
+   reliably ??
+   CHANGES: perl:
+   NetSNMP::agent::netsnmp_request_infoPtr::setValue(),
+   ASN_COUNTER64: fixed bug that could cause this method to fail
+   even when a valid number was provided.
+
+2010-03-29 15:15  dts12
+
+   * snmplib/snmpusm.c:
+
+   CHANGES: snmplib: Fix agent crash when sending encrypted SNMPv3
+   traps.
+   Reported by Srikapilan Gandhi
+
+2010-03-29 12:46  bvassche
+
+   * perl/SNMP/t/startagent.pl:
+
+   Catch stderr on Windows too.
+
+2010-03-29 11:48  bvassche
+
+   * perl/agent/agent.xs:
+
+   Builds again with pre-C90 compilers.
+
+2010-03-29 11:19  bvassche
+
+   *  include/net-snmp/library/snmp_api.h, perl/OID/OID.xs,   
+      perl/SNMP/SNMP.xs, perl/agent/agent.xs:
+
+   CHANGES: perl: fixed a memory leak triggered by destroying a
+   NetSNMP::agent::netsnmp_handler_registration object.
+   CHANGES: perl: fixed a memory leak triggered by failure of
+   creating a NetSNMP::OID object.
+   CHANGES: perl: fixed a memory leak triggered by the
+   NetSNMP::OID::gettable() subroutine.
+   CHANGES: perl: fixed an out-of-bounds array access triggered by
+   the implementation of NetSNMP::SNMP.
+   CHANGES: perl: fixed a memory leak triggered by a PDU processing
+   error in NetSNMP::SNMP.
+   CHANGES: perl: fixed memory leaks triggered by creating an SNMPv3
+   session via NetSNMP::SNMP.
+   
+   Also fixed the uninitialized variable accesses triggered by
+   adding a varbind to a PDU via NetSNMP::SNMP introduced a few days
+   ago.
+   
+   The bugs mentioned above have been found by inspecting the output
+   of the following shell command:
+   cd perl && valgrind --trace-children=yes --leak-check=full make
+   test
+
+2010-03-29 10:59  bvassche
+
+   * perl/SNMP/t/startagent.pl:
+
+   Switched back to the previous way of starting processes
+   asynchronously because it is more reliable.
+
+2010-03-29 09:27  bvassche
+
+   * perl/SNMP/t/startagent.pl:
+
+   Do not only save snmpd / snmptrapd logs but also the stdout /
+   stderr output generated by these processes.
+
+2010-03-28 16:09  bvassche
+
+   * perl/SNMP/t/startagent.pl:
+
+   Changes in perl/SNMP/t/startagent.pl:
+   - Added command-line option -d for snmpd and snmptrapd.
+   - snmpd and snmptrapd output is now saved to a log file (one per
+   test).
+   - Rewrote Perl code for starting the snmpd/snmptrapd processes
+   such that the same code works on Unix and on Windows.
+
+2010-03-28 13:37  bvassche
+
+   *  include/net-snmp/library/snmp_api.h, snmplib/tools.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmplib: added the functions netsnmp_malloc(),
+   netsnmp_calloc(), netsnmp_realloc(), netsnmp_strdup() and
+   netsnmp_free().
+   CHANGES: Win32: snmplib: removed the troublesome #define malloc
+   netsnmp_malloc etc. This means that when calling functions from
+   the Net-SNMP DLL from C or C++ code that is being linked against
+   another version of the MSVC runtime DLL than the Net-SNMP DLL,
+   and when allocating memory that will be freed by the Net-SNMP
+   DLL, you will either have to call the Net-SNMP memory allocation
+   functions explicitly or redefine malloc() etc. yourself.
+
+2010-03-28 12:46  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   Fixed a recently reintroduced compiler warning.
+
+2010-03-27 18:42  bvassche
+
+   * Makefile.in:
+
+   Added a check for invocation of calloc() from XSUBs.
+
+2010-03-26 19:16  bvassche
+
+   *  include/net-snmp/library/snmp_api.h, perl/OID/OID.xs,   
+      perl/SNMP/SNMP.xs, perl/TrapReceiver/TrapReceiver.xs:
+
+   Follow-up for r18368 and r18369: made sure that the Net-SNMP Perl
+   extensions compile without triggering preprocessor warnings about
+   redefining malloc etc. nor trigger "Free to wrong pool" errors on
+   Windows.
+
+2010-03-26 14:44  bvassche
+
+   *  include/net-snmp/library/snmpIPBaseDomain.h,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c:
+
+   Refactoring: introduced a new function:
+   netsnmp_set_non_blocking_mode().
+
+2010-03-26 11:58  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/utilities/execute.c,  
+       apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmptest.c, apps/snmptrapd_handlers.c, apps/snmptrapd_log.c, 
+        snmplib/int64.c, snmplib/mib.c, snmplib/parse.c,   
+      snmplib/read_config.c, snmplib/snmp_logging.c,   
+      snmplib/snmp_parse_args.c, snmplib/snmpv3.c,   
+      snmplib/text_utils.c:
+
+   Fixed compiler warnings about using variables of type char as an
+   array subscript. Note: as far as I know these warnings are only
+   reported when using the Cygwin glibc headers.
+
+2010-03-26 10:41  bvassche
+
+   * snmplib/strtoull.c:
+
+   Added missing #include directive (on Windows MSVC was complaining
+   about size_t while processing <net-snmp/library/system.h>).
+
+2010-03-25 20:07  bvassche
+
+   * agent/mibgroup/agentx/agentx_config.c:
+
+   CHANGES: agentx: changed default TCP target from 0.0.0.0:705 to
+   localhost:705. This is not only a more secure choice but it also
+   makes it possible on Windows systems to let an AgentX subagent
+   connect to an AgentX master agent running on the same system
+   without having to set the variable NETSNMP_DS_AGENT_X_SOCKET.
+
+2010-03-25 16:11  bvassche
+
+   *  perl/OID/OID.xs, perl/SNMP/SNMP.xs,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/agent/agent.xs:
+
+   CHANGES: Win32: perl: fixed several "Free to wrong pool" errors.
+   Note: since calloc() is not redefined in <CORE/XSUB.h> using
+   calloc() directly or indirectly leads to "Free to wrong pool"
+   errors, at least on Windows.
+
+2010-03-25 16:04  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: building: made building more silent by not
+   redefining malloc() or free() during compilation of Perl
+   extensions (resulted in warnings about malloc() / free()
+   redefinition in the Perl header CORE/XSUB.h).
+
+2010-03-25 15:06  bvassche
+
+   *  include/net-snmp/library/system.h, perl/SNMP/SNMP.xs,   
+      perl/agent/agent.xs:
+
+   CHANGES: BUG: 2969872: made sure that SOCK_STARTUP is invoked
+   before init_agent() on Windows.
+
+2010-03-25 13:39  jsafranek
+
+   *  apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/main.c, apps/snmpset.c, apps/snmpstatus.c,   
+      apps/snmptable.c, apps/snmptest.c, apps/snmptrap.c,   
+      apps/snmpusm.c, apps/snmpvacm.c, apps/snmpwalk.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   Use macros instead of magic numbers as netsnmp_parse_args return
+   codes.
+
+2010-03-25 13:30  bvassche
+
+   *  win32/Configure, win32/libsnmp_dll/libsnmp.def,   
+      win32/libsnmp_dll/libsnmp.def.in:
+
+   CHANGES: Win32: building: simplified the build process by
+   removing the file win32/libsnmp_dll/libsnmp.def.in. Which IPv6
+   functions are exported from netsnmp.dll is now determined by
+   which of the functions in this DLL have been declared as
+   NETSNMP_IMPORT.
+
+2010-03-24 20:11  rstory
+
+   * snmplib/snmp_enum.c:
+
+   don't use passed ptr as temp var; use snmp_enum_lists in init
+   test
+
+2010-03-24 20:10  rstory
+
+   * include/net-snmp/library/default_store.h:
+
+   add NETSNMP_DS_LIB_CERT_EXTRA_SUBDIR
+
+2010-03-24 20:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c, snmplib/snmp_api.c:
+
+   move cert init earlier (have tls_bootstrap call it)
+
+2010-03-24 20:10  rstory
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   fix compiler warnings; add cert debug msgs in server setup; free
+   ssl log data
+
+2010-03-24 10:47  jsafranek
+
+   *  apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/main.c, apps/snmpset.c, apps/snmpstatus.c,   
+      apps/snmptable.c, apps/snmptest.c, apps/snmptrap.c,   
+      apps/snmpusm.c, apps/snmpvacm.c, apps/snmpwalk.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   CHANGES: apps: return nozero exit code when parsing of certain
+   parameter fails.
+   E.g. '-A' parameter with too short passphrase or Ku key
+   generation in general.
+
+2010-03-24 07:11  magfr
+
+   * apps/agentxtrap.c:
+
+   Correct the type of the id/description of the Open-PDU.
+
+2010-03-22 18:29  bvassche
+
+   * Makefile.in:
+
+   Updates for "make checks":
+   - Made sure that exit code 0 is generated when the check is
+   successful and that
+   exit code 1 is generated when the check failed.
+   - Made "makefilecheck" skip Subversion bookkeeping files and also
+   the makefile
+   that contains "makefilecheck".
+
+2010-03-22 16:10  dts12
+
+   * mibs/NET-SNMP-PASS-MIB.txt:
+
+   Fix typo in default IpAddress value
+   (See Bug #2972141)
+
+2010-03-22 15:44  rstory
+
+   *  Makefile.in, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/winExtDLL.c, agent/snmp_agent.c,   
+      apps/snmpnetstat/main.c, snmplib/callback.c,   
+      snmplib/read_config.c, snmplib/strtok_r.c, snmplib/strtoull.c:
+
+   change all assert() to netsnmp_assert(); add assertcheck to top
+   level makefile
+
+2010-03-22 15:24  bvassche
+
+   * mibs/UCD-DISKIO-MIB.txt:
+
+   Follow-up for r18349: added missing comma such that it is again
+   possible to compile UCD-DISKIO-MIB.
+
+2010-03-22 14:36  dts12
+
+   * agent/snmpd.c, snmplib/snmp_parse_args.c:
+
+   Fix build when MIB loading is disabled (broken by SVN revision
+   18341)
+   Report default MIB path for client apps too.
+
+2010-03-22 13:59  dts12
+
+   *  man/snmp_api_errstring.3, man/snmp_close.3, 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_perror.3, man/snmp_timeout.3:
+
+   CHANGES: man: BUG: 2972860: Update broken references
+
+2010-03-22 13:49  dts12
+
+   *  mibs/UCD-DISKIO-MIB.txt, mibs/UCD-DLMOD-MIB.txt,   
+      mibs/UCD-IPFILTER-MIB.txt, mibs/UCD-SNMP-MIB.txt:
+
+   CHANGES: mibs: BUG: 2973890: Fix imports, DiskIOEntry list and
+   revision histories
+
+2010-03-22 11:55  bvassche
+
+   * agent/mibgroup/winExtDLL.c, include/net-snmp/library/snmp_api.h:
+
+   Win32, winExtDLL: solved the mystery of "ASN type zero". The
+   winExtDLL code does now no longer trigger conversions of Windows
+   ASN varbinds with ASN type zero. Note: this code change does not
+   change the agent behavior.
+
+2010-03-20 20:21  bvassche
+
+   *  include/net-snmp/library/mib.h,   
+      include/net-snmp/library/read_config.h:
+
+   Builds again with MSVC.
+
+2010-03-20 20:20  bvassche
+
+   * agent/mibgroup/ucd-snmp/loadave.c:
+
+   Added a trailing backslash (should have been added in the
+   previous commit).
+
+2010-03-20 19:36  bvassche
+
+   *  agent/agent_registry.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsDebug.c,   
+      agent/mibgroup/agent/nsLogging.c, agent/mibgroup/agentx/master.c, 
+       
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+         agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/interfaces.c,  
+       agent/mibgroup/mibII/route_write.c,   
+      agent/mibgroup/mibII/vacm_conf.c, agent/mibgroup/misc/ipfwacc.c,  
+       agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c,
+         agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+         agent/mibgroup/util_funcs.c, agent/snmpd.c,   
+      apps/snmpnetstat/route.c, apps/snmptrapd.c,   
+      include/net-snmp/agent/table_dataset.h, include/net-snmp/types.h, 
+        snmplib/snmpIPv6BaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv6Domain.c, snmplib/system.c, snmplib/tools.c,   
+      snmplib/winpipe.c, snmplib/winservice.c:
+
+   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.
+
+2010-03-20 19:16  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Fixed the compiler warnings reported by gcc (MinGW).
+
+2010-03-20 19:05  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for sigprocmask.
+
+2010-03-20 09:14  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Refactoring: moved duplicated code into a new function.
+
+2010-03-19 22:56  dts12
+
+   * agent/mibgroup/mibII/vacm_conf.c, agent/snmpd.c, snmplib/parse.c:
+
+   Report MIB and config directories search paths on errors
+   (and in the help message)
+
+2010-03-19 13:12  bvassche
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: made the error message that is logged when
+   duplicate registration is attempted more detailed.
+   
+   An example:
+   (before)
+   duplicate registration (mibII/snmp,
+   C:\WINDOWS\System32\snmpmib.dll)
+   handler registration failed.
+   (after)
+   duplicate registration: MIB modules mibII/snmp and
+   C:\WINDOWS\System32\snmpmib.dll (oid .1.3.6.1.2.1.11).
+   handler registration failed.
+
+2010-03-19 12:40  bvassche
+
+   *  agent/mibgroup/winExtDLL.c, win32/libsnmp_dll/libsnmp.def,   
+      win32/libsnmp_dll/libsnmp.def.in:
+
+   CHANGES: Win32: winExtDLL: multiple varbind set requests are now
+   processed correctly.
+   CHANGES: Win32: winExtDLL: made error codes in SNMP response PDUs
+   as RFC-compliant as possible.
+   CHANGES: Win32: winExtDLL: if loading an extension DLL fails, the
+   reason why loading failed is now logged.
+   CHANGES: Win32: winExtDLL: fixed a memory leak that occurred when
+   SnmpExtensionQuery(Ex) failed. This memory leak has been found
+   via source reading. Note: it is not clear whether it was possible
+   to trigger this memory leak. This leak is certainly not triggered
+   by every request for which a response with non-zero error status
+   is sent back.
+
+2010-03-18 16:29  rstory
+
+   *  agent/mibgroup/agent/nsLogging.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
+
+   keep count of enabled logs; use this count to determine when to
+   log to stderr
+
+2010-03-18 16:28  rstory
+
+   *  apps/snmptranslate.c, apps/snmptrapd.c, snmplib/cert_util.c,   
+      snmplib/snmp_logging.c, snmplib/snmp_parse_args.c:
+
+   NEWS: snmplib: new snmp token logOption allows specifying log
+   destinations vi conf files
+   - if stderr log enabled because of no log destination, turn it
+   off when a
+   log destination is enabled
+   - don't call netsnmp_enable_stderrlog() from apps anymore
+
+2010-03-18 15:31  rstory
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv4BaseDomain.c:
+
+   udp transport inheritance tweaks
+   - move basic udp recvfrom/sendto code from UDPDomain to
+   UDPBaseDomain
+   - tweak upd recvfrom/sendto to call udpbase verstion
+   - tweak udpipv4 recvfrom/sendto to call udpbase version
+   - also fixed netsnmp_ipv4_* -> netsnmp_udpipv4_*
+   - tweak DTLSUDPDomain ot use udpbase_* instead of udp_*
+
+2010-03-18 15:21  rstory
+
+   * include/net-snmp/library/cert_util.h, snmplib/snmp_api.c:
+
+   protect cert header and init call with ifdefs
+
+2010-03-17 19:01  rstory
+
+   * snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSTCPDomain.c:
+
+   use new utility routine for cert names
+
+2010-03-17 19:01  rstory
+
+   * snmplib/cert_util.c:
+
+   move snmp_openssl header after openssl headers
+
+2010-03-17 19:00  rstory
+
+   * include/net-snmp/library/snmp_openssl.h, snmplib/snmp_openssl.c:
+
+   add routines to pull/dump names from X509 certs
+
+2010-03-17 19:00  rstory
+
+   * snmplib/cert_util.c:
+
+   use enum lists to manage directory indexes
+
+2010-03-17 19:00  rstory
+
+   * snmplib/snmp_enum.c:
+
+   initialize static storage before use; protect enum init from
+   multiple calls
+
+2010-03-17 18:54  rstory
+
+   * README.agent-mibs:
+
+   add info about new tsm/tls mibs
+
+2010-03-17 18:54  rstory
+
+   * snmplib/snmpTLSBaseDomain.c, snmplib/snmp_api.c:
+
+   move cert init to snmp init
+
+2010-03-17 13:37  bvassche
+
+   * mibs/NET-SNMP-AGENT-MIB.txt, mibs/NET-SNMP-EXTEND-MIB.txt:
+
+   Updated MIB revision history.
+
+2010-03-17 13:29  bvassche
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: fixed one leak-at-exit.
+
+2010-03-17 12:44  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   CHANGES: BUG: 2971257: Fixed winExtDLL handling of multi-varbind
+   getNext requests with OIDs in reverse lexicographical order.
+
+2010-03-17 10:25  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   More winExtDLL debug output tuning.
+
+2010-03-16 19:31  bvassche
+
+   * mibs/NET-SNMP-AGENT-MIB.txt:
+
+   Compiles now with MIB compilers that do not recognize a double
+   dash as the end of a MIB comment.
+
+2010-03-16 19:27  bvassche
+
+   * mibs/NET-SNMP-EXTEND-MIB.txt:
+
+   Fixed two syntax errors.
+
+2010-03-16 19:18  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   CHANGES: Win32: winExtDLL: fixed a bug in getNext handling that
+   could cause the MIB output to be truncated.
+
+2010-03-16 18:50  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Made winExtDLL debug output more detailed.
+
+2010-03-16 15:24  bvassche
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h:
+
+   Made sure that C++ programs that include Net-SNMP header files
+   compile again.
+
+2010-03-15 07:20  magfr
+
+   * agent/helpers/instance.c:
+
+   Make it compile with --disable-deprecated again.
+
+2010-03-15 07:19  magfr
+
+   * agent/helpers/debug_handler.c:
+
+   Disable all the printing if debug output is off.
+
+2010-03-15 00:17  tanders
+
+   * perl/TrapReceiver/TrapReceiver.xs, perl/agent/agent.xs:
+
+   fix compiler warnings regarding printf format
+
+2010-03-15 00:07  tanders
+
+   * 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+         agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   fix compiler warnings regarding printf format
+
+2010-03-14 21:05  rstory
+
+   * agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   make sure header ifdef name is unique
+
+2010-03-14 21:04  rstory
+
+   *  agent/mibgroup/host/data_access/swinst.h,   
+      agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   add missing init/shutdown prototypes to fix compiler warnings
+
+2010-03-14 21:03  rstory
+
+   * snmplib/data_list.c:
+
+   move debug message earlier
+
+2010-03-14 21:02  rstory
+
+   *  include/net-snmp/library/container.h,   
+      snmplib/container_list_ssll.c:
+
+   add prototype for netsnmp_init_container; fix compler warning
+
+2010-03-14 20:51  magfr
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   Correct netsnmp_assert_or_return and netsnmp_assert_or_msgreturn
+   for the NETSNMP_NO_DEBUGGING case
+
+2010-03-14 19:10  rstory
+
+   *  include/net-snmp/library/cert_util.h, snmplib/cert_util.c,   
+      snmplib/snmpTLSBaseDomain.c:
+
+   rename cert init/shutdown funcs; only compile cert_utils if
+   using/have SSL; init certs from tls base
+
+2010-03-14 19:09  rstory
+
+   * snmplib/cert_util.c:
+
+   call netsnmp_init_openssl instead of netsnmp_init_tlsbase
+
+2010-03-14 19:09  rstory
+
+   * include/net-snmp/library/snmp_api.h:
+
+   update for renamed objects in version 08 of the dtls draft
+
+2010-03-14 19:08  rstory
+
+   *  agent/mibgroup/tlstm-mib, agent/mibgroup/tlstm-mib.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession.h,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable.h,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.c,   
+      agent/mibgroup/tlstm-mib/tlstmAddrTable/tlstmAddrTable.h,   
+      agent/mibgroup/tsm-mib, agent/mibgroup/tsm-mib.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats,   
+      agent/mibgroup/tsm-mib/snmpTsmStats.h,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h:
+
+   import initial code for dtls mibs
+
+2010-03-14 19:08  rstory
+
+   * mibs/TLSTM-MIB.txt:
+
+   TLSTM-MIB from draft-ietf-isms-dtls-tm-09.txt
+
+2010-03-14 17:21  bvassche
+
+   * agent/helpers/snmp_get_statistic.c, agent/mibgroup/mibII/icmp.c:
+
+   Fixed a few more compiler warnings.
+
+2010-03-14 14:10  bvassche
+
+   * perl/default_store/test.pl:
+
+   Follow-up for r17384: changed NETSNMP_DS_MAX_SUBIDS from 40 to
+   48.
+
+2010-03-14 13:53  bvassche
+
+   * configure, configure.d/config_os_progs:
+
+   Changes:
+   - Removed -Wno-char-subscripts from DEVFLAGS. Using a variable or
+   expression of
+   type char as an array index is almost always an error.
+   Furthermore,
+   -Wchar-subscript does not trigger any warnings on the Net-SNMP
+   code base.
+   - Removed -Winline from DEVFLAGS. Not only was nobody paying
+   attention to the
+   messages triggered by -Winline, but recent versions of the gcc
+   compiler are
+   better than humans at deciding which functions should be inlined
+   and which
+   ones not.
+
+2010-03-14 13:39  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Reran autoreconf.
+
+2010-03-14 13:39  bvassche
+
+   *  agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_status.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
+
+   Fixed several compiler warnings.
+
+2010-03-14 13:36  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   Removed the '0x' prefix again from a debug statement that was
+   introduced in r18282.
+
+2010-03-13 19:07  bvassche
+
+   *  perl/ASN/ASN.xs, perl/OID/OID.xs, perl/SNMP/SNMP.xs,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/ppport.h,   
+      perl/agent/agent.xs:
+
+   Fixed most compiler warnings triggered by the source code in the
+   perl subdirectory.
+   Note: these changes may contain some real bug fixes.
+
+2010-03-13 09:57  bvassche
+
+   * snmplib/cert_util.c, snmplib/snmp_api.c:
+
+   Fixed several recently introduced compiler warnings.
+
+2010-03-13 01:16  hardaker
+
+   * acconfig.h, configure, include/net-snmp/net-snmp-config.h.in:
+
+   define the TLSTCP DOMAIN
+
+2010-03-13 01:16  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   fix ifdef typo
+
+2010-03-12 20:26  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   change debugging symbol names to a generic tls string
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   initial working SNMP over TLS over TCP connection
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   print a more complete OpenSSL stack
+
+2010-03-12 20:22  hardaker
+
+   * snmplib/snmptsm.c:
+
+   fix assert statements
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmpTLSBaseDomain.h:
+
+   added an accepted_bio pointer for the bio after SSL_accept
+
+2010-03-12 20:21  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   add the ability for f_copy and f_config
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   missing ;
+
+2010-03-12 20:21  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   add a f_copy pointer
+
+2010-03-12 20:20  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   return int not int * on error
+
+2010-03-12 20:20  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   added a f_config function for transports
+
+2010-03-12 11:53  dts12
+
+   * apps/snmptable.c:
+
+   CHANGES: snmptable: PATCH: 2850067: Suppress extraneous "index"
+   header token
+   Patch supplied by Dan Nelson
+
+2010-03-12 11:43  dts12
+
+   * agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c:
+
+   Remove duplicate definition of
+   getulongfromsysclassnetstatistics()
+
+2010-03-11 16:52  dts12
+
+   * man/snmpcmd.1.def:
+
+   Document the format of the -e/-E command line options.
+
+2010-03-11 16:47  dts12
+
+   * agent/helpers/table_dataset.c:
+
+   Remove mention of the (abandoned) 'dataset2' helper.
+
+2010-03-11 15:59  dts12
+
+   * snmplib/cert_util.c:
+
+   Don't initialise the TLS transport unless it's actually been
+   configured in.
+
+2010-03-11 15:47  rstory
+
+   * testing/eval_suite.sh:
+
+   use SNMP_TMPDIR instead of TMPDIR
+
+2010-03-11 15:31  rstory
+
+   * snmplib/snmptsm.c:
+
+   query right bool (tsm prefix is lib bool, not app)
+
+2010-03-11 15:08  dts12
+
+   *  agent/auto_nlist.c, agent/mibgroup/examples/ucdDemoPublic.c,   
+      apps/snmptest.c, snmplib/parse.c, snmplib/tools.c:
+
+   CHANGES: PATCH: 2952034: Return of the Great SuSE 'sprintf'
+   Hunt...
+   Patch supplied by Leonardo Chiquitto
+
+2010-03-11 14:55  dts12
+
+   * local/traptoemail:
+
+   CHANGES: PATCH: 2937996: Add Date: header to email send by
+   traptoemail
+
+2010-03-11 14:50  dts12
+
+   *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c:
+
+   CHANGES: snmpd: PATCH: 2967400: Retrieve error counters for the
+   EtherLike-MIB
+   Patch supplied by Josef Moellers.
+
+2010-03-11 14:23  dts12
+
+   * agent/mibgroup/ucd-snmp/pass.c:
+
+   CHANGES: snmpd: PATCH: 2968642: Catch overflow of pass-through
+   command buffer.
+   Patch from Andreas Jaeger/Leonardo Chiquitto
+
+2010-03-11 12:37  dts12
+
+   * agent/mibgroup/agentx/protocol.c:
+
+   CHANGES: snmpd: PATCH: 2956657: Handle over-length AgentX OIDs.
+   Patch provided by Rob West
+
+2010-03-11 12:23  dts12
+
+   * agent/mibgroup/ip-mib/data_access/defaultrouter_common.c:
+
+   Provide missing debug parameter.
+   Patch provided by Andreas Jaeger.
+
+2010-03-11 12:21  dts12
+
+   * agent/mibgroup/hardware/sensors/hw_sensors.c:
+
+   Provide missing (dummy) return value, to suppress compiler
+   warning.
+   Patch provided by Andreas Jaeger.
+
+2010-03-11 12:19  dts12
+
+   * agent/mibgroup/ucd-snmp/pass.c:
+
+   Suppress warnings of possible buffer overflow.
+   This doesn't _actually_ protect against such an overflow,
+   since the target buffer is non-empty, so strncat can't
+   use it all anyway. But this should at least mislead the
+   compiler sufficiently to shut it up!
+   
+   Patch provided by Andreas Jaeger.
+
+2010-03-11 11:57  dts12
+
+   * configure, configure.d/config_os_misc4:
+
+   Replace backquote with single quote in configure output message.
+   While this change is probably not strictly necessary, it feels
+   sensible to avoid this particular use of backquotes, Just In
+   Case.
+   See discussion in Patch #2952169
+
+2010-03-11 11:43  dts12
+
+   * snmplib/mib.c:
+
+   CHANGES: library: PATCH: 2952140: Overflow counter32 and gauge32
+   on 64bit systems correctly
+   Patch provided by Leonardo Chiquitto
+
+2010-03-11 11:36  dts12
+
+   * testing/TESTCONF.sh, testing/eval_suite.sh:
+
+   CHANGES: build: PATCH: 2952020: Explicitly set permission on
+   temporary testing output directories.
+   Patch provided by Leonardo Chiquitto.
+
+2010-03-11 11:26  dts12
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable.c:
+
+   CHANGES: snmpd: PATCH: 2950845: Fix ifHighSpeed calculation
+   Patch provided by Leonardo Chiquitto
+
+2010-03-11 08:26  bvassche
+
+   *  perl/ASN/ASN.xs, perl/ASN/Makefile.PL, perl/OID/Makefile.PL,   
+      perl/OID/OID.xs, perl/TrapReceiver/Makefile.PL,   
+      perl/TrapReceiver/TrapReceiver.xs, perl/agent/Makefile.PL,   
+      perl/agent/Support/Makefile.PL, perl/agent/agent.xs,   
+      perl/agent/default_store/Makefile.PL,   
+      perl/agent/default_store/default_store.xs,   
+      perl/default_store/Makefile.PL,   
+      perl/default_store/default_store.xs:
+
+   Made compilation of the Perl module NetSNMP.pm on Windows more
+   silent: added compiler flags -D_CRT_SECURE_NO_WARNINGS
+   -D_CRT_NONSTDC_NO_WARNINGS and made sure that #include
+   <net-snmp/net-snmp-config.h> occurs before any other include file
+   that defines _WIN32_WINNT.
+
+2010-03-10 23:31  rstory
+
+   *  include/net-snmp/library/cert_util.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c:
+
+   NEWS: snmplib: create indexes for certificates in config path
+
+2010-03-10 18:48  bvassche
+
+   * snmplib/snmpSocketBaseDomain.c:
+
+   Added "#include <unistd.h>" such that on Unix systems the
+   compiler does not print a warning about a missing declaration for
+   the function close().
+
+2010-03-10 18:30  rstory
+
+   *  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:
+
+   update version to 5.6.dev
+
+2010-03-10 18:29  rstory
+
+   * local/Version-Munge.pl:
+
+   CHANGES: building: update Version-Munge for renamed configure.ac
+
+2010-03-10 18:29  rstory
+
+   * configure.ac:
+
+   CHANGES: building: save configure cache every once in while
+
+2010-03-10 16:12  bvassche
+
+   * win32/libsnmp/Makefile.in:
+
+   Reordered some of the Makefile rules in order to minimize the
+   diffs with libsnmp_dll/Makefile.in.
+
+2010-03-10 16:10  bvassche
+
+   * win32/libsnmp_dll/Makefile.in:
+
+   Win32, batch building: DLL builds again.
+
+2010-03-10 16:07  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Fixed a recently introduced compiler warning by adding a forward
+   declaration for the function _cache_free().
+
+2010-03-10 16:06  bvassche
+
+   * snmplib/container.c:
+
+   Builds again on Win32.
+
+2010-03-10 04:17  rstory
+
+   * README:
+
+   add missing contributors
+
+2010-03-10 04:17  rstory
+
+   * include/net-snmp/library/container.h, snmplib/container.c:
+
+   CHANGES: snmplib: fix potential double free in CONTAINER_FREE
+   - also added several compare routines
+
+2010-03-10 04:17  rstory
+
+   *  agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h:
+
+   CHANGES: snmplib: when freeing a cache, stop timer and call cache
+   free func
+   - also add netsnmp_cache_remove
+
+2010-03-10 03:52  rstory
+
+   *  README, agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/container.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c, snmplib/container.c:
+
+   undo commit 18234
+
+2010-03-10 03:41  rstory
+
+   *  README, agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/library/cert_util.h,   
+      include/net-snmp/library/container.h, snmplib/Makefile.in,   
+      snmplib/cert_util.c, snmplib/container.c:
+
+   Merge branch 'pullme' of ../trunk-staging
+
+2010-03-09 17:48  bvassche
+
+   * include/net-snmp/mib_api.h:
+
+   CHANGES: Win32: exported netsnmp_read_module() from netsnmp.dll
+   such that NetSNMP.pm builds again.
+
+2010-03-09 17:47  bvassche
+
+   * win32/libagent/Makefile.in, win32/libsnmp_dll/Makefile.in:
+
+   Simplified two makefiles used by build.bat (Win32).
+
+2010-03-09 17:24  bvassche
+
+   * perl/SNMP/SNMP.xs:
+
+   CHANGES: Win32: building: building NetSNMP.pm does no longer
+   trigger compiler warnings about redefining _WIN32_WINNT nor
+   NTDDI_VERSION.
+
+2010-03-09 17:22  bvassche
+
+   * perl/SNMP/Makefile.PL:
+
+   CHANGES: Win32: building: made building NetSNMP.pm more silent by
+   adding the MSVC compiler flags -D_CRT_SECURE_NO_WARNINGS
+   -D_CRT_NONSTDC_NO_WARNINGS.
+
+2010-03-09 17:09  rstory
+
+   * snmplib/read_config.c:
+
+   remove debug msg used during debugging
+
+2010-03-09 17:02  marz
+
+   * local/net-snmp-cert:
+
+   initial cert wrapper - testing repo write privs
+
+2010-03-09 10:20  bvassche
+
+   * win32/netsnmpmibs/Makefile.in:
+
+   Removed duplicate build rules. These duplicate rules were
+   harmless but triggered a warning.
+
+2010-03-09 02:38  rstory
+
+   * include/net-snmp/library/dir_utils.h, snmplib/dir_utils.c:
+
+   CHANGES: snmplib: directory container enhancements
+   - fix potential memory leak
+   - add filter callback to filter files returned
+   - add option to return relative and not full paths
+   - add option to sort returned list
+   - add option to return empty container instead of NULL if no
+   files found
+   - change default container name to directory that was scanned
+   - tweak debug/log messages
+
+2010-03-08 23:07  rstory
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/util_funcs/get_pid_from_inode.c,   
+      include/net-snmp/library/snmp_logging.h:
+
+   CHANGES: snmpd: define and use new NETSNMP_LOGONCE macro
+
+2010-03-08 22:44  rstory
+
+   * man/snmp_config.5.def, snmplib/read_config.c:
+
+   NEWS: snmplib: conf files can now include other conf files
+   - also tweaked debug tokens here and there
+
+2010-03-08 22:43  rstory
+
+   * snmplib/snmp_transport.c:
+
+   fix typo (caused external reference when DTLSUDP configured
+   without dtlstcp)
+
+2010-03-06 02:27  rstory
+
+   *  include/net-snmp/library/container.h, snmplib/container.c,   
+      snmplib/container_binary_array.c, snmplib/container_list_ssll.c:
+
+   NEWS: snmplib: netsnmp_container enhancements:
+   - add free_item function; defaults to
+   netsnmp_container_simple_free
+   - add CONTAINER_FREE_ALL macro/function (like CONTAINER_CLEAR but
+   calls container free_item for each item in primary container)
+   - add ability to set options on binary_array containers
+
+2010-03-02 17:55  bvassche
+
+   * win32/libsnmp/Makefile.in:
+
+   Made sure that win32/build.bat works again by adding missing
+   source file names. Sorted source file names alphabetically too.
+
+2010-03-02 16:54  bvassche
+
+   *  win32/Configure, win32/netsnmpmibs/Makefile.in,   
+      win32/snmpd/Makefile.in:
+
+   Follow-up for r18167 (merge of snmpd and snmpdsdk and also of
+   netsnmpmibs and netsnmpmibssdk): the batch file win32/build.bat
+   works again with the Platform SDK enabled.
+
+2010-03-02 16:52  bvassche
+
+   * win32/Makefile-apps.in:
+
+   Follow-up for r18215 (replaced the obsolete cl.exe option /GX by
+   the equivalent /EHsc; added /D "_CRT_SECURE_NO_WARNINGS", added
+   /D "_CRT_NONSTDC_NO_WARNINGS" and removed /Fp... and /YX).
+
+2010-02-28 15:56  bvassche
+
+   * snmplib/winservice.c:
+
+   Win32: fixed a compiler warning about redefinition of
+   _WIN32_WINNT by making sure that <net-snmp/net-snmp-config.h> is
+   included before <windows.h>.
+
+2010-02-28 15:24  bvassche
+
+   *  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:
+
+   CHANGES: Win32: batch build: replaced the obsolete /GX by the
+   equivalent /EHsc.
+   CHANGES: Win32: batch build: added /D "_CRT_SECURE_NO_WARNINGS"
+   /D "_CRT_NONSTDC_NO_WARNINGS" to make building with MSVC 2008
+   more silent.
+   CHANGES: Win32: batch build: removed /Fp... and /YX. These
+   options influence how precompiled header files are generated,
+   which are not used inside the Net-SNMP project. /YX is not
+   supported by MSVC 2008.
+   CHANGES: Win32: batch build: removed a duplicate occurrence of
+   strtoull.obj.
+
+2010-02-28 14:11  bvassche
+
+   * win32/Configure, win32/Makefile.in:
+
+   Follow-up for r18167 (merge of snmpd and snmpdsdk and also of
+   netsnmpmibs and netsnmpmibssdk): applied the necessary changes to
+   the win32/Configure script and win32/Makefile.in.
+
+2010-02-27 13:11  bvassche
+
+   *  agent/mibgroup/agent/nsCache.c, include/net-snmp/config_api.h,   
+      include/net-snmp/library/asn1.h,   
+      include/net-snmp/library/callback.h,   
+      include/net-snmp/library/check_varbind.h,   
+      include/net-snmp/library/container.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/fd_event_manager.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/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/snmpCallbackDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmp_alarm.h,   
+      include/net-snmp/library/snmp_api.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_logging.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/snmpusm.h,   
+      include/net-snmp/library/snmpv3.h,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h,   
+      include/net-snmp/library/ucd_compat.h,   
+      include/net-snmp/library/vacm.h,   
+      include/net-snmp/library/winpipe.h, include/net-snmp/mib_api.h,   
+      include/net-snmp/pdu_api.h, include/net-snmp/session_api.h,   
+      include/net-snmp/varbind_api.h, include/net-snmp/version.h,   
+      snmplib/getopt.c, snmplib/gettimeofday.c, snmplib/mib.c,   
+      snmplib/parse.c, snmplib/snmp_alarm.c, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c, snmplib/snmp_debug.c, snmplib/snmpv3.c,   
+      snmplib/strlcpy.c, snmplib/strtok_r.c, snmplib/strtoull.c,   
+      snmplib/tools.c, snmplib/ucd_compat.c, snmplib/winpipe.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: declared all functions that are exported from the
+   Net-SNMP DLL as NETSNMP_IMPORT. The result is a minor
+   optimization: code that uses the Net-SNMP DLL will now call the
+   DLL-exported functions directly instead of indirectly via the
+   stub in the import library.
+
+2010-02-27 11:50  bvassche
+
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   Removed a redundant strncasecmp() declaration.
+
+2010-02-27 09:57  bvassche
+
+   * snmplib/strtok_r.c:
+
+   Fixed a typo in a source code comment.
+
+2010-02-27 09:56  bvassche
+
+   * snmplib/snmp_transport.c:
+
+   Follow-up for r18189 (rstory): builds again on Windows.
+
+2010-02-25 17:53  bvassche
+
+   *  win32/encode_keychange/encode_keychange.dsp,   
+      win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.dsp, win32/libagent/libagent.vcproj,   
+      win32/libhelpers/libhelpers.dsp,   
+      win32/libhelpers/libhelpers.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.dsp,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.dsp,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.dsp,   
+      win32/snmpd/snmpd.vcproj, win32/snmpdelta/snmpdelta.dsp,   
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.dsp,   
+      win32/snmpdf/snmpdf.vcproj, win32/snmpget/snmpget.dsp,   
+      win32/snmpget/snmpget.vcproj, win32/snmpgetnext/snmpgetnext.dsp,  
+       win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/snmpnetstat/snmpnetstat.vcproj, win32/snmpset/snmpset.dsp,  
+       win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.dsp,   
+      win32/snmpstatus/snmpstatus.vcproj,   
+      win32/snmptable/snmptable.dsp, win32/snmptable/snmptable.vcproj,  
+       win32/snmptest/snmptest.dsp, win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.dsp,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.dsp, win32/snmptrap/snmptrap.vcproj,   
+      win32/snmptrapd/snmptrapd.dsp, win32/snmptrapd/snmptrapd.vcproj,  
+       win32/snmpusm/snmpusm.dsp, win32/snmpusm/snmpusm.vcproj,   
+      win32/snmpvacm/snmpvacm.dsp, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.dsp, win32/snmpwalk/snmpwalk.vcproj,   
+      win32/win32.dsw, win32/win32.sln, win32/win32dll.dsw,   
+      win32/win32dll.sln:
+
+   Reverted r18207 (dsp/dsw to vcproj/sln conversion) except the
+   suppression
+   list changes. The goal of this conversion was twofold: not only
+   to be able
+   to load the project files in MSVC 2002 - 2008 but also to be able
+   to commit
+   changes made from inside the MSVC 2008 IDE. Unfortunately
+   converting dsp/dsw
+   files to vcproj/sln files with MSVC 2008 makes it impossible to
+   load the
+   vcproj/sln files with earlier MSVC versions. Why on earth did
+   Microsoft
+   decide to put a version number in XML files ?
+
+2010-02-24 19:41  bvassche
+
+   *  win32, win32/encode_keychange,   
+      win32/encode_keychange/encode_keychange.dsp,   
+      win32/encode_keychange/encode_keychange.vcproj, win32/libagent,   
+      win32/libagent/libagent.dsp, win32/libagent/libagent.vcproj,   
+      win32/libhelpers, win32/libhelpers/libhelpers.dsp,   
+      win32/libhelpers/libhelpers.vcproj, win32/libnetsnmptrapd,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, win32/libsnmp,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll, win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj, win32/netsnmpmibs,   
+      win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj, win32/snmpbulkget,   
+      win32/snmpbulkget/snmpbulkget.dsp,   
+      win32/snmpbulkget/snmpbulkget.vcproj, win32/snmpbulkwalk,   
+      win32/snmpbulkwalk/snmpbulkwalk.dsp,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd,   
+      win32/snmpd/snmpd.dsp, win32/snmpd/snmpd.vcproj, win32/snmpdelta, 
+        win32/snmpdelta/snmpdelta.dsp, win32/snmpdelta/snmpdelta.vcproj,
+         win32/snmpdf, win32/snmpdf/snmpdf.dsp,   
+      win32/snmpdf/snmpdf.vcproj, win32/snmpget,   
+      win32/snmpget/snmpget.dsp, win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext, win32/snmpgetnext/snmpgetnext.dsp,   
+      win32/snmpgetnext/snmpgetnext.vcproj, win32/snmpnetstat,   
+      win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/snmpnetstat/snmpnetstat.vcproj, win32/snmpset,   
+      win32/snmpset/snmpset.dsp, win32/snmpset/snmpset.vcproj,   
+      win32/snmpstatus, win32/snmpstatus/snmpstatus.dsp,   
+      win32/snmpstatus/snmpstatus.vcproj, win32/snmptable,   
+      win32/snmptable/snmptable.dsp, win32/snmptable/snmptable.vcproj,  
+       win32/snmptest, win32/snmptest/snmptest.dsp,   
+      win32/snmptest/snmptest.vcproj, win32/snmptranslate,   
+      win32/snmptranslate/snmptranslate.dsp,   
+      win32/snmptranslate/snmptranslate.vcproj, win32/snmptrap,   
+      win32/snmptrap/snmptrap.dsp, win32/snmptrap/snmptrap.vcproj,   
+      win32/snmptrapd, win32/snmptrapd/snmptrapd.dsp,   
+      win32/snmptrapd/snmptrapd.vcproj, win32/snmpusm,   
+      win32/snmpusm/snmpusm.dsp, win32/snmpusm/snmpusm.vcproj,   
+      win32/snmpvacm, win32/snmpvacm/snmpvacm.dsp,   
+      win32/snmpvacm/snmpvacm.vcproj, win32/snmpwalk,   
+      win32/snmpwalk/snmpwalk.dsp, win32/snmpwalk/snmpwalk.vcproj,   
+      win32/win32.dsw, win32/win32.sln, win32/win32dll.dsw,   
+      win32/win32dll.sln:
+
+   (reverted) CHANGES: Win32: building: converted .dsp/.dsw files to
+   .vcproj/.sln files. This implies that support for MSVC 6.0 has
+   been dropped and the minimum Microsoft Visual Studio version
+   required to build the Net-SNMP source code is Microsoft Visual
+   Studio .NET (2002).
+
+2010-02-23 19:03  bvassche
+
+   * configure, configure.d/config_project_manual:
+
+   CHANGES: building: when generating a default value for the system
+   location and no domain name is found in /etc/resolv.conf, use
+   "@no.where" instead of "".
+
+2010-02-23 18:50  bvassche
+
+   * configure, m4/ac_prompt_user.m4:
+
+   CHANGES: building: made sure that the configure script does no
+   longer invoke "tail -1", which is not POSIX-compliant.
+
+2010-02-23 18:45  hardaker
+
+   *  testing/tests/T300udp, testing/tests/T310tcp,   
+      testing/tests/T320udpv6, testing/tests/T330tcpv6,   
+      testing/tests/T350unix, testing/tests/T360dtlsudp,   
+      testing/tests/T399alias:
+
+   Removed all transport tests since it's impossible to determine
+   where they can safely operate (was stopping tanders' nightly
+   tests from succeeding)
+
+2010-02-23 18:41  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   more error and debugging output
+
+2010-02-23 18:40  hardaker
+
+   * snmplib/snmpTLSBaseDomain.c:
+
+   fix the server context generator to actually, um, return the
+   context.
+
+2010-02-23 18:40  hardaker
+
+   * agent/agent_trap.c:
+
+   initialize the 'res' variable since it's checked
+
+2010-02-23 18:39  hardaker
+
+   * snmplib/snmpTLSTCPDomain.c:
+
+   more progress toward a real implementation
+
+2010-02-23 18:38  hardaker
+
+   * snmplib/snmp_transport.c:
+
+   tlstcp ctor invocation
+
+2010-02-23 18:38  hardaker
+
+   * include/net-snmp/library/snmpTLSTCPDomain.h:
+
+   require TLSBase
+
+2010-02-23 18:37  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   added host identifier as output
+
+2010-02-23 18:35  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   significant more work on the TLS TCP domain
+
+2010-02-23 17:43  bvassche
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r18193 (jsafranek): reran autoreconf for the trunk
+   and the 5.5 branch.
+
+2010-02-23 14:58  rstory
+
+   * snmplib/snmp_api.c:
+
+   use NETSNMP_PRIz instead of %z
+
+2010-02-23 12:27  jsafranek
+
+   * configure.d/config_os_libs:
+
+   CHANGES: building: Fixed compilation with rpm-4.6.
+   Turn on the legacy API when rpm-4.6 is detected.
+
+2010-02-23 07:38  bvassche
+
+   * snmplib/snmp_alarm.c, snmplib/snmp_api.c:
+
+   Reverted r18000 (disabling SIGALRM support) because this involves
+   a backwards-incompatible change.
+
+2010-02-23 00:36  rstory
+
+   * snmplib/snmpTCPDomain.c:
+
+   fix typo in comment
+
+2010-02-23 00:34  rstory
+
+   * snmplib/snmp_api.c:
+
+   debug msg tweaks; use new tranport functions
+   - add debug header for snmp version
+   - add length to debug send/receive messages
+   - use new tranport functions for send/recv/finding peer address
+
+2010-02-23 00:25  rstory
+
+   *  include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c:
+
+   add netsnmp_transport_peer_string, netsnmp_transport_send &
+   netsnmp_transport_recv
+   - moves transport manipulation into transport code
+   - central place for logging/debugging sent/received data
+
+2010-02-22 19:33  bvassche
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_project_manual:
+
+   CHANGES: building: made sure that the configure script does no
+   longer invoke "tail -1", which is not POSIX-compliant.
+
+2010-02-22 19:21  bvassche
+
+   * agent/agent_registry.c:
+
+   Follow-up for r18186. Regression test 34 (whether authentication
+   failure traps are sent by snmpd) passes now again.
+
+2010-02-22 09:18  bvassche
+
+   * agent/agent_registry.c:
+
+   CHANGES: snmpd: made sure that handler registration failure does
+   not create dangling pointers in the MIB subtree registry.
+
+2010-02-22 09:11  bvassche
+
+   * agent, apps, apps/snmpnetstat:
+
+   Updated Subversion ignore list.
+
+2010-02-22 08:42  bvassche
+
+   * configure:
+
+   Follow-up for r18084: fixed libeay32 (OpenSSL) configure test for
+   MinGW.
+
+2010-02-22 08:31  bvassche
+
+   * configure.d/config_os_libs:
+
+   Follow-up for r18084: fixed libeay32 (OpenSSL) configure test for
+   MinGW.
+
+2010-02-22 08:13  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Builds again with MinGW when IPv6 support is enabled.
+
+2010-02-21 18:58  bvassche
+
+   *  README.win32, win32/libsdll.dsw,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in, win32/win32dll.dsw:
+
+   CHANGES: Win32: building: renamed libsdll.dsw into win32dll.dsw.
+   CHANGES: Win32: building: simplified linking the Net-SNMP
+   applications with netsnmp.dll by adding all application projects
+   to the same workspace that is used for building the DLL.
+   CHANGES: Win32: building: made building netsnmp.dll less error
+   prone by letting the compiler print an error message if the
+   preprocessor symbol NETSNMP_USE_DLL has not been defined.
+
+2010-02-21 18:51  bvassche
+
+   * win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   CHANGES: Win32: building: Added libsnmp.def to the list of
+   libsnmp_dll.dsp source files such that the DLL is rebuilt when
+   the .def file has been modified.
+
+2010-02-21 18:45  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   CHANGES: Win32: exported netsnmp_set_line_buffering() from
+   netsnmp.dll.
+
+2010-02-21 17:39  bvassche
+
+   *  snmplib/snmpIPv6BaseDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   More Win32 IPv6 source code consistency improvements:
+   - Moved #undef HAVE_IF_NAMETOINDEX from snmplib/*.c to
+   win32/net-snmp/net-snmp-config.h.
+   - Changed the global in6addr_any variable into a static variable
+   such that
+   multiple definitions do not trigger a linker error.
+   - Added typedefs for uint8_t, int8_t, uint16_t and int16_t.
+   - Replaced '#if NETSNMP_ENABLE_IPV6' by '#ifdef
+   NETSNMP_ENABLE_IPV6'.
+
+2010-02-21 08:30  tanders
+
+   * snmplib/snmpIPBaseDomain.c:
+
+   make sure that INADDR_NONE is defined (fixes build error on
+   Solaris)
+
+2010-02-19 19:39  bvassche
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   Synchronized win32/net-snmp/net-snmp-config.h and
+   win32/net-snmp/net-snmp-config.h.in.
+
+2010-02-19 14:18  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   CHANGES: Win32: libsnmp builds again as a DLL when IPv6 is
+   enabled.
+
+2010-02-19 13:22  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def.in:
+
+   Follow up for r18164: synchronized libsnmp.def.in with
+   libsnmp.def
+
+2010-02-19 09:05  bvassche
+
+   * win32/net-snmp/net-snmp-config.h:
+
+   CHANGES: Win32: added #include <malloc.h> in
+   win32/net-snmp/net-snmp-config.h such that the MSVC compiler
+   doesn't get confused by the malloc redefinition when building
+   libsnmp as a DLL.
+
+2010-02-19 08:59  bvassche
+
+   *  include/net-snmp/library/snmp_parse_args.h,   
+      win32/libsnmp_dll/libsnmp.def:
+
+   Exported netsnmp_parse_args() such that the Net-SNMP applications
+   build again when libsnmp is built as a DLL.
+
+2010-02-19 08:56  bvassche
+
+   * snmplib/keytools.c, win32/net-snmp/net-snmp-config.h:
+
+   CHANGES: Win32: building: moved MSVC OpenSSL linker settings from
+   snmplib/keytools.c to win32/net-snmp/net-snmp-config.h such that
+   these settings are not only effective when building snmplib as a
+   static library but also when any Net-SNMP application is built
+   that links with snmplib as a static library or as a DLL.
+
+2010-02-19 08:32  bvassche
+
+   * snmplib/keytools.c:
+
+   Win32 cleanup: MSVC / DLL tests now use the officially endorsed
+   macro names.
+
+2010-02-19 07:50  bvassche
+
+   * win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Builds again.
+
+2010-02-19 06:47  magfr
+
+   *  agent/agent_trap.c, agent/mibgroup/ucd-snmp/proxy.c,   
+      include/net-snmp/library/snmp_parse_args.h,   
+      snmplib/snmp_parse_args.c:
+
+   NEWS: snmplib: PATCH: 2942940: from "Bill Fenner": Add a new
+   function, netsnmp_parse_args, that is like snmp_parse_args but
+   takes an additional bitmask, flags, to affect the behaviour. Also
+   remove the magic handling of some application names.
+
+2010-02-18 14:22  bvassche
+
+   * win32/bin:
+
+   Updated Subversion ignore list.
+
+2010-02-18 14:20  bvassche
+
+   *  win32/libhelpers/libhelpers.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp,   
+      win32/libsnmp/libsnmp.dsp, win32/netsnmpmibs/netsnmpmibs.dsp:
+
+   Sorted names of source files alphabetically.
+
+2010-02-18 13:03  bvassche
+
+   *  README.win32, snmplib/winservice.c, win32/libsnmp/libsnmp.dsp,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/netsnmpmibs/netsnmpmibs.dsp, win32/netsnmpmibssdk,   
+      win32/snmpdsdk, win32/snmpnetstat/snmpnetstat.dsp,   
+      win32/win32.dsw, win32/win32sdk.dsw:
+
+   CHANGES: Win32: dropped support for building Net-SNMP with
+   Microsoft Visual Studio 6.0 without platform SDK. Building
+   Net-SNMP with Microsoft Visual Studio 6.0 + PSDK or any later
+   version of MSVC is still possible however.
+   
+   Note: if in the future for whatever reason it should become
+   necessary again to be able to build Net-SNMP with MSVC without
+   relying on the platform SDK headers, please #ifdef out the MIB
+   code that relies on the PSDK headers instead of splitting the
+   workspace files again.
+
+2010-02-18 12:57  bvassche
+
+   * snmplib/snmpIPv6BaseDomain.c:
+
+   dos2unix.
+
+2010-02-18 09:45  bvassche
+
+   * include/net-snmp/library/types.h:
+
+   Source code cleanup:
+   - Moved documentation of netsnmp_large_fd_set members to the
+   comment
+   block just above the definition of this type.
+   - Removed superfluous 'extern "C"' specifier: this linkage
+   specifier
+   only has an effect on declarations of variables of functions and
+   not
+   on typedefs or struct definitions.
+   - Ran this header file through indent.
+
+2010-02-18 09:26  bvassche
+
+   *  snmplib/snmpIPBaseDomain.c, snmplib/snmpIPV6BaseDomain.c,   
+      snmplib/snmpIPv6BaseDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      win32/libsnmp/libsnmp.dsp:
+
+   Changes:
+   - Builds again with MSVC.
+   - Fixed a few compiler warnings reported by MSVC (passing int
+   instead of u_short to htons() / function declarations that were
+   missing because of missing #include directives).
+
+2010-02-16 17:16  bvassche
+
+   * include/net-snmp/types.h:
+
+   CHANGES: Win32: The header file <sys/timeb.h> is no longer
+   included from <net-snmp/types.h>. Or: the header file
+   <sys/timeb.h> will have to be included explicitly in source files
+   that need the declaration of the function ftime().
+   
+   Note: compared to r18024 and before, this change does not affect
+   BSD systems -- <sys/timeb.h> was only included from
+   <net-snmp/types.h> on BSD systems in revisions r18025..r18152.
+
+2010-02-14 19:29  bvassche
+
+   * include/net-snmp/system/freebsd8.h:
+
+   Builds now on FreeBSD version 8.0.
+
+2010-02-13 20:59  magfr
+
+   *  include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h:
+
+   Adjust the placement of ;'s in order to
+   a) Avoid warnings about spurious semicolons
+   b) Not have unterminated declarations in headers
+
+2010-02-12 02:57  rstory
+
+   * local/mib2c:
+
+   CHANGES: mib2c: update inline documentation; add storagetype test
+   for columns
+
+2010-02-12 01:50  rstory
+
+   * include/net-snmp/library/snmp_api.h:
+
+   fix typo in define
+
+2010-02-12 01:05  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   fix sed processing on white-space adding solaris machines
+
+2010-02-10 23:56  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   add top srcdir to cpp search path
+
+2010-02-10 23:52  hardaker
+
+   * include/net-snmp/types.h:
+
+   freebsd needs time.h above timeb.h
+
+2010-02-10 23:37  hardaker
+
+   * configure, configure.d/config_modules_lib:
+
+   use sed with multireplace on a line to fix possible whitespace
+   issue on solaris
+
+2010-02-10 23:22  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c,   
+      snmplib/snmpTLSTCPDomain.c:
+
+   beginning work for TLS separation into separate files with a base
+   file
+
+2010-02-10 23:21  hardaker
+
+   * include/net-snmp/library/snmpUDPIPv4BaseDomain.h:
+
+   move base transport creation function out of linux ifdefs
+
+2010-02-10 23:21  hardaker
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   moved another error logging function
+
+2010-02-10 23:20  hardaker
+
+   * mibs/NET-SNMP-TC.txt:
+
+   added TLS over TCP
+
+2010-02-10 16:39  dts12
+
+   *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c:
+
+   CHANGES: Linux: Improved EtherLike-MIB support
+   Patch supplied by Josef Moellers
+
+2010-02-10 10:04  dts12
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: Support null-bytes in octet strings
+   Patch supplied by Tommy Beadle
+
+2010-02-10 00:59  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
+
+   moved TLS infrastructure into a base domain file
+
+2010-02-10 00:04  hardaker
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      snmplib/snmpIPv6BaseDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   moved socket6 functions to the ipv6 base
+
+2010-02-10 00:03  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   white space formatting
+
+2010-02-10 00:03  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c:
+
+   moved udp_send/recv to udpbase
+
+2010-02-10 00:02  hardaker
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpSocketBaseDomain.c, snmplib/snmpUDPDomain.c:
+
+   move netsnmp_sock_buffer_set into socketbase
+
+2010-02-10 00:02  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv4BaseDomain.c:
+
+   move ipv4 specific UDP transport creation to udpipv4 base
+
+2010-02-10 00:01  hardaker
+
+   *  snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   made common functions be referenced directly by the transports
+   and removed original functionality; they were static so there is
+   no backwards compat issues
+
+2010-02-10 00:00  hardaker
+
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpSocketBaseDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved socket based close to a socket based domain common to many
+   things
+
+2010-02-09 23:59  hardaker
+
+   *  include/net-snmp/library/snmpTCPBaseDomain.h,   
+      include/net-snmp/library/snmpTCPDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      snmplib/snmpTCPBaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c:
+
+   move TCP common functions to a TCPBase domain implementation
+
+2010-02-09 23:57  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c:
+
+   warning cleanup
+
+2010-02-09 23:56  hardaker
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   tmStateReference should be using the indexed addr_pair
+
+2010-02-09 23:56  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   make netsnmp_dtlsudp_close make use of netsnmp_baseudp_close
+
+2010-02-09 23:55  hardaker
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPBaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved base UDP socket creation into a common base function and
+   made use of it
+
+2010-02-09 23:54  hardaker
+
+   * include/net-snmp/library/snmpIPBaseDomain.h:
+
+   proper _H ifdef checks
+
+2010-02-09 23:54  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpUDPBaseDomain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c:
+
+   added a raw UDP base domain
+
+2010-02-09 23:53  hardaker
+
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPBaseDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpIPv6BaseDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv4BaseDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   created a UDP IPv4 base; moved and reused more infrastructure
+
+2010-02-09 23:51  hardaker
+
+   *  include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      snmplib/snmpIPv4BaseDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   moved ipv4 address formatting into snmpIPv4BaseDomain
+
+2010-02-09 23:51  hardaker
+
+   * snmplib/snmpIPv6BaseDomain.c:
+
+   v6 domain infrastructure files
+
+2010-02-09 23:51  hardaker
+
+   *  include/net-snmp/library/snmpIPV4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv4BaseDomain.h,   
+      include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      snmplib/snmpIPV4BaseDomain.c, snmplib/snmpIPV6BaseDomain.c,   
+      snmplib/snmpIPv4BaseDomain.c:
+
+   v6 domain infrastructure files
+
+2010-02-09 23:50  hardaker
+
+   *  configure, include/net-snmp/library/snmpIPBaseDomain.h,   
+      include/net-snmp/library/snmpIPV4BaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpIPBaseDomain.c, snmplib/snmpIPV4BaseDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   New IPv4 and IP base transport files
+
+2010-02-09 23:48  hardaker
+
+   * configure.d/config_modules_lib:
+
+   don't double include transport modules
+
+2010-02-09 23:48  hardaker
+
+   * include/net-snmp/library/snmpIPXDomain.h:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:46  hardaker
+
+   * configure.d/config_modules_lib:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:45  hardaker
+
+   *  include/net-snmp/library/snmpAAL5PVCDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUnixDomain.h:
+
+   moved architecture tests into the header files using config_error
+   for signaling problems
+
+2010-02-09 23:43  hardaker
+
+   * configure.d/config_modules_lib:
+
+   check for and report config_errors in transport headers
+
+2010-02-09 23:43  hardaker
+
+   * configure.d/config_os_headers:
+
+   allow a NETSNMP_QUICK_CHECK env variable to bypass header checks
+
+2010-02-09 23:42  hardaker
+
+   * configure.d/config_modules_lib:
+
+   better comments
+
+2010-02-09 23:42  hardaker
+
+   * configure.d/config_modules_lib:
+
+   check for config_require macros in transport headers for
+   force-including of other things
+
+2010-02-09 23:41  hardaker
+
+   *  include/net-snmp/library/snmp_transport.h, perl/agent/agent.xs,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   define a standardized indexed addr_pair instead of using one
+   labeled only for UDP everywhere
+
+2010-02-09 23:40  hardaker
+
+   * snmplib/snmptsm.c:
+
+   fix transport prefix list for incoming messages
+
+2010-02-09 23:40  hardaker
+
+   * include/net-snmp/library/snmptsm.h, snmplib/snmptsm.c:
+
+   remove the security level from the TSM cache; previous existence
+   from from a draft copy of the TSM RFC and is now stored entirely
+   in the tm reference
+
+2010-02-09 23:39  hardaker
+
+   * snmplib/snmptsm.c:
+
+   implement incoming TSM procedures according to RFC text
+
+2010-02-09 23:39  hardaker
+
+   * snmplib/snmptsm.c:
+
+   implement outgoing TSM procedures according to RFC text
+
+2010-02-09 23:39  hardaker
+
+   * include/net-snmp/library/snmpDTLSUDPDomain.h:
+
+   create defined sized array and length variable
+
+2010-02-05 09:52  jsafranek
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c:
+
+   CHANGES: snmpd: fixed filedescriptior leak in Etherlike-MIB and
+   RMON-MIB
+
+2010-02-04 15:57  jsafranek
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      include/net-snmp/data_access/interface.h:
+
+   CHANGES: snmpd: report real ifSpeed of network interface even it
+   is down.
+   Some interfaces can report their real speed, even they are down.
+   And if they can't, the fallback to 10Mbps is still there.
+
+2010-02-01 14:47  bvassche
+
+   * agent/mibgroup/examples/example.c:
+
+   Fixed the compiler warnings triggered by the source file
+   agent/mibgroup/examples/example.c.
+
+2010-02-01 14:45  bvassche
+
+   * README.win32, snmplib/keytools.c:
+
+   CHANGES: Win32: building: simplified the procedure for building
+   with SNMPv3 support enabled (OpenSSL).
+
+2010-02-01 14:34  bvassche
+
+   *  agent/helpers/cache_handler.c, agent/helpers/instance.c,   
+      agent/helpers/old_api.c, agent/helpers/stash_cache.c,   
+      agent/helpers/watcher.c, agent/mibgroup/winExtDLL.c,   
+      snmplib/large_fd_set.c, snmplib/md5.c, snmplib/snmpAliasDomain.c, 
+        snmplib/snmp_parse_args.c:
+
+   Made sure that all calls to free() are intercepted when building
+   with dmalloc
+   support enabled. Included <dmalloc.h> in those source files where
+   it was not
+   yet included, and provided a wrapper function for free() where
+   the address of
+   this function was taken (Dmalloc can only intercept free() when
+   it is called
+   directly but not when it is called through a function pointer).
+
+2010-02-01 10:49  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   NEWS: building: Building Net-SNMP with dmalloc support enabled is
+   again possible.
+
+2010-02-01 01:05  tanders
+
+   *  testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap,   
+      testing/tests/T055agentv1mintrap,   
+      testing/tests/T056agentv2cmintrap, testing/tests/T113agentxtrap,  
+       testing/tests/T114agentxagentxtrap:
+
+   CHANGES: building: 'make test TESTOPTS="-P tcp"' works fine now
+
+2010-01-31 08:02  bvassche
+
+   * configure, configure.d/config_os_misc2:
+
+   Follow-up for r18084: fixed an sh syntax error in the configure
+   script
+   that was triggered on systems without libcrypto and without
+   libeay32.
+   The following error was reported:
+   configure[33136]: x: unknown test operator
+
+2010-01-29 20:07  jsafranek
+
+   * testing/tests/T059trapdtraphandle:
+
+   Elaborate on rev. 18089 and adjust the temporary directory to the
+   *    *really working one*.  2010-01-29 19:11  jsafranek
+
+
+   * testing/tests/T059trapdtraphandle:
+
+   Fix test 35 when configure option '--with-temp-file-pattern' was
+   used and the directory for temp. files does not exist yet.
+
+2010-01-29 15:07  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/closedir.c,   
+      snmplib/gettimeofday.c, snmplib/opendir.c, snmplib/readdir.c,   
+      snmplib/system.c, win32/libsnmp/libsnmp.dsp:
+
+   Moved the source code of the opendir(), readdir(), closedir() and
+   gettimeofday() replacements for MSVC from snmplib/system.c to
+   separate source files in snmplib.
+
+2010-01-29 08:57  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   Configure script consistency improvement: renamed the variable
+   "saved_LIBS" into "netsnmp_save_LIBS".
+
+2010-01-29 06:39  magfr
+
+   *  configure, configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      testing/tests/T072com2secunix:
+
+   CHANGES: testing: Check the size of sun_path and use that to
+   generate the maximal size strings for stressing com2secunix.
+
+2010-01-27 15:16  bvassche
+
+   * testing/eval_tools.sh:
+
+   NEWS: MinGW: running the regression test suite is again possible
+   ('make test').
+
+2010-01-27 14:43  bvassche
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_os_misc2,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: Cygwin: building with another OpenSSL package than the
+   Cygwin-provided packages openssl and openssl-devel is again
+   possible.
+   NEWS: MinGW: building with OpenSSL works again.
+
+2010-01-26 21:27  magfr
+
+   * agent/agent_trap.c, include/net-snmp/agent/agent_trap.h:
+
+   CHANGES: snmplib: Make the context argument of send_v3trap,
+   send_trap_vars_with_context and netsnmp_send_traps refer to a
+   const char*.
+
+2010-01-26 21:24  magfr
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c:
+
+   Correct misspelling - #elsif to #elif
+
+2010-01-26 21:21  magfr
+
+   * snmplib/snmpUDPDomain.c:
+
+   Apparently not all systems define INET_ADDRSTRLEN so add it if it
+   is missing.
+
+2010-01-26 15:46  bvassche
+
+   * testing/TESTCONF.sh:
+
+   Added netstat path for MinGW.
+
+2010-01-26 15:00  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   fix stat names
+
+2010-01-26 15:00  hardaker
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   define netsnmp_assert_or_msgreturn
+
+2010-01-26 14:59  hardaker
+
+   * snmplib/snmptsm.c:
+
+   use netsnmp_assert_or_return
+
+2010-01-26 14:58  hardaker
+
+   * include/net-snmp/library/snmp_assert.h:
+
+   define netsnmp_assert_or_return
+
+2010-01-26 14:58  hardaker
+
+   * snmplib/snmptsm.c:
+
+   update comments to reflect RFC5591 as the document describing the
+   implementation
+
+2010-01-26 11:43  bvassche
+
+   * include/net-snmp/system/cygwin.h:
+
+   NEWS: Cygwin: BUG: 2939168: byte order of udpLocalPort is now
+   correct.
+
+2010-01-26 10:46  bvassche
+
+   *  net-snmp-config.in, testing/TESTCONF.sh,   
+      testing/tests/T030snmpv3usercreation,   
+      testing/tests/T115agentxperl:
+
+   NEWS: Cygwin: BUG: 2939168: fixed test infrastructure ("make
+   test"). This has been fixed by using the proper environment
+   separator character and by adding the path of the netstat
+   executable for Cygwin in testing/TESTCONF.sh.
+
+2010-01-26 09:27  jsafranek
+
+   * agent/mibgroup/host/hr_swinst.c:
+
+   CHANGES: snmpd: fix rare race condition when reading RPM
+   database.
+   Old rpm versions return NULL instead of Header when another RPM
+   instance holds
+   database locks. I.e. snmpd sometimes crashes when reading
+   hr_swInst and rpm is
+   installing/updating/removing another package. As a solution,
+   whole RPM cache
+   is thrown away and re-read when we got an error from librpm. The
+   whole process
+   is restarted only three times, to prevent endless loop.
+
+2010-01-25 22:16  magfr
+
+   *  agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/snmpv3/usmUser.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/disk.c, snmplib/scapi.c,   
+      snmplib/snmp_api.c:
+
+   CHANGES: snmplib, snmpd: Do not check if values of type size_t
+   are less than 0.
+
+2010-01-25 22:11  magfr
+
+   * agent/mibgroup/util_funcs/header_simple_table.c:
+
+   CHANGES: snmpd: Check the range of oid values towards the maximum
+   oid value, notULONG_MAX
+
+2010-01-25 20:01  rstory
+
+   * configure, configure.d/config_os_libs:
+
+   only bail on missing libiphlpapi for xwinsock2
+
+2010-01-25 19:57  rstory
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+
+   rename MAX_STATS to NETSNMP_STAT_MAX_STATS
+
+2010-01-25 19:53  rstory
+
+   * agent/helpers/snmp_get_statistic.c:
+
+   update for new path to snmp_get_statistics; check for index
+   overflow
+
+2010-01-25 19:44  rstory
+
+   *  agent/helpers/Makefile.in, agent/mibgroup/Makefile.depend,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.h,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.h,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.h,   
+      agent/mibgroup/target/target_counters_5_5.c,   
+      agent/mibgroup/target/target_counters_5_5.h:
+
+   update for new path to snmp_get_statistics
+
+2010-01-25 16:03  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   use *current* copy of the MIB when generating stats
+
+2010-01-25 16:01  rstory
+
+   *  agent/helpers/snmp_get_statistic.c,   
+      agent/mibgroup/utilities/snmp_get_statistic.c,   
+      agent/mibgroup/utilities/snmp_get_statistic.h,   
+      include/net-snmp/agent/all_helpers.h,   
+      include/net-snmp/agent/snmp_get_statistic.h:
+
+   move snmp_get_statistic helper to helpers dir; update all_helpers
+   header
+
+2010-01-25 14:34  bvassche
+
+   * apps/agentxtrap.c:
+
+   Replaced explicit declarations of optind, optopt and optarg by
+   #include <unistd.h> because explicitly declaring these variables
+   is not compatible with Cygwin.
+
+2010-01-25 14:25  bvassche
+
+   * snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   NEWS: Cygwin: IPv6 is only supported under Cygwin 1.7 or later.
+   The old implementation of IPv6 support in Net-SNMP under Cygwin
+   involved a strange mixture of Cygwin and Winsock2 socket calls,
+   which was too hard to maintain.
+   NEWS: Cygwin: builds again with IPv6 support enabled
+   (--enable-ipv6). At least Net-SNMP 5.5 doesn't build under Cygwin
+   with IPv6 support enabled. The configure script reported
+   "checking ipv6 stack type ... result: "unknown, no" ... error:
+   IPv6 transports not available if IPv6 support is not enabled".
+
+2010-01-25 14:13  bvassche
+
+   * snmplib/inet_ntop.c, snmplib/inet_pton.c:
+
+   Added missing #include <string.h>.
+
+2010-01-25 14:10  bvassche
+
+   * configure, configure.d/config_project_ipv6_types:
+
+   Added configure test for the IPv6 stack included in Cygwin
+   version 1.7.
+   IPv6 support is one of the new features of Cygwin 1.7. For more
+   information,
+   see also http://cygwin.com/cygwin-ug-net/ov-new1.7.html.
+
+2010-01-25 12:40  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs:
+
+   CHANGES: Cygwin: the message "configure: WARNING: winsock.h:
+   present but cannot be compiled" does no longer appear when
+   running the configure script.
+   Follow-up for r18050: re-enabled libiphlpapi and iphlpapi.h tests
+   for non-MinGW platforms since the Cygwin build needs these.
+
+2010-01-25 07:28  magfr
+
+   *  configure, configure.d/config_os_functions, snmplib/inet_ntop.c,  
+       snmplib/inet_pton.c:
+
+   CHANGES: building: Use autoconf to decide if inet_ntop.c and
+   inet_pton.c are to be compiled.
+
+2010-01-25 07:09  bvassche
+
+   * configure, configure.d/config_os_struct_members:
+
+   CHANGES: MinGW: struct sockaddr_in6.sin6_scope_id configure test
+   does now work.
+
+2010-01-25 05:14  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   TLSTM counter stats
+
+2010-01-25 05:13  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   add in TSM needed counter definitions
+
+2010-01-25 05:12  hardaker
+
+   * mibs/SNMP-TSM-MIB.txt, mibs/rfclist:
+
+   added the SNMP-TSM-MIB
+
+2010-01-24 14:43  magfr
+
+   * agent/agent_registry.c, include/net-snmp/agent/agent_registry.h:
+
+   NEWS: snmpd: Made subtree_context_cache::context_name a const
+   char*.
+
+2010-01-24 14:27  magfr
+
+   * include/net-snmp/library/tools.h:
+
+   CHANGES: snmplib: Prevent gcc ped-warning for
+   NETSNMP_REMOVE_CONST
+
+2010-01-24 13:27  magfr
+
+   * apps/snmpusm.c:
+
+   CHANGES: snmpusm: Prefer to use a variable of the right type over
+   an ugly cast. Lessen the scope of the variable as well.
+
+2010-01-24 12:59  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs, configure.d/config_os_progs:
+
+   CHANGES: building: Introduced the variable 'with_socklib' in the
+   configure script. This variable is set to "winsock2" for MinGW
+   and to "default" for all other systems. Winsock2 tests are only
+   run if this variable is set to "winsock2" (MinGW).
+
+2010-01-24 12:53  magfr
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   Remove superfluous debug logs.
+
+2010-01-24 12:45  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Windows, compiler warning fixes: fixed warnings about char * /
+   unsigned char *
+   mismatches.
+
+2010-01-24 12:44  bvassche
+
+   * snmplib/snmpUDPDomain.c:
+
+   Windows, compiler warning fix: make inet_ntop() and inet_pton()
+   declarations
+   available to the compiler.
+
+2010-01-24 12:44  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   Windows, compiler warning fix: made sure that <ws2tcpip.h> will
+   be included
+   from <net-snmp/types.h> such that the compiler doesn't complain
+   about struct
+   sockaddr_in6 being used before being defined.
+
+2010-01-24 11:42  bvassche
+
+   * man:
+
+   Updated Subversion ignore list.
+
+2010-01-24 11:41  bvassche
+
+   *  agent/agent_index.c, agent/agent_read_config.c,   
+      agent/agent_registry.c, agent/agent_trap.c, agent/mib_modules.c,  
+       agent/mibgroup/Rmon/alarm.c, agent/mibgroup/Rmon/event.c,   
+      agent/mibgroup/Rmon/history.c, agent/mibgroup/Rmon/statistics.c,  
+       agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/host/hr_storage.c, agent/mibgroup/mibII/at.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/vacm_vars.c, agent/mibgroup/mibincl.h,   
+      agent/mibgroup/smux/smux.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/file.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/proc.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/util_funcs.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/snmpbulkget.c,   
+      apps/snmpbulkwalk.c, apps/snmpdelta.c, apps/snmpdf.c,   
+      apps/snmpget.c, apps/snmpgetnext.c, apps/snmpset.c,   
+      apps/snmpstatus.c, apps/snmptable.c, apps/snmptest.c,   
+      apps/snmptrap.c, apps/snmpusm.c, apps/snmpvacm.c,   
+      apps/snmpwalk.c, include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-includes.h, snmplib/lcd_time.c,   
+      snmplib/mib.c, snmplib/parse.c, snmplib/read_config.c,   
+      snmplib/scapi.c, snmplib/snmp-tc.c, snmplib/snmp_alarm.c,   
+      snmplib/snmp_api.c, snmplib/snmp_auth.c, snmplib/snmp_client.c,   
+      snmplib/snmp_logging.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmpksm.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/system.c, snmplib/tools.c, snmplib/vacm.c:
+
+   Cleanup (Windows): removed superfluous #include <sys/timeb.h>
+   directives. This header file
+   has only to be included from snmplib/system.c because of the
+   _ftime() call in that file.
+
+2010-01-24 10:43  bvassche
+
+   * apps/snmpnetstat/inet.c:
+
+   The macro 'C()' now casts its result from unsigned long to
+   unsigned int.
+   This change fixes a compiler warnings about format specification
+   mismatches
+   and fixes a bug (incorrect snmpnetstat output) on big endian
+   systems.
+
+2010-01-24 10:33  bvassche
+
+   * man/config_api.3:
+
+   Follow-up for r17946: removed generated man pages from
+   repository.
+
+2010-01-24 10:31  bvassche
+
+   * include/net-snmp/library/winservice.h, snmplib/winservice.c:
+
+   Moved two declarations of static functions from .h to .c.
+
+2010-01-24 10:21  magfr
+
+   * agent/mibgroup/agent/nsModuleTable.c:
+
+   Remove unnecessary casts.
+
+2010-01-24 10:19  bvassche
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   CHANGES: snmplib: builds again when HAVE_GETADDRINFO is not
+   defined.
+
+2010-01-24 10:03  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/inet_ntop.c,   
+      snmplib/inet_ntop.h, snmplib/inet_pton.c, snmplib/inet_pton.h,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmpUDPIPv6Domain.c:
+
+   Changes:
+   - Added configure tests for inet_ntop() and inet_pton().
+   - Added header files snmplib/inet_ntop.h and snmplib/inet_pton.h.
+   - Replaced "extern inet_ntop(...);" and "extern inet_pton(...);"
+   by #include "inet_ntop/pton.h".
+   - Converted snmplib/inet_ntop.c and snmplib/inet_pton.c from K&R
+   C to ANSI C.
+   - Replaced the inet_aton() calls that were introduced in r18033
+   in snmplib/snmpUDPDomain.c by inet_pton() calls such that it is
+   again possible to build Net-SNMP on Windows.
+
+2010-01-24 06:08  magfr
+
+   * include/net-snmp/library/snmpDTLSUDPDomain.h:
+
+   CHANGES: snmplib: Remove declarations of functions that don't
+   exist or are declared elsewhere.
+
+2010-01-24 05:48  magfr
+
+   * agent/agent_trap.c:
+
+   NEWS: snmplib: Removed the unused variables warm_start_oid,
+   link_down_oid, link_up_oid, auth_fail_oid and egp_xxx_oid.
+
+2010-01-23 22:06  magfr
+
+   *  testing/tests/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix:
+
+   Better set of SKIPIF/SKIPIFNOTS
+
+2010-01-23 20:31  magfr
+
+   * testing/tests/T071com2sec6, testing/tests/T072com2secunix:
+
+   Be correct in what it is that is tested in the header.
+
+2010-01-23 20:27  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: snmplib: Changed the com2sec directives to fail if there
+   are too few arguments. Additionally changed the storage structure
+   to not allocate more space than necessary.
+
+2010-01-23 20:22  magfr
+
+   *  testing/tests/T070com2sec, testing/tests/T071com2sec6,   
+      testing/tests/T072com2secunix:
+
+   new tests checking the error handling of the com2sec* directives
+
+2010-01-23 19:17  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r18025: builds again with Microsoft Visual Studio.
+
+2010-01-23 17:51  bvassche
+
+   * configure, configure.ac:
+
+   CHANGES: building: OS header detection check is now run before
+   IPv6 stack detection.
+   CHANGES: Solaris: sockaddr_in6.sin6_addr configure test does now
+   work.
+
+2010-01-23 17:42  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   Fixed a Solaris-specific compiler warning.
+
+2010-01-23 17:00  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/mingw32.h:
+
+   MinGW: added configure test for <sys/timeb.h> and also for struct
+   timezone.
+
+2010-01-23 16:32  bvassche
+
+   *  include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      snmplib/snmpUDPIPv6Domain.c:
+
+   MinGW: made sure that the IPv6-related datatypes are available
+   before being used.
+
+2010-01-23 16:30  bvassche
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Added #undef HAVE_WINDOWS_H.
+
+2010-01-23 16:28  bvassche
+
+   * include/net-snmp/types.h:
+
+   MinGW: made gettimeofday() declaration available for the
+   compiler.
+
+2010-01-23 16:27  bvassche
+
+   * snmplib/snmp_api.c:
+
+   MinGW: made gettimeofday() declaration available for the
+   compiler.
+
+2010-01-23 16:26  bvassche
+
+   * snmplib/inet_pton.c:
+
+   Made sure that the compiler does not complain about a missing
+   prototype for isdigit().
+
+2010-01-23 16:24  bvassche
+
+   * configure, configure.d/config_os_headers:
+
+   MinGW: iphlpapi.h configure test does now work.
+
+2010-01-23 15:10  bvassche
+
+   * configure, configure.d/config_project_ipv6_types:
+
+   Renamed the Winsock2 IPv6 stack from 'mingw' into 'winsock2'.
+
+2010-01-23 15:07  bvassche
+
+   *  agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/route_write.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/udpTable.c,   
+      agent/mibgroup/mibII/var_route.c, agent/snmpd.c,   
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c,   
+      apps/snmpnetstat/winstub.h, configure,   
+      configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in, include/net-snmp/types.h,  
+       snmplib/inet_ntop.c, snmplib/inet_pton.c,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpSSHDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Improved portability between the supported Win32 compilation
+   environments as follows:
+   - Made sure that the <winsock2.h> and <ws2tcpip.h> header files
+   are only included from <net-snmp/types.h>.
+   - Added configure check for <iphlpapi.h>.
+   - Replaced several WIN32 / cygwin tests by a HAVE_IPHLPAPI_H
+   test.
+   - Documented that win32/net-snmp/net-snmp-config.h is only used
+   for the MSVC build.
+
+2010-01-22 16:46  bvassche
+
+   * snmplib/tools.c:
+
+   Follow-up for r17910: builds again with Microsoft Visual Studio
+   6.
+
+2010-01-22 16:41  bvassche
+
+   * agent/mibgroup/winExtDLL.c, win32/MgmtApi-winExtDLL.h:
+
+   Follow up for r18016: builds again with Microsoft Visual Studio.
+
+2010-01-22 14:13  bvassche
+
+   * configure, configure.d/config_os_libs:
+
+   Follow-up for r18016: made MinGW libiphlpapi check more robust.
+
+2010-01-22 13:32  bvassche
+
+   *  README.win32, aclocal.m4, agent/agent_index.c,   
+      agent/agent_read_config.c, agent/agent_registry.c,   
+      agent/agent_trap.c, agent/mib_modules.c,   
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/header_complex.c, agent/mibgroup/host_res.h,   
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c,   
+      agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/mibII_common.h,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/route_write.c,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/struct.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/target.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/file.c,   
+      agent/mibgroup/ucd-snmp/loadave.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/util_funcs.c, agent/mibgroup/winExtDLL.c,   
+      agent/mibgroup/winExtDLL.h, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/encode_keychange.c,   
+      apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c,   
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c,   
+      apps/snmpnetstat/winstub.c, 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_handlers.c, apps/snmptrapd_log.c,   
+      apps/snmptrapd_sql.c, apps/snmpusm.c, apps/snmpvacm.c,   
+      apps/snmpwalk.c, configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_struct_members,   
+      configure.d/config_project_ipv6_types,   
+      include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/mingw32.h, include/net-snmp/types.h,   
+      snmplib/asn1.c, snmplib/callback.c, snmplib/default_store.c,   
+      snmplib/int64.c, snmplib/keytools.c, snmplib/large_fd_set.c,   
+      snmplib/lcd_time.c, snmplib/md5.c, snmplib/mib.c,   
+      snmplib/parse.c, snmplib/read_config.c, snmplib/scapi.c,   
+      snmplib/snmp.c, snmplib/snmp_alarm.c, snmplib/snmp_api.c,   
+      snmplib/snmp_auth.c, snmplib/snmp_client.c, snmplib/snmp_debug.c, 
+        snmplib/snmp_logging.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmpksm.c, snmplib/snmpusm.c, snmplib/snmpv3.c,   
+      snmplib/system.c, snmplib/tools.c, snmplib/vacm.c,   
+      snmplib/winpipe.c, win32/Snmp-winExtDLL.h,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   NEWS: MinGW: winExtDLL compiles now under MinGW.
+   CHANGES: MinGW: building Net-SNMP works again.
+   
+   Detailed overview:
+   * Changes in the configure script:
+
+   - socket() library check passes again on MinGW.
+   - Added library checks for libws2_32, libregex and libsnmpapi.
+   - Added check for the winsock2.h and ws2tcpip.h header files.
+   - Added check for the chown() and localtime_r() functions.
+   - sockaddr_in6.sin6_scope_id check does now work on MinGW.
+   - Added IPv6 stack type called "mingw".
+   * Source code changes:
+
+   - Include <winsock2.h> from <net-snmp/types.h> instead of
+   <winsock.h>
+   under MinGW such that IPv6 support is available.
+   - Moved #include <winsock.h> from .c files to <net-snmp/types.h>.
+   - Added a copy of the MinGW header file <snmp.h> (which is not
+   copyrighted)
+   as win32/Snmp-winExtDLL.h.
+   - agent: only call chown() when available (HAVE_CHOWN).
+   * Documentation changes: updated README.win32.
+
+
+2010-01-22 08:34  magfr
+
+   * snmplib/read_config.c:
+
+   CHANGES: snmplib: Do not cast from char* to char*
+
+2010-01-22 00:39  hardaker
+
+   * COPYING:
+
+   Copyright file update for SPARTA, Inc.
+
+2010-01-22 00:22  hardaker
+
+   * snmplib/snmptsm.c:
+
+   add proper prefixes in TSM for SSH, DTLS, etc, based on the
+   domain
+
+2010-01-22 00:20  hardaker
+
+   * dist/patme:
+
+   added 5.5 branch
+
+2010-01-22 00:20  hardaker
+
+   * dist/makerelease.xml:
+
+   minor echo output change
+
+2010-01-21 20:51  rstory
+
+   * snmplib/snmp_api.c:
+
+   move comment next to code it is talking about; No code change
+
+2010-01-21 14:55  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   CHANGES: PATCH: 2926374: from Ed Swierk: fixed reading of
+   ipAddressTable from /proc/net/if_inet6 on Linux
+   
+   The kernel might provide longer fields, especially on 64-bit
+   systems.
+
+2010-01-20 12:42  bvassche
+
+   * PORTING, local/snmpcheck.def:
+
+   Fixed typo: replaced 'necissary' by 'necessary'.
+
+2010-01-20 08:53  jsafranek
+
+   * man/snmpnetstat.1.def:
+
+   Fix minor typo in man page, it's snmpnetstat -Cp, not -CP.
+
+2010-01-14 12:34  jsafranek
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c:
+
+   CHANGES: fixed memory leak in RMON-MIB and ETHERLIKE-MIB when
+   there are multiple aliases of an network interface
+   Rationale: the aliased interfaces have the same ifIndex ->
+   CONTAINER_INSERT fails, but the rejected entry was not freed.
+
+2010-01-13 11:21  jsafranek
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   CHANGES: snmpd: fix memory leak in ipAddressPrefixTable
+   - net_snmp_search_update_prefix_info returns different code, when
+   the entry was not inserted to list and can be freed.
+
+2010-01-12 00:52  tanders
+
+   * configure, configure.d/config_os_libs:
+
+   CHANGES: build: run rpm configure checks for hr_swinst rewrite
+   (rpm
+   version only)
+
+2010-01-11 23:58  tanders
+
+   * apps/Makefile.in:
+
+   add PERLLDOPTS_FOR_APPS to agentxtrap link line (fixes
+   "libperl.so not
+   found" errors)
+
+2010-01-11 00:11  tanders
+
+   *  testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap,   
+      testing/tests/T055agentv1mintrap,   
+      testing/tests/T056agentv2cmintrap, testing/tests/T113agentxtrap,  
+       testing/tests/T114agentxagentxtrap:
+
+   get rid of using deprecated syntax for trap/inform sinks
+
+2010-01-08 08:42  bvassche
+
+   * snmplib/snmp_alarm.c, snmplib/snmp_api.c:
+
+   CHANGES: snmplib: obsoleted NETSNMP_DS_LIB_ALARM_DONT_USE_SIG.
+   From now on using SIGALRM to trigger Net-SNMP alarm handlers is
+   no longer supported.
+   
+   Motivation: as known libnetsnmp supports time-based alarms via
+   the functions
+   snmp_alarm_register(), run_alarms() and other functions. Two
+   different ways to
+   trigger the function run_alarms() are supported inside
+   libnetsnmp:
+   1. By making sure that the timeout argument of select() is small
+   enough such
+   that select() returns before the next alarm must be handled (when
+   the
+   variable NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set to one, which
+   is the
+   default).
+   2. By making sure that the kernel fires SIGALRM at the time when
+   run_alarms()
+   should be called (when the variable
+   NETSNMP_DS_LIB_ALARM_DONT_USE_SIG is set
+   to zero, which has to be configured explicitly).
+   
+   The following issues are associated with the second approach:
+   1. Alarm functions are used inside Net-SNMP to e.g. refresh
+   cached table
+   contents. As far as I can see there is nothing in the Net-SNMP
+   source code
+   that prevents the following from happening: a table refresh
+   triggered via
+   SIGALRM while a row is being removed from a cached table. This
+   can result
+   in dangling pointer dereferences and even a crash.
+   2. POSIX restricts signal handlers to calling functions that are
+   either reentrant
+   or non-interruptible
+   (http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04).
+   Standard I/O functions like printf() and fprintf() are neither
+   reentrant nor
+   non-interruptible. run_alarms() is called from inside a signal
+   handler, which
+   means that this restriction applies to the function run_alarms()
+   itself and
+   all functions called by it (which includes the alarm callback
+   functions).
+   Or: e.g. snmp_log() and its callers must not be called from
+   inside run_alarms()
+   when this function is invoked from inside a signal handler. This
+   is a severe
+   restriction, and one that is hard to work with.
+   3. Not all software developers know how to make sure that signal
+   delivery works
+   correctly in a multithreaded context. POSIX does not guarantee to
+   which thread
+   a signal like SIGALRM will be delivered, unless that signal has
+   been blocked
+   before thread creation and is unblocked after thread creation
+   (see also
+   http://www.opengroup.org/onlinepubs/009695399/functions/pthread_sigmask.html).
+   This is relevant for the Net-SNMP project not only because a
+   worker thread is
+   created inside
+   agent/mibgroup/if-mib/data_access/interface_linux.c but also
+   because libnetsnmp is often used inside multithreaded software.
+   Currently no
+   attempt is made to make sure that SIGALRM is processed by the
+   Net-SNMP event
+   processing loop thread. If SIGALRM is processed by another
+   thread, this will
+   result in one or more data races.
+   
+   Because all the difficulties associated with processing alarms
+   from inside a
+   signal handler function, and because fixing these would require
+   more effort than
+   it is worth, NETSNMP_DS_LIB_ALARM_DONT_USE_SIG has been
+   deprecated and from now
+   on approach (1) is the only supported approach to trigger alarm
+   handlers.
+
+2010-01-07 19:42  hardaker
+
+   * agent/mibgroup/hardware/cpu/cpu_sysctl.c:
+
+   Patch from Stephen Hemminger to fix a minor memleak in cpu
+   sysctrl fetching
+
+2010-01-07 16:21  bvassche
+
+   *  include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpusm.c, snmplib/vacm.c:
+
+   Removed read_config_read_ascii_string(), and made sure that
+   read_config_read_octet_string() '\0'-terminates the output buffer
+   in all cases.
+   Updated documentation and unit tests.
+
+2010-01-07 14:41  bvassche
+
+   * snmplib/snmpusm.c:
+
+   Removed three superfluous casts because these triggered a
+   compiler warning
+   when compiled with MSVC.
+
+2010-01-07 13:28  bvassche
+
+   * snmplib/read_config.c:
+
+   Reverted the read_config_read_octet_string() changes from r17992
+   because these
+   caused the following Valgrind complaint during snmpd startup:
+   
+   ==25201== Conditional jump or move depends on uninitialised
+   value(s)
+   ==25201== at 0x4047B14: netsnmp_send_traps (agent_trap.c:798)
+   ==25201== by 0x4048128: send_enterprise_trap_vars
+   (agent_trap.c:853)
+   ==25201== by 0x404819D: send_trap_vars (agent_trap.c:963)
+   ==25201== by 0x404825B: send_easy_trap (agent_trap.c:1011)
+   ==25201== by 0x804B5D2: main (snmpd.c:394)
+
+2010-01-07 12:30  bvassche
+
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c:
+
+   Fixed a format specification mismatch.
+
+2010-01-07 12:19  bvassche
+
+   * include/net-snmp/agent/sysORTable.h:
+
+   Depending on the context, assigning a char * pointer to
+   sysORTable::OR_descr does or does not transfer
+   ownership. So whether OR_descr is declared as char * or as const
+   char *, there will always be at
+   least one statement on which the compiler complains about a char
+   *  / const char * mismatch. The only    solution is to cast away
+      const where appropriate to make sure    that the compiler does not
+      complain,    as implemented in this patch.  2010-01-07 11:46 
+      bvassche
+
+
+   * snmplib/snmpusm.c:
+
+   usm_save_user(): when writing user->name and user->secName, only
+   write the ASCII data and not the
+   terminating '\0'. Since both items are read by calling
+   read_config_read_ascii_string(), writing
+   the terminating '\0' is not necessary to guarantee that the data
+   read back is terminated properly.
+
+2010-01-07 09:13  bvassche
+
+   * snmplib/read_config.c:
+
+   Changed the behavior of read_config_read_octet_string(): until
+   now this
+   function terminated the output buffer in some cases with '\0'
+   (when the
+   input was in the format 0x... and a buffer overflow occurred and
+   also
+   when the input was in ASCII format, but not when the input was in
+   format
+   0x... and no buffer overflow occurred). Changed this such that
+   this
+   function does no longer terminate the input buffer with '\0'.
+   This
+   change was possible because inside the Net-SNMP project all
+   callers that
+   needed a '\0' terminated string have been converted to use
+   read_config_read_ascii_string() instead.
+
+2010-01-06 17:52  bvassche
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/snmp_mib.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/udp.c, agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/tunnel/tunnel.c:
+
+   Reverted r17968 and r17972.
+
+2010-01-06 15:40  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/mibII/vacm_conf.c:
+
+   Fixed more compiler warnings related to the use of the const
+   keyword.
+
+2010-01-06 15:38  bvassche
+
+   * agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c:
+
+   Fixed a format specification mismatch.
+
+2010-01-06 15:36  bvassche
+
+   * include/net-snmp/library/snmpusm.h:
+
+   Changed argument type from char * into const char *. Should have
+   been included in r17975.
+
+2010-01-06 15:33  bvassche
+
+   *  agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/utilities/override.c:
+
+   Fixed several compiler warnings about char * / u_char *
+   mismatches.
+
+2010-01-06 15:31  bvassche
+
+   *  agent/agent_read_config.c,   
+      include/net-snmp/agent/agent_read_config.h,   
+      include/net-snmp/config_api.h, snmplib/read_config.c:
+
+   Added the functions register_const_config_handler() and
+   snmpd_register_const_config_handler(), which
+   accept a parser function that does not modify the string that it
+   parses. Using these functions results
+   in easier to read code than using the non-const handler
+   registration functions and casting the parser
+   function explicitly from (void(*)(const char*, const char*)) to
+   (void(*)(const char*, char*)).
+
+2010-01-06 15:27  bvassche
+
+   * snmplib/snmpusm.c:
+
+   Fixed a compiler warning about discarding the const qualifier.
+
+2010-01-06 14:48  bvassche
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Added read_config_read_objid_const().
+
+2010-01-06 14:42  bvassche
+
+   * agent/mibgroup/tunnel/tunnel.c:
+
+   Duplicated the second argument of REGISTER_SYSOR_TABLE() /
+   REGISTER_SYSOR_ENTRY()
+   since that argument is freed while unregistering such an entry.
+   Not sure whether
+   this could actually trigger a call of free() with a constant
+   string as argument
+   and I'm neither sure about whether or not this could have
+   triggered a crash.
+
+2010-01-06 14:34  bvassche
+
+   * include/net-snmp/library/vacm.h, snmplib/vacm.c:
+
+   For those VACM functions that do not modify the strings passed as
+   arguments,
+   changed the argument type from char * to const char *.
+
+2010-01-06 14:27  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   Fixed a compiler warning about discarding the const qualifier.
+
+2010-01-06 14:26  bvassche
+
+   * agent/mibgroup/sctp-mib/sctpScalars_common.c:
+
+   Removed an unused variable.
+
+2010-01-06 14:14  bvassche
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/snmp_mib.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/udp.c, agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c:
+
+   Duplicated the second argument of REGISTER_SYSOR_TABLE() /
+   REGISTER_SYSOR_ENTRY()
+   since that argument is freed while unregistering such an entry.
+   Not sure whether
+   this could actually trigger a call of free() with a constant
+   string as argument
+   and I'm neither sure about whether or not this could have
+   triggered a crash.
+
+2010-01-06 14:08  bvassche
+
+   *  agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.h:
+
+   Fixed several compiler warnings about discarding the const
+   qualifier.
+
+2010-01-06 14:06  bvassche
+
+   * agent/helpers/table.c, agent/helpers/table_dataset.c:
+
+   Fixed several compiler warnings about char * / u_char *
+   mismatches.
+
+2010-01-06 14:04  bvassche
+
+   * include/net-snmp/library/read_config.h, snmplib/read_config.c:
+
+   Changes:
+   - Added new functions skip_white_const(), skip_not_white_const(),
+   skip_token_const(), copy_nword_const() and
+   read_config_read_octet_string_const().
+   - Changed return type of read_config_read_ascii_string() from
+   char * to
+   const char *. Note: this does not affect backwards compatibility
+   since this
+   function has not yet been included in any release.
+   - Fixed documentation of read_config_read_octet_string() and
+   read_config_read_ascii_string().
+   - Reduced number of cast-away-const constructs in read_config.c.
+
+2010-01-06 13:35  bvassche
+
+   * include/net-snmp/library/tools.h:
+
+   Refined the implementation of the macro NETSNMP_REMOVE_CONST():
+   when using
+   the gcc compiler, it is now verified whether the types (const t)
+   and typeof(e)
+   are compatible, where t is the first argument and e the second
+   argument of
+   this macro.
+
+2010-01-06 13:33  jsafranek
+
+   * agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/at.h:
+
+   Add support of network interfaces with HW address bigger than 6
+   bytes to atTable. Some HW, like InfiniBand, uses HW addresses
+   with 9 and more bytes.
+
+2010-01-06 12:45  dts12
+
+   * agent/mibgroup/hardware/cpu/cpu_kstat.c:
+
+   CHANGES: snmpd: BUGS: 2924140: Fix termination of CPU/FPU types
+
+2010-01-06 12:33  dts12
+
+   * snmplib/snmpUnixDomain.c:
+
+   CHANGES: snmplib: BUGS: 2922390: Fix test for missing contextName
+   parameter
+
+2010-01-06 11:57  bvassche
+
+   *  agent/snmp_perl.c, include/net-snmp/library/tools.h,   
+      snmplib/container.c, snmplib/container_binary_array.c,   
+      snmplib/container_list_ssll.c, snmplib/parse.c,   
+      snmplib/snmp_service.c:
+
+   Changes:
+   - Introduced a new macro NETSNMP_REMOVE_CONST() that allows to
+   cast
+   away constness without that gcc -Wcast-qual reports a warning.
+   - Made casting away constness explicit by introducing the
+   NETSNMP_REMOVE_CONST() macro. This suppresses the warning
+   gcc -Wcast-qual printed for these statements.
+
+2010-01-06 11:46  bvassche
+
+   * agent/mibgroup/tunnel/tunnel.c, snmplib/snmpUDPIPv6Domain.c:
+
+   Fixed compiler warnings about discarding the const qualifier.
+
+2010-01-06 09:14  magfr
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c, agent/snmp_agent.c,   
+      apps/agentxtrap.c, snmplib/large_fd_set.c, snmplib/snmp_api.c:
+
+   Do not use 0 when referring to NULL.
+
+2010-01-06 08:26  bvassche
+
+   * include/net-snmp/library/system.h, snmplib/system.c:
+
+   Changed argument types of calculate_time_diff() and
+   calculate_sectime_diff()
+   from struct timeval * to const struct timeval *. Note: this does
+   not affect
+   backwards compatibility.
+
+2010-01-06 08:23  bvassche
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   Changes (no functionality has been modified):
+   - Removed diskio_parse_config() declaration because that function
+   is neither called nor defined in the source file diskio.c.
+   - Added declaration for getstats() such that gcc does not
+   complain about a missing declaration.
+   - Linux: changed visibility of getstats() from global to static
+   for consistency with the BSD and Darwin implementations of
+   getstats().
+
+2010-01-06 08:00  bvassche
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/utilities/iquery.c:
+
+   Fixed compiler warnings about char * / u_char * mismatches.
+
+2010-01-06 02:18  magfr
+
+   *  apps/Makefile.in, configure, configure.d/config_modules_agent,   
+      man/Makefile.in, testing/tests/T114agentxagentxtrap:
+
+   CHANGES: apps: Only build agentxtrap if the agentx libraries are
+   built. Add a test case for agentxtrap.
+   
+   The enablement/disablement is inspiered by automake conditionals
+
+2010-01-06 01:59  magfr
+
+   * agent/mibgroup/agentx/client.c:
+
+   Remove unused variable starttime.
+
+2010-01-05 22:54  magfr
+
+   *  agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/logmatch.h:
+
+   CHANGES: Hide most functions and variables in the logmatch
+   module. Cleaned up the header accordingly. Remove the need for
+   forward declarations by reordering the functions.
+
+2010-01-05 22:33  dts12
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: BUGS: 2919379: Initialise SNMP sessions properly
+   Provided by Diego Billi
+
+2010-01-05 22:20  dts12
+
+   * snmplib/snmpCallbackDomain.c:
+
+   CHANGES: snmplib: BUGS: 2919320: Avoid accessing freed memory
+   Reported by Tomasz Lis
+
+2010-01-05 18:58  dts12
+
+   * agent/mibgroup/ucd-snmp/proc.c:
+
+   CHANGES: snmpd: BUGS: 2914410: Fix crash on empty command lines
+
+2010-01-05 15:31  dts12
+
+   * agent/mibgroup/agentx/protocol.c:
+
+   CHANGES: snmpd: PATCH: 2912584: Fix null OID handling in Agentx
+   on 64bit
+   Patch supplied by Lutz Jaenicke
+
+2010-01-05 10:11  tanders
+
+   * include/net-snmp/system/hpux.h:
+
+   CHANGES: hpux: fix build error on HP-UX 10.20
+
+2010-01-05 08:42  jsafranek
+
+   * man, man/pdu_api.3, man/session_api.3, man/varbind_api.3:
+
+   Remove generated man pages from repository.
+
+2010-01-04 16:44  bvassche
+
+   * snmplib/read_config.c:
+
+   Fixed a past-end-of-buffer read that occurred when an ASCII
+   string was
+   passed as the first argument of read_config_read_octet_string() /
+   read_config_read_ascii_string() and the third argument (*len)
+   equals 0.
+
+2010-01-04 16:41  bvassche
+
+   * snmplib/read_config.c:
+
+   Fixed compiler warnings about casting away 'const'.
+
+2010-01-04 16:27  bvassche
+
+   * snmplib/read_config.c:
+
+   Added unit test for read_config_read_octet_string() and
+   read_config_read_ascii_string().
+
+2010-01-04 10:45  jsafranek
+
+   * snmplib/mib.c:
+
+   Use correct oid length in table indexes.
+
+2010-01-04 08:10  bvassche
+
+   * snmplib/snmp_alarm.c:
+
+   Made sure that snmp_alarm.c can be compiled again with C89
+   compilers: for C89
+   it is required that initializers are constant expressions.
+
+2010-01-03 16:28  magfr
+
+   *  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:
+
+   Rename netsnmp_arch_tcpconn_delete to
+   netsnmp_arch_tcpconn_entry_delete in order to be consistent with
+   the header file and all the other functions in the module.
+
+2010-01-03 16:26  magfr
+
+   *  agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h,  
+       include/net-snmp/data_access/ip_scalars.h,   
+      include/net-snmp/data_access/systemstats.h:
+
+   Add missing declarations.
+
+2009-12-30 12:49  bvassche
+
+   *  include/net-snmp/library/tools.h,   
+      include/net-snmp/library/types.h:
+
+   Follow-up for r17933: fixed the issue that including the header
+   file
+   <net-snmp/library/types.h> from <net-snmp/library/tools.h>
+   triggers
+   compiler errors during the configure process (complaints about
+   <netsnmp/net-snmp-config.h> not being included before
+   <net-snmp/types.h>).
+   Note: this does not solve the underlying problem that MIB code
+   must not
+   include the header file <net-snmp/types.h> because doing so would
+   trigger a
+   circular dependency during the configure step (MIB code is
+   compiled during
+   the configure step, while the configure step generates
+   <netsnmp/net-snmp-config.h> and <net-snmp/types.h> needs
+   <netsnmp/net-snmp-config.h>).
+
+2009-12-30 11:48  bvassche
+
+   * apps, man:
+
+   Follow-up for r17919: updated Subversion ignore lists.
+
+2009-12-28 18:03  bvassche
+
+   * agent/agent_index.c:
+
+   Fixed a past-end-of-buffer read. Found this by analyzing compiler
+   warnings.
+   Note: the affected function, register_string_index(), isn't
+   called from
+   anywhere inside the Net-SNMP project itself.
+
+2009-12-23 09:49  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:
+
+   Fix invalid read reported by valgrind:
+   Invalid read of size 1
+   memcpy (mc_replace_strmem.c:402)
+   _netsnmp_ioctl_ipaddress_container_load_v4
+   (ipaddress_ioctl.c:240)
+   netsnmp_arch_ipaddress_container_load (ipaddress_linux.c:158)
+   netsnmp_access_ipaddress_container_load (ipaddress_common.c:112)
+   
+   Returning structure with pointers inside is not the best thing to
+   do.
+
+2009-12-22 16:05  bvassche
+
+   *  include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpusm.c, snmplib/vacm.c:
+
+   Fixed several past-end-of-buffer reads.
+
+2009-12-22 12:02  bvassche
+
+   *  agent/mibgroup/Rmon/agutil.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/host/hr_swinst.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, include/net-snmp/agent/snmp_agent.h,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h,   
+      include/net-snmp/library/types.h, man/netsnmp_util.3,   
+      snmplib/system.c, snmplib/tools.c, win32/libsnmp_dll/libsnmp.def, 
+        win32/libsnmp_dll/libsnmp.def.in:
+
+   Reverted the backwards-incompatible changes of r17913:
+   - Restored the definition of the DIFFTIMEVAL() macro.
+   - Restored the definitions of the functions
+   calculate_time_diff(),
+   uatime_ready(), marker_tticks() and timeval_tticks().
+   - starttime is again a global variable instead of a static one.
+   Also implemented the following changes:
+   - Moved the marker_t typedef from net-snmp/library/tools.h to
+   net-snmp/library/types.h.
+   - Added a new typedef, const_marker_t.
+   - For those atime_*() / uatime_*() / *_tticks() functions that do
+   not change
+   their arguments, declared these arguments const_marker_t instead
+   of marker_t.
+   - Renamed netsnmp_get_starttime() and netsnmp_set_starttime() to
+   netsnmp_get_agent_starttime() and netsnmp_set_agent_starttime()
+   respectively. Moved these functions from tools.c to system.c.
+   - Removed the function atime_hsubtract() (was introduced in
+   r17913) and
+   introduced a new function, netsnmp_set_agent_uptime().
+
+2009-12-22 07:59  bvassche
+
+   * snmplib/read_config.c:
+
+   Reverted r17926, which made the string returned by
+   read_config_read_octet_string() zero-terminated. A new patch will
+   follow
+   that fixes the callers of read_config_read_octet_string() that
+   were
+   assuming that read_config_read_octet_string() zero-terminates the
+   string
+   read by this function.
+
+2009-12-21 14:29  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: snmpd: fix crash in IF-MIB and IP-MIB when there are
+   some interfaces with broadcast IP address and some without.
+   
+   Reset the bcastentry in the loop, so it cannot be inserted to the
+   container
+   twice.
+   
+   Without this patch, when an interface without broadcast address
+   is processed,
+   the bcastaddress from previous loop is inserted into the
+   container. This
+   obviously fails and the bcastentry is freed, but the container
+   still contains
+   reference to it -> SIGSEGV.
+
+2009-12-21 13:52  bvassche
+
+   * snmplib/read_config.c:
+
+   Follow-up for r17928: while r17928 fixed a dangling pointer
+   dereference
+   detected by running the Net-SNMP software on Windows, that patch
+   introduced
+   a dangling pointer dereference about which only Valgrind on Linux
+   complained.
+   This follow-up patch fixes both dangling pointer dereferences
+   triggered by
+   parsing the persistentDir keyword.
+
+2009-12-21 13:32  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Applied a slightly modified version of patch #2901122. Changes:
+   - New feature: specifying ASN type SNMP_NOSUCHINSTANCE as the
+   third argument
+   of netsnmp_set_row_column() will cause an SNMP GetRequest /
+   GetNextRequest to
+   return the error code noSuchInstance (SNMPv2) or noSuchName
+   (SNMPv1). This
+   makes it possible to have a cached table with one or more
+   "holes".
+   - Performance optimization: do not free() / malloc() the memory
+   for storing
+   the cached value if the value has not been modified.
+   - Performance optimization: do not free() / malloc() the memory
+   for storing
+   the cached value if the length of the value has not been
+   modified.
+   - Performance optimization: if the size of the cached value
+   shrunk, use
+   realloc() instead of free() and malloc().
+
+2009-12-21 12:23  bvassche
+
+   * snmplib/read_config.c:
+
+   Applied a slightly modified version of patch #2912055: make sure
+   that
+   parsing the "persistentDir" keyword in snmp.conf does not trigger
+   a
+   dangling pointer. To my surprise BoundsChecker complained about
+   this
+   (on Windows), but Valgrind did not report this issue (on Linux).
+
+2009-12-21 12:08  bvassche
+
+   * agent/mibgroup/notification-log-mib/notification_log.c:
+
+   Follow-up for r17925 (fix memory leak during startup): while
+   r17925 fixed
+   only the leak triggered from inside the for-loop, this patch does
+   now also
+   fix the leak triggered by the netsnmp_table_dataset_add_row()
+   call near
+   the end of log_notification().
+
+2009-12-21 12:01  bvassche
+
+   * snmplib/read_config.c:
+
+   Applied patch #2912062: make sure that the string returned by
+   read_config_read_octet_string() is properly terminated, such that
+   the
+   callers of this function do not trigger past-end-of-buffer reads.
+   Found
+   this issue via BoundsChecker.
+
+2009-12-21 11:06  bvassche
+
+   * agent/mibgroup/notification-log-mib/notification_log.c:
+
+   Applied patch #2912068, which fixes a memory leak during startup.
+   The
+   function log_notification() adds a row to the table
+   nlmLogVarTable, but
+   this function can be called before that table has been
+   initialized. If
+   that happens, memory is allocated for a row but that memory is
+   never
+   added to the cached table data. The BoundsChecker tool reported
+   this as
+   a "memory leak leaving scope".
+
+2009-12-21 10:54  bvassche
+
+   * README.win32:
+
+   Added the following text to the "Limitations" section of
+   README.win32:
+   "When using winExtDLL, there is an offset of up to one second
+   between the
+   value of the sysUpTime varbind included in the traps generated by
+   SNMP
+   extension DLLs (e.g. linkUp and linkDown) and the value of the
+   sysUpTime
+   varbind included in traps generated by Net-SNMP itself (e.g.
+   coldStart)."
+
+2009-12-21 10:09  bvassche
+
+   *  agent/agent_trap.c, man/netsnmp_agent_trap.3,   
+      snmplib/snmp_alarm.c:
+
+   Spelling fix: replaced all occurrences of 'specifc' by
+   'specific'.
+
+2009-12-21 10:06  bvassche
+
+   * snmplib/snmp_alarm.c:
+
+   Refactoring: eliminated duplicated code by reimplementing
+   snmp_alarm_register() using snmp_alarm_register_hr(). Neither the
+   Net-SNMP API nor the behavior of snmp_alarm_register() has been
+   changed.
+
+2009-12-20 11:10  magfr
+
+   *  apps/Makefile.in, apps/agentxtrap.c, man/Makefile.in,   
+      man/agentxtrap.1.def:
+
+   NEWS: apps: Add command to send AgentX notify requests to a
+   master agent.
+
+2009-12-17 16:44  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Follow-up for r17917 -- builds again on Windows systems.
+
+2009-12-17 16:03  bvassche
+
+   *  agent/mibgroup/utilities/iquery.c,   
+      include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   Follow-up for r17903 / patch 2911323 "Fix agent lockup when
+   monitoring
+   AgentX-delegated information" (submitted by myself). That patch
+   did not only
+   fix the lockup but also made snmpd print a warning during startup
+   when
+   iquerySecName was not configured. This warning was printed even
+   when no
+   internal queries were performed. This warning is now only printed
+   just before
+   the first internal query is made (during the first call of
+   netsnmp_query_get_default_session() instead of during creation of
+   the internal
+   session).
+
+2009-12-17 13:55  bvassche
+
+   * agent/mibgroup/Rmon/agutil.c:
+
+   RMON MIB source code compiles again -- should have been included
+   in r17913.
+
+2009-12-17 13:18  bvassche
+
+   * agent/mibgroup/Rmon/agutil.c, snmplib/system.c:
+
+   Modified the implementation of calculate_sectime_diff() and
+   AGUTIL_sys_up_time() such that these functions normalize the
+   tv_usec field of
+   struct timeval properly. Note: this source code modification does
+   not affect
+   the return value of the aforementioned two functions.
+
+2009-12-17 13:11  bvassche
+
+   * man/netsnmp_util.3:
+
+   Removed documentation of the DIFFTIMEVAL() macro -- should have
+   been included
+   in r17913.
+
+2009-12-17 13:05  bvassche
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/host/hr_swinst.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, include/net-snmp/library/system.h,   
+      include/net-snmp/library/tools.h, man/netsnmp_util.3,   
+      snmplib/snmp_alarm.c, snmplib/system.c, snmplib/tools.c,   
+      win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Converted starttime from a global variable into a static variable
+   and applied the following changes:
+   - Added two new macros: NETSNMP_TIMERADD() and
+   NETSNMP_TIMERSUB().
+   - Added three new functions: netsnmp_get_starttime(),
+   netsnmp_set_starttime() and atime_hsubtract().
+   - Replaced gettimeofday() + calculate_time_diff() calls by a call
+   to netsnmp_get_agent_uptime().
+   - Removed the macro DIFFTIMEVAL() because it was not used inside
+   the Net-SNMP project and because it contained a bug.
+   - Removed the functions calculate_time_diff(), uatime_ready(),
+   marker_tticks() and timeval_tticks().
+
+2009-12-17 12:44  bvassche
+
+   *  agent/mibgroup/agentx/master_admin.c,   
+      win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Bug fix: according to RFC 2571 the unit of snmpEngineTime is one
+   second,
+   not one hundredth of a second.
+
+2009-12-17 10:03  dts12
+
+   * man/snmptest.1.def:
+
+   Fix typo.
+
+2009-12-16 12:30  bvassche
+
+   *  snmplib/tools.c, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Windows-only bug fixes:
+   - Fixed the strange build errors that occurred when compiling
+   libnetsnmp as a DLL and when either <stdlib.h> or <string.h> was
+   included after <net-snmp-config.h> instead of before.
+   - For debug builds with Microsoft Visual Studio, fixed the
+   mismatches between the _malloc_dbg() call invoked by strdup() and
+   free()-ing strdup()-ed memory by including the <crtdbg.h> header
+   in tools.c and by defining the preprocessor symbol
+   _CRTDBG_MAP_ALLOC. Detected via the memory checker included in
+   Intel Parallel Studio.
+
+2009-12-14 17:23  tanders
+
+   *  perl/agent/agent.xs, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpUDPDomain.c:
+
+   sync definition of netsnmp_udp_addr_pair in Perl with the changes
+   in
+   r17855 and r17908
+
+2009-12-14 13:55  jsafranek
+
+   * snmplib/snmpTCPDomain.c:
+
+   Fix TCP transport broken by rev. 17855 - copies of
+   netsnmp_udp_addr_pair in snmpTCPDomain.c and snmpUDPDomain.c must
+   be the same.
+
+2009-12-11 14:43  hardaker
+
+   * apps/snmpusm.c, man/snmpusm.1.def:
+
+   CHANGES: snmpusm: patch from Martin Bjorklund to add a -Cw option
+   to use createAndWait for agents that are strict about not
+   allowing a row to be set to active until the authentication
+   password has been changed; plus white-space clean up, manual
+   additions and help output modifications by hardaker
+
+2009-12-11 14:35  bvassche
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   Fixed a compiler warning about a format specifier mismatch.
+
+2009-12-11 14:06  bvassche
+
+   * README.win32, agent/mibgroup/winExtDLL.c:
+
+   winExtDLL bugs fixed:
+   - sysUpTime.0 does now report the correct value.
+   - a linkUp or linkDown trap is now sent after the status of a
+   network interface
+   has changed.
+   - the value of the sysUpTime.0 varbind in linkUp and linkDown
+   traps is now
+   correct.
+
+2009-12-10 15:52  dts12
+
+   * agent/mibgroup/smux/smux.c:
+
+   CHANGES: agent: PATCHES: 2911970: Properly terminate linked list
+   of registrations.
+   Patch provided by Mirko Deckert.
+
+2009-12-10 15:43  dts12
+
+   *  agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/utilities/iquery.c:
+
+   CHANGES: snmpd: PATCHES: 2911323: Fix agent lockup when
+   monitoring AgentX-delegated information
+
+2009-12-10 13:59  bvassche
+
+   * README.win32:
+
+   Changes:
+   - Added information about Microsoft's implementation of
+   hrSystemUptime.0.
+   - Fixed a few typos.
+
+2009-12-10 13:01  bvassche
+
+   * agent/agent_registry.c:
+
+   Added missing newline in a logging statement.
+
+2009-12-10 12:54  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Fixed the following winExtDLL bugs:
+   - Fixed bug in trap forwarding: linkDown traps were sent as
+   warmStart traps
+   and linkUp traps were sent as linkDown traps.
+   - Fixed a memory leak triggered by extension DLL loading.
+   - A debug trace statement is now invoked whenever a serious error
+   has been
+   detected.
+
+2009-12-10 12:37  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   OIDs in debug messages generated by the winExtDLL module are now
+   printed in
+   symbolic form instead of numeric form.
+
+2009-12-10 08:57  bvassche
+
+   * win32/win32sdk.dsw:
+
+   Project dependencies should now really be correct. Should have
+   been included
+   in r17873.
+
+2009-12-10 08:41  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Changes (only source code comments have been changed):
+   - Removed a note that contradicted the instructions in
+   README.win32.
+   - Updated build instructions after the addition of the file
+   win32/Snmp-winExtDLL.h in r17830.
+
+2009-12-10 08:17  bvassche
+
+   * apps/snmpdf.c, apps/snmpstatus.c:
+
+   Made file header comments consistent with the descriptions in the
+   respective man pages.
+
+2009-12-10 03:04  magfr
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Made sure that agent_sysOR_callback won't trigger a warning when
+   registered as a callback. Change agentx_reopen_sysORTable in
+   order to avoid warnings of const removal.
+
+2009-12-09 15:05  bvassche
+
+   * snmplib/snmp_logging.c:
+
+   - Moved the declaration of the variable 'newline' inside the
+   function
+   log_handler_stdouterr() because this variable is only used by
+   that function.
+   - Documented the purpose of the variable 'newline'.
+   - Bug fix: made sure that the call log_handler_stdouterr() does
+   not trigger an
+   invalid memory access (str[-1]) when an empty string is passed to
+   this function.
+
+2009-12-09 14:37  jsafranek
+
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      include/net-snmp/data_access/arp.h:
+
+   CHANGES: snmpd: Add support of network interfaces with HW address
+   bigger than 6 bytes to ipNetToMediaTable and
+   ipNetToPhysicalTable.
+   Some HW, like InfiniBand, uses HW addresses with 9 and more
+   bytes. Snmpd on Linux was not able to parse /proc/net/arp then
+   and produced ugly 'ioctl 35123 returned -1' to log.
+
+2009-12-09 12:27  bvassche
+
+   * README.win32:
+
+   Added missing -Lo in a command line example.
+
+2009-12-09 12:16  bvassche
+
+   * win32/snmpdsdk/snmpd.dsp:
+
+   Added snmpapi.lib to the linker input list of snmpd.exe.
+   Apparently Visual
+   Studio 2005 and 2008 need this library in the linker input list
+   when linking
+   the exe, while for Visual Studio 6 it is sufficient when this
+   library is
+   present in the linker input list of netsnmpmibs.lib.
+
+2009-12-09 08:45  bvassche
+
+   * README.win32:
+
+   Updated README.win32: because of r17884 and r17873, the build
+   process became simpler.
+
+2009-12-09 08:22  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def.in:
+
+   Export strtoull -- should have been included in r17886.
+
+2009-12-09 08:21  bvassche
+
+   * README.win32:
+
+   Reverted r17700 for README.win32: because of r17886, modifying
+   the
+   strtoull line in win32/libsnmp_dll/libsnmp.def is no longer
+   necessary.
+
+2009-12-09 08:12  bvassche
+
+   *  win32/libsnmp_dll/libsnmp.def, win32/net-snmp/net-snmp-config.h,  
+       win32/net-snmp/net-snmp-config.h.in:
+
+   Windows: switched from _strtoui64() to strtoull() for Microsoft
+   Visual Studio
+   2002 and later because the former is not fully POSIX compliant.
+   The strtoull()
+   unit test produces the following output for _strtoui64() with
+   MSVC 2008:
+   test 14 failed (input "0x"): expected end 1, got end 0
+   test 16 failed (input "0x"): expected end 1, got end 0
+
+2009-12-08 21:54  magfr
+
+   * agent/mibgroup/util_funcs.c, snmplib/system.c:
+
+   CHANGES: snmplib, snmpd: Make sure that a mask is given to open
+   when O_CREAT is specified
+
+2009-12-08 16:20  bvassche
+
+   * win32/win32.dsw:
+
+   Made dependencies between exe's and lib's explicit such that
+   Visual
+   Studio can figure out the proper build order instead of the user
+   having
+   to figure this out.
+
+2009-12-08 15:47  bvassche
+
+   * apps/snmptable.c:
+
+   Builds again on Unix systems (fixed a typo introduced in r17881).
+
+2009-12-08 15:37  bvassche
+
+   * win32/snmpnetstat/snmpnetstat.dsp:
+
+   Added missing #define HAVE_WIN32_PLATFORM_SDK. Without this
+   define the Microsoft
+   Visual Studio compiler complains about a benign redefinition of
+   type socklen_t.
+
+2009-12-08 15:28  bvassche
+
+   *  agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/snmpd.c, apps/snmptable.c, apps/snmptrapd.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
+
+   Cleaned up the code for setting line buffering:
+   - Instead of having calls to setvbuf() in multiple files, there
+   is now one call
+   to setvbuf() from the new function netsnmp_set_filelog. These
+   source files
+   are: snmplib/snmp_logging.c, agent/snmpd.c, apps/snmptrapd.c,
+   apps/snmptable.c
+   and agent\mibgroup\disman\traceroute\traceRouteCtlTable.c.
+   - Using -Lo / -Le does now enable line buffering for stdout /
+   stderr respectively.
+   - Removed code in snmpd.c and snmptrapd.c for setting line
+   buffering on stdout
+   since setting line buffering on stdout is now triggered by the
+   command-line
+   option -Lo.
+   Bugs fixed:
+   - Line buffering mode is now also set for stderr when the
+   command-line option
+   -Le has been specified.
+   - Line buffering mode is now set correctly for stdout on Windows
+   systems
+   (command-line option -Lo).
+
+2009-12-08 12:32  bvassche
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   Fixed a compiler warning about local variables that were defined
+   but
+   not used by only enabling the local variable definitions on the
+   platform that uses these variables (Linux).
+
+2009-12-08 12:26  bvassche
+
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   Added #include "mibgroup/util_funcs.h". Fixes a compiler warning.
+
+2009-12-08 12:25  bvassche
+
+   * apps/snmpnetstat/main.c:
+
+   Include the gethostent() / sethostent() declarations before using
+   these
+   functions. Fixes a compiler warning on Windows systems.
+
+2009-12-08 12:11  bvassche
+
+   * apps/snmptrapd_handlers.c:
+
+   Fixed an inconsistency (which is allowed by the ANSI C standard)
+   between
+   function declaration and function definition of
+   netsnmp_add_global_traphandler and
+   netsnmp_add_default_traphandler such
+   that the Microsoft Visual Studio compiler does no longer complain
+   about
+   this.
+
+2009-12-08 12:08  bvassche
+
+   * snmplib/snmp_service.c:
+
+   Fixed a compiler warning: made sure that the compiler does not
+   complain about implicitly casting away constness.
+
+2009-12-08 12:07  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Only compile the winExtDLL source code if the preprocessor macro
+   USING_WINEXTDLL_MODULE has been defined.
+
+2009-12-08 12:03  bvassche
+
+   * win32/libsnmp/libsnmp.dsp:
+
+   Added missing #define HAVE_WIN32_PLATFORM_SDK.
+
+2009-12-08 12:01  bvassche
+
+   * win32/win32sdk.dsw:
+
+   Made dependencies between exe's and lib's explicit such that
+   Visual
+   Studio can figure out the proper build order instead of the user
+   having
+   to figure out the build order.
+
+2009-12-08 09:46  bvassche
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Windows / Microsoft Visual Studio: disabled the compiler warning
+   about
+   signed/unsigned mismatches (4018) because this warning does not
+   yield
+   any useful information.
+
+2009-12-08 09:17  bvassche
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   Follow-up for r17639 (patch 2780411 -- fix compiler warnings):
+   applied
+   this patch to net-snmp-config.h.in too such that
+   net-snmp-config.h and
+   net-snmp-config.h.in match again.
+
+2009-12-08 08:16  bvassche
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Made sure that agentx_sysOR_callback() does not trigger a
+   compiler
+   warning when the third argument passed to this function has been
+   declared const.
+
+2009-12-08 08:14  bvassche
+
+   * include/net-snmp/library/system.h:
+
+   Changed the return type of strtoull() from 'unsigned long long'
+   (which
+   is not valid C89) to 'uint64_t' (declared in
+   <net-snmp/net-snmp-config.h>).
+   This change makes the Net-SNMP source code compile again with
+   MSVC 6.0.
+
+2009-12-07 10:46  dts12
+
+   * apps/snmptable.c:
+
+   Tweak missing subidentifier processing to be more type-aware.
+   (An issue with AIX, at least)
+
+2009-12-06 18:38  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: Make the lists of com2Sec*Entries static
+
+2009-12-06 18:34  magfr
+
+   *  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   Make the iterator variable in netsnmp_*_getSecName const
+
+2009-12-06 18:29  magfr
+
+   *  agent/mibgroup/mibII/vacm_conf.c,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv6Domain.h,   
+      include/net-snmp/library/snmpUnixDomain.h,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c:
+
+   CHANGES: Change the types of the return values of
+   netsnmp_*_getSecName from char* to const char* since they point
+   into internal structures.
+
+2009-12-05 20:19  tanders
+
+   * include/net-snmp/library/system.h:
+
+   fix declaration of strtoull
+
+2009-12-05 17:42  tanders
+
+   * perl/SNMP/SNMP.xs:
+
+   call netsnmp_read_module instead of read_module to make it
+   compile with
+   NETSNMP_CLEAN_NAMESPACE
+
+2009-12-02 15:39  jsafranek
+
+   *  agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c,
+         agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c:
+
+   CHANGES: snmpd: Fixed invalid access to memory in TCP-MIB
+   This partly reverts patch 17719 - the entries *are* used after
+   raw_data container is freed. These entries should be freed when
+   associated rowreq_ctx is freed.
+
+2009-12-02 08:30  jsafranek
+
+   * agent/mibgroup/mibII/udpTable.c:
+
+   CHANGES: snmpd: Fixed udpTable indexes on big-endian 64bit Linux.
+   The index was always '0.0.0.0' instead of real local IP address.
+
+2009-12-01 12:36  dts12
+
+   * include/net-snmp/types.h:
+
+   Update a redundant (and probably inaccurate) comment.
+
+2009-12-01 12:31  dts12
+
+   * agent/helpers/table.c:
+
+   CHANGES: agent: BUGS: 2822360: Fix memory leak when building
+   table OIDs
+
+2009-12-01 12:08  dts12
+
+   * apps/snmptable.c:
+
+   CHANGES: snmptable: BUGS: 2837998: Handle missing instance
+   subidentifiers in results
+
+2009-12-01 11:56  dts12
+
+   * agent/mibgroup/agentx/client.c:
+
+   CHANGES: agent: BUGS: 2841008: Protect against crash following
+   failed AgentX response
+
+2009-12-01 07:34  jsafranek
+
+   *  include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpUDPDomain.c:
+
+   CHANGES: snmplib: Fix responding to broadcast requests.
+   UDP responses are sent with source IP address which was
+   destination of
+   appropriate requests (implemented in SVN rev. 15215). But if the
+   destination
+   of a request is broadcast IP address, the request was sent with
+   the broadcast
+   address as source. sendmsg() on Linux does not support this and
+   returns error
+   -> response is not sent. In order to send responses from the same
+   interface,
+   interface index of the appropriate interface must be used.
+
+2009-12-01 00:29  magfr
+
+   * agent/mibgroup/disman/schedule/schedCore.c:
+
+   Make it possible to actually compile after 17852.
+
+2009-12-01 00:24  magfr
+
+   * agent/mibgroup/ucd-snmp/proc.c:
+
+   Make it possible to actually compile after 17842.
+
+2009-11-30 16:55  dts12
+
+   * agent/mibgroup/disman/schedule/schedCore.c:
+
+   CHANGES: agent: BUGS: 2873858: Fix handling of schedOwner index.
+   Patch provided by Max Schubert.
+
+2009-11-30 16:46  dts12
+
+   * local/mib2c.old-api.conf:
+
+   CHANGES: mib2c: BUGS: 2888569: Fix generation of table columns
+   array
+
+2009-11-30 16:30  dts12
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: agent: BUGS: 2894059: Handle errors when counting
+   interfaces
+
+2009-11-30 16:07  dts12
+
+   * agent/mibgroup/ucd-snmp/vmstat.c:
+
+   CHANGES: agent: BUG: 2897000: Suppress 32-bit counter truncation
+   warnings.
+
+2009-11-30 15:34  dts12
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: agent: PATCH: 2903092: Fix broken handling of broadcast
+   entries.
+
+2009-11-30 15:19  dts12
+
+   * agent/mibgroup/ucd-snmp/pass_persist.c:
+
+   CHANGES: agent: PATCH: 2901029: Fix compiler warning on
+   CloseHandle()
+   Endian problems already addressed by patch #2835576
+
+2009-11-30 15:13  dts12
+
+   * perl/agent/agent.xs:
+
+   CHANGES: perl: PATCH: 2890931: Better handling of Counter64
+   values.
+   Patch provided by Max Romanov.
+
+2009-11-30 15:07  dts12
+
+   * agent/mibgroup/ucd-snmp/vmstat_solaris2.c:
+
+   CHANGES: agent: PATCH: 2887816: Protect against division-by-zero
+   crash
+
+2009-11-30 15:03  dts12
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
+
+   CHANGES: agent: PATCH: 2883220: Fix compilation problems when
+   ifXTable is not included.
+
+2009-11-30 14:49  dts12
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   CHANGES: agent: PATCH: 2883155: Fix memory leak in proxy
+   handling.
+   Patch supplied by Gowtham Thommandra.
+
+2009-11-30 14:32  dts12
+
+   * agent/mibgroup/ucd-snmp/proc.c, man/snmpd.conf.5.def:
+
+   CHANGES: agent: PATCH: 2883092: Support monitoring processes that
+   should not be running.
+   Patch provided by Christian (cg75).
+   
+   Qn: Should this functionality be back-ported to earlier lines?
+
+2009-11-30 14:12  dts12
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   CHANGES: agent: PATCH: 2877518: Fix handling of scoped AgentX
+   variables
+
+2009-11-30 14:01  dts12
+
+   *  agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c:
+
+   CHANGES: agent: PATCH: 2835576: Fix endianness issues in
+   pass/pass_persist
+
+2009-11-27 08:54  jsafranek
+
+   * agent/helpers/table_row.c:
+
+   Remove executable attribute from source files.
+
+2009-11-25 20:35  magfr
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      local/mib2c.notify.conf:
+
+   CHANGES: snmpd: Make all the oids and oid lengths in agent_trap.c
+   const and use them from everywhere.
+
+2009-11-25 20:27  magfr
+
+   * snmplib/Makefile.in:
+
+   CHANGES: snmplib: Install library/oid.h. Thanks to "Tomasz Lis"
+   who spotted the bug.
+
+2009-11-25 09:47  bvassche
+
+   * include/net-snmp/agent/instance.h:
+
+   Comment-only change: changed the name in the file header from
+   testhandler.h
+   to instance.h such that it now matches the filename.
+
+2009-11-24 07:49  magfr
+
+   * agent/agent_trap.c:
+
+   Remove unnecessary cast
+
+2009-11-23 07:07  magfr
+
+   * agent/agent_trap.c, include/net-snmp/agent/agent_trap.h:
+
+   CHANGES: snmpd: Make the enterprise argument of
+   netsnmp_send_traps and send_enterprise_trap_vars const
+
+2009-11-23 07:02  magfr
+
+   * include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   CHANGES: snmplib: Make the name argument to find_varbind_in_list
+   const
+
+2009-11-22 23:25  magfr
+
+   * agent/mibgroup/Rmon/event.c, agent/mibgroup/smux/smux.h:
+
+   Remove some local redeclarations of functions
+
+2009-11-22 01:03  magfr
+
+   *  win32/config.h.borland, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building, Win32: Remove a few unused configure symbols
+
+2009-11-21 08:01  bvassche
+
+   * win32/Snmp-winExtDLL.h, win32/snmp-winextdll.h:
+
+   Replaced an accidentally committed file by the proper contents.
+
+2009-11-20 16:29  bvassche
+
+   * win32/net-snmp/net-snmp-config.h:
+
+   Reverted accidentally merged changes.
+
+2009-11-20 16:26  bvassche
+
+   *  win32/lib, win32/net-snmp/net-snmp-config.h,   
+      win32/snmp-winextdll.h:
+
+   Updated Subversion ignore list.
+
+2009-11-20 16:18  bvassche
+
+   *  agent/helpers/table_iterator.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable_access.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/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/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+         agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.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,
+         local/mib2c-conf.d/mfd-interface.m2c,   
+      local/mib2c.access_functions.conf,   
+      local/mib2c.iterate_access.conf, snmplib/read_config.c:
+
+   Spelling fix in C source code comments: replaced 'retrival' by
+   'retrieval'.
+
+2009-11-20 16:15  bvassche
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Fixed a naming inconsistency: replaced two occurrences winExtDll
+   by winExtDLL in source code comments.
+
+2009-11-19 22:52  magfr
+
+   *  agent/helpers/watcher.c, agent/mibgroup/mibII/system_mib.c,   
+      include/net-snmp/agent/watcher.h:
+
+   CHANGES: snmpd: BUG: 2900078: Add support for OID variables with
+   size in elements instead of bytes, correct sysObjectID to use
+   this.
+
+2009-11-13 12:59  jsafranek
+
+   * agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/tcp.c:
+
+   CHANGES: snmpd: Fixed logging of 'truncating integer value > 32
+   bits' in IP-MIB and TCP-MIB
+   The counters, which grow fast are now cut to 32bits.
+
+2009-11-12 08:26  magfr
+
+   * agent/snmpd.c:
+
+   Use big printf's instead of many small ones to save a few hundred
+   bytes on the final executable size.
+
+2009-11-12 02:24  magfr
+
+   *  configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/Makefile.in,   
+      snmplib/strlcpy.c, snmplib/strtok_r.c, snmplib/strtol.c,   
+      snmplib/strtoul.c, snmplib/strtoull.c:
+
+   CHANGES: building: Use AC_REPLACE_FUNCS to handle code that is
+   missing on some platforms.
+
+2009-11-11 09:00  dts12
+
+   * local/mib2c.iterate.conf, local/mib2c.table_data.conf:
+
+   Fix cache free routine to match header declaration.
+   Return success/failure values from cache load routine.
+   Problem identified by Xuan.
+
+2009-10-30 09:51  magfr
+
+   *  include/net-snmp/library/asn1.h, include/net-snmp/library/oid.h,  
+       include/net-snmp/types.h:
+
+   NEWS: snmplib: Revert 17808, instead factor out the declaration
+   of oid to it's own file and include that file from both types.h
+   and asn1.h
+
+2009-10-30 08:28  magfr
+
+   *  agent/helpers/table.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/struct.h, agent/mibgroup/ucd-snmp/memory.c,   
+      apps/snmpnetstat/if.c, configure,   
+      configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in, include/net-snmp/types.h,  
+       snmplib/mib.c, snmplib/oid_stash.c, snmplib/read_config.c,   
+      snmplib/snmp_debug.c, snmplib/snmpusm.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmplib, snmpd, snmpnetstat: Add correct size prefixes
+   when printing variables of type oid.
+
+2009-10-30 08:07  magfr
+
+   * include/net-snmp/types.h:
+
+   CHANGES: snmplib: Change oid to be a 32-bit type on ILP64 and
+   LP64 platforms.
+
+2009-10-30 08:05  magfr
+
+   * include/net-snmp/library/asn1.h:
+
+   NEWS: snmplib: Remove the oid typedef from
+   <net-snmp/library/asn1.h>. It is still present in
+   <net-snmp/types.h>, use that file.
+
+2009-10-28 16:48  hardaker
+
+   * agent/snmp_vars.c:
+
+   don't require subagent_init() if not only building master agent
+   code
+
+2009-10-27 06:44  magfr
+
+   *  local/mib2c-conf.d/generic-table-indexes-to-oid.m2i,   
+      local/mib2c.access_functions.conf, local/mib2c.container.conf,   
+      local/mib2c.iterate.conf, local/mib2c.iterate_access.conf,   
+      local/mib2c.row.conf, local/mib2c.scalar.conf,   
+      local/mib2c.table_data.conf:
+
+   CHANGES: mib2c: Remove unnecessary casts to u_char*
+
+2009-10-14 23:12  magfr
+
+   * apps/encode_keychange.c, snmplib/scapi.c:
+
+   CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van
+   Assche": Replace SNMP_ZERO of arrays with a memset.
+
+2009-10-12 20:28  magfr
+
+   * snmplib/parse.c:
+
+   Lessen the scope of the rp variable to the smallest possible one.
+
+2009-10-09 12:38  jsafranek
+
+   * snmplib/snmp_client.c:
+
+   CHANGES: snmplib: PATCH:2871747: plug memory leak in OID
+   processing.
+   The memory leaked when small OID, which could fit pre-allocated
+   vp->name_loc, was placed in different (allocated) one.
+
+2009-10-09 05:31  magfr
+
+   * snmplib/mib.c, snmplib/parse.c:
+
+   CHANGES: BUG: 2838243: Correct the output of unsigned values.
+   Thanks to Jack Huang of Qualcomm who pointed out this bug.
+
+2009-10-09 05:00  magfr
+
+   * snmplib/parse.c:
+
+   CHANGES: snmplib: Change the parsing of ranges to accept all
+   valid values.
+
+2009-10-07 22:24  magfr
+
+   *  agent/mibgroup/examples/example.c, agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         configure, configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: misc: PATCH: 2836112: Use the right modifier when
+   printing size_t and ssize_t variables.
+
+2009-10-07 12:50  jsafranek
+
+   * agent/mibgroup/mibII/vacm_vars.c:
+
+   CHANGES: snmpd: Fixed creation of views using snmpusm, OIDs with
+   indexes > 255 are allowed now.
+   This reverts SVN commit #7492.
+
+2009-10-05 19:19  magfr
+
+   *  include/net-snmp/library/dir_utils.h,   
+      include/net-snmp/library/file_utils.h,   
+      include/net-snmp/library/text_utils.h:
+
+   CHANGES: snmplib: Correct the spelling of __cplusplus when
+   checking if the file should be wrapped in extern "C".
+
+2009-10-05 06:13  magfr
+
+   * apps/snmpwalk.c:
+
+   CHANGES: snmpwalk: Handle the case when the end oid is longer
+   than the current oid correctly
+
+2009-09-30 10:12  dts12
+
+   * agent/mibgroup/host/hr_swinst.c:
+
+   CHANGES: Solaris: Protect against missing package version
+   information crashing the agent.
+   Problem reported by Inyaven Sakarai.
+
+2009-09-27 14:59  alex_b
+
+   *  win32/dist/README.build.win32.txt, win32/dist/build-binary.pl,   
+      win32/dist/scripts/mandir2html:
+
+   Win32: Binary build instructions and script updates.
+
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.5.rc3 -> V5.5
+
+2009-09-23 23:42  hardaker
+
+   *  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
+
+2009-09-23 23:40  hardaker
+
+   * FAQ:
+
+   remove SVN branch wording
+
+2009-09-23 23:36  hardaker
+
+   * FAQ:
+
+   proper project capitalization
+
+2009-09-23 23:35  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2009-09-23 23:30  hardaker
+
+   * man/pdu_api.3, man/session_api.3, man/varbind_api.3:
+
+   version update
+
+2009-09-22 21:51  tanders
+
+   * README.solaris:
+
+   fix typos
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.5.rc2 -> V5.5.rc3
+	
+2009-09-14 22:39  hardaker
+
+   *  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
+
+2009-09-14 22:36  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, man/pdu_api.3, man/session_api.3,   
+      man/varbind_api.3:
+
+   Version number update
+
+2009-09-14 22:18  hardaker
+
+   * README.aix, apps/snmpnetstat/if.c, include/net-snmp/system/aix.h:
+
+   Patch from magfr for 5.5 specific aix build fixes
+
+2009-09-02 07:12  jsafranek
+
+   *  agent/mibgroup/smux/snmp_bgp.c, agent/mibgroup/smux/snmp_ospf.c,  
+       agent/mibgroup/smux/snmp_rip2.c, include/net-snmp/library/mib.h:
+
+   CHANGES: snmplib: rename MIB macro to NETSNMP_MIB2_OID, MIB is
+   too generic and may conflict with applications.
+   
+   The old MIB macro is kept for backward compatibility, unless
+   NETSNMP_NO_LEGACY_DEFINITIONS is defined.
+
+2009-08-31 19:38  nba
+
+   * mibs/rfclist:
+
+   Additional RFC mibs
+
+2009-08-31 19:37  nba
+
+   * mibs/IANAifType-MIB.txt:
+
+   IANA fixed a bug
+
+2009-08-29 07:29  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: Remove unneeded casts.
+
+2009-08-29 07:28  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: ret is only used in settable tables so only declare it
+   then.
+
+2009-08-29 07:24  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: Replace the _oid_len variable with an explicit call of
+   OID_LENGTH.
+
+2009-08-29 07:21  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: Make every function that can be static static. Remove the
+   declarations of the static functions and the private defines from
+   the header.
+
+2009-08-29 07:19  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: Reorder the functions in order to avoid the need for
+   forward declarations.
+
+2009-08-29 07:16  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: netsnmp_table_register should be netsnmp_register_table
+   and take only two argments.
+
+2009-08-29 07:14  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: build_oid expects a pointer to allocated oid. Change to
+   use build_oid_noalloc and remove one copy of the indices.
+
+2009-08-29 07:10  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: There is no index_oid_len member in struct entry. Use the
+   intended local variable index_oid_len.
+
+2009-08-29 07:06  magfr
+
+   * local/mib2c.raw-table.conf:
+
+   mib2c: Correct the return type of ${i}_get*entry to match the
+   returned type.
+
+2009-08-26 22:37  hardaker
+
+   * ChangeLog:
+
+   whwoops; blew the changelog for rc2
+
+2009-08-26 17:38  hardaker
+
+   *  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
+
+2009-08-26 17:29  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+----------------------------------------------------------------------
+
+Changes: V5.5.rc1 -> V5.5.rc2
+	
+2009-08-26 17:38  hardaker
+
+   *  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
+
+2009-08-26 17:29  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2009-08-26 17:28  hardaker
+
+   * dist/makerelease.xml:
+
+   updated based on new SF upload methods; no longer as automatable
+
+2009-08-26 17:26  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c:
+
+   CHANGES: snmpd: patch from Jan to endless loop in default routes
+   on linux
+
+2009-08-26 17:25  hardaker
+
+   * include/net-snmp/library/types.h:
+
+   apply patch from Jan to fix C++ wrapper
+
+2009-08-26 14:53  dts12
+
+   * local/Makefile.in, local/mib2c.raw-table.conf:
+
+   Initial stab at a minimal-helper (raw) table template,
+   leaving most of the work to the user-provided MIB handler.
+
+2009-08-26 14:50  dts12
+
+   * snmplib/snmp_api.c:
+
+   Protect against bogus failures (returning 0) and subsequent
+   double-frees,
+   due to 15-/31-bit masking when selecting request IDs. Identified
+   by kromesky.
+
+2009-08-20 13:30  jsafranek
+
+   *  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/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c:
+
+   CHANGES: snmpd: plug leaks in ipIfStatsTable,
+   ipv6ScopeZoneIndexTable, ipSystemStatsTable and
+   ipDefaultRouterTable.
+   
+   It seems to me the tables were wrongly generated with
+   m2c_data_allocate or
+   someone forgot to release the user provided data.
+
+2009-08-12 15:00  tanders
+
+   * NEWS:
+
+   fix libtool version in NEWS
+
+2009-08-11 00:42  hardaker
+
+   * CHANGES, ChangeLog:
+
+   whoops; add real changelog enteries for .rc1
+
+2009-08-10 23:10  hardaker
+
+   * dist/makerelease.xml:
+
+   fix typo in svn2cl line
+
+2009-08-10 23:05  hardaker
+
+   * snmplib/Makefile.depend:
+
+   make depend
+
+2009-08-10 21:32  hardaker
+
+   *  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
+
+-------------------------------------------------------------------------------
+
+Changes: V5.5.pre3 -> V5.5.rc1
+
+2009-08-10 23:10  hardaker
+
+   * dist/makerelease.xml:
+
+   fix typo in svn2cl line
+
+2009-08-10 23:05  hardaker
+
+   * snmplib/Makefile.depend:
+
+   make depend
+
+2009-08-10 21:32  hardaker
+
+   *  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
+
+2009-08-10 21:21  hardaker
+
+   *  dist/makerelease.xml, man/pdu_api.3, man/session_api.3,   
+      man/varbind_api.3:
+
+   Version number update
+
+2009-08-07 10:32  dts12
+
+   * CHANGES, NEWS:
+
+   Correct, consolidate, clarify and cleanup the catalog of current
+   changes.
+
+2009-08-06 07:57  dts12
+
+   * FAQ:
+
+   Expand on exec vs extend.
+
+2009-08-05 20:07  dts12
+
+   *  agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      snmplib/file_utils.c:
+
+   CHANGES: snmpd: BUG: 2822355: Fix memory leaks on
+   udpEndpointTable (linux)
+   Patch supplied by Frank Lichtenheld
+
+2009-08-05 19:05  dts12
+
+   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c:
+
+   CHANGES: snmpd: PATCHES: 2822337: Fix memory leak in
+   ipAddressPrefixTable
+
+2009-08-05 15:16  jsafranek
+
+   * agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c:
+
+   Fix memory leak in NetToMediaTable.
+   When deleting row context, delete also associated data.
+
+2009-08-05 15:15  jsafranek
+
+   * 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c:
+
+   Fix memory leak in NetToMediaTable.
+   The container used to track entries to delete from cache should
+   be released when it's not needed.
+
+2009-08-05 15:12  jsafranek
+
+   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c:
+
+   Fix memory leak in UDP- and TCP-MIB.
+   The data from raw_data are copied to cache, so it should be
+   freed.
+
+2009-08-05 10:16  dts12
+
+   * apps/snmptable.c:
+
+   CHANGES: apps: BUG: 2811577: Fix bug in GetBulk handling.
+   Don't get confused by index values that contain a ':' character.
+
+2009-08-04 21:59  dts12
+
+   * local/mib2c-conf.d/mfd-access-unsorted-external-defines.m2i:
+
+   CHANGES: mib2c: BUG: 2827269: Suppress non-ordered TODO comments.
+
+2009-08-04 21:35  dts12
+
+   * local/mib2c.old-api.conf:
+
+   Handle generating code for a single table,
+   as well as a larger group.
+   Also addresses bug 2150285
+
+2009-08-04 21:16  magfr
+
+   * snmplib/strtoull.c:
+
+   snmplib: from "Bart van Assche & Magnus Fromreide": More updates
+   to strtoull.c
+
+2009-08-04 10:57  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
+
+   CHANGES: snmpd: from "Marcus Rückert": fix possible crash when
+   64-bit counters in ipSystemStatsTable get bigger than 2^32
+
+2009-08-03 19:27  magfr
+
+   *  configure, configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/strtoull.c:
+
+   CHANGES: snmplib: PATCH: 2827722: from "Bart Van Assche": Improve
+   strtoull to be less MSVC-specific
+
+2009-08-03 18:38  magfr
+
+   * man/Makefile.in:
+
+   remove an obsolete manual page from the set of files that should
+   be installed
+
+2009-07-27 12:41  hardaker
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+
+   make depend
+
+2009-07-27 12:11  hardaker
+
+   * man/netsnmp_Container_iterator.3:
+
+   remove an obsolete manual page
+
+2009-07-27 12:03  hardaker
+
+   * perl/SNMP/t/bulkwalk.t:
+
+   CHANGES: freebsd: patch from Cezary Morga to fix a make test on
+   freebsd
+
+2009-07-27 12:02  hardaker
+
+   *  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
+
+2009-07-27 11:52  hardaker
+
+   *  FAQ, NEWS, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
+2009-07-27 08:39  hardaker
+
+   * testing/tests/T350unix:
+
+   revert accidentially applied patch
+
+2009-07-27 08:37  hardaker
+
+   *  testing/tests/T350unix, testing/tests/T360dtlsudp,   
+      testing/tests/test-localhost.cert,   
+      testing/tests/test-localhost.priv, testing/tests/test-user.cert,  
+       testing/tests/test-user.priv:
+
+   added a test case for udp/dtls
+
+2009-07-27 08:36  hardaker
+
+   * snmplib/snmp_api.c:
+
+   don't require a session to carry a secName
+
+2009-07-26 21:34  alex_b
+
+   * win32/libsnmp_dll/libsnmp.def:
+
+   Win32: MSVC 6 compile fixes for Workspace build.
+
+2009-07-26 18:20  alex_b
+
+   *  README.win32, configure, configure.d/config_os_functions,   
+      include/net-snmp/library/system.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/strtoull.c,   
+      win32/dist/build-binary.bat, win32/dist/build-binary.pl,   
+      win32/dist/installer/net-snmp.nsi, win32/libsnmp/Makefile.in,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp_dll/Makefile.in,   
+      win32/libsnmp_dll/libsnmp.def.in,   
+      win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   -Added strtoull function and configure check for systems without
+   it such as Win32 MSVC 6
+   -Win32: MSVC 6 compile fixes - requires new strtoull.c file
+   -Win32: New build-binary script to simplify building the Windows
+   binary package.
+
+2009-07-25 05:31  magfr
+
+   * testing/tests/T160snmpnetstat:
+
+   Make sure a message is written if the relevant table is missing.
+
+2009-07-23 21:29  alex_b
+
+   * README:
+
+   Update email address in README.
+
+2009-07-23 01:07  alex_b
+
+   *  win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibssdk/netsnmpmibssdk.dsp:
+
+   Win32 MSVC 2008+ fixes.
+
+2009-07-23 00:55  alex_b
+
+   *  include/net-snmp/library/snmp_logging.h,   
+      win32/netsnmpmibssdk/Makefile.in,   
+      win32/netsnmpmibssdk/netsnmpmibssdk.dsp:
+
+   Win32 MSVC 2005+ build fixes. Thanks to Bart Van Assche.
+
+2009-07-21 12:22  dts12
+
+   *  local/mib2c.container.conf, local/mib2c.iterate.conf,   
+      local/mib2c.iterate_access.conf, local/mib2c.row.conf,   
+      local/mib2c.table_data.conf:
+
+   Add simple debug output to mib2c templates.
+
+2009-07-21 12:13  dts12
+
+   * local/mib2c.table_data.conf:
+
+   Fix missing semicolon typos.
+
+2009-07-21 09:15  dts12
+
+   * FAQ:
+
+   New suggested entries.
+
+2009-07-20 19:24  dts12
+
+   * FAQ:
+
+   Updates to CODING section.
+
+2009-07-20 11:09  jsafranek
+
+   * agent/mibgroup/etherlike-mib.h:
+
+   Add missing header file from patch #2053273.
+
+2009-07-19 15:09  dts12
+
+   * FAQ:
+
+   Updates to COMPILING section.
+
+2009-07-16 12:38  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_linux.c:
+
+   Add IPv6 octet counters.
+   New Linux kernels (e.g. 2.6.31-rc2, maybe some earlier) provide
+   counters for
+   incoming/outgoing IPv6 traffic for ipSystemStatsTable and
+   ipIfStatsTable.
+
+2009-07-15 22:46  tanders
+
+   * testing/tests/T350unix:
+
+   put temporary data to where they belong
+
+2009-07-11 21:50  tanders
+
+   * configure:
+
+   regenerate configure
+
+2009-07-11 21:04  tanders
+
+   * configure.d/config_os_libs:
+
+   build fix (e.g. for FreeBSD): adjust kvm configure tests
+
+2009-07-10 12:35  jsafranek
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   Check IPv6 port ranges in the same way as IPv4 ports are checked.
+
+2009-07-10 07:46  jsafranek
+
+   * 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         local/mib2c:
+
+   Fix another IPv4 address size - long has 8 bytes on 64bit Linux.
+   Also fix the default type fo^CASN_IPADDRESS in mib2c, so the
+   ipCidrRouteTable_interface.c can be safely regenerated.
+
+2009-07-09 23:42  hardaker
+
+   *  testing/tests/T300udp, testing/tests/T310tcp,   
+      testing/tests/T320udpv6, testing/tests/T330tcpv6,   
+      testing/tests/T350unix:
+
+   cleanup of testing cases to remove double include and double
+   exports
+
+2009-07-09 23:07  tanders
+
+   * testing/tests/T300udp:
+
+   be consistent with the TCP/IPv4 test
+
+2009-07-09 22:18  hardaker
+
+   *  testing/tests/Stransport, testing/tests/T300udp,   
+      testing/tests/T310tcp, testing/tests/T320udpv6,   
+      testing/tests/T330tcpv6, testing/tests/T350unix,   
+      testing/tests/T399alias:
+
+   new tests for testing defined transports
+
+2009-07-09 22:17  hardaker
+
+   * testing/TESTCONF.sh, testing/eval_tools.sh:
+
+   a CONFIGAPP macro for adding stuff to snmp.conf
+
+2009-07-08 15:12  jsafranek
+
+   * snmplib/snmpUDPDomain.c:
+
+   Fix gethostbyaddr parameter, netsnmp_udp_fmtaddr never returned a
+   hostname.
+
+2009-07-07 15:46  jsafranek
+
+   *  agent/mibgroup/mibII/ipCidrRouteTable_access.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c:
+
+   Fix IP address length on 64 bit systems in mibII, pass and
+   pass_persist modules.
+
+2009-07-07 15:24  jsafranek
+
+   * agent/mibgroup/mibII/at.c:
+
+   Use correctly sized IP addresses in address translation table
+   processing - u_long can make problems on bin endian 64 bit
+   systems
+
+2009-06-29 13:52  hardaker
+
+   * CHANGES:
+
+   remove entry for a patch that got reverted
+
+2009-06-25 15:24  dts12
+
+   *  include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/library/types.h, include/net-snmp/types.h,   
+      snmplib/Makefile.in:
+
+   Move non-core data types into a separate (library internals)
+   header file.
+   Move the large_fd_set data structure into this header file.
+
+2009-06-18 22:29  tanders
+
+   * agent/snmp_perl.c:
+
+   CHANGES: build: allow building with Perl versions that lack
+   PERL_EXIT_DESTRUCT_END
+
+2009-06-18 22:13  tanders
+
+   * apps/snmpnetstat/if.c:
+
+   CHANGES: build: build fix for Tru64 Unix and IRIX: move _XOPEN*
+   definitions to where they are in 5.4.x and earlier
+
+2009-06-18 06:02  magfr
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Clean up --with-nl configuration
+   *  Move the _ARG_WITH to config_project_with_enable  2009-06-16 15:17
+       rstory
+
+
+   * snmplib/container.c:
+
+   check for null pointer before deref
+
+2009-06-15 23:52  rstory
+
+   * snmplib/snmp_client.c:
+
+   add comment explaining not quite obvious lack of memmove
+
+2009-06-15 19:32  magfr
+
+   * include/net-snmp/types.h:
+
+   Remove #if 0 commented code
+
+2009-06-15 15:25  dts12
+
+   * FAQ:
+
+   Updates to AGENT section.
+
+-------------------------------------------------------------------------------
+
+Changes: V5.5.pre2 -> V5.5.pre3
+
 2009-06-13 01:12  hardaker
 
    *  agent/mibgroup/mibII/tcpTable.c, configure,   
@@ -10634,6 +38826,10 @@
 
    CHANGES: Win32: BUG: 2779541 Fixed handle leak in pass_persist.
 
+-------------------------------------------------------------------------------
+
+Changes: V5.5.pre1 -> V5.5.pre2
+
 2009-04-23 22:53  hardaker
 
    * agent/mibgroup/hardware/sensors.h, snmplib/snmp_alarm.c:
@@ -11667,6 +39863,10 @@
 
    Version number update
 
+-------------------------------------------------------------------------------
+
+Changes: V5.4 -> V5.5.pre1
+
 2009-04-01 21:58  hardaker
 
    * man/snmp.conf.5.def, man/snmpd.8.def:
@@ -36232,7 +64432,7 @@
    * local/mib2c-conf.d/mfd-interface.m2c:
 
    - pass NULL to config handler reg, to use current apptype
-   - add seperators and headers when saving persistent data
+   - add separators and headers when saving persistent data
    - remove extraneous newline in persistent data
 
 2005-03-24 22:06  rstory
@@ -63848,7 +92048,7 @@
 
    * agent/helpers/instance.c:
 
-   Report non-exitent subinstances as 'noSuchInstance' rather than 'noSuchObject'.
+   Report non-existent subinstances as 'noSuchInstance' rather than 'noSuchObject'.
    "snmpget .... .1.3.6.1.6.3.12.1.5.0.99" now responds correctly.
    (though "snmpget .... .1.3.6.1.6.3.12.1.5.1" still returns 'noSuchObject')
    
diff --git a/FAQ b/FAQ
index 0f06b58..a2bd68a 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.5.2
+			Net-SNMP Version: 5.6.2
 	    Net-SNMP/UCD-SNMP Project Leader: Wes Hardaker
 	     Email: net-snmp-coders@lists.sourceforge.net
 
diff --git a/Makefile.in b/Makefile.in
index 542f4ab..174d61c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,3 +1,4 @@
+
 #
 # Makefile.in (at the root of net-snmp)
 #
@@ -16,7 +17,7 @@
 INSTALLHEADERS=version.h
 INCLUDESUBDIR=system
 INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
-	darwin.h darwin7.h darwin8.h darwin9.h dragonfly.h dynix.h \
+	darwin.h darwin7.h darwin8.h darwin9.h darwin10.h dragonfly.h dynix.h \
 	freebsd2.h freebsd3.h freebsd4.h freebsd5.h freebsd6.h \
 	freebsd7.h freebsd8.h freebsd9.h freebsd10.h freebsd11.h \
 	freebsd12.h freebsd.h \
@@ -84,11 +85,11 @@
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) )
 
-snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap:
+snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap snmptls:
 	@(cd snmplib; $(MAKE) )
 	@(cd apps; $(MAKE) $@ )
 
-snmptrapd:
+agentxtrap snmptrapd:
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) $@ )
@@ -108,19 +109,12 @@
 EXAMPLE.conf: sedscript EXAMPLE.conf.def
 	$(SED) -f sedscript $(srcdir)/EXAMPLE.conf.def > EXAMPLE.conf
 
-docs: docsdir mancp
+docs: docsdir 
 
 docsdir: docsdox
 
 docsdox: doxygen.conf
 	srcdir=$(srcdir) VERSION=$(VERSION) doxygen $(srcdir)/doxygen.conf
-	-rm docs/man/man3/todo.3
-	-rm docs/man/man3/deprecated.3
-
-mancp:
-	@for i in docs/man/man3/* ; do \
-	     cp $$i man/netsnmp_`basename $$i` ; \
-	done
 
 net-snmp-config-x: net-snmp-config
 	chmod a+x net-snmp-config
@@ -142,11 +136,8 @@
 #
 # test targets
 #
-test: all testdirs
-	( cd testing; $(MAKE) test )
-
-test-mibs: all testdirs
-	( cd testing; $(MAKE) test-mibs )
+test test-mibs testall testfailed testsimple: all testdirs
+	( cd testing; $(MAKE) $@ )
 
 testdirs:
 	for i in $(TESTDIRS) ; do	\
@@ -258,7 +249,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                   \
+		snmplib/snmpsm_init.h                               \
+                snmplib/transports/snmp_transport_inits.h           \
 		agent/mibgroup/agent_module_includes.h 	\
 		agent/mibgroup/agent_module_inits.h 	\
 		agent/mibgroup/agent_module_shutdown.h 	\
@@ -336,6 +328,30 @@
 	    echo "WARNING: not running autoconf"; \
 	fi
 
+gendir=dist/generation-scripts
+generation-scripts: generation-scripts-dirs $(gendir)/gen-transport-headers $(gendir)/gen-security-headers
+
+$(gendir)/gen-variables: $(gendir)/gen-variables.in
+	./config.status
+
+generation-scripts-dirs:
+	@if [ ! -d dist ] ; then \
+	    mkdir dist ;        \
+	fi
+	@if [ ! -d dist/generation-scripts ] ; then \
+	    mkdir dist/generation-scripts ;        \
+	fi
+
+$(gendir)/gen-transport-headers: $(gendir)/gen-transport-headers.in $(gendir)/gen-variables
+	rm -f $@
+	autoconf -o $@ $<
+	chmod a+x $@
+
+$(gendir)/gen-security-headers: $(gendir)/gen-security-headers.in $(gendir)/gen-variables
+	rm -f $@
+	autoconf -o $@ $<
+	chmod a+x $@
+
 config.status: configure
 	@if test "x$(NOAUTODEPS)" = "x"; then \
 	    echo "running config.status because $? changed"; \
@@ -373,25 +389,35 @@
 	fi
 
 checks:
-	$(MAKE) -k makefilecheck commentcheck warningcheck dependcheck
+	$(MAKE) -k makefilecheck commentcheck warningcheck dependcheck \
+	assertcheck perlcalloccheck
 
 dependcheck:
 	@echo "Checking for full paths in dependency files..."
-	@grep -n -E "^/" `$(FIND) $(top_srcdir) -name Makefile.depend` && exit 1
+	@if grep -n -E "^/" `$(FIND) $(top_srcdir) -name Makefile.depend`; then false; fi
 
 warningcheck:
 	@echo "Checking for cpp warnings..."
-	@grep -n -E "#warning" `$(FIND) $(top_srcdir) -name \*.\[ch\]` && exit 1
+	@if grep -n "#warning" `$(FIND) $(top_srcdir) -name \*.\[ch\]`; then false; fi
+
+assertcheck:
+	@echo "Checking for non-snmp asserts..."
+	@if grep -n -w "assert" `$(FIND) $(top_srcdir) -name \*.\[ch\] | grep -v snmp_assert.h | egrep -v 'perl/.*c' | grep -v openssl`; then false; fi
 
 commentcheck:
 	@echo "Checking for C++ style comments..."
-	@grep -n -E "([^:)n]|^)//" `$(FIND) $(top_srcdir) -path './win32' -prune -o -name \*.\[ch\] | grep -v agent/mibgroup/winExtDLL.c` && exit 1
+	@if grep -n -E "([^:)n]|^)//" `$(FIND) $(top_srcdir) -path './win32' -prune -o -name \*.\[ch\] | grep -v agent/mibgroup/winExtDLL.c`; then false; fi
 
-# always exit 1, since I can't figure out how to invert grep rc
 makefilecheck:
 	@echo "Checking for non-portable Makefile constructs..."
-	@grep -n "\.c=" `$(FIND) $(top_srcdir) -name "Makefile.*"`
-	@exit 1
+	@if grep -n "\.c=" `$(FIND) $(top_srcdir) -name .svn -prune -o -path ./Makefile.in -prune -o -name "Makefile.*" -print`; then false; fi
+
+# Invoking calloc() directly or indirectly from a Perl XSUB and freeing that
+# memory by calling free() from the XSUB is a sure way to trigger "Free to
+# wrong pool" errors on Windows.
+perlcalloccheck:
+	@echo "Checking for calloc() in Perl's external subroutines ..."
+	@if grep -nwE 'calloc|SNMP_MALLOC_STRUCT|SNMP_MALLOC_TYPEDEF' `$(FIND) $(top_srcdir) -name '*.xs'`; then false; fi
 
 dist: tar
 
diff --git a/Makefile.top b/Makefile.top
index f4fa4a8..334fbb8 100644
--- a/Makefile.top
+++ b/Makefile.top
@@ -76,8 +76,8 @@
 # policy: we increment major releases of LIBCURRENT by 5 starting at
 # 5.3 was at 10, 5.4 is at 15, ...  This leaves some room for needed
 # changes for past releases if absolutely necessary.
-# 
-LIBCURRENT  = 20
+#
+LIBCURRENT  = 25
 LIBAGE      = 0
 LIBREVISION = 2
 
@@ -114,5 +114,5 @@
 SNMPLIB_INCLUDES        = $(@SNMPLIB_INCLUDES@)
 AGENT_INCLUDES          = $(@AGENT_INCLUDES@)
 HELPER_INCLUDES         = $(@HELPER_INCLUDES@)
-MIBGROUP_INCLUDES       = $(@MIBGROUP_INCLUDES@)
+MIBGROUP_INCLUDES       = $(@MIBGROUP_INCLUDES@) @EXTERNAL_MIBGROUP_INCLUDES@
 
diff --git a/NEWS b/NEWS
index a6713fc..baace21 100644
--- a/NEWS
+++ b/NEWS
@@ -3,32 +3,127 @@
 that have been fixed/applied, and the ChangeLog file for a comprehensive
 listing of all changes made to the code.
 
-
-* 5.5.2 *
+*5.6.2*
 
     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.
+              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.
 
     building:
       - [PATCH 2091156]: Fix parallel builds (using 'make -j <N>')
 
-* 5.5.1 *
+*5.6.1*
+
+    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)
 
     snmpd:
-      - Fix handling of multiple matching VACM entries.
-        (Use the "best" match, rather than the first one).
-	Note that this could potentially affect the behaviour
-	of existing access control configurations.
+      - [PATCH 3141462]: Fix multi-opbject AgentX subagent requests
+      - Fix VACM persistant storage.
 
-    FreeBSD,NetBSD,OpenBSD:
-        Incorporate fixes from these O/S patch archives
+*5.6*
 
-* 5.5 *
+    all:
+      - Implemented the SNMP over TLS and SNMP over DTLS protocols [RFC-to-be]
+        See http://www.net-snmp.org/wiki/index.php/TUT:Using_TLS
+      - Implemented the "Transport Security Model" [RFC5591]
+      - Generic host-specific configuration .conf files are now read.
+	See the HOST-SPECIFIC FILES section of the snmp.conf manual page
+        and http://www.net-snmp.org/wiki/index.php/Configuration
+      - Include statements can now be used in .conf files.
+        See http://www.net-snmp.org/wiki/index.php/Configuration
+
+    snmpd:
+      - Fix handling of multiple matching VACM entries. (Use the "best"
+	match, rather than the first one). Reported by Adam Lewis. Note
+	that this could potentially affect the behaviour of existing access
+	control configurations.
+      - Agent will no longer call table handlers if a set request for the
+	handler has invalid indexes
+      - table_data/tdata next handler will not be called during get
+	processing if no valid rows are found for the handler
+      - [PATCH 2952708]: Added Perl implementation of BRIDGE-MIB
+      - moved all functions defined in libnetsnmphelpers to
+	libnetsnmpagent. libnetsnmphelpers is now an empty library.
+      - Implemented the TSM-MIB and the TLSTM-MIB
+      - new API for indicating that persistent store needs to be saved
+	after the current request finishes processing
+      - [PATCH 2931446]: make the load averages writable.
+
+    apps:
+      - A new tool 'net-snmp-cert' that easily creates and manages
+        X.509 certificates for use with the SNMP over (D)TLS protocols.
+      - Added an 'agentxtrap' command to send notifications via AgentX
+        (See http://www.net-snmp.org/wiki/index.php/TUT:agentxtrap for details)
+      - -T command line flag can be used to pass configuration
+        directly to transports that can accept configuration tokens
+      - A new 'snmptls' command for manipulating the agent's TLS configuration
+
+    snmplib:
+      - A more modular transport subsystem that allows third party
+        extensions and dependencies for code reuse.
+      - New transport functions: f_config, f_open, f_copy and f_setup_session
+      - Transports can now specify session defaults
+        - E.G. dtlsudp: auto-sets the SNMP version and the security model.
+      - [PATCH 2942940]: Add a new function, netsnmp_parse_args, that is
+	like snmp_parse_args but takes an additional bitmask, flags, to
+	affect the behaviour. Also remove the magic handling of some
+	application names.
+      - A new X.509 certificate API for indexing and reading certificates
+      - new experimental row creation API which uses a state machine
+        to try really hard to create a row from a given varbind list
+      - netsnmp_container enhancements:
+        - added a free_item function
+        - added a CONTAINER_FREE_ALL macro/function
+        - added an interface for duplicating a container (CONTAINER_DUP)
+        - added a remove function to container_iterators
+	- added an ability to set options on binary_array containers
+      - new snmp token logOption allows specifying log destinations
+        via configuration conf files
+      - A very significant reduction in compiler warning output
+      - new experimental simple state machine handling API
+
+    building:
+      - Support for a stream-line stripped down version of internal
+        OpenSSL support using --with-openssl=internal.
+      - Do not require that the UDP transport is included.
+      - Building Net-SNMP with dmalloc support enabled is again possible.
+
+    mib2c:
+      - mib2c can now optionally run sed on generated code
+
+    testing:
+      - A brand new test infrastructure supporting multiple test suites
+        See perldoc testing/RUNFULLTESTS for details
+
+    python:
+      - walking broken agents won't cause an infinite loop
+
+    win32:
+      - IPv6 is only supported under Cygwin 1.7 or later.
+      - [BUG 2939168]: byte order of udpLocalPort is now correct.
+      - [BUG 2939168]: fixed test infrastructure ("make test"). This has
+	been fixed by using the proper environment separator character and
+	by adding the path of the netstat executable for Cygwin in
+	testing/TESTCONF.sh.
+      - building with another OpenSSL package than the Cygwin-provided
+	packages openssl and openssl-devel is again possible.
+      - running the regression test suite is again possible ('make test').
+      - winExtDLL compiles now under MinGW.
+      - the snmpd.conf keyword 'extend' is now supported under MinGW
+      - the snmptrapd.conf keyword traphandle is now supported under MinGW
+
+    qnx6:
+      - [PATCH 2836895]: support for QNX6
+
+*5.5*
 
     All applications:
       - Added the ability to "alias" transports to a more simple name
@@ -460,7 +555,7 @@
        - Enable these talbles by specifying --enable-mfd-rewrites to configure.
        - Most of these tables have IPv6 support as well.
      - ifIndex no longer changes when interfaces are added/removed, and all
-         tables/object wiil now use the same ifIndex for the same interface.
+         tables/object will now use the same ifIndex for the same interface.
 
    Solaris:
      - new experimental support for ucd-snmp/lmSensors MIB module
@@ -494,7 +589,7 @@
 
  Ports:
    - Linux 2.6 improvements
-   - Win32 Suport for TCP and UDP over IPv6 via Winsock version 2
+   - Win32 support for TCP and UDP over IPv6 via Winsock version 2
    - Win32 fixes in many places.
    - Win32 service support for snmptrapd
    - Win32 support for snmpconf
@@ -687,7 +782,7 @@
 *5.0.4*
 
    During the testing for release 5.0.4, a release candidate was uploaded
-   to Sourceforge and marked as hidden. For variouse reasons, the release
+   to Sourceforge and marked as hidden. For various reasons, the release
    was delayed and further changes and fixes were made.  However, the 
    release candidate files still appeared on the public FTP server and our
    mirrors. To avoid the confusion that could occur to users who may have
@@ -957,7 +1052,7 @@
       (see the trapsess section of the snmpd.conf manual page)
     - index matching in oids has been improved
       (see the snmpcmd manual page on -Ox, -OE, and -Ob).
-    - snmptrapd has new formating directives.
+    - snmptrapd has new formatting directives.
       (see the snmptrapd manual page on format1 and format2).
     - the agent can listen to multiple ports.
     - the agent can be restricted to listening on only certain interfaces.
@@ -1134,7 +1229,7 @@
     - many misc bug fixes, as always.
 
   Ports:
-    - snmpnetstat has been ported to the win32 enviornment.
+    - snmpnetstat has been ported to the win32 environment.
 
 *3.5.3*
     - Bug fixes, including row creation sets to mib modules should work again.
@@ -1290,7 +1385,7 @@
     - FAQ file!
     - bug-report script!
     - Agent can read .conf files from more places:
-      - SNMPCONFPATH enviornment variable.
+      - SNMPCONFPATH environment variable.
       - command line options:  -c FILE and -C.
     - Agent can send coldstart and authentication traps.
     - All requests/patches/questions should go to 
diff --git a/PORTING b/PORTING
index 01e0954..2d453f6 100644
--- a/PORTING
+++ b/PORTING
@@ -25,7 +25,7 @@
 the package to new architectures rarely take advantage of this setup
 and send me patches with lots of '#ifdef ARCH' type C code in it.  Let
 me say up front, I *hate* this type of coding now (even though I used
-to use it a lot).  What is better is to check for the necissary
+to use it a lot).  What is better is to check for the necessary
 functionality using the configure script and then use the results of
 those tests.
 
diff --git a/README b/README
index d279ce2..28b666b 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	       README file for net-snmp Version: 5.5.2
+	       README file for net-snmp Version: 5.6.2
 
 DISCLAIMER
 
@@ -349,6 +349,8 @@
     Peter Martin <pnmartin@users.sourceforge.net>
     Thomas Lackey <telackey@users.sourceforge.net>
     Joe Buehler <jbuehler@spirentcom.com>
+    Anders Persson <apersson@users.sourceforge.net>
+    Rojer <rojer@users.sourceforge.net>
     Bart Van Assche <bart.vanassche@gmail.com>
 
   We've probably forgotten people on this list.  Let us know if you've
diff --git a/README.agent-mibs b/README.agent-mibs
index 428024f..53f1caa 100644
--- a/README.agent-mibs
+++ b/README.agent-mibs
@@ -428,6 +428,19 @@
  sctpLookupRemPrimIPAddrTable L         5.5     C sctp-mib/=
  sctpLookupRemIPAddrTable     L         5.5     C sctp-mib/=
 
+------------------------------------------------------------------------------
+SNMP-TSM-MIB
+ snmpTsmStats                 A         5.6     D tsm-mib/snmpTsmStats/=
+ snmpConfiguration            A         5.6     W tsm-mib/=
+
+------------------------------------------------------------------------------
+TLSTM-MIB
+ snmpTlstmSession             A         5.6     W tlstm-mib/=/*
+ tlstmCertificateMapping.*    A         5.6     w tlstm-mib/=
+ tlstmCertToTSNTable          A         5.6     D tlstm-mib/=/*
+ tlstmParamsTable             A         5.6     D tlstm-mib/=/*
+ tlstmAddrTable               A         5.6     D tlstm-mib/=/*
+
 ==============================================================================
 
 Misc notes
@@ -445,3 +458,5 @@
  proper context support                   5.2
  DISMAN-EVENT-MIB implementation rewrite  5.3
  AgentX, host, disman/event by default    5.3
+ SSH Transport module                     5.5
+ (D)TLS Transport module                  5.6
diff --git a/README.snmpv3 b/README.snmpv3
index 263c955..99e4238 100644
--- a/README.snmpv3
+++ b/README.snmpv3
@@ -5,7 +5,9 @@
 doesn't ;-) --Wes:
 
 Note: SHA authentication and DES/AES encryption support is only available
-if you have OpenSSL installed.
+if you have OpenSSL installed or if you've compiled using
+--with-openssl=internal.  If you use --with-openssl=internal please
+read the documentation in snmplib/openssl/README for important details.
 
 Note: encryption support now *is* enabled in the binary releases downloadable
 from the net-snmp web site.
diff --git a/README.win32 b/README.win32
index e954aea..a8b6bf0 100644
--- a/README.win32
+++ b/README.win32
@@ -11,7 +11,7 @@
 
 The remainder of this guide has the following sections :
 
-Status as of 14-Oct-2006 for Win32 platforms
+Current Status for Win32 platforms
 Interactions with Other Vendor's Products
 Running Net-SNMP as a replacement for the Microsoft SNMP service
 Co-existence with Microsoft SNMP services
@@ -39,12 +39,13 @@
 
 ***************************************************************************
 *
-* Status as of 14-Oct-2006 for Win32 platforms
+* Status as of 21-Sep-2010 for Win32 platforms
 *
 ***************************************************************************
 
 All applications build with Microsoft Visual C++ 6.0, Microsoft Development
-Environment 2003 (MSVC 7.0/7.1), gcc under Cygwin, and gcc under MinGW.  
+Environment 2003 (MSVC 7.0/7.1), Microsoft Visual Studio 2005, Microsoft
+Visual Studio 2008, 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
@@ -55,14 +56,14 @@
   -  The TCP/IPv6 and UDP/IPv6 transports compile but are not tested.
   -  Extending the agent to support enterprise-specific MIBs works.
   -  Running the agent on a non-standard UDP or TCP port works.
-  -  Snmpd can be registered as a Windows NT/2000/XP service.
-  -  Snmptrapd can be registered as a Windows NT/2000/XP service.
+  -  Snmpd can be registered as a Windows service.
+  -  Snmptrapd can be registered as a Windows service.
   -  Some build environments allow long pathnames that contain
      embedded spaces.  As this is not true for Cygwin "configure",
      the documented example scripts will refer to "c:/usr"
      as the base directory for installed Net-SNMP software.
   -  When using the winExtDLL extension agent, the Net-SNMP agent will
-     load the Windows SNMP Service extension DLLs
+     load the Windows SNMP Service extension DLLs.
 
 The next subsection relates to items that are built using Visual Studio
 
@@ -99,9 +100,9 @@
      Check the Services panel to be sure no other SNMP program conflicts. See
      the section titled 'Co-existence with Microsoft SNMP services' below.
 
-  -  Running the Net-SNMP agent instead of the MS supplied one works
-     (at the loss of most of the functionality).   See the section titled 
-     'Co-existence with Microsoft SNMP services' below.
+  -  The Net-SNMP agent can be used instead of the MS supplied one while
+     retaining all functionality and with slightly better SNMP conformance.
+     See the section titled 'Co-existence with Microsoft SNMP services' below.
 
   -  The Net-SNMP agent does not use the MS SNMP.dll, therefore it cannot 
      run as an extensible part of the MS agent.  It is possible to use a third
@@ -161,9 +162,9 @@
 the default Windows (2003) extensions included with Windows.  Other Net-SNMP 
 modules take precedence over the modules loaded by winExtDLL.
 
-The binary install of Net-SNMP includes shortcuts in the Start menu for registering 
-and unregistering snmpd and snmptrapd as a service with the correct command line 
-options.
+The binary install of Net-SNMP includes shortcuts in the Start menu for
+registering and unregistering snmpd and snmptrapd as a service with the
+correct command line options.
 
 A simple test to see if winExtDLL is working is to get the sysDescr string.
 
@@ -233,7 +234,10 @@
 Compiling Net-SNMP with the winExtDLL extension (MSVC)
 ------------------------------------------------------
 
-When building with MSVC 6, the Microsoft Platform SDK is required.
+When building with MSVC 6, the Microsoft Platform SDK is required. Note: the
+most recent Platform SDK version that is still compatible with MSVC 6 is the
+February 2003 edition. This edition is no longer available online but can be
+ordered via http://mssdk.orderport.net/22221848/showall.asp.
 
 Configure / nmake:
 
@@ -406,10 +410,6 @@
 If you are using Microsoft Visual Studio 6.0, you will have to install the
 Platform SDK (PSDK) first.
 
-The Windows Server 2003 Platform SDK can be downloaded via the following URL
-(this is the most recent version of the PSDK that is still compatible with
-MSVC 6.0): http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
-
 Once the PSDK has been installed, select the following action from the Start
 Menu: Programs / Microsoft Windows SDK / Visual Studio Registration / Windows
 SDK Configuration Tool.
@@ -462,25 +462,23 @@
 'snmpwalk', etc...).  All of these projects require the .lib created by 
 the libsnmp project.
 
-The agent requires the core library plus the other three library projects
-('libagent', libhelpers' and 'netsnmpmibs') together with the main agent
-project ('snmpd').
+The agent requires the core library plus the other two library projects
+('libagent' and 'netsnmpmibs') together with the main agent project ('snmpd').
 
 The final application project is the trap handler 'snmptrapd'.  This also
-requires the agent libraries ('libagent', 'libhelpers' and 'netsnmpmibs')
-as well as the core development library.
+requires the agent libraries ('libagent' and 'netsnmpmibs') as well as the
+core development library.
 
 There is a Debug version and Release version for each subproject.  This is so
 the Debug and Release versions of an application can be built and tested
 separately.
 
-Both VC++ 6.0 and 7.1 have been tested.  Building with earlier Microsoft
-compiler versions is no longer supported.
+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.
 
-Note:  Compiling Net-SNMP using MSVC 2003 .NET (MSVC 7.1) will add a 
-       dependency of MSVCR71.DLL for NETSNMP.DLL and all applications.
-       Search msdn.microsoft.com for msvcr71.dll for more information
-       on distributing applications compiled with MSVC 2003 .Net.
+Note: if you want to distribute the generated executable, you will also need
+to distribute the Microsoft Visual Studio Redistributable Package. Check the
+EULA included with that package before redistributing it.
 
 OpenSSL is required to support the encryption capabilities in SNMPv3,
 or SHA authentication.
@@ -578,7 +576,7 @@
     To compile with the Platform SDK, the Platform SDK must already be 
     installed.  See the section 'Installing Platform SDK' for details.
 
-    To use the IPv6 transports, you must be using Windows 98 or later.
+    To use the IPv6 transports, Windows 98 or later is required.
 
     See the section 'Running Net-SNMP as a replacement for the Microsoft 
     SNMP service' for important information on using the winExtDLL agent.
@@ -694,9 +692,8 @@
 *
 ***************************************************************************
 
-The win32.dsw workspace allows to build the agent that provides mib-II objects
-for network interface layers, and the IP, ICMP, TCP and UDP tables. Proceed as
-follows:
+The win32.dsw and win32dll.dsw workspaces allow to build the agent and the
+applications. Proceed as follows:
 
 1. Update the version stamp in win32\net-snmp\net-snmp-config.h.  The current
    version can be found in the Unix configure script (top level folder) by 
@@ -719,113 +716,8 @@
 
      For example: #define INSTALL_BASE "c:/usr".  
 
-4. Build the applications
-
-   Static build (does not use NetSNMP.DLL)
-   =======================================
-
-   MS VC++ 6.0:
-   ------------
-   a. Open win32.dsw.
-   b. Click "Build->Batch Build..."  
-   c. Set Release and/or Debug in 'Project configurations' to suit.
-   d. Click "ReBuild All".
-   e. When building is done, View the Output window, clip and
-      save to a text file if there is some information to share.
-   f. Click "File->Close Workspace".
-
-   MS VC++ 7.0+:
-   -------------
-   a.  Open win32.dsw.
-   b.  Click "Yes to All" to convert the workspace
-   c.  Click "Build->Configuration Manager" and select either Release or Debug for 
-       'Active Solution Configuration' and click "Close"
-   d.  Right-click the "libagent" project, and select "Rebuild"
-   e.  Right-click the "libhelpers" project, and select "Rebuild"
-   f.  Right-click the "libnetsnmptrapd" project, and select "Rebuild"
-   g.  Right-click the "snmplib" project, and select "Rebuild"
-   h.  Right-click the "netsnmpmibs(sdk)" project, and select "Rebuild"
-   i.  Click "Build->Batch Build..." 
-   j.  Set Release and/or Debug in 'Project configurations' to suit making
-       sure libagent, libhelpers, libnetsnmptrapd, snmplib and netsnmpmibs are 
-       NOT selected.
-   k.  Click "Rebuild".
-   l.  When building is done, View the Output window, clip and
-       save to a text file if there is some information to share.
-   m.  Click "File->Close Solution".
-
-   Dynamic build (uses NetSNMP.DLL)
-   ================================
-
-   Complete the section 'Microsoft Visual C++ - Workspace - Building the DLL'.
-   This will create the Net-SNMP library DLL which is needed by the 
-   applications and will enable DLL support in net-snmp-config.h.
-
-   MS VC++ 6.0:
-   ------------
-   a. Open win32.dsw.
-   b. Click "Build->Batch Build..."  
-   c. Set Release and/or Debug in 'Project configurations' to suit for the 
-      applications.  Make sure the following are NOT selected:
-
-      libagent
-      libhelpers
-      libsnmp
-      netsnmpmib(sdk)
-      libnetsnmptrapd
-
-   d. Click "ReBuild All".
-   e. When building is done, View the Output window, clip and
-      save to a text file if there is some information to share.
-   f. Click "File->Close Workspace".
-
-   MS VC++ 7.0+:
-   -------------
-   a. Open win32.dsw.
-   b. Click "Yes to All" to convert the workspace
-   c. Click "Build->Configuration Manager" and select either Release or Debug for 
-      'Active Solution Configuration' and click "Close"
-   d. Click "Build->Batch Build..." 
-   e. Set Release and/or Debug in 'Project configurations' to suit for the 
-      applications.  Make sure the following are NOT selected:
-
-      libagent
-      libhelpers
-      libsnmp
-      netsnmpmib(sdk)
-      libnetsnmptrapd
-
-   f. Click "Rebuild".
-   g. When building is done, View the Output window, clip and
-      save to a text file if there is some information to share.
-   h. Click "File->Close Solution".
-  
-6.  If the Perl modules are required, continue with the next section:
-    'Microsoft Visual C++ - Building the Perl SNMP modules'.
-
-    Otherwise, continue with the section: 
-    'Microsoft Visual C++ - Installing'
-
-
-***************************************************************************
-*
-* Microsoft Visual C++ - Workspace - Building the DLL
-*
-***************************************************************************
-
-1.  Update the version stamp in win32\net-snmp\net-snmp-config.h.  The current
-    version can be found in the Unix configure script (top level folder) by 
-    looking for the PACKAGE_VERSION variable.
-
-2.  Optional: Make a backup of the existing net-snmp-config.h which contains 
-    settings for a static build of Net-SNMP:
-
-    Copy win32\net-snmp\net-snmp-config.h to 
-    win32\net-snmp\static-config.h.
-
-3.  Open win32\net-snmp\net-snmp-config.h using a text editor.
-
-4.  *Change* the following line which is located near the top of the file:
+4.  When building DLLs instead of static libraries, *change* the following
+    line which is located near the top of the file:
 
         /* #undef NETSNMP_USE_DLL */
 
@@ -833,38 +725,20 @@
 
         #define NETSNMP_USE_DLL 1
 
-5.  Optional: Make a backup of the new net-snmp-config.h which contains 
-    settings for a DLL build of Net-SNMP:
+5. Build the agent and the applications
 
-    Copy win32\net-snmp\net-snmp-config.h to 
-    win32\net-snmp\dll-config.h.
-
-6. Build the DLL and the applications
-
-   MS VC++ 6.0:
-   ------------
-   a. Open libsdll.dsw.
+   a. Open win32.dsw (static build) or win32dll.dsw (dynamic build).
    b. Click "Build->Batch Build..."  
-   c. Set Release and/or Debug in 'Project configurations' to suit.
-   d. Click "Clean".  ** Do NOT skip this step. **
-   e. Click "Build->Batch Build..."  
-   f. Click "ReBuild All".
-   g. When building is done, View the Output window, clip and
+   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
       save to a text file if there is some information to share.
-   h. Click "File->Close Workspace".
 
-   MS VC++ 7.0+:
-   -------------
-   a. Open win32dll.dsw.
-   b. Click "Yes to All" to convert the workspace
-   c. Click "Build->Batch Build..." 
-   d. Set Release and/or Debug in 'Project configurations' to suit.
-   e. Click "Clean".  ** Do NOT skip this step. **
-   f. Click "Build->Batch Build..." 
-   g. Click "Rebuild".
-   h. When building is done, View the Output window, clip and
-      save to a text file if there is some information to share.
-   i. Click "File->Close Solution".
+6.  If the Perl modules are required, continue with the next section:
+    'Microsoft Visual C++ - Building the Perl SNMP modules'.
+
+    Otherwise, continue with the section: 
+    'Microsoft Visual C++ - Installing'
 
 
 ***************************************************************************
@@ -878,21 +752,16 @@
 load it's own copy of the MIB, and sharing data between modules will
 not be possible.  For example, the conf module tests will fail.
 
-1.  Complete the section 'Microsoft Visual C++ - Building'.  This will build
-    the applications.  
+1.  Complete the section 'Microsoft Visual C++ - Building' and choose for
+    the dynamic build.  This will build the libraries, agent and applications.
 
     Note:  SNMPD.EXE and SNMPTRAPD.EXE are required for running the tests 
            against the SNMP Perl module.
 
-2.  Complete the section 'Microsoft Visual C++ - Workspace - Building the DLL'.
-    This will create the Net-SNMP library DLL which is needed for the Perl 
-    modules.  Note:  This step can be skipped if the DLL was already created
-    in step 1.
-
-3.  Install Net-SNMP as described in the 'Microsoft Visual C++ - Installing'
+2.  Install Net-SNMP as described in the 'Microsoft Visual C++ - Installing'
     section to install the applications, the DLL and the .lib files.
 
-4.  Continue with the Win32 section of the Perl README file located in 
+3.  Continue with the Win32 section of the Perl README file located in 
     perl\SNMP\README.
 
 
@@ -1013,26 +882,9 @@
 	ftp://ftp.openssl.org/source/
 
 
- 3. Once the OpenSSL libraries are built, you must copy them to the the MSVC 
-    directory:
+ 3. Once the OpenSSL libraries are built, copy the folder inc32\openssl to
+    C:\OpenSSL\Include\openssl and the folder out32dll to C:\OpenSSL\Lib\VC.
 
-    a.  Copy folder inc32\openssl to the include folder of MSVC++
-
-        Example: "C:\Program Files\Microsoft Visual Studio .NET 2003\
-                  Vc7\include\openssl\*.h"
-        Example: "C:\Program Files\Microsoft Visual Studio\
-                  VC98\include\openssl\*.h"
-
-    b.  Copy file out32dll\libeay32.lib to the lib folder of MSVC++
-
-        Example: "C:\Program Files\Microsoft Visual Studio .NET 2003\
-                  Vc7\lib\libeay32.lib"
-        Example: "C:\Program Files\Microsoft Visual Studio\
-                  VC98\lib\libeay32.lib"
-
-    c.  Copy file out32dll\libeay32.dll to your %windir%\system32 folder
-
-        Example: "C:\winnt\system32\libeay32.dll"
 
 Using a pre-compiled version
 ============================
@@ -1043,23 +895,6 @@
 
  2. Install the package to c:\OpenSSL.
 
- 3. Copy the header and library files to the the MSVC directory:
-
-    a.  Copy folder c:\OpenSSL\include\openssl to the include folder of 
-        MSVC++.
-
-        Example: "C:\Program Files\Microsoft Visual Studio .NET 2003\
-                  Vc7\include\openssl\*.h"
-        Example: "C:\Program Files\Microsoft Visual Studio\
-                  VC98\include\openssl\*.h"
-
-    b.  Copy file c:\OpenSSL\lib\VC\libeay32.lib to the lib folder of MSVC++.
-
-        Example: "C:\Program Files\Microsoft Visual Studio .NET 2003\
-                  Vc7\lib\libeay32.lib"
-        Example: "C:\Program Files\Microsoft Visual Studio\
-                  VC98\lib\libeay32.lib"
-
 
 Project changes
 ===============
@@ -1068,38 +903,10 @@
 
 	#define NETSNMP_USE_OPENSSL 1
 
- 2. Open Visual Studio, add the link line to the Project Settings
-    for all the applications, and especially for the libsnmp_dll project,
-    for as you know, a .DLL is an application.
-    You MUST do this for libsdll.dsw, and either win32.dsw or win32sdk.dsw,
-    whichever you use.
-
-   MS VC++ 6.0:
-   ------------
-   a.  Click Project->Settings.  
-   b.  Highlight the names of all projects except libsnmp, libagent, libhelpers,
-       libnetsnmptrapd, netsnmpmibs, netsnmpmibssdk.
-   c.  Select the Link section.
-   d.  Add the next line to the 'Object/Library Modules' list for Debug and 
-       Release versions:
-
-         libeay32.lib 
-
-   MS VC++ 7.0+:
-   -------------
-   a.  For each project (except libsnmp, libagent, libhelpers, libnetsnmptrapd,
-       netsnmpmibs, netsnmpmibssdk), click Project->Properties. 
-   b.  For Configuration, select 'Release'
-   c.  Click Linker and then Input
-   d.  Add to the 'Additional Dependencies' section:
-
-         libeay32.lib 
-
-   e.  For Configuration, select 'Debug'
-   f.  Click Linker and then Input
-   g.  Add to the 'Additional Dependencies' section:
-
-         libeay32.lib 
+ 2. Open Visual Studio, open the Tools menu and select Options. Go to
+    Projects and Solutions and select VC++ Directories. Add
+    C:\OpenSSL\Include to the list of include directories and
+    C:\OpenSSL\Lib\VC to the list of library directories.
 
  3. Continue with the section 'Microsoft Visual C++ - Building"
 
@@ -1244,18 +1051,17 @@
 *
 ***************************************************************************
 
-An alternate way to build Net-SNMP for win32 is to use Cygnus's cygwin32
-environment.  Information on the Cygnus cygwin32 environment is available
+An alternate way to build and run Net-SNMP on Win32 is to use the Cygwin
+environment.  Detailed information about the Cygwin environment is available
 on the web at: http://sources.redhat.com/cygwin/.
 
 Cygwin allows you to compile almost the complete agent and applications.
-The following configure options creates a working set of programs:
+As an example, the following configure options create a working set of
+programs:
 
 ./configure \
-	--disable-shared \
 	--with-mib-modules="host agentx disman/event-mib examples/example" \
 	--with-out-mib-modules=host/hr_network \
-        --disable-embedded-perl --without-perl-modules \
 
 If you want to disable SNMPv3 auth and privacy features, add:
 	--without-openssl \
@@ -1263,23 +1069,14 @@
 If you want to use IPv6 transports, add:
 	--enable-ipv6
 
-Note:  The source code should *not* be in a folder that contains a space.  For
-       example, compiling in your 'My Documents' or your Desktop (usually
-       c:\Documents and Settings\xxxx\Desktop) is not supported.
-        
-This has been tested for Windows 98 and Windows NT 4.0.  In order for
-the process part of the host resources MIB to work under NT you will need
-to get hold of the PSAPI.DLL. This available under the download section
-of www.microsoft.com.  The DLL is included with Windows 2000 and XP,
-and is also part of the VC++ distribution.  The IPHLPAPI library is
-part of the "Microsoft Platform SDK", which is also available from
-www.microsoft.com.  See the section "Installing Platform SDK" for details.
+Note: the source code should *not* be in a folder that contains a space.
+For example, compiling in your 'My Documents' folder or your Desktop folder
+(usually c:\Documents and Settings\xxxx\Desktop) is not supported.
 
-Earlier releases of Cygwin may need to use the configure flag
-	--with-libs="-lregex -libphlpapi"
-but this regular expression support has since been incorporated
-into the main Cygwin package, and it is no longer necessary to
-include it separately.
+A note for Windows NT users: in order for the process part of the host
+resources MIB (hr_swrun) to work under Windows NT you will need to get hold
+of PSAPI.DLL. This DLL is available under the download section of
+www.microsoft.com, and is also included in the VC++ distribution.
 
 If the folder that Net-SNMP was installed to is ever changed, modify the 
 system environment variables or registry keys as explained in the 
diff --git a/acconfig.h b/acconfig.h
index 5491941..f3f7bfe 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -1,5 +1,9 @@
 /* 
  * net-snmp configuration header file
+ *
+ * NOTE: DO NOT EDIT include/net-snmp/net-snmp-config.h.in as your changes
+ *       will be overwritten. This content is in acconfig.h and merged
+ *       into include/net-snmp/net-snmp-config.h.in by autoheader.
  */
 /* Portions of this file are subject to the following copyright(s).  See
  * the Net-SNMP's COPYING file for more details and other copyrights
@@ -40,7 +44,7 @@
 
 /* If you have openssl 0.9.7 or above, you likely have AES support. */
 #undef NETSNMP_USE_OPENSSL
-#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_OPENSSL_AES_H) && defined(HAVE_AES_CFB128_ENCRYPT)
+#if (defined(NETSNMP_USE_OPENSSL) && defined(HAVE_OPENSSL_AES_H) && defined(HAVE_AES_CFB128_ENCRYPT)) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 #define HAVE_AES 1
 #endif
 
@@ -256,7 +260,7 @@
 #ifdef WIN32
 #define NETSNMP_OSTYPE NETSNMP_WIN32ID
 #endif
-#if defined(aix3) || defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix3) || defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #define NETSNMP_OSTYPE NETSNMP_AIXID
 #endif
 #if defined(darwin) && (darwin >= 8)
@@ -383,7 +387,7 @@
 
 /*  This is defined if support for the TLS transport domain is
     available.   */
-#undef NETSNMP_TRANSPORT_TLS_DOMAIN
+#undef NETSNMP_TRANSPORT_TLSBASE_DOMAIN
 
 /*  This is defined if support for the Alias transport domain is
     available.   */
@@ -397,9 +401,16 @@
     available.   */
 #undef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
 
+/*  This is defined if support for the TLS/TCP transport domain is
+    available.   */
+#undef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
 /*  This is defined if support for stdin/out transport domain is available.   */
 #undef NETSNMP_TRANSPORT_STD_DOMAIN
 
+/*  This is defined if support for the IPv4Base transport domain is available.   */
+#undef NETSNMP_TRANSPORT_IPV4BASE_DOMAIN
+
 /* define this if the USM security module is available */
 #undef NETSNMP_SECMOD_USM
 
diff --git a/aclocal.m4 b/aclocal.m4
index de594b8..cd80c74 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
 # 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.
diff --git a/agent/Makefile.depend b/agent/Makefile.depend
index ffc1aca..ba42c5c 100644
--- a/agent/Makefile.depend
+++ b/agent/Makefile.depend
@@ -8,12 +8,16 @@
 ./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
+./agent_handler.lo: ../include/net-snmp/library/oid.h
 ./agent_handler.lo: ../include/net-snmp/library/types.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_api.h
 ./agent_handler.lo: ../include/net-snmp/varbind_api.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_handler.lo: ../include/net-snmp/pdu_api.h
 ./agent_handler.lo: ../include/net-snmp/library/asn1.h
+./agent_handler.lo: ../include/net-snmp/output_api.h
+./agent_handler.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_handler.lo: ../include/net-snmp/session_api.h
 ./agent_handler.lo: ../include/net-snmp/library/callback.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_transport.h
@@ -21,8 +25,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_handler.lo: ../include/net-snmp/library/ucd_compat.h
@@ -44,7 +52,6 @@
 ./agent_handler.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_handler.lo: ../include/net-snmp/library/container.h
 ./agent_handler.lo: ../include/net-snmp/library/factory.h
-./agent_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_handler.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_handler.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_handler.lo: ../include/net-snmp/library/container_iterator.h
@@ -54,11 +61,10 @@
 ./agent_handler.lo: ../include/net-snmp/config_api.h
 ./agent_handler.lo: ../include/net-snmp/library/read_config.h
 ./agent_handler.lo: ../include/net-snmp/library/default_store.h
+./agent_handler.lo: ../include/net-snmp/net-snmp-config.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_handler.lo: ../include/net-snmp/library/vacm.h
-./agent_handler.lo: ../include/net-snmp/output_api.h
-./agent_handler.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_handler.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_handler.lo: ../include/net-snmp/library/transform_oids.h
@@ -104,20 +110,21 @@
 ./agent_handler.lo: ../include/net-snmp/agent/table_container.h
 ./agent_handler.lo: ../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./agent_index.lo: ../include/net-snmp/system/sysv.h
-./agent_index.lo: ../include/net-snmp/system/generic.h
-./agent_index.lo: ../include/net-snmp/machine/generic.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
+./agent_index.lo: ../include/net-snmp/library/oid.h
 ./agent_index.lo: ../include/net-snmp/library/types.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_api.h
 ./agent_index.lo: ../include/net-snmp/varbind_api.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_index.lo: ../include/net-snmp/pdu_api.h
 ./agent_index.lo: ../include/net-snmp/library/asn1.h
+./agent_index.lo: ../include/net-snmp/output_api.h
+./agent_index.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_index.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_index.lo: ../include/net-snmp/session_api.h
 ./agent_index.lo: ../include/net-snmp/library/callback.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_transport.h
@@ -125,8 +132,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_index.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_index.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_index.lo: ../include/net-snmp/library/ucd_compat.h
@@ -148,7 +159,6 @@
 ./agent_index.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_index.lo: ../include/net-snmp/library/container.h
 ./agent_index.lo: ../include/net-snmp/library/factory.h
-./agent_index.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_index.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_index.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_index.lo: ../include/net-snmp/library/container_iterator.h
@@ -161,8 +171,6 @@
 ./agent_index.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_index.lo: ../include/net-snmp/library/vacm.h
-./agent_index.lo: ../include/net-snmp/output_api.h
-./agent_index.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_index.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_index.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_index.lo: ../include/net-snmp/library/transform_oids.h
@@ -208,24 +216,25 @@
 ./agent_index.lo: ../include/net-snmp/agent/table_container.h
 ./agent_index.lo: ../include/net-snmp/agent/table_array.h
 ./agent_index.lo: ../include/net-snmp/agent/mfd.h
+./agent_index.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agent_index.lo: ../include/net-snmp/agent/agent_callbacks.h
 ./agent_index.lo: ../include/net-snmp/agent/agent_index.h snmpd.h
 ./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/system/linux.h
-./agent_read_config.lo: ../include/net-snmp/system/sysv.h
-./agent_read_config.lo: ../include/net-snmp/system/generic.h
-./agent_read_config.lo: ../include/net-snmp/machine/generic.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
+./agent_read_config.lo: ../include/net-snmp/library/oid.h
 ./agent_read_config.lo: ../include/net-snmp/library/types.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_api.h
 ./agent_read_config.lo: ../include/net-snmp/varbind_api.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_read_config.lo: ../include/net-snmp/pdu_api.h
 ./agent_read_config.lo: ../include/net-snmp/library/asn1.h
+./agent_read_config.lo: ../include/net-snmp/output_api.h
+./agent_read_config.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_read_config.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_read_config.lo: ../include/net-snmp/session_api.h
 ./agent_read_config.lo: ../include/net-snmp/library/callback.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_transport.h
@@ -233,8 +242,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_read_config.lo: ../include/net-snmp/library/ucd_compat.h
@@ -256,7 +269,6 @@
 ./agent_read_config.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_read_config.lo: ../include/net-snmp/library/container.h
 ./agent_read_config.lo: ../include/net-snmp/library/factory.h
-./agent_read_config.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_read_config.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_read_config.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_read_config.lo: ../include/net-snmp/library/container_iterator.h
@@ -269,8 +281,6 @@
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_read_config.lo: ../include/net-snmp/library/vacm.h
-./agent_read_config.lo: ../include/net-snmp/output_api.h
-./agent_read_config.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_read_config.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_read_config.lo: ../include/net-snmp/library/transform_oids.h
@@ -315,15 +325,18 @@
 ./agent_read_config.lo: ../include/net-snmp/agent/table_iterator.h
 ./agent_read_config.lo: ../include/net-snmp/agent/table_container.h
 ./agent_read_config.lo: ../include/net-snmp/agent/table_array.h
-./agent_read_config.lo: ../include/net-snmp/agent/mfd.h mibgroup/struct.h
-./agent_read_config.lo: snmpd.h ../include/net-snmp/agent/agent_callbacks.h
+./agent_read_config.lo: ../include/net-snmp/agent/mfd.h
+./agent_read_config.lo: ../include/net-snmp/agent/snmp_get_statistic.h
+./agent_read_config.lo: mibgroup/struct.h snmpd.h
+./agent_read_config.lo: ../include/net-snmp/agent/agent_callbacks.h
 ./agent_read_config.lo: ../agent/mibgroup/agent_module_includes.h
 ./agent_read_config.lo: mibgroup/smux/smux.h mibgroup/utilities/iquery.h
 ./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/host/hr_swinst.h mibgroup/host/hr_swrun.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
@@ -335,6 +348,9 @@
 ./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
@@ -364,14 +380,14 @@
 ./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/proc.h ../agent/mibgroup/mibdefs.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/versioninfo.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/pass.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/pass_persist.h
-./agent_read_config.lo: mibgroup/ucd-snmp/disk.h mibgroup/ucd-snmp/loadave.h
-./agent_read_config.lo: mibgroup/agent/extend.h mibgroup/ucd-snmp/errormib.h
-./agent_read_config.lo: mibgroup/ucd-snmp/file.h mibgroup/ucd-snmp/dlmod.h
-./agent_read_config.lo: mibgroup/ucd-snmp/proxy.h
+./agent_read_config.lo: mibgroup/ucd-snmp/loadave.h mibgroup/agent/extend.h
+./agent_read_config.lo: mibgroup/ucd-snmp/errormib.h mibgroup/ucd-snmp/file.h
+./agent_read_config.lo: mibgroup/ucd-snmp/dlmod.h mibgroup/ucd-snmp/proxy.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/logmatch.h
 ./agent_read_config.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
 ./agent_read_config.lo: mibgroup/notification/snmpNotifyTable.h
@@ -419,6 +435,19 @@
 ./agent_read_config.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h
 ./agent_read_config.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
 ./agent_read_config.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
+./agent_read_config.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.h
+./agent_read_config.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
+./agent_read_config.lo: ../include/net-snmp/data_access/defaultrouter.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h
 ./agent_read_config.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
 ./agent_read_config.lo: ../include/net-snmp/data_access/arp.h
 ./agent_read_config.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
@@ -478,19 +507,19 @@
 ./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/system/linux.h
-./agent_registry.lo: ../include/net-snmp/system/sysv.h
-./agent_registry.lo: ../include/net-snmp/system/generic.h
-./agent_registry.lo: ../include/net-snmp/machine/generic.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
+./agent_registry.lo: ../include/net-snmp/library/oid.h
 ./agent_registry.lo: ../include/net-snmp/library/types.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_api.h
 ./agent_registry.lo: ../include/net-snmp/varbind_api.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_registry.lo: ../include/net-snmp/pdu_api.h
 ./agent_registry.lo: ../include/net-snmp/library/asn1.h
+./agent_registry.lo: ../include/net-snmp/output_api.h
+./agent_registry.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_registry.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_registry.lo: ../include/net-snmp/session_api.h
 ./agent_registry.lo: ../include/net-snmp/library/callback.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_transport.h
@@ -498,8 +527,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_registry.lo: ../include/net-snmp/library/ucd_compat.h
@@ -521,7 +554,6 @@
 ./agent_registry.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_registry.lo: ../include/net-snmp/library/container.h
 ./agent_registry.lo: ../include/net-snmp/library/factory.h
-./agent_registry.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_registry.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_registry.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_registry.lo: ../include/net-snmp/library/container_iterator.h
@@ -534,8 +566,6 @@
 ./agent_registry.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_registry.lo: ../include/net-snmp/library/vacm.h
-./agent_registry.lo: ../include/net-snmp/output_api.h
-./agent_registry.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_registry.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_registry.lo: ../include/net-snmp/library/transform_oids.h
@@ -581,23 +611,24 @@
 ./agent_registry.lo: ../include/net-snmp/agent/table_container.h
 ./agent_registry.lo: ../include/net-snmp/agent/table_array.h
 ./agent_registry.lo: ../include/net-snmp/agent/mfd.h
+./agent_registry.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agent_registry.lo: ../include/net-snmp/agent/agent_callbacks.h snmpd.h
 ./agent_registry.lo: mibgroup/struct.h ../agent/mibgroup/agentx/subagent.h
 ./agent_registry.lo: ../agent/mibgroup/agentx/client.h
 ./agent_sysORTable.lo: ../include/net-snmp/net-snmp-config.h
-./agent_sysORTable.lo: ../include/net-snmp/system/linux.h
-./agent_sysORTable.lo: ../include/net-snmp/system/sysv.h
-./agent_sysORTable.lo: ../include/net-snmp/system/generic.h
-./agent_sysORTable.lo: ../include/net-snmp/machine/generic.h
 ./agent_sysORTable.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_sysORTable.lo: ../include/net-snmp/definitions.h
 ./agent_sysORTable.lo: ../include/net-snmp/types.h
+./agent_sysORTable.lo: ../include/net-snmp/library/oid.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/types.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/varbind_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_sysORTable.lo: ../include/net-snmp/pdu_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/asn1.h
+./agent_sysORTable.lo: ../include/net-snmp/output_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_sysORTable.lo: ../include/net-snmp/session_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/callback.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_transport.h
@@ -605,8 +636,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/ucd_compat.h
@@ -628,7 +663,6 @@
 ./agent_sysORTable.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/container.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/factory.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/container_iterator.h
@@ -641,8 +675,6 @@
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/vacm.h
-./agent_sysORTable.lo: ../include/net-snmp/output_api.h
-./agent_sysORTable.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_sysORTable.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_sysORTable.lo: ../include/net-snmp/library/transform_oids.h
@@ -688,16 +720,13 @@
 ./agent_sysORTable.lo: ../include/net-snmp/agent/table_container.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/table_array.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/mfd.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./agent_sysORTable.lo: ../include/net-snmp/agent/agent_callbacks.h
 ./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/system/linux.h
-./agent_trap.lo: ../include/net-snmp/system/sysv.h
-./agent_trap.lo: ../include/net-snmp/system/generic.h
-./agent_trap.lo: ../include/net-snmp/machine/generic.h
-./agent_trap.lo: ../include/net-snmp/utilities.h
-./agent_trap.lo: ../include/net-snmp/types.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
 ./agent_trap.lo: ../include/net-snmp/definitions.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_api.h
@@ -705,6 +734,9 @@
 ./agent_trap.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_trap.lo: ../include/net-snmp/pdu_api.h
 ./agent_trap.lo: ../include/net-snmp/library/asn1.h
+./agent_trap.lo: ../include/net-snmp/output_api.h
+./agent_trap.lo: ../include/net-snmp/library/snmp_debug.h
+./agent_trap.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_trap.lo: ../include/net-snmp/session_api.h
 ./agent_trap.lo: ../include/net-snmp/library/callback.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_transport.h
@@ -712,8 +744,12 @@
 ./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/snmpUDPIPv6Domain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./agent_trap.lo: ../include/net-snmp/library/ucd_compat.h
@@ -733,7 +769,6 @@
 ./agent_trap.lo: ../include/net-snmp/library/check_varbind.h
 ./agent_trap.lo: ../include/net-snmp/library/container.h
 ./agent_trap.lo: ../include/net-snmp/library/factory.h
-./agent_trap.lo: ../include/net-snmp/library/snmp_logging.h
 ./agent_trap.lo: ../include/net-snmp/library/container_binary_array.h
 ./agent_trap.lo: ../include/net-snmp/library/container_list_ssll.h
 ./agent_trap.lo: ../include/net-snmp/library/container_iterator.h
@@ -748,8 +783,6 @@
 ./agent_trap.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_enum.h
 ./agent_trap.lo: ../include/net-snmp/library/vacm.h
-./agent_trap.lo: ../include/net-snmp/output_api.h
-./agent_trap.lo: ../include/net-snmp/library/snmp_debug.h
 ./agent_trap.lo: ../include/net-snmp/snmpv3_api.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpv3.h
 ./agent_trap.lo: ../include/net-snmp/library/transform_oids.h
@@ -795,34 +828,27 @@
 ./agent_trap.lo: ../include/net-snmp/agent/table_container.h
 ./agent_trap.lo: ../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./auto_nlist.lo: ../include/net-snmp/system/sysv.h
-./auto_nlist.lo: ../include/net-snmp/system/generic.h
-./auto_nlist.lo: ../include/net-snmp/machine/generic.h
 ./auto_nlist.lo: ../include/net-snmp/agent/auto_nlist.h
 ./kernel.lo: ../include/net-snmp/net-snmp-config.h
-./kernel.lo: ../include/net-snmp/system/linux.h
-./kernel.lo: ../include/net-snmp/system/sysv.h
-./kernel.lo: ../include/net-snmp/system/generic.h
-./kernel.lo: ../include/net-snmp/machine/generic.h
 ./mib_modules.lo: ../include/net-snmp/agent/mib_module_config.h
 ./mib_modules.lo: ../include/net-snmp/net-snmp-config.h
-./mib_modules.lo: ../include/net-snmp/system/linux.h
-./mib_modules.lo: ../include/net-snmp/system/sysv.h
-./mib_modules.lo: ../include/net-snmp/system/generic.h
-./mib_modules.lo: ../include/net-snmp/machine/generic.h
 ./mib_modules.lo: ../include/net-snmp/net-snmp-includes.h
 ./mib_modules.lo: ../include/net-snmp/definitions.h
 ./mib_modules.lo: ../include/net-snmp/types.h
+./mib_modules.lo: ../include/net-snmp/library/oid.h
 ./mib_modules.lo: ../include/net-snmp/library/types.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_api.h
 ./mib_modules.lo: ../include/net-snmp/varbind_api.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_client.h
 ./mib_modules.lo: ../include/net-snmp/pdu_api.h
 ./mib_modules.lo: ../include/net-snmp/library/asn1.h
+./mib_modules.lo: ../include/net-snmp/output_api.h
+./mib_modules.lo: ../include/net-snmp/library/snmp_debug.h
+./mib_modules.lo: ../include/net-snmp/library/snmp_logging.h
 ./mib_modules.lo: ../include/net-snmp/session_api.h
 ./mib_modules.lo: ../include/net-snmp/library/callback.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_transport.h
@@ -830,8 +856,12 @@
 ./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/snmpUDPIPv6Domain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./mib_modules.lo: ../include/net-snmp/library/ucd_compat.h
@@ -853,7 +883,6 @@
 ./mib_modules.lo: ../include/net-snmp/library/check_varbind.h
 ./mib_modules.lo: ../include/net-snmp/library/container.h
 ./mib_modules.lo: ../include/net-snmp/library/factory.h
-./mib_modules.lo: ../include/net-snmp/library/snmp_logging.h
 ./mib_modules.lo: ../include/net-snmp/library/container_binary_array.h
 ./mib_modules.lo: ../include/net-snmp/library/container_list_ssll.h
 ./mib_modules.lo: ../include/net-snmp/library/container_iterator.h
@@ -866,8 +895,6 @@
 ./mib_modules.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_enum.h
 ./mib_modules.lo: ../include/net-snmp/library/vacm.h
-./mib_modules.lo: ../include/net-snmp/output_api.h
-./mib_modules.lo: ../include/net-snmp/library/snmp_debug.h
 ./mib_modules.lo: ../include/net-snmp/snmpv3_api.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpv3.h
 ./mib_modules.lo: ../include/net-snmp/library/transform_oids.h
@@ -911,23 +938,27 @@
 ./mib_modules.lo: ../include/net-snmp/agent/table_iterator.h
 ./mib_modules.lo: ../include/net-snmp/agent/table_container.h
 ./mib_modules.lo: ../include/net-snmp/agent/table_array.h
-./mib_modules.lo: ../include/net-snmp/agent/mfd.h m2m.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/host/hr_swinst.h mibgroup/host/hr_swrun.h
-./mib_modules.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
-./mib_modules.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
-./mib_modules.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
-./mib_modules.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.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/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/disman/event/mteScalars.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
@@ -953,14 +984,15 @@
 ./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/proc.h
-./mib_modules.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/versioninfo.h
-./mib_modules.lo: mibgroup/ucd-snmp/pass.h mibgroup/ucd-snmp/pass_persist.h
-./mib_modules.lo: mibgroup/ucd-snmp/disk.h mibgroup/ucd-snmp/loadave.h
-./mib_modules.lo: mibgroup/agent/extend.h mibgroup/ucd-snmp/errormib.h
-./mib_modules.lo: mibgroup/ucd-snmp/file.h mibgroup/ucd-snmp/dlmod.h
-./mib_modules.lo: mibgroup/ucd-snmp/proxy.h mibgroup/ucd-snmp/logmatch.h
-./mib_modules.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
+./mib_modules.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/disk.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
+./mib_modules.lo: mibgroup/ucd-snmp/loadave.h mibgroup/agent/extend.h
+./mib_modules.lo: mibgroup/ucd-snmp/errormib.h mibgroup/ucd-snmp/file.h
+./mib_modules.lo: mibgroup/ucd-snmp/dlmod.h mibgroup/ucd-snmp/proxy.h
+./mib_modules.lo: mibgroup/ucd-snmp/logmatch.h mibgroup/ucd-snmp/memory.h
+./mib_modules.lo: mibgroup/ucd-snmp/vmstat.h
 ./mib_modules.lo: mibgroup/notification/snmpNotifyTable.h
 ./mib_modules.lo: mibgroup/notification/snmpNotifyFilterProfileTable.h
 ./mib_modules.lo: mibgroup/notification-log-mib/notification_log.h
@@ -1003,6 +1035,19 @@
 ./mib_modules.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h
 ./mib_modules.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
 ./mib_modules.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
+./mib_modules.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.h
+./mib_modules.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
+./mib_modules.lo: ../include/net-snmp/data_access/defaultrouter.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h
 ./mib_modules.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
 ./mib_modules.lo: ../include/net-snmp/data_access/arp.h
 ./mib_modules.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
@@ -1062,19 +1107,19 @@
 ./mib_modules.lo: ../agent/mibgroup/mib_module_shutdown.h
 ./mib_modules.lo: ../agent/mibgroup/mib_module_inits.h
 ./object_monitor.lo: ../include/net-snmp/net-snmp-config.h
-./object_monitor.lo: ../include/net-snmp/system/linux.h
-./object_monitor.lo: ../include/net-snmp/system/sysv.h
-./object_monitor.lo: ../include/net-snmp/system/generic.h
-./object_monitor.lo: ../include/net-snmp/machine/generic.h
 ./object_monitor.lo: ../include/net-snmp/net-snmp-includes.h
 ./object_monitor.lo: ../include/net-snmp/definitions.h
 ./object_monitor.lo: ../include/net-snmp/types.h
+./object_monitor.lo: ../include/net-snmp/library/oid.h
 ./object_monitor.lo: ../include/net-snmp/library/types.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_api.h
 ./object_monitor.lo: ../include/net-snmp/varbind_api.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_client.h
 ./object_monitor.lo: ../include/net-snmp/pdu_api.h
 ./object_monitor.lo: ../include/net-snmp/library/asn1.h
+./object_monitor.lo: ../include/net-snmp/output_api.h
+./object_monitor.lo: ../include/net-snmp/library/snmp_debug.h
+./object_monitor.lo: ../include/net-snmp/library/snmp_logging.h
 ./object_monitor.lo: ../include/net-snmp/session_api.h
 ./object_monitor.lo: ../include/net-snmp/library/callback.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1082,8 +1127,12 @@
 ./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/snmpUDPIPv6Domain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./object_monitor.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1105,7 +1154,6 @@
 ./object_monitor.lo: ../include/net-snmp/library/check_varbind.h
 ./object_monitor.lo: ../include/net-snmp/library/container.h
 ./object_monitor.lo: ../include/net-snmp/library/factory.h
-./object_monitor.lo: ../include/net-snmp/library/snmp_logging.h
 ./object_monitor.lo: ../include/net-snmp/library/container_binary_array.h
 ./object_monitor.lo: ../include/net-snmp/library/container_list_ssll.h
 ./object_monitor.lo: ../include/net-snmp/library/container_iterator.h
@@ -1118,8 +1166,6 @@
 ./object_monitor.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_enum.h
 ./object_monitor.lo: ../include/net-snmp/library/vacm.h
-./object_monitor.lo: ../include/net-snmp/output_api.h
-./object_monitor.lo: ../include/net-snmp/library/snmp_debug.h
 ./object_monitor.lo: ../include/net-snmp/snmpv3_api.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpv3.h
 ./object_monitor.lo: ../include/net-snmp/library/transform_oids.h
@@ -1165,21 +1211,22 @@
 ./object_monitor.lo: ../include/net-snmp/agent/table_container.h
 ./object_monitor.lo: ../include/net-snmp/agent/table_array.h
 ./object_monitor.lo: ../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./snmp_agent.lo: ../include/net-snmp/system/sysv.h
-./snmp_agent.lo: ../include/net-snmp/system/generic.h
-./snmp_agent.lo: ../include/net-snmp/machine/generic.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
+./snmp_agent.lo: ../include/net-snmp/library/oid.h
 ./snmp_agent.lo: ../include/net-snmp/library/types.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_agent.lo: ../include/net-snmp/varbind_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_agent.lo: ../include/net-snmp/pdu_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/asn1.h
+./snmp_agent.lo: ../include/net-snmp/output_api.h
+./snmp_agent.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_agent.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_agent.lo: ../include/net-snmp/session_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/callback.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1187,8 +1234,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_agent.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1210,7 +1261,6 @@
 ./snmp_agent.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_agent.lo: ../include/net-snmp/library/container.h
 ./snmp_agent.lo: ../include/net-snmp/library/factory.h
-./snmp_agent.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_agent.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmp_agent.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmp_agent.lo: ../include/net-snmp/library/container_iterator.h
@@ -1223,8 +1273,6 @@
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_agent.lo: ../include/net-snmp/library/vacm.h
-./snmp_agent.lo: ../include/net-snmp/output_api.h
-./snmp_agent.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_agent.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_agent.lo: ../include/net-snmp/library/transform_oids.h
@@ -1269,23 +1317,23 @@
 ./snmp_agent.lo: ../include/net-snmp/agent/table_iterator.h
 ./snmp_agent.lo: ../include/net-snmp/agent/table_container.h
 ./snmp_agent.lo: ../include/net-snmp/agent/table_array.h
-./snmp_agent.lo: ../include/net-snmp/agent/mfd.h snmpd.h
+./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
-./snmpd.lo: ../include/net-snmp/system/linux.h
-./snmpd.lo: ../include/net-snmp/system/sysv.h
-./snmpd.lo: ../include/net-snmp/system/generic.h
-./snmpd.lo: ../include/net-snmp/machine/generic.h
-./snmpd.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpd.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpd.lo: ../include/net-snmp/net-snmp-config.h ../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
 ./snmpd.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpd.lo: ../include/net-snmp/varbind_api.h
 ./snmpd.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpd.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./snmpd.lo: ../include/net-snmp/output_api.h
+./snmpd.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpd.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpd.lo: ../include/net-snmp/session_api.h
 ./snmpd.lo: ../include/net-snmp/library/callback.h
 ./snmpd.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1293,8 +1341,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpd.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpd.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1304,6 +1356,7 @@
 ./snmpd.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpd.lo: ../include/net-snmp/library/snmp.h
 ./snmpd.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpd.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpd.lo: ../include/net-snmp/library/getopt.h
 ./snmpd.lo: ../include/net-snmp/utilities.h
 ./snmpd.lo: ../include/net-snmp/library/system.h
@@ -1315,7 +1368,6 @@
 ./snmpd.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpd.lo: ../include/net-snmp/library/container.h
 ./snmpd.lo: ../include/net-snmp/library/factory.h
-./snmpd.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpd.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpd.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpd.lo: ../include/net-snmp/library/container_iterator.h
@@ -1327,8 +1379,6 @@
 ./snmpd.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpd.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpd.lo: ../include/net-snmp/library/vacm.h
-./snmpd.lo: ../include/net-snmp/output_api.h
-./snmpd.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpd.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpd.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpd.lo: ../include/net-snmp/library/transform_oids.h
@@ -1374,16 +1424,18 @@
 ./snmpd.lo: ../include/net-snmp/agent/table_container.h
 ./snmpd.lo: ../include/net-snmp/agent/table_array.h
 ./snmpd.lo: ../include/net-snmp/agent/mfd.h
-./snmpd.lo: ../include/net-snmp/library/large_fd_set.h
-./snmpd.lo: ../include/net-snmp/net-snmp-config.h m2m.h snmpd.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/header_generic.h
-./snmpd.lo: mibgroup/util_funcs/header_simple_table.h mibgroup/struct.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/hr_swinst.h mibgroup/host/hr_swrun.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
@@ -1393,6 +1445,9 @@
 ./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
@@ -1418,10 +1473,10 @@
 ./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/proc.h
-./snmpd.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/versioninfo.h
-./snmpd.lo: mibgroup/ucd-snmp/pass.h mibgroup/ucd-snmp/pass_persist.h
-./snmpd.lo: mibgroup/ucd-snmp/disk.h mibgroup/ucd-snmp/loadave.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
@@ -1467,6 +1522,19 @@
 ./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
@@ -1526,12 +1594,16 @@
 ./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
+./snmp_perl.lo: ../include/net-snmp/library/oid.h
 ./snmp_perl.lo: ../include/net-snmp/library/types.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_perl.lo: ../include/net-snmp/varbind_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_perl.lo: ../include/net-snmp/pdu_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/asn1.h
+./snmp_perl.lo: ../include/net-snmp/output_api.h
+./snmp_perl.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_perl.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_perl.lo: ../include/net-snmp/session_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/callback.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1539,8 +1611,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_perl.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1562,7 +1638,6 @@
 ./snmp_perl.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_perl.lo: ../include/net-snmp/library/container.h
 ./snmp_perl.lo: ../include/net-snmp/library/factory.h
-./snmp_perl.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_perl.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmp_perl.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmp_perl.lo: ../include/net-snmp/library/container_iterator.h
@@ -1575,8 +1650,6 @@
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_perl.lo: ../include/net-snmp/library/vacm.h
-./snmp_perl.lo: ../include/net-snmp/output_api.h
-./snmp_perl.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_perl.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_perl.lo: ../include/net-snmp/library/transform_oids.h
@@ -1621,17 +1694,22 @@
 ./snmp_perl.lo: ../include/net-snmp/agent/table_iterator.h
 ./snmp_perl.lo: ../include/net-snmp/agent/table_container.h
 ./snmp_perl.lo: ../include/net-snmp/agent/table_array.h
-./snmp_perl.lo: ../include/net-snmp/agent/mfd.h snmp_perl.h
+./snmp_perl.lo: ../include/net-snmp/agent/mfd.h
+./snmp_perl.lo: ../include/net-snmp/agent/snmp_get_statistic.h snmp_perl.h
 ./snmp_vars.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_vars.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_vars.lo: ../include/net-snmp/definitions.h
 ./snmp_vars.lo: ../include/net-snmp/types.h
+./snmp_vars.lo: ../include/net-snmp/library/oid.h
 ./snmp_vars.lo: ../include/net-snmp/library/types.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_vars.lo: ../include/net-snmp/varbind_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_vars.lo: ../include/net-snmp/pdu_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/asn1.h
+./snmp_vars.lo: ../include/net-snmp/output_api.h
+./snmp_vars.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_vars.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_vars.lo: ../include/net-snmp/session_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/callback.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1639,8 +1717,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_vars.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1662,7 +1744,6 @@
 ./snmp_vars.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_vars.lo: ../include/net-snmp/library/container.h
 ./snmp_vars.lo: ../include/net-snmp/library/factory.h
-./snmp_vars.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_vars.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmp_vars.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmp_vars.lo: ../include/net-snmp/library/container_iterator.h
@@ -1675,8 +1756,6 @@
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_vars.lo: ../include/net-snmp/library/vacm.h
-./snmp_vars.lo: ../include/net-snmp/output_api.h
-./snmp_vars.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_vars.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_vars.lo: ../include/net-snmp/library/transform_oids.h
@@ -1722,6 +1801,7 @@
 ./snmp_vars.lo: ../include/net-snmp/agent/table_container.h
 ./snmp_vars.lo: ../include/net-snmp/agent/table_array.h
 ./snmp_vars.lo: ../include/net-snmp/agent/mfd.h
+./snmp_vars.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./snmp_vars.lo: ../include/net-snmp/agent/mib_modules.h
 ./snmp_vars.lo: ../include/net-snmp/agent/agent_sysORTable.h kernel.h
 ./snmp_vars.lo: mibgroup/struct.h snmpd.h
@@ -1735,12 +1815,16 @@
 ./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
+./helpers/all_helpers.lo: ../include/net-snmp/library/oid.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/types.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/varbind_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/all_helpers.lo: ../include/net-snmp/pdu_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/asn1.h
+./helpers/all_helpers.lo: ../include/net-snmp/output_api.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/all_helpers.lo: ../include/net-snmp/session_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/callback.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1748,8 +1832,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1771,7 +1859,6 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/container.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/factory.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/container_iterator.h
@@ -1784,8 +1871,6 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/vacm.h
-./helpers/all_helpers.lo: ../include/net-snmp/output_api.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/all_helpers.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/transform_oids.h
@@ -1831,17 +1916,22 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/mfd.h
+./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-includes.h
 ./helpers/baby_steps.lo: ../include/net-snmp/definitions.h
 ./helpers/baby_steps.lo: ../include/net-snmp/types.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/oid.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/types.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/varbind_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/baby_steps.lo: ../include/net-snmp/pdu_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/asn1.h
+./helpers/baby_steps.lo: ../include/net-snmp/output_api.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/baby_steps.lo: ../include/net-snmp/session_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/callback.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1849,8 +1939,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1872,7 +1966,6 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/container.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/factory.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/container_iterator.h
@@ -1885,8 +1978,6 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/vacm.h
-./helpers/baby_steps.lo: ../include/net-snmp/output_api.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/baby_steps.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/transform_oids.h
@@ -1932,16 +2023,21 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/mfd.h
+./helpers/baby_steps.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/definitions.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/types.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/oid.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/types.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/varbind_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/pdu_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/asn1.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/output_api.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/session_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/callback.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1949,8 +2045,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1972,7 +2072,6 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/container.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/factory.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/container_iterator.h
@@ -1985,8 +2084,6 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/vacm.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/output_api.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/transform_oids.h
@@ -2032,16 +2129,21 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/cache_handler.lo: ../include/net-snmp/definitions.h
 ./helpers/cache_handler.lo: ../include/net-snmp/types.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/oid.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/types.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/varbind_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/cache_handler.lo: ../include/net-snmp/pdu_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/asn1.h
+./helpers/cache_handler.lo: ../include/net-snmp/output_api.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/cache_handler.lo: ../include/net-snmp/session_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/callback.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2049,8 +2151,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2072,7 +2178,6 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/container.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/factory.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/container_iterator.h
@@ -2085,8 +2190,6 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/vacm.h
-./helpers/cache_handler.lo: ../include/net-snmp/output_api.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/cache_handler.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/transform_oids.h
@@ -2132,16 +2235,21 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/mfd.h
+./helpers/cache_handler.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/debug_handler.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/debug_handler.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/debug_handler.lo: ../include/net-snmp/definitions.h
 ./helpers/debug_handler.lo: ../include/net-snmp/types.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/oid.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/types.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/varbind_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/debug_handler.lo: ../include/net-snmp/pdu_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/asn1.h
+./helpers/debug_handler.lo: ../include/net-snmp/output_api.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/debug_handler.lo: ../include/net-snmp/session_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/callback.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2149,8 +2257,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2172,7 +2284,6 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/container.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/factory.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/container_iterator.h
@@ -2185,8 +2296,6 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/vacm.h
-./helpers/debug_handler.lo: ../include/net-snmp/output_api.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/debug_handler.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/transform_oids.h
@@ -2232,16 +2341,21 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/instance.lo: ../include/net-snmp/definitions.h
 ./helpers/instance.lo: ../include/net-snmp/types.h
+./helpers/instance.lo: ../include/net-snmp/library/oid.h
 ./helpers/instance.lo: ../include/net-snmp/library/types.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/instance.lo: ../include/net-snmp/varbind_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/instance.lo: ../include/net-snmp/pdu_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/asn1.h
+./helpers/instance.lo: ../include/net-snmp/output_api.h
+./helpers/instance.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/instance.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/instance.lo: ../include/net-snmp/session_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/callback.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2249,8 +2363,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/instance.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2272,7 +2390,6 @@
 ./helpers/instance.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/instance.lo: ../include/net-snmp/library/container.h
 ./helpers/instance.lo: ../include/net-snmp/library/factory.h
-./helpers/instance.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/instance.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/instance.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/instance.lo: ../include/net-snmp/library/container_iterator.h
@@ -2285,8 +2402,6 @@
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/instance.lo: ../include/net-snmp/library/vacm.h
-./helpers/instance.lo: ../include/net-snmp/output_api.h
-./helpers/instance.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/instance.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/instance.lo: ../include/net-snmp/library/transform_oids.h
@@ -2332,16 +2447,21 @@
 ./helpers/instance.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/instance.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/definitions.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/types.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/oid.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/types.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/varbind_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/pdu_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/asn1.h
+./helpers/mode_end_call.lo: ../include/net-snmp/output_api.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/session_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/callback.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2349,8 +2469,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2372,7 +2496,6 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/container.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/factory.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/container_iterator.h
@@ -2385,8 +2508,6 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/vacm.h
-./helpers/mode_end_call.lo: ../include/net-snmp/output_api.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/transform_oids.h
@@ -2432,16 +2553,21 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/mfd.h
+./helpers/mode_end_call.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/multiplexer.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/multiplexer.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/multiplexer.lo: ../include/net-snmp/definitions.h
 ./helpers/multiplexer.lo: ../include/net-snmp/types.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/oid.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/types.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/varbind_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/multiplexer.lo: ../include/net-snmp/pdu_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/asn1.h
+./helpers/multiplexer.lo: ../include/net-snmp/output_api.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/multiplexer.lo: ../include/net-snmp/session_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/callback.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2449,8 +2575,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2472,7 +2602,6 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/container.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/factory.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/container_iterator.h
@@ -2485,8 +2614,6 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/vacm.h
-./helpers/multiplexer.lo: ../include/net-snmp/output_api.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/multiplexer.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/transform_oids.h
@@ -2532,16 +2659,21 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/mfd.h
+./helpers/multiplexer.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/null.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/null.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/null.lo: ../include/net-snmp/definitions.h
 ./helpers/null.lo: ../include/net-snmp/types.h
+./helpers/null.lo: ../include/net-snmp/library/oid.h
 ./helpers/null.lo: ../include/net-snmp/library/types.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/null.lo: ../include/net-snmp/varbind_api.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/null.lo: ../include/net-snmp/pdu_api.h
 ./helpers/null.lo: ../include/net-snmp/library/asn1.h
+./helpers/null.lo: ../include/net-snmp/output_api.h
+./helpers/null.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/null.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/null.lo: ../include/net-snmp/session_api.h
 ./helpers/null.lo: ../include/net-snmp/library/callback.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2549,8 +2681,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/null.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2572,7 +2708,6 @@
 ./helpers/null.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/null.lo: ../include/net-snmp/library/container.h
 ./helpers/null.lo: ../include/net-snmp/library/factory.h
-./helpers/null.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/null.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/null.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/null.lo: ../include/net-snmp/library/container_iterator.h
@@ -2585,8 +2720,6 @@
 ./helpers/null.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/null.lo: ../include/net-snmp/library/vacm.h
-./helpers/null.lo: ../include/net-snmp/output_api.h
-./helpers/null.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/null.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/null.lo: ../include/net-snmp/library/transform_oids.h
@@ -2632,16 +2765,21 @@
 ./helpers/null.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/null.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/null.lo: ../include/net-snmp/agent/mfd.h
+./helpers/null.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/old_api.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/old_api.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/old_api.lo: ../include/net-snmp/definitions.h
 ./helpers/old_api.lo: ../include/net-snmp/types.h
+./helpers/old_api.lo: ../include/net-snmp/library/oid.h
 ./helpers/old_api.lo: ../include/net-snmp/library/types.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/old_api.lo: ../include/net-snmp/varbind_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/old_api.lo: ../include/net-snmp/pdu_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/asn1.h
+./helpers/old_api.lo: ../include/net-snmp/output_api.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/old_api.lo: ../include/net-snmp/session_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/callback.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2649,8 +2787,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/old_api.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2672,7 +2814,6 @@
 ./helpers/old_api.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/old_api.lo: ../include/net-snmp/library/container.h
 ./helpers/old_api.lo: ../include/net-snmp/library/factory.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/old_api.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/old_api.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/old_api.lo: ../include/net-snmp/library/container_iterator.h
@@ -2685,8 +2826,6 @@
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/old_api.lo: ../include/net-snmp/library/vacm.h
-./helpers/old_api.lo: ../include/net-snmp/output_api.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/old_api.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/old_api.lo: ../include/net-snmp/library/transform_oids.h
@@ -2732,17 +2871,22 @@
 ./helpers/old_api.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/mfd.h
+./helpers/old_api.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/agent_callbacks.h
 ./helpers/read_only.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/read_only.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/read_only.lo: ../include/net-snmp/definitions.h
 ./helpers/read_only.lo: ../include/net-snmp/types.h
+./helpers/read_only.lo: ../include/net-snmp/library/oid.h
 ./helpers/read_only.lo: ../include/net-snmp/library/types.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/read_only.lo: ../include/net-snmp/varbind_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/read_only.lo: ../include/net-snmp/pdu_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/asn1.h
+./helpers/read_only.lo: ../include/net-snmp/output_api.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/read_only.lo: ../include/net-snmp/session_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/callback.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2750,8 +2894,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/read_only.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2773,7 +2921,6 @@
 ./helpers/read_only.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/read_only.lo: ../include/net-snmp/library/container.h
 ./helpers/read_only.lo: ../include/net-snmp/library/factory.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/read_only.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/read_only.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/read_only.lo: ../include/net-snmp/library/container_iterator.h
@@ -2786,8 +2933,6 @@
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/read_only.lo: ../include/net-snmp/library/vacm.h
-./helpers/read_only.lo: ../include/net-snmp/output_api.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/read_only.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/read_only.lo: ../include/net-snmp/library/transform_oids.h
@@ -2833,16 +2978,21 @@
 ./helpers/read_only.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/row_merge.lo: ../include/net-snmp/definitions.h
 ./helpers/row_merge.lo: ../include/net-snmp/types.h
+./helpers/row_merge.lo: ../include/net-snmp/library/oid.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/types.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/varbind_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/row_merge.lo: ../include/net-snmp/pdu_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/asn1.h
+./helpers/row_merge.lo: ../include/net-snmp/output_api.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/row_merge.lo: ../include/net-snmp/session_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/callback.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2850,8 +3000,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2873,7 +3027,6 @@
 ./helpers/row_merge.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/container.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/factory.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/container_iterator.h
@@ -2886,8 +3039,6 @@
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/vacm.h
-./helpers/row_merge.lo: ../include/net-snmp/output_api.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/row_merge.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/transform_oids.h
@@ -2933,16 +3084,21 @@
 ./helpers/row_merge.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/mfd.h
+./helpers/row_merge.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/scalar.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/scalar.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/scalar.lo: ../include/net-snmp/definitions.h
 ./helpers/scalar.lo: ../include/net-snmp/types.h
+./helpers/scalar.lo: ../include/net-snmp/library/oid.h
 ./helpers/scalar.lo: ../include/net-snmp/library/types.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/scalar.lo: ../include/net-snmp/varbind_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/scalar.lo: ../include/net-snmp/pdu_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/asn1.h
+./helpers/scalar.lo: ../include/net-snmp/output_api.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/scalar.lo: ../include/net-snmp/session_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/callback.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2950,8 +3106,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/scalar.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2973,7 +3133,6 @@
 ./helpers/scalar.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/scalar.lo: ../include/net-snmp/library/container.h
 ./helpers/scalar.lo: ../include/net-snmp/library/factory.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/scalar.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/scalar.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/scalar.lo: ../include/net-snmp/library/container_iterator.h
@@ -2986,8 +3145,6 @@
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/scalar.lo: ../include/net-snmp/library/vacm.h
-./helpers/scalar.lo: ../include/net-snmp/output_api.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/scalar.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/scalar.lo: ../include/net-snmp/library/transform_oids.h
@@ -3033,16 +3190,21 @@
 ./helpers/scalar.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/mfd.h
+./helpers/scalar.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/scalar_group.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/scalar_group.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/scalar_group.lo: ../include/net-snmp/definitions.h
 ./helpers/scalar_group.lo: ../include/net-snmp/types.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/oid.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/types.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/varbind_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/scalar_group.lo: ../include/net-snmp/pdu_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/asn1.h
+./helpers/scalar_group.lo: ../include/net-snmp/output_api.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/scalar_group.lo: ../include/net-snmp/session_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/callback.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3050,8 +3212,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3073,7 +3239,6 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/container.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/factory.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/container_iterator.h
@@ -3086,8 +3251,6 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/vacm.h
-./helpers/scalar_group.lo: ../include/net-snmp/output_api.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/scalar_group.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/transform_oids.h
@@ -3133,16 +3296,21 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/mfd.h
+./helpers/scalar_group.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/serialize.lo: ../include/net-snmp/net-snmp-config.h
 ./helpers/serialize.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/serialize.lo: ../include/net-snmp/definitions.h
 ./helpers/serialize.lo: ../include/net-snmp/types.h
+./helpers/serialize.lo: ../include/net-snmp/library/oid.h
 ./helpers/serialize.lo: ../include/net-snmp/library/types.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/serialize.lo: ../include/net-snmp/varbind_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/serialize.lo: ../include/net-snmp/pdu_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/asn1.h
+./helpers/serialize.lo: ../include/net-snmp/output_api.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/serialize.lo: ../include/net-snmp/session_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/callback.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3150,8 +3318,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/serialize.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3173,7 +3345,6 @@
 ./helpers/serialize.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/serialize.lo: ../include/net-snmp/library/container.h
 ./helpers/serialize.lo: ../include/net-snmp/library/factory.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/serialize.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/serialize.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/serialize.lo: ../include/net-snmp/library/container_iterator.h
@@ -3186,8 +3357,6 @@
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/serialize.lo: ../include/net-snmp/library/vacm.h
-./helpers/serialize.lo: ../include/net-snmp/output_api.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/serialize.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/serialize.lo: ../include/net-snmp/library/transform_oids.h
@@ -3233,16 +3402,127 @@
 ./helpers/serialize.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/definitions.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/types.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/oid.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/types.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/varbind_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_client.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/pdu_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/asn1.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/output_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_logging.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/session_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/callback.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/mib.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/mib_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/parse.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_impl.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/getopt.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/utilities.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/system.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/tools.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/int64.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/mt_support.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_alarm.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/data_list.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/check_varbind.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/container.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/factory.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/container_binary_array.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/container_list_ssll.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/container_iterator.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/container.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_assert.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/version.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/config_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/read_config.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/default_store.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_parse_args.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmp_enum.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/vacm.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/snmpv3_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpv3.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/transform_oids.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/keytools.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/scapi.h
+./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/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
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/agent_module_config.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/snmp_agent.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/snmp_vars.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/agent_handler.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/var_struct.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/agent_registry.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/fd_event_manager.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/ds_agent.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/agent_read_config.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/agent_trap.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/all_helpers.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/instance.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/baby_steps.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/scalar.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/scalar_group.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/watcher.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/multiplexer.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/null.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/debug_handler.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/cache_handler.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/old_api.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/read_only.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/row_merge.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/serialize.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/bulk_to_next.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/mode_end_call.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_data.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_dataset.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_tdata.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_iterator.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_container.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/table_array.h
+./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-includes.h
 ./helpers/stash_cache.lo: ../include/net-snmp/definitions.h
 ./helpers/stash_cache.lo: ../include/net-snmp/types.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/oid.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/types.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/varbind_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/stash_cache.lo: ../include/net-snmp/pdu_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/asn1.h
+./helpers/stash_cache.lo: ../include/net-snmp/output_api.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/stash_cache.lo: ../include/net-snmp/session_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/callback.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3250,8 +3530,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3273,7 +3557,6 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/container.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/factory.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/container_iterator.h
@@ -3286,8 +3569,6 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/vacm.h
-./helpers/stash_cache.lo: ../include/net-snmp/output_api.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/stash_cache.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/transform_oids.h
@@ -3333,18 +3614,23 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/table_container.h
 ./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_to_next.lo: ../include/net-snmp/net-snmp-config.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
+./helpers/stash_to_next.lo: ../include/net-snmp/library/oid.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/types.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/varbind_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/pdu_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/asn1.h
+./helpers/stash_to_next.lo: ../include/net-snmp/output_api.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/session_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/callback.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3352,8 +3638,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3375,7 +3665,6 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/container.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/factory.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/container_iterator.h
@@ -3388,8 +3677,6 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/vacm.h
-./helpers/stash_to_next.lo: ../include/net-snmp/output_api.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/transform_oids.h
@@ -3435,18 +3722,23 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/mfd.h
+./helpers/stash_to_next.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./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-includes.h
 ./helpers/table_array.lo: ../include/net-snmp/definitions.h
 ./helpers/table_array.lo: ../include/net-snmp/types.h
+./helpers/table_array.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_array.lo: ../include/net-snmp/library/types.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_array.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_array.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_array.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_array.lo: ../include/net-snmp/output_api.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_array.lo: ../include/net-snmp/session_api.h
 ./helpers/table_array.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3454,8 +3746,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_array.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3477,7 +3773,6 @@
 ./helpers/table_array.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_array.lo: ../include/net-snmp/library/container.h
 ./helpers/table_array.lo: ../include/net-snmp/library/factory.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_array.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_array.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_array.lo: ../include/net-snmp/library/container_iterator.h
@@ -3490,8 +3785,6 @@
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_array.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_array.lo: ../include/net-snmp/output_api.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_array.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_array.lo: ../include/net-snmp/library/transform_oids.h
@@ -3537,16 +3830,21 @@
 ./helpers/table_array.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table.lo: ../include/net-snmp/definitions.h
 ./helpers/table.lo: ../include/net-snmp/types.h
+./helpers/table.lo: ../include/net-snmp/library/oid.h
 ./helpers/table.lo: ../include/net-snmp/library/types.h
 ./helpers/table.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table.lo: ../include/net-snmp/library/asn1.h
+./helpers/table.lo: ../include/net-snmp/output_api.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table.lo: ../include/net-snmp/session_api.h
 ./helpers/table.lo: ../include/net-snmp/library/callback.h
 ./helpers/table.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3554,8 +3852,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3577,7 +3879,6 @@
 ./helpers/table.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table.lo: ../include/net-snmp/library/container.h
 ./helpers/table.lo: ../include/net-snmp/library/factory.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table.lo: ../include/net-snmp/library/container_iterator.h
@@ -3590,8 +3891,6 @@
 ./helpers/table.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table.lo: ../include/net-snmp/library/vacm.h
-./helpers/table.lo: ../include/net-snmp/output_api.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table.lo: ../include/net-snmp/library/transform_oids.h
@@ -3637,16 +3936,21 @@
 ./helpers/table.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table_container.lo: ../include/net-snmp/definitions.h
 ./helpers/table_container.lo: ../include/net-snmp/types.h
+./helpers/table_container.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_container.lo: ../include/net-snmp/library/types.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_container.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_container.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_container.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_container.lo: ../include/net-snmp/output_api.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_container.lo: ../include/net-snmp/session_api.h
 ./helpers/table_container.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3654,8 +3958,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_container.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3677,7 +3985,6 @@
 ./helpers/table_container.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_container.lo: ../include/net-snmp/library/container.h
 ./helpers/table_container.lo: ../include/net-snmp/library/factory.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_container.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_container.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_container.lo: ../include/net-snmp/library/container_iterator.h
@@ -3690,8 +3997,6 @@
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_container.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_container.lo: ../include/net-snmp/output_api.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_container.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_container.lo: ../include/net-snmp/library/transform_oids.h
@@ -3737,16 +4042,21 @@
 ./helpers/table_container.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table_data.lo: ../include/net-snmp/definitions.h
 ./helpers/table_data.lo: ../include/net-snmp/types.h
+./helpers/table_data.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_data.lo: ../include/net-snmp/library/types.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_data.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_data.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_data.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_data.lo: ../include/net-snmp/output_api.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_data.lo: ../include/net-snmp/session_api.h
 ./helpers/table_data.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3754,8 +4064,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_data.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3777,7 +4091,6 @@
 ./helpers/table_data.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_data.lo: ../include/net-snmp/library/container.h
 ./helpers/table_data.lo: ../include/net-snmp/library/factory.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_data.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_data.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_data.lo: ../include/net-snmp/library/container_iterator.h
@@ -3790,8 +4103,6 @@
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_data.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_data.lo: ../include/net-snmp/output_api.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_data.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_data.lo: ../include/net-snmp/library/transform_oids.h
@@ -3837,16 +4148,21 @@
 ./helpers/table_data.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table_dataset.lo: ../include/net-snmp/definitions.h
 ./helpers/table_dataset.lo: ../include/net-snmp/types.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/types.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_dataset.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_dataset.lo: ../include/net-snmp/output_api.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_dataset.lo: ../include/net-snmp/session_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3854,8 +4170,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3877,7 +4197,6 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/container.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/factory.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/container_iterator.h
@@ -3890,8 +4209,6 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_dataset.lo: ../include/net-snmp/output_api.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_dataset.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/transform_oids.h
@@ -3937,16 +4254,21 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table_iterator.lo: ../include/net-snmp/definitions.h
 ./helpers/table_iterator.lo: ../include/net-snmp/types.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/types.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_iterator.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_iterator.lo: ../include/net-snmp/output_api.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_iterator.lo: ../include/net-snmp/session_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3954,8 +4276,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3977,7 +4303,6 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/container.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/factory.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/container_iterator.h
@@ -3990,8 +4315,6 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_iterator.lo: ../include/net-snmp/output_api.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_iterator.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/transform_oids.h
@@ -4037,17 +4360,22 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/mfd.h
+./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-includes.h
 ./helpers/table_row.lo: ../include/net-snmp/definitions.h
 ./helpers/table_row.lo: ../include/net-snmp/types.h
+./helpers/table_row.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_row.lo: ../include/net-snmp/library/types.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_row.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_row.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_row.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_row.lo: ../include/net-snmp/output_api.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_row.lo: ../include/net-snmp/session_api.h
 ./helpers/table_row.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4055,8 +4383,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_row.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4078,7 +4410,6 @@
 ./helpers/table_row.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_row.lo: ../include/net-snmp/library/container.h
 ./helpers/table_row.lo: ../include/net-snmp/library/factory.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_row.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_row.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_row.lo: ../include/net-snmp/library/container_iterator.h
@@ -4091,8 +4422,6 @@
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_row.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_row.lo: ../include/net-snmp/output_api.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_row.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_row.lo: ../include/net-snmp/library/transform_oids.h
@@ -4138,16 +4467,21 @@
 ./helpers/table_row.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/table_tdata.lo: ../include/net-snmp/definitions.h
 ./helpers/table_tdata.lo: ../include/net-snmp/types.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/oid.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/types.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_tdata.lo: ../include/net-snmp/pdu_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/asn1.h
+./helpers/table_tdata.lo: ../include/net-snmp/output_api.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_tdata.lo: ../include/net-snmp/session_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4155,8 +4489,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4178,7 +4516,6 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/container.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/factory.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/container_iterator.h
@@ -4191,8 +4528,6 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/vacm.h
-./helpers/table_tdata.lo: ../include/net-snmp/output_api.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/table_tdata.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/transform_oids.h
@@ -4238,16 +4573,21 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/table_array.h
 ./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-includes.h
 ./helpers/watcher.lo: ../include/net-snmp/definitions.h
 ./helpers/watcher.lo: ../include/net-snmp/types.h
+./helpers/watcher.lo: ../include/net-snmp/library/oid.h
 ./helpers/watcher.lo: ../include/net-snmp/library/types.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_api.h
 ./helpers/watcher.lo: ../include/net-snmp/varbind_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/watcher.lo: ../include/net-snmp/pdu_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/asn1.h
+./helpers/watcher.lo: ../include/net-snmp/output_api.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmp_debug.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/watcher.lo: ../include/net-snmp/session_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/callback.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4255,8 +4595,12 @@
 ./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/snmpUDPIPv6Domain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./helpers/watcher.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4278,7 +4622,6 @@
 ./helpers/watcher.lo: ../include/net-snmp/library/check_varbind.h
 ./helpers/watcher.lo: ../include/net-snmp/library/container.h
 ./helpers/watcher.lo: ../include/net-snmp/library/factory.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmp_logging.h
 ./helpers/watcher.lo: ../include/net-snmp/library/container_binary_array.h
 ./helpers/watcher.lo: ../include/net-snmp/library/container_list_ssll.h
 ./helpers/watcher.lo: ../include/net-snmp/library/container_iterator.h
@@ -4291,8 +4634,6 @@
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_enum.h
 ./helpers/watcher.lo: ../include/net-snmp/library/vacm.h
-./helpers/watcher.lo: ../include/net-snmp/output_api.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmp_debug.h
 ./helpers/watcher.lo: ../include/net-snmp/snmpv3_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpv3.h
 ./helpers/watcher.lo: ../include/net-snmp/library/transform_oids.h
@@ -4338,16 +4679,21 @@
 ./helpers/watcher.lo: ../include/net-snmp/agent/table_container.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/table_array.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/mfd.h
+./helpers/watcher.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/net-snmp-config.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/net-snmp-includes.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/definitions.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/types.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/oid.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/types.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/pdu_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/asn1.h
+./mibgroup/header_complex.lo: ../include/net-snmp/output_api.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_debug.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/session_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4355,8 +4701,12 @@
 ./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/snmpUDPIPv6Domain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4378,7 +4728,6 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/check_varbind.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/container.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/factory.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/container_binary_array.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/container_list_ssll.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/container_iterator.h
@@ -4391,8 +4740,6 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_enum.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/vacm.h
-./mibgroup/header_complex.lo: ../include/net-snmp/output_api.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_debug.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/snmpv3_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpv3.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/transform_oids.h
@@ -4438,18 +4785,23 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/table_container.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/table_array.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/mfd.h
+./mibgroup/header_complex.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./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-includes.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/definitions.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/types.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/oid.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/types.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/pdu_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/asn1.h
+./mibgroup/testhandler.lo: ../include/net-snmp/output_api.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_debug.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/session_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4457,8 +4809,12 @@
 ./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/snmpUDPIPv6Domain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4480,7 +4836,6 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/check_varbind.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/container.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/factory.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/container_binary_array.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/container_list_ssll.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/container_iterator.h
@@ -4493,8 +4848,6 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_enum.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/vacm.h
-./mibgroup/testhandler.lo: ../include/net-snmp/output_api.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_debug.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/snmpv3_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpv3.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/transform_oids.h
@@ -4540,17 +4893,22 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/table_container.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/table_array.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/mfd.h
+./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-includes.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/definitions.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/types.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/oid.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/types.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/pdu_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/asn1.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/output_api.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_debug.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/session_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_transport.h
@@ -4558,8 +4916,12 @@
 ./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/snmpUDPIPv6Domain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/ucd_compat.h
@@ -4581,7 +4943,6 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/check_varbind.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/container.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/factory.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_logging.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/container_binary_array.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/container_list_ssll.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/container_iterator.h
@@ -4594,8 +4955,6 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_enum.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/vacm.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/output_api.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_debug.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/snmpv3_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpv3.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/transform_oids.h
@@ -4640,10 +4999,13 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/table_iterator.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/table_container.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/table_array.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/agent/mfd.h mibgroup/struct.h
-./mibgroup/util_funcs.lo: ./mibgroup/util_funcs.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/utilities/execute.h
 ./mibgroup/util_funcs.lo: ./mibgroup/ucd-snmp/errormib.h
diff --git a/agent/Makefile.in b/agent/Makefile.in
index 766e5c6..fa510a9 100644
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -22,7 +22,8 @@
 INSTALLPOSTLIBS	= libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
 
 INCLUDESUBDIR=agent
-INCLUDESUBDIRHEADERS=agent_read_config.h \
+HEADERS=\
+	agent_read_config.h \
 	agent_registry.h \
 	agent_index.h \
 	agent_sysORTable.h \
@@ -36,7 +37,37 @@
 	net-snmp-agent-includes.h \
 	mib_modules.h \
 	agent_callbacks.h \
-	sysORTable.h
+	sysORTable.h \
+	all_helpers.h \
+	baby_steps.h \
+	bulk_to_next.h \
+	cache_handler.h \
+	debug_handler.h \
+	instance.h \
+	mode_end_call.h \
+	multiplexer.h \
+	null.h \
+	old_api.h \
+	read_only.h \
+	row_merge.h \
+	scalar.h \
+	scalar_group.h \
+	serialize.h \
+	snmp_get_statistic.h \
+	stash_cache.h \
+	stash_to_next.h \
+	table_array.h \
+	table_container.h \
+	table.h \
+	table_data.h \
+	table_dataset.h \
+	table_tdata.h \
+	table_iterator.h \
+	watcher.h
+
+HEADERSONLY=mfd.h set_helper.h
+
+INCLUDESUBDIRHEADERS=$(HEADERS) $(HEADERSONLY)
 
 INSTALLBUILTSUBDIRHEADERS=../include/net-snmp/agent/mib_module_config.h \
 			  ../include/net-snmp/agent/agent_module_config.h \
@@ -45,7 +76,8 @@
 
 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/header_simple_table.h util_funcs/MIB_STATS_CACHE_TIMEOUT.h \
+	util_funcs/Exit.h util_funcs/restart.h
 
 OTHERINSTALL=installmibgroupheaders @EMBEDPERLINSTALL@
 OTHERUNINSTALL=@EMBEDPERLUNINSTALL@
@@ -79,7 +111,6 @@
 # how to build it info
 #
 USELIBS		= ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
-HELPERLIB	= helpers/libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION)
 AGENTLIB	= libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
 MIBLIB		= libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
 
@@ -88,7 +119,7 @@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
 PERLLDOPTS_FOR_LIBS = @PERLLDOPTS_FOR_LIBS@
 LIBS		= $(USELIBS) @AGENTLIBS@ $(PERLLDOPTS_FOR_APPS)
-OUR_AGENT_LIBS	= $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBS) @DLLIBS@
+OUR_AGENT_LIBS	= $(AGENTLIB) $(MIBLIB) $(LIBS) @DLLIBS@
 CPPFLAGS	= $(TOP_INCLUDES) -I. $(AGENT_INCLUDES) $(MIBGROUP_INCLUDES) \
 		  $(SNMPLIB_INCLUDES) @CPPFLAGS@ 
 
@@ -106,12 +137,85 @@
 MIBOBJS		= $(mibgroup_list_o) mib_modules.o auto_nlist.o
 
 # libnetsnmpagent objects
-LIBAGENTOBJS=snmp_agent.o snmp_vars.o agent_read_config.o \
-	agent_registry.o agent_index.o agent_sysORTable.o agent_trap.o \
-	kernel.o agent_handler.o $(agentgroup_list_o) @OTHERAGENTLIBOBJS@
-LLIBAGENTOBJS=snmp_agent.lo snmp_vars.lo agent_read_config.lo \
-	agent_registry.lo agent_index.lo agent_sysORTable.lo agent_trap.lo \
-	kernel.lo agent_handler.lo $(agentgroup_list_lo) @OTHERAGENTLIBLOBJS@
+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 \
+	helpers/cache_handler.o \
+	helpers/debug_handler.o \
+	helpers/instance.o \
+	helpers/mode_end_call.o \
+	helpers/multiplexer.o \
+	helpers/null.o \
+	helpers/old_api.o \
+	helpers/read_only.o \
+	helpers/row_merge.o \
+	helpers/scalar.o \
+	helpers/scalar_group.o \
+	helpers/serialize.o \
+	helpers/snmp_get_statistic.o \
+	helpers/stash_cache.o \
+	helpers/stash_to_next.o \
+	helpers/table.o \
+	helpers/table_array.o \
+	helpers/table_container.o \
+	helpers/table_data.o \
+	helpers/table_dataset.o \
+	helpers/table_iterator.o \
+	helpers/table_row.o \
+	helpers/table_tdata.o \
+	helpers/watcher.o
+
+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 \
+	helpers/cache_handler.lo \
+	helpers/debug_handler.lo \
+	helpers/instance.lo \
+	helpers/mode_end_call.lo \
+	helpers/multiplexer.lo \
+	helpers/null.lo \
+	helpers/old_api.lo \
+	helpers/read_only.lo \
+	helpers/row_merge.lo \
+	helpers/scalar.lo \
+	helpers/scalar_group.lo \
+	helpers/serialize.lo \
+	helpers/snmp_get_statistic.lo \
+	helpers/stash_cache.lo \
+	helpers/stash_to_next.lo \
+	helpers/table.lo \
+	helpers/table_array.lo \
+	helpers/table_container.lo \
+	helpers/table_data.lo \
+	helpers/table_dataset.lo \
+	helpers/table_iterator.lo \
+	helpers/table_row.lo \
+	helpers/table_tdata.lo \
+	helpers/watcher.lo
 
 # The agent objects.
 AGENTOBJS=snmpd.o @other_agentobjs@
@@ -144,13 +248,12 @@
 snmpd$(EXEEXT):	${LAGENTOBJS} $(USELIBS) $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBTARG) 
 	$(LINK) $(CFLAGS) -o $@ ${LAGENTOBJS} ${LDFLAGS} ${OUR_AGENT_LIBS}
 
-
 libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION):    ${LLIBAGENTOBJS} $(USELIBS)
-	$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS)
+	$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} @LD_NO_UNDEFINED@ $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) @AGENTLIBS@
 	$(RANLIB) $(AGENTLIB)
 
-libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(HELPERLIB) $(AGENTLIB) $(USELIBS)
-	$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(HELPERLIB) $(AGENTLIB) $(USELIBS) $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS)
+libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(AGENTLIB) $(USELIBS)
+	$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(AGENTLIB) $(USELIBS) @LD_NO_UNDEFINED@ $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) @AGENTLIBS@
 	$(RANLIB) $(MIBLIB)
 
 agentlib: $(AGENTLIB)
@@ -189,10 +292,6 @@
 # dependency for snmplib object. it's here because the headers listed
 # are relative to the agent directory.
 
-$(HELPERLIB): subdirs
-# the above is needed when building with '-j' argument - everything what needs 
-# helper lib must wait until 'subdirs' target is finished
-
 subdirs: agentlib
 # wait for agentlib before building 'subdirs' target
 
diff --git a/agent/agent_handler.c b/agent/agent_handler.c
index 2a2f2d9..ca6ae4c 100644
--- a/agent/agent_handler.c
+++ b/agent/agent_handler.c
@@ -84,9 +84,11 @@
  * @{
  */
 
-/** creates a netsnmp_mib_handler structure given a name and a access method.
+/** Creates a MIB handler structure.
+ *  The new structure is allocated and filled using the given name
+ *  and access method.
  *  The returned handler should then be @link netsnmp_register_handler()
- *  registered.@endlink
+ *  registered @endlink.
  *
  *  @param name is the handler name and is copied then assigned to
  *              netsnmp_mib_handler->handler_name
@@ -117,8 +119,9 @@
     return ret;
 }
 
-/** creates a handler registration structure given a name, a
- *  access_method function, a registration location oid and the modes
+/** Creates a MIB handler structure.
+ *  The new structure is allocated and filled using the given name,
+ *  access function, registration location OID and list of modes that
  *  the handler supports. If modes == 0, then modes will automatically
  *  be set to the default value of only HANDLER_CAN_DEFAULT, which is
  *  by default read-only GET and GETNEXT requests. A hander which supports
@@ -133,7 +136,7 @@
  *
  *  @param reg_oid is the registration location oid.
  *
- *  @param reg_oid_len is the length of reg_oid, can use the macro,
+ *  @param reg_oid_len is the length of reg_oid; can use the macro,
  *         OID_LENGTH
  *
  *  @param modes is used to configure read/write access.  If modes == 0, 
@@ -184,6 +187,30 @@
     return the_reg;
 }
 
+/** Creates a handler registration structure with a new MIB handler.
+ *  This function first @link netsnmp_create_handler() creates @endlink
+ *  a MIB handler, then @link netsnmp_handler_registration_create()
+ *  makes registation structure @endlink for it.
+ *
+ *  @param name is the handler name for netsnmp_create_handler()
+ *
+ *  @param handler_access_method is a function pointer used as the access
+ *     method for netsnmp_create_handler()
+ *
+ *  @param reg_oid is the registration location oid.
+ *
+ *  @param reg_oid_len is the length of reg_oid; can use the macro,
+ *         OID_LENGTH
+ *
+ *  @param modes is used to configure read/write access, as in
+ *         netsnmp_handler_registration_create()
+ *
+ *  @return Returns a pointer to a netsnmp_handler_registration struct.
+ *          If the structures creation failed, NULL is returned.
+ *
+ *  @see netsnmp_create_handler()
+ *  @see netsnmp_handler_registration_create()
+ */
 netsnmp_handler_registration *
 netsnmp_create_handler_registration(const char *name,
                                     Netsnmp_Node_Handler *
@@ -202,7 +229,21 @@
     return rv;
 }
 
-/** register a handler, as defined by the netsnmp_handler_registration pointer. */
+/** Registers a MIB handler inside the registration structure.
+ *  Checks given registation handler for sanity, then
+ *  @link netsnmp_register_mib() performs registration @endlink
+ *  in the MIB tree, as defined by the netsnmp_handler_registration
+ *  pointer. On success, SNMP_CALLBACK_APPLICATION is called.
+ *  The registration struct may be created by call of
+ *  netsnmp_create_handler_registration().
+ *
+ *  @param reginfo Pointer to a netsnmp_handler_registration struct.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ *
+ *  @see netsnmp_create_handler_registration()
+ *  @see netsnmp_register_mib()
+ */
 int
 netsnmp_register_handler(netsnmp_handler_registration *reginfo)
 {
@@ -267,7 +308,18 @@
                                 reginfo, 1);
 }
 
-/** unregister a handler, as defined by the netsnmp_handler_registration pointer. */
+/** Unregisters a MIB handler described inside the registration structure.
+ *  Removes a registration, performed earlier by
+ *  netsnmp_register_handler(), from the MIB tree.
+ *  Uses unregister_mib_context() to do the task.
+ *
+ *  @param reginfo Pointer to a netsnmp_handler_registration struct.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ *
+ *  @see netsnmp_register_handler()
+ *  @see unregister_mib_context()
+ */
 int
 netsnmp_unregister_handler(netsnmp_handler_registration *reginfo)
 {
@@ -277,7 +329,21 @@
                                   reginfo->contextName);
 }
 
-/** register a handler, as defined by the netsnmp_handler_registration pointer. */
+/** Registers a MIB handler inside the registration structure.
+ *  Checks given registation handler for sanity, then
+ *  @link netsnmp_register_mib() performs registration @endlink
+ *  in the MIB tree, as defined by the netsnmp_handler_registration
+ *  pointer. Never calls SNMP_CALLBACK_APPLICATION.
+ *  The registration struct may be created by call of
+ *  netsnmp_create_handler_registration().
+ *
+ *  @param reginfo Pointer to a netsnmp_handler_registration struct.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ *
+ *  @see netsnmp_create_handler_registration()
+ *  @see netsnmp_register_mib()
+ */
 int
 netsnmp_register_handler_nocallback(netsnmp_handler_registration *reginfo)
 {
@@ -325,11 +391,16 @@
                                 reginfo, 0);
 }
 
-/** inject a new handler into the calling chain of the handlers
-   defined by the netsnmp_handler_registration pointer.  The new
-   handler is injected after the before_what handler, or if NULL at
-   the top of the list and hence will be the new handler to be called
-   first.*/
+/** Injects handler into the calling chain of handlers.
+ *  The given MIB handler is inserted after the handler named before_what.
+ *  If before_what is NULL, the handler is put at the top of the list,
+ *  and hence will be the handler to be called first.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ *
+ *  @see netsnmp_create_handler_registration()
+ *  @see netsnmp_inject_handler()
+ */
 int
 netsnmp_inject_handler_before(netsnmp_handler_registration *reginfo,
                               netsnmp_mib_handler *handler,
@@ -383,10 +454,15 @@
     return SNMPERR_SUCCESS;
 }
 
-/** inject a new handler into the calling chain of the handlers
-   defined by the netsnmp_handler_registration pointer.  The new handler is
-   injected at the top of the list and hence will be the new handler
-   to be called first.*/
+/** Injects handler into the calling chain of handlers.
+ *  The given MIB handler is put at the top of the list,
+ *  and hence will be the handler to be called first.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ *
+ *  @see netsnmp_create_handler_registration()
+ *  @see netsnmp_inject_handler_before()
+ */
 int
 netsnmp_inject_handler(netsnmp_handler_registration *reginfo,
                        netsnmp_mib_handler *handler)
@@ -394,7 +470,13 @@
     return netsnmp_inject_handler_before(reginfo, handler, NULL);
 }
 
-/** calls a handler with with appropriate NULL checking of arguments, etc. */
+/** Calls a MIB handlers chain, starting with specific handler.
+ *  The given arguments and MIB handler are checked
+ *  for sanity, then the handlers are called, one by one,
+ *  until next handler is NULL.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ */
 NETSNMP_INLINE int
 netsnmp_call_handler(netsnmp_mib_handler *next_handler,
                      netsnmp_handler_registration *reginfo,
@@ -415,53 +497,55 @@
     }
 
     do {
-    nh = next_handler->access_method;
-    if (!nh) {
-        if (next_handler->next) {
-            snmp_log(LOG_ERR, "no access method specified in handler %s.",
-                     next_handler->handler_name);
-            return SNMP_ERR_GENERR;
+        nh = next_handler->access_method;
+        if (!nh) {
+            if (next_handler->next) {
+                snmp_log(LOG_ERR, "no access method specified in handler %s.",
+                         next_handler->handler_name);
+                return SNMP_ERR_GENERR;
+            }
+            /*
+             * The final handler registration in the chain may well not need
+             * to include a handler routine, if the processing of this object
+             * is handled completely by the agent toolkit helpers.
+             */
+            return SNMP_ERR_NOERROR;
         }
+
+        DEBUGMSGTL(("handler:calling", "calling handler %s for mode %s\n",
+                    next_handler->handler_name,
+                    se_find_label_in_slist("agent_mode", reqinfo->mode)));
+
         /*
-         * The final handler registration in the chain may well not need
-         * to include a handler routine, if the processing of this object
-         * is handled completely by the agent toolkit helpers.
+         * XXX: define acceptable return statuses
          */
-        return SNMP_ERR_NOERROR;
-    }
+        ret = (*nh) (next_handler, reginfo, reqinfo, requests);
 
-    DEBUGMSGTL(("handler:calling", "calling handler %s for mode %s\n",
-                next_handler->handler_name,
-                se_find_label_in_slist("agent_mode", reqinfo->mode)));
+        DEBUGMSGTL(("handler:returned", "handler %s returned %d\n",
+                    next_handler->handler_name, ret));
 
-    /*
-     * XXX: define acceptable return statuses 
-     */
-    ret = (*nh) (next_handler, reginfo, reqinfo, requests);
+        if (! (next_handler->flags & MIB_HANDLER_AUTO_NEXT))
+            break;
 
-    DEBUGMSGTL(("handler:returned", "handler %s returned %d\n",
-                next_handler->handler_name, ret));
+        /*
+         * did handler signal that it didn't want auto next this time around?
+         */
+        if(next_handler->flags & MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE) {
+            next_handler->flags &= ~MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
+            break;
+        }
 
-    if (! (next_handler->flags & MIB_HANDLER_AUTO_NEXT))
-        break;
-
-    /*
-     * did handler signal that it didn't want auto next this time around?
-     */
-    if(next_handler->flags & MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE) {
-        next_handler->flags &= ~MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
-        break;
-    }
-
-    next_handler = next_handler->next;
+        next_handler = next_handler->next;
 
     } while(next_handler);
 
     return ret;
 }
 
-/** @internal
- *  calls all the handlers for a given mode.
+/** @private
+ *  Calls all the MIB Handlers in registration struct for a given mode.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
  */
 int
 netsnmp_call_handlers(netsnmp_handler_registration *reginfo,
@@ -523,8 +607,13 @@
     return status;
 }
 
-/** calls the next handler in the chain after the current one with
-   with appropriate NULL checking, etc. */
+/** @private
+ *  Calls the next MIB handler in the chain, after the current one.
+ *  The given arguments and MIB handler are checked
+ *  for sanity, then the next handler is called.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ */
 NETSNMP_INLINE int
 netsnmp_call_next_handler(netsnmp_mib_handler *current,
                           netsnmp_handler_registration *reginfo,
@@ -545,8 +634,13 @@
     return netsnmp_call_handler(current->next, reginfo, reqinfo, requests);
 }
 
-/** calls the next handler in the chain after the current one with
-   with appropriate NULL checking, etc. */
+/** @private
+ *  Calls the next MIB handler in the chain, after the current one.
+ *  The given arguments and MIB handler are not validated before
+ *  the call, only request is checked.
+ *
+ *  @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
+ */
 NETSNMP_INLINE int
 netsnmp_call_next_handler_one_request(netsnmp_mib_handler *current,
                                       netsnmp_handler_registration *reginfo,
@@ -569,7 +663,13 @@
     return ret;
 }
 
-/** frees the resources associated with a given handler */
+/** Deallocates resources associated with a given handler.
+ *  The handler is removed from chain and then freed.
+ *  After calling this function, the handler pointer is invalid
+ *  and should be set to NULL.
+ *
+ *  @param handler is the MIB Handler to be freed
+ */
 void
 netsnmp_handler_free(netsnmp_mib_handler *handler)
 {
@@ -589,8 +689,15 @@
     }
 }
 
-/** duplicates a handler and all subsequent handlers
- * see also _clone_handler
+/** Duplicates a MIB handler and all subsequent handlers.
+ *  Creates a copy of all data in given handlers chain.
+ *
+ *  @param handler is the MIB Handler to be duplicated
+ *
+ *  @return Returns a pointer to the complete copy,
+ *         or NULL if any problem occured.
+ *
+ * @see _clone_handler()
  */
 netsnmp_mib_handler *
 netsnmp_handler_dup(netsnmp_mib_handler *handler)
@@ -621,7 +728,13 @@
     return NULL;
 }
 
-/** free the resources associated with a handler registration object */
+/** Free resources associated with a handler registration object.
+ *  The registration object and all MIB Handlers in the chain are
+ *  freed. When the function ends, given pointer is no longer valid
+ *  and should be set to NULL.
+ *
+ *  @param reginfo is the handler registration object to be freed
+ */
 void
 netsnmp_handler_registration_free(netsnmp_handler_registration *reginfo)
 {
@@ -635,7 +748,16 @@
     }
 }
 
-/** duplicates the handler registration object */
+/** Duplicates handler registration object and all subsequent handlers.
+ *  Creates a copy of the handler registration object and all its data.
+ *
+ *  @param reginfo is the handler registration object to be duplicated
+ *
+ *  @return Returns a pointer to the complete copy,
+ *         or NULL if any problem occured.
+ *
+ * @see netsnmp_handler_dup()
+ */
 netsnmp_handler_registration *
 netsnmp_handler_registration_dup(netsnmp_handler_registration *reginfo)
 {
@@ -694,9 +816,16 @@
     return NULL;
 }
 
-/** creates a cache of information which can be saved for future
-   reference.  Use netsnmp_handler_check_cache() later to make sure it's still
-   valid before referencing it in the future. */
+/** Creates a cache of information which can be saved for future reference.
+ *  The cache is filled with pointers from parameters. Note that
+ *  the input structures are not duplicated, but put directly into
+ *  the new cache struct.
+ *  Use netsnmp_handler_check_cache() later to make sure it's still
+ *  valid before referencing it in the future.
+ *
+ * @see netsnmp_handler_check_cache()
+ * @see netsnmp_free_delegated_cache()
+ */
 NETSNMP_INLINE netsnmp_delegated_cache *
 netsnmp_create_delegated_cache(netsnmp_mib_handler *handler,
                                netsnmp_handler_registration *reginfo,
@@ -718,9 +847,17 @@
     return ret;
 }
 
-/** check's a given cache and returns it if it is still valid (ie, the
-   agent still considers it to be an outstanding request.  Returns
-   NULL if it's no longer valid. */
+/** Check if a given delegated cache is still valid.
+ *  The cache is valid if it's a part of transaction
+ *  (ie, the agent still considers it to be an outstanding request).
+ *
+ *  @param dcache is the delegated cache to be checked.
+ *
+ *  @return Returns the cache pointer if it is still valid, NULL otherwise.
+ *
+ * @see netsnmp_create_delegated_cache()
+ * @see netsnmp_free_delegated_cache()
+ */
 NETSNMP_INLINE netsnmp_delegated_cache *
 netsnmp_handler_check_cache(netsnmp_delegated_cache *dcache)
 {
@@ -734,7 +871,16 @@
     return NULL;
 }
 
-/** frees a cache once you're finished using it */
+/** Free a cache once it's no longer used.
+ *  Deletes the data allocated by netsnmp_create_delegated_cache().
+ *  Structures which were not allocated by netsnmp_create_delegated_cache()
+ *  are not freed (pointers are dropped).
+ *
+ *  @param dcache is the delegated cache to be freed.
+ *
+ * @see netsnmp_create_delegated_cache()
+ * @see netsnmp_handler_check_cache()
+ */
 NETSNMP_INLINE void
 netsnmp_free_delegated_cache(netsnmp_delegated_cache *dcache)
 {
@@ -748,7 +894,13 @@
 }
 
 
-/** marks a list of requests as delegated (or not if isdelegaded = 0) */
+/** 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.
+ *
+ *  @param requests Request list.
+ *  @param isdelegated New value of the 'delegated' flag.
+ */
 void
 netsnmp_handler_mark_requests_as_delegated(netsnmp_request_info *requests,
                                            int isdelegated)
@@ -759,15 +911,16 @@
     }
 }
 
-/** add data to a request that can be extracted later by submodules
+/** Adds data from node list to the request information structure.
+ *  Data in the request can be later extracted and used by submodules.
  *
- * @param request the netsnmp request info structure
+ * @param request Destination request information structure.
  *
- * @param node this is the data to be added to the linked list
- *             request->parent_data
+ * @param node The data to be added to the linked list
+ *             request->parent_data.
  *
- * @return void
- *
+ * @see netsnmp_request_remove_list_data()
+ * @see netsnmp_request_get_list_data()
  */
 NETSNMP_INLINE void
 netsnmp_request_add_list_data(netsnmp_request_info *request,
@@ -781,7 +934,7 @@
     }
 }
 
-/** remove data from a request
+/** Removes all data from a request.
  *
  * @param request the netsnmp request info structure
  *
@@ -789,6 +942,8 @@
  *
  * @return 0 on successful find-and-delete, 1 otherwise.
  *
+ * @see netsnmp_request_add_list_data()
+ * @see netsnmp_request_get_list_data()
  */
 NETSNMP_INLINE int
 netsnmp_request_remove_list_data(netsnmp_request_info *request,
@@ -800,16 +955,20 @@
     return netsnmp_remove_list_node(&request->parent_data, name);
 }
 
-/** extract data from a request that was added previously by a parent module
+/** Extracts data from a request.
+ *  Retrieves data that was previously added to the request,
+ *  usually by a parent module.
  *
- * @param request the netsnmp request info function
+ * @param request Source request information structure.
  *
- * @param name used to compare against the request->parent_data->name value,
- *             if a match is found request->parent_data->data is returned
+ * @param name Used to compare against the request->parent_data->name value;
+ *             if a match is found, request->parent_data->data is returned.
  *
- * @return a void pointer(request->parent_data->data), otherwise NULL is
- *         returned if request is NULL or request->parent_data is NULL or
- *         request->parent_data object is not found.
+ * @return Gives a void pointer(request->parent_data->data); NULL is
+ *         returned if source data is NULL or the object is not found.
+ *
+ * @see netsnmp_request_add_list_data()
+ * @see netsnmp_request_remove_list_data()
  */
 void    *
 netsnmp_request_get_list_data(netsnmp_request_info *request,
@@ -820,7 +979,15 @@
     return NULL;
 }
 
-/** Free the extra data stored in a request */
+/** Free the extra data stored in a request.
+ *  Deletes the data in given request only. Other chain items
+ *  are unaffected.
+ *
+ * @param request Request information structure to be modified.
+ *
+ * @see netsnmp_request_add_list_data()
+ * @see netsnmp_free_list_data()
+ */
 NETSNMP_INLINE void
 netsnmp_free_request_data_set(netsnmp_request_info *request)
 {
@@ -828,7 +995,14 @@
         netsnmp_free_list_data(request->parent_data);
 }
 
-/** Free the extra data stored in a bunch of requests (all data in the chain) */
+/** Free the extra data stored in a bunch of requests.
+ *  Deletes all data in the chain inside request.
+ *
+ * @param request Request information structure to be modified.
+ *
+ * @see netsnmp_request_add_list_data()
+ * @see netsnmp_free_request_data_set()
+ */
 NETSNMP_INLINE void
 netsnmp_free_request_data_sets(netsnmp_request_info *request)
 {
@@ -838,7 +1012,17 @@
     }
 }
 
-/** Returns a handler from a chain based on the name */
+/** Returns a MIB handler from a chain based on the name.
+ *
+ * @param reginfo Handler registration struct which contains the chain.
+ *
+ * @param name Target MIB Handler name string. The name is case
+ *        sensitive.
+ *
+ * @return The MIB Handler is returned, or NULL if not found.
+ *
+ * @see netsnmp_request_add_list_data()
+ */
 netsnmp_mib_handler *
 netsnmp_find_handler_by_name(netsnmp_handler_registration *reginfo,
                              const char *name)
@@ -854,10 +1038,22 @@
     return NULL;
 }
 
-/** Returns a handler's void * pointer from a chain based on the name.
- This probably shouldn't be used by the general public as the void *
- data may change as a handler evolves.  Handlers should really
- advertise some function for you to use instead. */
+/** Returns a handler's void pointer from a chain based on the name.
+ *
+ * @warning The void pointer data may change as a handler evolves.
+ *        Handlers should really advertise some function for you
+ *        to use instead.
+ *
+ * @param reginfo Handler registration struct which contains the chain.
+ *
+ * @param name Target MIB Handler name string. The name is case
+ *        sensitive.
+ *
+ * @return The MIB Handler's void * pointer is returned,
+ *        or NULL if the handler is not found.
+ *
+ * @see netsnmp_find_handler_by_name()
+ */
 void           *
 netsnmp_find_handler_data_by_name(netsnmp_handler_registration *reginfo,
                                   const char *name)
@@ -868,8 +1064,12 @@
     return NULL;
 }
 
-/** clones a mib handler (name, flags and access methods only; not myvoid)
- * see also netsnmp_handler_dup
+/** @private
+ *  Clones a MIB Handler with its basic properties.
+ *  Creates a copy of the given MIB Handler. Copies name, flags and
+ *  access methods only; not myvoid.
+ *
+ *  @see netsnmp_handler_dup()
  */
 static netsnmp_mib_handler *
 _clone_handler(netsnmp_mib_handler *it)
@@ -894,7 +1094,15 @@
     netsnmp_handler_free((netsnmp_mib_handler *)handler);
 }
 
-/** registers a given handler by name so that it can be found easily later.
+/** Registers a given handler by name, so that it can be found easily later.
+ *  Pointer to the handler is put into a list where it can be easily located
+ *  at any time.
+ *
+ * @param name Name string to be associated with the handler.
+ *
+ * @param handler Pointer the MIB Handler.
+ *
+ * @see netsnmp_clear_handler_list()
  */
 void
 netsnmp_register_handler_by_name(const char *name,
@@ -906,7 +1114,13 @@
     DEBUGMSGTL(("handler_registry", "registering helper %s\n", name));
 }
 
-/** clears the entire handler-registration list
+/** Clears the entire MIB Handlers registration list.
+ *  MIB Handlers registration list is used to access any MIB Handler by
+ *  its name. The function frees the list memory and sets pointer to NULL.
+ *  Instead of calling this function directly, use shutdown_agent().
+ *
+ *  @see shutdown_agent()
+ *  @see netsnmp_register_handler_by_name()
  */
 void
 netsnmp_clear_handler_list(void)
@@ -916,8 +1130,8 @@
     handler_reg = NULL;
 }
 
-/** @internal
- *  injects a handler into a subtree, peers and children when a given
+/** @private
+ *  Injects a handler into a subtree, peers and children when a given
  *  subtrees name matches a passed in name.
  */
 void
@@ -964,8 +1178,8 @@
 }
 
 static int      doneit = 0;
-/** @internal
- *  parses the "injectHandler" token line.
+/** @private
+ *  Parses the "injectHandler" token line.
  */
 void
 parse_injectHandler_conf(const char *token, char *cptr)
@@ -981,7 +1195,7 @@
         return;
 
     cptr = copy_nword(cptr, handler_to_insert, sizeof(handler_to_insert));
-    handler = netsnmp_get_list_data(handler_reg, handler_to_insert);
+    handler = (netsnmp_mib_handler*)netsnmp_get_list_data(handler_reg, handler_to_insert);
     if (!handler) {
 	netsnmp_config_error("no \"%s\" handler registered.",
 			     handler_to_insert);
@@ -1002,8 +1216,8 @@
     }
 }
 
-/** @internal
- *  callback to ensure injectHandler parser doesn't do things twice
+/** @private
+ *  Callback to ensure injectHandler parser doesn't do things twice.
  *  @todo replace this with a method to check the handler chain instead.
  */
 static int
@@ -1014,8 +1228,11 @@
     return 0;
 }
 
-/** @internal
+/** @private
  *  Registers the injectHandle parser token.
+ *  Used in init_agent_read_config().
+ *
+ *  @see init_agent_read_config()
  */
 void
 netsnmp_init_handler_conf(void)
diff --git a/agent/agent_index.c b/agent/agent_index.c
index 8e349dc..4a89f89 100644
--- a/agent/agent_index.c
+++ b/agent/agent_index.c
@@ -18,15 +18,8 @@
 #include <sys/types.h>
 #include <stdio.h>
 #include <fcntl.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -92,7 +85,11 @@
     if (res == NULL) {
         return NULL;
     } else {
-        char           *rv = strdup(res->val.string);
+        char *rv = (char *)malloc(res->val_len + 1);
+        if (rv) {
+            memcpy(rv, res->val.string, res->val_len);
+            rv[res->val_len] = 0;
+        }
         free(res);
         return rv;
     }
diff --git a/agent/agent_read_config.c b/agent/agent_read_config.c
index 07861ad..61d6667 100644
--- a/agent/agent_read_config.c
+++ b/agent/agent_read_config.c
@@ -22,11 +22,7 @@
 #include <errno.h>
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -61,8 +57,6 @@
 #include <sys/param.h>
 #endif
 #endif
-#elif HAVE_WINSOCK_H
-#include <winsock.h>
 #endif
 #if HAVE_SYS_STREAM_H
 #   ifdef sysv5UnixWare7
@@ -302,6 +296,17 @@
 }
 
 void
+snmpd_register_const_config_handler(const char *token,
+                                    void (*parser) (const char *, const char *),
+                                    void (*releaser) (void), const char *help)
+{
+    DEBUGMSGTL(("snmpd_register_app_config_handler",
+                "registering .conf token for \"%s\"\n", token));
+    register_app_config_handler(token, (void(*)(const char *, char *))parser,
+                                releaser, help);
+}
+
+void
 snmpd_unregister_config_handler(const char *token)
 {
     unregister_app_config_handler(token);
diff --git a/agent/agent_registry.c b/agent/agent_registry.c
index 7aa8d23..dbaa48c 100644
--- a/agent/agent_registry.c
+++ b/agent/agent_registry.c
@@ -11,7 +11,9 @@
  * Use is subject to license terms specified in the COPYING file
  * distributed with the Net-SNMP package.
  */
-/** @defgroup agent_registry Maintain a registry of MIB subtrees, together with related information regarding mibmodule, sessions, etc
+/** @defgroup agent_registry Registry of MIB subtrees, modules, sessions, etc
+ *     Maintain a registry of MIB subtrees, together with related information
+ *     regarding MIB modules, sessions, etc
  *   @ingroup agent
  *
  * @{
@@ -30,15 +32,8 @@
 #include <sys/types.h>
 #include <stdio.h>
 #include <fcntl.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -52,6 +47,7 @@
 #endif
 
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/library/snmp_assert.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_callbacks.h>
 
@@ -68,9 +64,16 @@
 #include "agentx/client.h"
 #endif
 
-/* Lookup cache code */
+/** @defgroup agent_lookup_cache Lookup cache, storing the registered OIDs.
+ *     Maintain the cache used for locating sub-trees and OIDs.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
 
+/**  Lookup cache - default size.*/
 #define SUBTREE_DEFAULT_CACHE_SIZE 8
+/**  Lookup cache - max acceptable size.*/
 #define SUBTREE_MAX_CACHE_SIZE     32
 int lookup_cache_size = 0; /*enabled later after registrations are loaded */
 
@@ -89,16 +92,18 @@
 
 static lookup_cache_context *thecontextcache = NULL;
 
-/** set the lookup cache size for optimized agent registration performance.
- * @param newsize set to the maximum size of a cache for a given
- * context.  Set to 0 to completely disable caching, or to -1 to set
- * to the default cache size (8), or to a number of your chosing.  The
- * rough guide is that it should be equal to the maximum number of
- * simultanious managers you expect to talk to the agent (M) times 80%
+/** Set the lookup cache size for optimized agent registration performance.
+ * Note that it is only used by master agent - sub-agent doesn't need the cache.
+ * The rough guide is that the cache size should be equal to the maximum
+ * number of simultaneous managers you expect to talk to the agent (M) times 80%
  * (or so, he says randomly) the average number (N) of varbinds you
  * expect to receive in a given request for a manager.  ie, M times N.
  * Bigger does NOT necessarily mean better.  Certainly 16 should be an
  * upper limit.  32 is the hard coded limit.
+ *
+ * @param newsize set to the maximum size of a cache for a given
+ * context.  Set to 0 to completely disable caching, or to -1 to set
+ * to the default cache size (8), or to a number of your chosing.  The
  */
 void
 netsnmp_set_lookup_cache_size(int newsize) {
@@ -110,7 +115,9 @@
         lookup_cache_size = SUBTREE_MAX_CACHE_SIZE;
 }
 
-/** retrieves the current value of the lookup cache size
+/** Retrieves the current value of the lookup cache size
+ *  Should be called from master agent only - sub-agent doesn't need the cache.
+ *
  *  @return the current lookup cache size
  */
 int
@@ -118,6 +125,12 @@
     return lookup_cache_size;
 }
 
+/** Returns lookup cache entry for the context of given name.
+ *
+ *  @param context Name of the context. Name is case sensitive.
+ *
+ *  @return the lookup cache context
+ */
 NETSNMP_STATIC_INLINE lookup_cache_context *
 get_context_lookup_cache(const char *context) {
     lookup_cache_context *ptr;
@@ -141,6 +154,14 @@
     return ptr;
 }
 
+/** Adds an entry to the Lookup Cache under specified context name.
+ *
+ *  @param context  Name of the context. Name is case sensitive.
+ *
+ *  @param next     Next subtree item.
+ *
+ *  @param previous Previous subtree item.
+ */
 NETSNMP_STATIC_INLINE void
 lookup_cache_add(const char *context,
                  netsnmp_subtree *next, netsnmp_subtree *previous) {
@@ -159,6 +180,15 @@
         cptr->currentpos = 0;
 }
 
+/** @private
+ *  Replaces next and previous pointer in given Lookup Cache.
+ *
+ *  @param ptr      Lookup Cache pointer.
+ *
+ *  @param next     Next subtree item.
+ *
+ *  @param previous Previous subtree item.
+ */
 NETSNMP_STATIC_INLINE void
 lookup_cache_replace(lookup_cache *ptr,
                      netsnmp_subtree *next, netsnmp_subtree *previous) {
@@ -167,6 +197,21 @@
     ptr->previous = previous;
 }
 
+/** Finds an entry in the Lookup Cache.
+ *
+ *  @param context  Case sensitive name of the context.
+ *
+ *  @param name     The OID we're searching for.
+ *
+ *  @param name_len Number of sub-ids (single integers) in the OID.
+ *
+ *  @param retcmp   Value set to snmp_oid_compare() call result.
+ *                  The value, if set, is always nonnegative.
+ *
+ *  @return gives Lookup Cache entry, or NULL if not found.
+ *
+ *  @see snmp_oid_compare()
+ */
 NETSNMP_STATIC_INLINE lookup_cache *
 lookup_cache_find(const char *context, oid *name, size_t name_len,
                   int *retcmp) {
@@ -193,6 +238,9 @@
     return ret;
 }
 
+/** @private
+ *  Clears cache count and position in Lookup Cache.
+ */
 NETSNMP_STATIC_INLINE void
 invalidate_lookup_cache(const char *context) {
     lookup_cache_context *cptr;
@@ -202,11 +250,205 @@
     }
 }
 
+void
+clear_lookup_cache(void) {
+
+    lookup_cache_context *ptr = NULL, *next = NULL;
+
+    ptr = thecontextcache;
+    while (ptr) {
+	next = ptr->next;
+	SNMP_FREE(ptr->context);
+	SNMP_FREE(ptr);
+	ptr = next;
+    }
+    thecontextcache = NULL; /* !!! */
+}
+
+/**  @} */
 /* End of Lookup cache code */
 
-static void register_mib_detach_node(netsnmp_subtree *s);
+/** @defgroup agent_context_cache Context cache, storing the OIDs under their contexts.
+ *     Maintain the cache used for locating sub-trees registered under different contexts.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
 subtree_context_cache *context_subtrees = NULL;
 
+/** Returns the top element of context subtrees cache.
+ *  Use it if you wish to sweep through the cache elements.
+ *  Note that the return may be NULL (cache may be empty).
+ *
+ *  @return pointer to topmost context subtree cache element.
+ */
+subtree_context_cache *
+get_top_context_cache(void)
+{
+    return context_subtrees;
+}
+
+/** Finds the first subtree registered under given context.
+ *
+ *  @param context_name Text name of the context we're searching for.
+ *
+ *  @return pointer to the first subtree element, or NULL if not found.
+ */
+netsnmp_subtree *
+netsnmp_subtree_find_first(const char *context_name)
+{
+    subtree_context_cache *ptr;
+
+    if (!context_name) {
+        context_name = "";
+    }
+
+    DEBUGMSGTL(("subtree", "looking for subtree for context: \"%s\"\n", 
+		context_name));
+    for (ptr = context_subtrees; ptr != NULL; ptr = ptr->next) {
+        if (ptr->context_name != NULL && 
+	    strcmp(ptr->context_name, context_name) == 0) {
+            DEBUGMSGTL(("subtree", "found one for: \"%s\"\n", context_name));
+            return ptr->first_subtree;
+        }
+    }
+    DEBUGMSGTL(("subtree", "didn't find a subtree for context: \"%s\"\n", 
+		context_name));
+    return NULL;
+}
+
+/** Adds the subtree to Context Cache under given context name.
+ *
+ *  @param context_name Text name of the context we're adding.
+ *
+ *  @param new_tree The subtree to be added.
+ *
+ *  @return copy of the new_tree pointer, or NULL if cannot add.
+ */
+netsnmp_subtree *
+add_subtree(netsnmp_subtree *new_tree, const char *context_name)
+{
+    subtree_context_cache *ptr = SNMP_MALLOC_TYPEDEF(subtree_context_cache);
+    
+    if (!context_name) {
+        context_name = "";
+    }
+
+    if (!ptr) {
+        return NULL;
+    }
+    
+    DEBUGMSGTL(("subtree", "adding subtree for context: \"%s\"\n",	
+		context_name));
+
+    ptr->next = context_subtrees;
+    ptr->first_subtree = new_tree;
+    ptr->context_name = strdup(context_name);
+    context_subtrees = ptr;
+
+    return ptr->first_subtree;
+}
+
+void
+netsnmp_remove_subtree(netsnmp_subtree *tree)
+{
+    subtree_context_cache *ptr;
+
+    if (!tree->prev) {
+        for (ptr = context_subtrees; ptr; ptr = ptr->next)
+            if (ptr->first_subtree == tree)
+                break;
+        netsnmp_assert(ptr);
+        if (ptr)
+            ptr->first_subtree = tree->next;
+    } else
+        tree->prev->next = tree->next;
+
+    if (tree->next)
+        tree->next->prev = tree->prev;
+}
+
+/** Replaces first subtree registered under given context name.
+ *  Overwrites a subtree pointer in Context Cache for the context name.
+ *  The previous subtree pointer is lost. If there's no subtree
+ *  under the supplied name, then a new cache item is created.
+ *
+ *  @param new_tree     The new subtree to be set.
+ *
+ *  @param context_name Text name of the context we're replacing.
+ *                      It is case sensitive.
+ *
+ * @return copy of the new_tree pointer, or NULL on error.
+ */
+netsnmp_subtree *
+netsnmp_subtree_replace_first(netsnmp_subtree *new_tree, 
+			      const char *context_name)
+{
+    subtree_context_cache *ptr;
+    if (!context_name) {
+        context_name = "";
+    }
+    for (ptr = context_subtrees; ptr != NULL; ptr = ptr->next) {
+        if (ptr->context_name != NULL &&
+	    strcmp(ptr->context_name, context_name) == 0) {
+            ptr->first_subtree = new_tree;
+            return ptr->first_subtree;
+        }
+    }
+    return add_subtree(new_tree, context_name);
+}
+
+
+void clear_subtree (netsnmp_subtree *sub);
+
+/** Completely clears both the Context cache and the Lookup cache.
+ */
+void
+clear_context(void) {
+
+    subtree_context_cache *ptr = NULL, *next = NULL;
+    netsnmp_subtree *t, *u;
+
+    DEBUGMSGTL(("agent_registry", "clear context\n"));
+
+    ptr = get_top_context_cache(); 
+    while (ptr) {
+	next = ptr->next;
+
+	for (t = ptr->first_subtree; t; t = u) {
+            u = t->next;
+	    clear_subtree(t);
+	}
+
+        free(NETSNMP_REMOVE_CONST(char*, ptr->context_name));
+        SNMP_FREE(ptr);
+
+	ptr = next;
+    }
+    context_subtrees = NULL; /* !!! */
+    clear_lookup_cache();
+}
+
+/**  @} */
+/* End of Context cache code */
+
+/** @defgroup agent_mib_subtree Maintaining MIB subtrees.
+ *     Maintaining MIB nodes and subtrees.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
+
+static void register_mib_detach_node(netsnmp_subtree *s);
+
+/** Frees single subtree item.
+ *  Deallocated memory for given netsnmp_subtree item, including
+ *  Handle Registration structure stored inside this item.
+ *  After calling this function, the pointer is invalid
+ *  and should be set to NULL.
+ *
+ *  @param a The subtree item to dispose.
+ */
 void
 netsnmp_subtree_free(netsnmp_subtree *a)
 {
@@ -228,6 +470,14 @@
   }
 }
 
+/** Creates deep copy of a subtree item.
+ *  Duplicates all properties stored in the structure, including
+ *  Handle Registration structure stored inside the item.
+ *
+ *  @param a The subtree item to copy.
+ *
+ *  @return deep copy of the subtree item, or NULL on error.
+ */
 netsnmp_subtree *
 netsnmp_subtree_deepcopy(netsnmp_subtree *a)
 {
@@ -268,78 +518,10 @@
   return b;
 }
 
-subtree_context_cache *
-get_top_context_cache(void)
-{
-    return context_subtrees;
-}
-
-netsnmp_subtree *
-netsnmp_subtree_find_first(const char *context_name)
-{
-    subtree_context_cache *ptr;
-
-    if (!context_name) {
-        context_name = "";
-    }
-
-    DEBUGMSGTL(("subtree", "looking for subtree for context: \"%s\"\n", 
-		context_name));
-    for (ptr = context_subtrees; ptr != NULL; ptr = ptr->next) {
-        if (ptr->context_name != NULL && 
-	    strcmp(ptr->context_name, context_name) == 0) {
-            DEBUGMSGTL(("subtree", "found one for: \"%s\"\n", context_name));
-            return ptr->first_subtree;
-        }
-    }
-    DEBUGMSGTL(("subtree", "didn't find a subtree for context: \"%s\"\n", 
-		context_name));
-    return NULL;
-}
-
-netsnmp_subtree *
-add_subtree(netsnmp_subtree *new_tree, const char *context_name)
-{
-    subtree_context_cache *ptr = SNMP_MALLOC_TYPEDEF(subtree_context_cache);
-    
-    if (!context_name) {
-        context_name = "";
-    }
-
-    if (!ptr) {
-        return NULL;
-    }
-    
-    DEBUGMSGTL(("subtree", "adding subtree for context: \"%s\"\n",	
-		context_name));
-
-    ptr->next = context_subtrees;
-    ptr->first_subtree = new_tree;
-    ptr->context_name = strdup(context_name);
-    context_subtrees = ptr;
-
-    return ptr->first_subtree;
-}
-
-netsnmp_subtree *
-netsnmp_subtree_replace_first(netsnmp_subtree *new_tree, 
-			      const char *context_name)
-{
-    subtree_context_cache *ptr;
-    if (!context_name) {
-        context_name = "";
-    }
-    for (ptr = context_subtrees; ptr != NULL; ptr = ptr->next) {
-        if (ptr->context_name != NULL &&
-	    strcmp(ptr->context_name, context_name) == 0) {
-            ptr->first_subtree = new_tree;
-            return ptr->first_subtree;
-        }
-    }
-    return add_subtree(new_tree, context_name);
-}
-
-NETSNMP_INLINE void
+/** @private
+ *  Replaces next subtree pointer in given subtree.
+ */
+NETSNMP_STATIC_INLINE void
 netsnmp_subtree_change_next(netsnmp_subtree *ptr, netsnmp_subtree *thenext)
 {
     ptr->next = thenext;
@@ -351,7 +533,10 @@
                                &thenext->oid_off);
 }
 
-NETSNMP_INLINE void
+/** @private
+ *  Replaces previous subtree pointer in given subtree.
+ */
+NETSNMP_STATIC_INLINE void
 netsnmp_subtree_change_prev(netsnmp_subtree *ptr, netsnmp_subtree *theprev)
 {
     ptr->prev = theprev;
@@ -363,12 +548,26 @@
                                &ptr->oid_off);
 }
 
+/** Compares OIDs of given subtrees.
+ *
+ *  @param ap,bp Pointers to the subtrees to be compared.
+ *
+ *  @return OIDs lexicographical comparison result.
+ *
+ *  @see snmp_oid_compare()
+ */
 int
 netsnmp_subtree_compare(const netsnmp_subtree *ap, const netsnmp_subtree *bp)
 {
     return snmp_oid_compare(ap->name_a, ap->namelen, bp->name_a, bp->namelen);
 }
 
+/** Joins the given subtree with the current tree.
+ *  Trees are joined and the one supplied as parameter is freed.
+ *
+ *  @param root The subtree to be merged with current subtree.
+ *              Do not use the pointer after joining - it may be invalid.
+ */
 void
 netsnmp_subtree_join(netsnmp_subtree *root)
 {
@@ -415,10 +614,18 @@
 }
 
 
-        /*
-         *  Split the subtree into two at the specified point,
-         *    returning the new (second) subtree
-         */
+/** Split the subtree into two at the specified point.
+ *  Subtrees of the given OID and separated and formed into the
+ *  returned subtree.
+ *
+ *  @param current The element at which splitting is started.
+ *
+ *  @param name The OID we'd like to split.
+ *
+ *  @param name_len Length of the OID.
+ *
+ *  @return head of the new (second) subtree.
+ */
 netsnmp_subtree *
 netsnmp_subtree_split(netsnmp_subtree *current, oid name[], int name_len)
 {
@@ -523,6 +730,14 @@
     return new_sub;
 }
 
+/** Loads the subtree under given context name.
+ *
+ *  @param new_sub The subtree to be loaded into current subtree.
+ *
+ *  @param context_name Text name of the context we're searching for.
+ *
+ *  @return gives MIB_REGISTERED_OK on success, error code otherwise.
+ */
 int
 netsnmp_subtree_load(netsnmp_subtree *new_sub, const char *context_name)
 {
@@ -706,6 +921,7 @@
 	    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;
 	    }
@@ -715,8 +931,172 @@
     return 0;
 }
 
-/*
- * Note: reginfo will be freed on failures
+/** Free the given subtree and all its children.
+ *
+ *  @param sub Subtree branch to be cleared and freed.
+ *             After the call, this pointer is invalid
+ *             and should be set to NULL.
+ */
+void
+clear_subtree (netsnmp_subtree *sub) {
+
+    netsnmp_subtree *c;
+    
+    if (sub == NULL)
+	return;
+
+    for(c = sub; c;) {
+        sub = c;
+        c = c->children;
+        netsnmp_subtree_free(sub);
+    }
+
+}
+
+netsnmp_subtree *
+netsnmp_subtree_find_prev(oid *name, size_t len, netsnmp_subtree *subtree,
+			  const char *context_name)
+{
+    lookup_cache *lookup_cache = NULL;
+    netsnmp_subtree *myptr = NULL, *previous = NULL;
+    int cmp = 1;
+    size_t ll_off = 0;
+
+    if (subtree) {
+        myptr = subtree;
+    } else {
+	/* look through everything */
+        if (lookup_cache_size) {
+            lookup_cache = lookup_cache_find(context_name, name, len, &cmp);
+            if (lookup_cache) {
+                myptr = lookup_cache->next;
+                previous = lookup_cache->previous;
+            }
+            if (!myptr)
+                myptr = netsnmp_subtree_find_first(context_name);
+        } else {
+            myptr = netsnmp_subtree_find_first(context_name);
+        }
+    }
+
+    /*
+     * this optimization causes a segfault on sf cf alpha-linux1.
+     * ifdef out until someone figures out why and fixes it. xxx-rks 20051117
+     */
+#ifndef __alpha
+#define WTEST_OPTIMIZATION 1
+#endif
+#ifdef WTEST_OPTIMIZATION
+    DEBUGMSGTL(("wtest","oid in: "));
+    DEBUGMSGOID(("wtest", name, len));
+    DEBUGMSG(("wtest","\n"));
+#endif
+    for (; myptr != NULL; previous = myptr, myptr = myptr->next) {
+#ifdef WTEST_OPTIMIZATION
+        /* Compare the incoming oid with the linked list.  If we have
+           results of previous compares, its faster to make sure the
+           length we differed in the last check is greater than the
+           length between this pointer and the last then we don't need
+           to actually perform a comparison */
+        DEBUGMSGTL(("wtest","oid cmp: "));
+        DEBUGMSGOID(("wtest", myptr->start_a, myptr->start_len));
+        DEBUGMSG(("wtest","  --- off = %lu, in off = %lu test = %d\n",
+                  (unsigned long)myptr->oid_off, (unsigned long)ll_off,
+                  !(ll_off && myptr->oid_off &&
+                    myptr->oid_off > ll_off)));
+        if (!(ll_off && myptr->oid_off && myptr->oid_off > ll_off) &&
+            netsnmp_oid_compare_ll(name, len,
+                                   myptr->start_a, myptr->start_len,
+                                   &ll_off) < 0) {
+#else
+        if (snmp_oid_compare(name, len, myptr->start_a, myptr->start_len) < 0) {
+#endif
+            if (lookup_cache_size && previous && cmp) {
+                if (lookup_cache) {
+                    lookup_cache_replace(lookup_cache, myptr, previous);
+                } else {
+                    lookup_cache_add(context_name, myptr, previous);
+                }
+            }
+            return previous;
+        }
+    }
+    return previous;
+}
+
+netsnmp_subtree *
+netsnmp_subtree_find_next(oid *name, size_t len,
+			  netsnmp_subtree *subtree, const char *context_name)
+{
+    netsnmp_subtree *myptr = NULL;
+
+    myptr = netsnmp_subtree_find_prev(name, len, subtree, context_name);
+
+    if (myptr != NULL) {
+        myptr = myptr->next;
+        while (myptr != NULL && (myptr->variables == NULL || 
+				 myptr->variables_len == 0)) {
+            myptr = myptr->next;
+        }
+        return myptr;
+    } else if (subtree != NULL && snmp_oid_compare(name, len, 
+				   subtree->start_a, subtree->start_len) < 0) {
+        return subtree;
+    } else {
+        return NULL;
+    }
+}
+
+netsnmp_subtree *
+netsnmp_subtree_find(oid *name, size_t len, netsnmp_subtree *subtree, 
+		     const char *context_name)
+{
+    netsnmp_subtree *myptr;
+
+    myptr = netsnmp_subtree_find_prev(name, len, subtree, context_name);
+    if (myptr && myptr->end_a &&
+        snmp_oid_compare(name, len, myptr->end_a, myptr->end_len)<0) {
+        return myptr;
+    }
+
+    return NULL;
+}
+
+/**  @} */
+/* End of Subtrees maintaining code */
+
+/** @defgroup agent_mib_registering Registering and unregistering MIB subtrees.
+ *     Adding and removing MIB nodes to the database under their contexts.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
+
+
+/** Registers a MIB handler.
+ *
+ *  @param moduleName
+ *  @param var
+ *  @param varsize
+ *  @param numvars
+ *  @param  mibloc
+ *  @param mibloclen
+ *  @param priority
+ *  @param range_subid
+ *  @param range_ubound
+ *  @param  ss
+ *  @param context
+ *  @param timeout
+ *  @param flags
+ *  @param reginfo Registration handler structure.
+ *                 In a case of failure, it will be freed.
+ *  @param perform_callback
+ *
+ *  @return gives MIB_REGISTERED_OK or MIB_* error code.
+ *
+ *  @see netsnmp_register_handler()
+ *  @see register_agentx_list()
+ *  @see netsnmp_handler_registration_free()
  */
 int
 netsnmp_register_mib(const char *moduleName,
@@ -843,6 +1223,7 @@
             if (res != MIB_REGISTERED_OK) {
                 unregister_mib_context(mibloc, mibloclen, priority,
                                        range_subid, range_ubound, context);
+                netsnmp_remove_subtree(sub2);
 		netsnmp_subtree_free(sub2);
                 netsnmp_set_lookup_cache_size(old_lookup_cache_val);
                 invalidate_lookup_cache(context);
@@ -890,10 +1271,9 @@
     return res;
 }
 
-/*
- * Reattach a particular node.  
+/** @private
+ *  Reattach a particular node.  
  */
-
 static void
 register_mib_reattach_node(netsnmp_subtree *s)
 {
@@ -925,10 +1305,8 @@
     }
 }
 
-/*
- * Call callbacks to reattach all our nodes.  
+/** Call callbacks to reattach all our nodes.  
  */
-
 void
 register_mib_reattach(void)
 {
@@ -945,10 +1323,11 @@
     }
 }
 
-/*
- * Mark a node as detached.  
+/** @private
+ *  Mark a node as detached.
+ *
+ *  @param s The note to be marked
  */
-
 static void
 register_mib_detach_node(netsnmp_subtree *s)
 {
@@ -957,12 +1336,10 @@
     }
 }
 
-/*
- * Mark all our registered OIDs as detached.  This is only really
- * useful for subagent protocols, when a connection is lost or
- * something.  
+/** Mark all our registered OIDs as detached.
+ *  This is only really useful for subagent protocols, when
+ *  a connection is lost or the subagent is being shut down.  
  */
-
 void
 register_mib_detach(void)
 {
@@ -978,6 +1355,54 @@
     }
 }
 
+/** Register a new module into the MIB database, with all possible custom options
+ *
+ *  @param  moduleName Text name of the module.
+ *                     The given name will be used to identify the module
+ *                     inside the agent.
+ *
+ *  @param  var        Array of variables to be registered in the module.
+ *
+ *  @param  varsize    Size of a single variable in var array.
+ *                     The size is normally equal to sizeof(struct variable),
+ *                     but if we wish to use shorter (or longer) OIDs, then we
+ *                     could use different variant of the variable structure.
+ *
+ *  @param  numvars    Number of variables in the var array.
+ *                     This is how many variables the function will try to register.
+ *
+ *  @param  mibloc     Base OID of the module.
+ *                     All OIDs in var array should be sub-oids of the base OID.
+ *
+ *  @param  mibloclen  Length of the base OID.
+ *                     Number of integers making up the base OID.
+ *
+ *  @param  priority   Registration priority.
+ *                     Used to achieve a desired configuration when different
+ *                     sessions register identical or overlapping regions.
+ *                     Primarily used with AgentX subagent registrations.
+ *
+ *  @param range_subid If non-zero, the module is registered against a range
+ *                     of OIDs, with this parameter identifying the relevant
+ *                     subidentifier - see RFC 2741 for details.
+ *                     Typically used to register a single row of a table.
+ *                     If zero, then register the module against the full OID subtree.
+ *
+ *  @param range_ubound The end of the range being registered (see RFC 2741)
+ *                     If range_subid is zero, then this parameter is ignored.
+ *
+ *  @param ss 
+ *  @param context 
+ *  @param timeout 
+ *  @param flags 
+ *
+ *  @return gives SNMPERR_SUCCESS or SNMPERR_* error code.
+ *
+ *  @see register_mib()
+ *  @see register_mib_priority()
+ *  @see register_mib_range()
+ *  @see unregister_mib()
+ */
 int
 register_mib_context(const char *moduleName,
                      struct variable *var,
@@ -997,6 +1422,52 @@
                                     timeout, flags);
 }
 
+/** Register a new module into the MIB database, as being responsible
+ *   for a range of OIDs (typically a single row of a table).
+ *
+ *  @param  moduleName Text name of the module.
+ *                     The given name will be used to identify the module
+ *                     inside the agent.
+ *
+ *  @param  var        Array of variables to be registered in the module.
+ *
+ *  @param  varsize    Size of a single variable in var array.
+ *                     The size is normally equal to sizeof(struct variable),
+ *                     but if we wish to use shorter (or longer) OIDs, then we
+ *                     could use different variant of the variable structure.
+ *
+ *  @param  numvars    Number of variables in the var array.
+ *                     This is how many variables the function will try to register.
+ *
+ *  @param  mibloc     Base OID of the module.
+ *                     All OIDs in var array should be sub-oids of the base OID.
+ *
+ *  @param  mibloclen  Length of the base OID.
+ *                     Number of integers making up the base OID.
+ *
+ *  @param  priority   Registration priority.
+ *                     Used to achieve a desired configuration when different
+ *                     sessions register identical or overlapping regions.
+ *                     Primarily used with AgentX subagent registrations.
+ *
+ *  @param range_subid If non-zero, the module is registered against a range
+ *                     of OIDs, with this parameter identifying the relevant
+ *                     subidentifier - see RFC 2741 for details.
+ *                     Typically used to register a single row of a table.
+ *                     If zero, then register the module against the full OID subtree.
+ *
+ *  @param range_ubound The end of the range being registered (see RFC 2741)
+ *                     If range_subid is zero, then this parameter is ignored.
+ *
+ *  @param ss 
+ *
+ *  @return gives SNMPERR_SUCCESS or SNMPERR_* error code.
+ *
+ *  @see register_mib()
+ *  @see register_mib_priority()
+ *  @see register_mib_context()
+ *  @see unregister_mib()
+ */
 int
 register_mib_range(const char *moduleName,
                    struct variable *var,
@@ -1012,6 +1483,40 @@
                                 range_subid, range_ubound, ss, "", -1, 0);
 }
 
+/** Register a new module into the MIB database, with a non-default priority
+ *
+ *  @param  moduleName Text name of the module.
+ *                     The given name will be used to identify the module
+ *                     inside the agent.
+ *
+ *  @param  var        Array of variables to be registered in the module.
+ *
+ *  @param  varsize    Size of a single variable in var array.
+ *                     The size is normally equal to sizeof(struct variable),
+ *                     but if we wish to use shorter (or longer) OIDs, then we
+ *                     could use different variant of the variable structure.
+ *
+ *  @param  numvars    Number of variables in the var array.
+ *                     This is how many variables the function will try to register.
+ *
+ *  @param  mibloc     Base OID of the module.
+ *                     All OIDs in var array should be sub-oids of the base OID.
+ *
+ *  @param  mibloclen  Length of the base OID.
+ *                     Number of integers making up the base OID.
+ *
+ *  @param  priority   Registration priority.
+ *                     Used to achieve a desired configuration when different
+ *                     sessions register identical or overlapping regions.
+ *                     Primarily used with AgentX subagent registrations.
+ *
+ *  @return gives SNMPERR_SUCCESS or SNMPERR_* error code.
+ *
+ *  @see register_mib()
+ *  @see register_mib_range()
+ *  @see register_mib_context()
+ *  @see unregister_mib()
+ */
 int
 register_mib_priority(const char *moduleName,
                       struct variable *var,
@@ -1023,6 +1528,35 @@
                               mibloc, mibloclen, priority, 0, 0, NULL);
 }
 
+/** Register a new module into the MIB database, using default priority and context
+ *
+ *  @param  moduleName Text name of the module.
+ *                     The given name will be used to identify the module
+ *                     inside the agent.
+ *
+ *  @param  var        Array of variables to be registered in the module.
+ *
+ *  @param  varsize    Size of a single variable in var array.
+ *                     The size is normally equal to sizeof(struct variable),
+ *                     but if we wish to use shorter (or longer) OIDs, then we
+ *                     could use different variant of the variable structure.
+ *
+ *  @param  numvars    Number of variables in the var array.
+ *                     This is how many variables the function will try to register.
+ *
+ *  @param  mibloc     Base OID of the module.
+ *                     All OIDs in var array should be sub-oids of the base OID.
+ *
+ *  @param  mibloclen  Length of the base OID.
+ *                     Number of integers making up the base OID.
+ *
+ *  @return gives SNMPERR_SUCCESS or SNMPERR_* error code.
+ *
+ *  @see register_mib_priority()
+ *  @see register_mib_range()
+ *  @see register_mib_context()
+ *  @see unregister_mib()
+ */
 int
 register_mib(const char *moduleName,
              struct variable *var,
@@ -1033,6 +1567,17 @@
                                  mibloc, mibloclen, DEFAULT_MIB_PRIORITY);
 }
 
+/** @private
+ *  Unloads a subtree from MIB tree.
+ *
+ *  @param  sub     The sub-tree which is being removed.
+ *
+ *  @param  prev    Previous entry, before the unloaded one.
+ *
+ *  @param  context Name of the context which is being removed.
+ *
+ *  @see unregister_mib_context()
+ */
 void
 netsnmp_subtree_unload(netsnmp_subtree *sub, netsnmp_subtree *prev, const char *context)
 {
@@ -1088,10 +1633,10 @@
 }
 
 /**
- * Unregisters an OID that has an associated context name value. 
- * Typically used when a module has multiple contexts defined.  The parameters
- * priority, range_subid, and range_ubound should be used in conjunction with
- * agentx, see RFC 2741, otherwise these values should always be 0.
+ * Unregisters a module registered against a given OID (or range) in a specified context. 
+ * Typically used when a module has multiple contexts defined.
+ * The parameters priority, range_subid, range_ubound and context
+ * should match those used to register the module originally.
  *
  * @param name  the specific OID to unregister if it conatins the associated
  *              context.
@@ -1113,8 +1658,11 @@
  *
  * @param context  a context name that has been created
  *
- * @return 
+ * @return gives MIB_UNREGISTERED_OK or MIB_* error code.
  * 
+ * @see unregister_mib()
+ * @see unregister_mib_priority()
+ * @see unregister_mib_range()
  */
 int
 unregister_mib_context(oid * name, size_t len, int priority,
@@ -1130,7 +1678,7 @@
 
     netsnmp_set_lookup_cache_size(0);
 
-    if ((range_subid != 0) &&  (range_subid <= len))
+    if ((range_subid > 0) &&  ((size_t)range_subid <= len))
         orig_subid_val = name[range_subid-1];
 
     while(unregistering){
@@ -1294,6 +1842,36 @@
     return 0;
 }
 
+/**
+ * Unregisters a module registered against a given OID (or range) in the default context. 
+ * Typically used when a module has multiple contexts defined.
+ * The parameters priority, range_subid, and range_ubound should
+ * match those used to register the module originally.
+ *
+ * @param name  the specific OID to unregister if it conatins the associated
+ *              context.
+ *
+ * @param len   the length of the OID, use  OID_LENGTH macro.
+ *
+ * @param priority  a value between 1 and 255, used to achieve a desired
+ *                  configuration when different sessions register identical or
+ *                  overlapping regions.  Subagents with no particular
+ *                  knowledge of priority should register with the default
+ *                  value of 127.
+ *
+ * @param range_subid  permits specifying a range in place of one of a subtree
+ *                     sub-identifiers.  When this value is zero, no range is
+ *                     being specified.
+ *
+ * @param range_ubound  the upper bound of a sub-identifier's range.
+ *                      This field is present only if range_subid is not 0.
+ *
+ * @return gives MIB_UNREGISTERED_OK or MIB_* error code.
+ * 
+ * @see unregister_mib()
+ * @see unregister_mib_priority()
+ * @see unregister_mib_context()
+ */
 int
 unregister_mib_range(oid * name, size_t len, int priority,
                      int range_subid, oid range_ubound)
@@ -1302,18 +1880,61 @@
                                   range_ubound, "");
 }
 
+/**
+ * Unregisters a module registered against a given OID at the specified priority.
+ * The priority parameter should match that used to register the module originally.
+ *
+ * @param name  the specific OID to unregister if it conatins the associated
+ *              context.
+ *
+ * @param len   the length of the OID, use  OID_LENGTH macro.
+ *
+ * @param priority  a value between 1 and 255, used to achieve a desired
+ *                  configuration when different sessions register identical or
+ *                  overlapping regions.  Subagents with no particular
+ *                  knowledge of priority should register with the default
+ *                  value of 127.
+ *
+ * @return gives MIB_UNREGISTERED_OK or MIB_* error code.
+ * 
+ * @see unregister_mib()
+ * @see unregister_mib_range()
+ * @see unregister_mib_context()
+ */
 int
 unregister_mib_priority(oid * name, size_t len, int priority)
 {
     return unregister_mib_range(name, len, priority, 0, 0);
 }
 
+/**
+ * Unregisters a module registered against a given OID at the default priority.
+ *
+ * @param name  the specific OID to unregister if it conatins the associated
+ *              context.
+ *
+ * @param len   the length of the OID, use  OID_LENGTH macro.
+ *
+ * @return gives MIB_UNREGISTERED_OK or MIB_* error code.
+ * 
+ * @see unregister_mib_priority()
+ * @see unregister_mib_context()
+ * @see unregister_mib_range()
+ * @see unregister_agentx_list()
+ */
 int
 unregister_mib(oid * name, size_t len)
 {
     return unregister_mib_priority(name, len, DEFAULT_MIB_PRIORITY);
 }
 
+/** Unregisters subtree of OIDs bounded to given session.
+ *
+ *  @param ss Session which OIDs will be removed from tree.
+ *
+ *  @see unregister_mib()
+ *  @see unregister_agentx_list()
+ */
 void
 unregister_mibs_by_session(netsnmp_session * ss)
 {
@@ -1375,15 +1996,21 @@
     }
 }
 
-/*
- * in_a_view: determines if a given snmp_pdu is allowed to see a
- * given name/namelen OID pointer
- * name         IN - name of var, OUT - name matched
- * nameLen      IN -number of sub-ids in name, OUT - subid-is in matched name
- * pi           IN - relevant auth info re PDU 
- * cvp          IN - relevant auth info re mib module
+/** Determines if given PDU is allowed to see (or update) a given OID.
+ *
+ * @param name    The OID to check access for.
+ *                On return, this parameter holds the OID actually matched
+ *
+ * @param namelen Number of sub-identifiers in the OID.
+ *                On return, this parameter holds the length of the matched OID
+ *
+ * @param pdu     PDU requesting access to the OID.
+ *
+ * @param type    ANS.1 type of the value at given OID.
+ *                (Used for catching SNMPv1 requests for SMIv2-only objects)
+ *
+ * @return gives VACM_SUCCESS if the OID is in the PDU, otherwise error code.
  */
-
 int
 in_a_view(oid *name, size_t *namelen, netsnmp_pdu *pdu, int type)
 {
@@ -1428,10 +2055,15 @@
     return VACM_NOSECNAME;
 }
 
-/*
- * check_acces: determines if a given snmp_pdu is ever going to be
- * allowed to do anynthing or if it's not going to ever be
- * authenticated.
+/** Determines if the given PDU request could potentially succeed.
+ *  (Preliminary, OID-independent validation)
+ *
+ * @param pdu     PDU requesting access
+ *
+ * @return gives VACM_SUCCESS   if the entire MIB tree is accessible
+ *               VACM_NOTINVIEW if the entire MIB tree is inaccessible
+ *               VACM_SUBTREE_UNKNOWN if some portions are accessible
+ *               other codes may returned on error
  */
 int
 check_access(netsnmp_pdu *pdu)
@@ -1463,12 +2095,19 @@
     return 1;
 }
 
-/** checks to see if everything within a
- *  given subtree is either: in view, not in view, or possibly both.
- *  If the entire subtree is not-in-view we can use this information to
- *  skip calling the sub-handlers entirely.
- *  @returns 0 if entire subtree is accessible, 5 if not and 7 if
- *  portions are both.  1 on error (illegal pdu version).
+/** Determines if the given PDU request could potentially access
+ *   the specified MIB subtree
+ *
+ * @param pdu     PDU requesting access
+ *
+ * @param name    The OID to check access for.
+ *
+ * @param namelen Number of sub-identifiers in the OID.
+ *
+ * @return gives VACM_SUCCESS   if the entire MIB tree is accessible
+ *               VACM_NOTINVIEW if the entire MIB tree is inaccessible
+ *               VACM_SUBTREE_UNKNOWN if some portions are accessible
+ *               other codes may returned on error
  */
 int
 netsnmp_acm_check_subtree(netsnmp_pdu *pdu, oid *name, size_t namelen)
@@ -1500,114 +2139,6 @@
     return 1;
 }
 
-netsnmp_subtree *
-netsnmp_subtree_find_prev(oid *name, size_t len, netsnmp_subtree *subtree,
-			  const char *context_name)
-{
-    lookup_cache *lookup_cache = NULL;
-    netsnmp_subtree *myptr = NULL, *previous = NULL;
-    int cmp = 1;
-    size_t ll_off = 0;
-
-    if (subtree) {
-        myptr = subtree;
-    } else {
-	/* look through everything */
-        if (lookup_cache_size) {
-            lookup_cache = lookup_cache_find(context_name, name, len, &cmp);
-            if (lookup_cache) {
-                myptr = lookup_cache->next;
-                previous = lookup_cache->previous;
-            }
-            if (!myptr)
-                myptr = netsnmp_subtree_find_first(context_name);
-        } else {
-            myptr = netsnmp_subtree_find_first(context_name);
-        }
-    }
-
-    /*
-     * this optimization causes a segfault on sf cf alpha-linux1.
-     * ifdef out until someone figures out why and fixes it. xxx-rks 20051117
-     */
-#ifndef __alpha
-#define WTEST_OPTIMIZATION 1
-#endif
-#ifdef WTEST_OPTIMIZATION
-    DEBUGMSGTL(("wtest","oid in: "));
-    DEBUGMSGOID(("wtest", name, len));
-    DEBUGMSG(("wtest","\n"));
-#endif
-    for (; myptr != NULL; previous = myptr, myptr = myptr->next) {
-#ifdef WTEST_OPTIMIZATION
-        /* Compare the incoming oid with the linked list.  If we have
-           results of previous compares, its faster to make sure the
-           length we differed in the last check is greater than the
-           length between this pointer and the last then we don't need
-           to actually perform a comparison */
-        DEBUGMSGTL(("wtest","oid cmp: "));
-        DEBUGMSGOID(("wtest", myptr->start_a, myptr->start_len));
-        DEBUGMSG(("wtest","  --- off = %lu, in off = %lu test = %d\n",
-                  (unsigned long)myptr->oid_off, (unsigned long)ll_off,
-                  !(ll_off && myptr->oid_off &&
-                    myptr->oid_off > ll_off)));
-        if (!(ll_off && myptr->oid_off && myptr->oid_off > ll_off) &&
-            netsnmp_oid_compare_ll(name, len,
-                                   myptr->start_a, myptr->start_len,
-                                   &ll_off) < 0) {
-#else
-        if (snmp_oid_compare(name, len, myptr->start_a, myptr->start_len) < 0) {
-#endif
-            if (lookup_cache_size && previous && cmp) {
-                if (lookup_cache) {
-                    lookup_cache_replace(lookup_cache, myptr, previous);
-                } else {
-                    lookup_cache_add(context_name, myptr, previous);
-                }
-            }
-            return previous;
-        }
-    }
-    return previous;
-}
-
-netsnmp_subtree *
-netsnmp_subtree_find_next(oid *name, size_t len,
-			  netsnmp_subtree *subtree, const char *context_name)
-{
-    netsnmp_subtree *myptr = NULL;
-
-    myptr = netsnmp_subtree_find_prev(name, len, subtree, context_name);
-
-    if (myptr != NULL) {
-        myptr = myptr->next;
-        while (myptr != NULL && (myptr->variables == NULL || 
-				 myptr->variables_len == 0)) {
-            myptr = myptr->next;
-        }
-        return myptr;
-    } else if (subtree != NULL && snmp_oid_compare(name, len, 
-				   subtree->start_a, subtree->start_len) < 0) {
-        return subtree;
-    } else {
-        return NULL;
-    }
-}
-
-netsnmp_subtree *
-netsnmp_subtree_find(oid *name, size_t len, netsnmp_subtree *subtree, 
-		     const char *context_name)
-{
-    netsnmp_subtree *myptr;
-
-    myptr = netsnmp_subtree_find_prev(name, len, subtree, context_name);
-    if (myptr && myptr->end_a &&
-        snmp_oid_compare(name, len, myptr->end_a, myptr->end_len)<0) {
-        return myptr;
-    }
-
-    return NULL;
-}
 
 netsnmp_session *
 get_session_for_oid(oid *name, size_t len, const char *context_name)
@@ -1687,63 +2218,6 @@
 
 }
 
-void
-clear_subtree (netsnmp_subtree *sub) {
-
-    netsnmp_subtree *c;
-    
-    if (sub == NULL)
-	return;
-
-    for(c = sub; c;) {
-        sub = c;
-        c = c->children;
-        netsnmp_subtree_free(sub);
-    }
-
-}
-
-void
-clear_lookup_cache(void) {
-
-    lookup_cache_context *ptr = NULL, *next = NULL;
-
-    ptr = thecontextcache;
-    while (ptr) {
-	next = ptr->next;
-	SNMP_FREE(ptr->context);
-	SNMP_FREE(ptr);
-	ptr = next;
-    }
-    thecontextcache = NULL; /* !!! */
-}
-
-void
-clear_context(void) {
-
-    subtree_context_cache *ptr = NULL, *next = NULL;
-    netsnmp_subtree *t, *u;
-
-    DEBUGMSGTL(("agent_registry", "clear context\n"));
-
-    ptr = get_top_context_cache(); 
-    while (ptr) {
-	next = ptr->next;
-
-	for (t = ptr->first_subtree; t; t = u) {
-            u = t->next;
-	    clear_subtree(t);
-	}
-
-	SNMP_FREE(ptr->context_name);
-        SNMP_FREE(ptr);
-
-	ptr = next;
-    }
-    context_subtrees = NULL; /* !!! */
-    clear_lookup_cache();
-}
-
 extern void     dump_idx_registry(void);
 void
 dump_registry(void)
@@ -1798,7 +2272,7 @@
                     if (myptr2->label_a && myptr2->label_a[0]) {
                         if (strcmp(myptr2->label_a, "old_api") == 0) {
                             struct variable *vp =
-                                myptr2->reginfo->handler->myvoid;
+                                (struct variable*)myptr2->reginfo->handler->myvoid;
 
                             if (!sprint_realloc_objid(&s, &sl, &sl_o, 1,
                                                  vp->name, vp->namelen)) {
@@ -1833,6 +2307,17 @@
     dump_idx_registry();
 }
 
+/**  @} */
+/* End of MIB registration code */
+
+
+/** @defgroup agent_signals POSIX signals support for agents.
+ *     Registering and unregistering signal handlers.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
+
 int             external_signal_scheduled[NUM_EXTERNAL_SIGS];
 void            (*external_signal_handler[NUM_EXTERNAL_SIGS]) (int);
 
@@ -1857,6 +2342,20 @@
 #endif
 }
 
+/** Registers a POSIX Signal handler.
+ *  Implements the signal registering process for POSIX and non-POSIX
+ *  systems. Also, unifies the way signals work.
+ *  Note that the signal handler should register itself again with
+ *  signal() call before end of execution to prevent possible problems.
+ *
+ *  @param sig POSIX Signal ID number, as defined in signal.h.
+ *
+ *  @param func New signal handler function.
+ *
+ *  @return value is SIG_REGISTERED_OK for success and
+ *        SIG_REGISTRATION_FAILED if the registration can't
+ *        be handled.
+ */
 int
 register_signal(int sig, void (*func) (int))
 {
@@ -1890,6 +2389,12 @@
     return SIG_REGISTERED_OK;
 }
 
+/** Unregisters a POSIX Signal handler.
+ *
+ *  @param sig POSIX Signal ID number, as defined in signal.h.
+ *
+ *  @return value is SIG_UNREGISTERED_OK for success, or error code.
+ */
 int
 unregister_signal(int sig)
 {
@@ -1901,3 +2406,7 @@
 #endif                          /* !WIN32 */
 
 /**  @} */
+/* End of signals support code */
+
+/**  @} */
+
diff --git a/agent/agent_sysORTable.c b/agent/agent_sysORTable.c
index d959eaf..f628060 100644
--- a/agent/agent_sysORTable.c
+++ b/agent/agent_sysORTable.c
@@ -68,7 +68,7 @@
     DEBUGMSGOID(("agent/sysORTable", oidin, oidlen));
     DEBUGMSG(("agent/sysORTable", ", session %p\n", ss));
 
-    entry = calloc(1, sizeof(struct data_node_s));
+    entry = (data_node)calloc(1, sizeof(struct data_node_s));
     if (entry == NULL) {
         DEBUGMSGTL(("agent/sysORTable", "Failed to allocate new entry\n"));
         return SYS_ORTABLE_REGISTRATION_FAILED;
diff --git a/agent/agent_trap.c b/agent/agent_trap.c
index 88479ab..f5dbcca 100644
--- a/agent/agent_trap.c
+++ b/agent/agent_trap.c
@@ -34,11 +34,7 @@
 #include <strings.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -49,8 +45,6 @@
 #endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-#elif HAVE_WINSOCK_H
-#include <winsock.h>
 #endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
@@ -79,36 +73,28 @@
 
 struct trap_sink *sinks = NULL;
 
-extern struct timeval starttime;
-
-oid             objid_enterprisetrap[] = { NETSNMP_NOTIFICATION_MIB };
-oid             trap_version_id[] = { NETSNMP_SYSTEM_MIB };
-int             enterprisetrap_len;
-int             trap_version_id_len;
+const oid       objid_enterprisetrap[] = { NETSNMP_NOTIFICATION_MIB };
+const oid       trap_version_id[] = { NETSNMP_SYSTEM_MIB };
+const int       enterprisetrap_len = OID_LENGTH(objid_enterprisetrap);
+const int       trap_version_id_len = OID_LENGTH(trap_version_id);
 
 #define SNMPV2_TRAPS_PREFIX	SNMP_OID_SNMPMODULES,1,1,5
-oid             trap_prefix[]    = { SNMPV2_TRAPS_PREFIX };
-oid             cold_start_oid[] = { SNMPV2_TRAPS_PREFIX, 1 };  /* SNMPv2-MIB */
-oid             warm_start_oid[] = { SNMPV2_TRAPS_PREFIX, 2 };  /* SNMPv2-MIB */
-oid             link_down_oid[]  = { SNMPV2_TRAPS_PREFIX, 3 };  /* IF-MIB */
-oid             link_up_oid[]    = { SNMPV2_TRAPS_PREFIX, 4 };  /* IF-MIB */
-oid             auth_fail_oid[]  = { SNMPV2_TRAPS_PREFIX, 5 };  /* SNMPv2-MIB */
-oid             egp_xxx_oid[]    = { SNMPV2_TRAPS_PREFIX, 99 }; /* ??? */
+const oid       trap_prefix[]    = { SNMPV2_TRAPS_PREFIX };
+const oid       cold_start_oid[] = { SNMPV2_TRAPS_PREFIX, 1 };  /* SNMPv2-MIB */
 
 #define SNMPV2_TRAP_OBJS_PREFIX	SNMP_OID_SNMPMODULES,1,1,4
-oid             snmptrap_oid[] = { SNMPV2_TRAP_OBJS_PREFIX, 1, 0 };
-oid             snmptrapenterprise_oid[] =
-    { SNMPV2_TRAP_OBJS_PREFIX, 3, 0 };
-oid             sysuptime_oid[] = { SNMP_OID_MIB2, 1, 3, 0 };
-size_t          snmptrap_oid_len;
-size_t          snmptrapenterprise_oid_len;
-size_t          sysuptime_oid_len;
+const oid       snmptrap_oid[] = { SNMPV2_TRAP_OBJS_PREFIX, 1, 0 };
+const oid       snmptrapenterprise_oid[] = { SNMPV2_TRAP_OBJS_PREFIX, 3, 0 };
+const oid       sysuptime_oid[] = { SNMP_OID_MIB2, 1, 3, 0 };
+const size_t    snmptrap_oid_len = OID_LENGTH(snmptrap_oid);
+const size_t    snmptrapenterprise_oid_len = OID_LENGTH(snmptrapenterprise_oid);
+const size_t    sysuptime_oid_len = OID_LENGTH(sysuptime_oid);
 
 #define SNMPV2_COMM_OBJS_PREFIX	SNMP_OID_SNMPMODULES,18,1
-oid             agentaddr_oid[] = { SNMPV2_COMM_OBJS_PREFIX, 3, 0 };
-size_t          agentaddr_oid_len;
-oid             community_oid[] = { SNMPV2_COMM_OBJS_PREFIX, 4, 0 };
-size_t          community_oid_len;
+const oid       agentaddr_oid[] = { SNMPV2_COMM_OBJS_PREFIX, 3, 0 };
+const size_t    agentaddr_oid_len = OID_LENGTH(agentaddr_oid);
+const oid       community_oid[] = { SNMPV2_COMM_OBJS_PREFIX, 4, 0 };
+const size_t    community_oid_len = OID_LENGTH(community_oid);
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
 char           *snmp_trapcommunity = NULL;
 #endif
@@ -142,13 +128,6 @@
 void
 init_traps(void)
 {
-    enterprisetrap_len  = OID_LENGTH(objid_enterprisetrap);
-    trap_version_id_len = OID_LENGTH(trap_version_id);
-    snmptrap_oid_len    = OID_LENGTH(snmptrap_oid);
-    snmptrapenterprise_oid_len = OID_LENGTH(snmptrapenterprise_oid);
-    sysuptime_oid_len   = OID_LENGTH(sysuptime_oid);
-    agentaddr_oid_len   = OID_LENGTH(agentaddr_oid);
-    community_oid_len   = OID_LENGTH(community_oid);
 }
 
 static void
@@ -630,9 +609,9 @@
  */
 int
 netsnmp_send_traps(int trap, int specific,
-                          oid * enterprise, int enterprise_length,
+                          const oid * enterprise, int enterprise_length,
                           netsnmp_variable_list * vars,
-                          char * context, int flags)
+                          const char * context, int flags)
 {
     netsnmp_pdu           *template_v1pdu;
     netsnmp_pdu           *template_v2pdu;
@@ -643,7 +622,7 @@
     u_long                 uptime;
     struct trap_sink *sink;
     const char            *v1trapaddress;
-    int                    res;
+    int                    res = 0;
 
     DEBUGMSGTL(( "trap", "send_trap %d %d ", trap, specific));
     DEBUGMSGOID(("trap", enterprise, enterprise_length));
@@ -725,7 +704,7 @@
                 !snmp_varlist_add_variable( &(template_v2pdu->variables),
                      snmptrapenterprise_oid, snmptrapenterprise_oid_len,
                      ASN_OBJECT_ID,
-                     (char*)enterprise, enterprise_length*sizeof(oid))) {
+                     enterprise, enterprise_length*sizeof(oid))) {
                 snmp_log(LOG_WARNING,
                      "send_trap: failed to add snmpEnterprise to v2 trap\n");
                 snmp_free_pdu(template_v2pdu);
@@ -798,7 +777,7 @@
      */
        pdu_in_addr_t = (in_addr_t *) template_v1pdu->agent_addr;
        v1trapaddress = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
-                                      NETSNMP_DS_AGENT_TRAP_ADDR);
+                                             NETSNMP_DS_AGENT_TRAP_ADDR);
        if (v1trapaddress != NULL) {
            /* "v1trapaddress" was specified in config, try to resolve it */
            res = netsnmp_gethostbyname_v4(v1trapaddress, pdu_in_addr_t);
@@ -857,7 +836,7 @@
 void
 send_enterprise_trap_vars(int trap,
                           int specific,
-                          oid * enterprise, int enterprise_length,
+                          const oid * enterprise, int enterprise_length,
                           netsnmp_variable_list * vars)
 {
     netsnmp_send_traps(trap, specific,
@@ -914,7 +893,6 @@
 {
     netsnmp_pdu    *pdu;
     int            result;
-    char           tmp[SPRINT_MAX_LEN];
     int            len;
 
 
@@ -948,6 +926,8 @@
         if ((sess->version == SNMP_VERSION_3) &&
                 (pdu->command == SNMP_MSG_TRAP2) &&
                 (sess->securityEngineIDLen == 0)) {
+            u_char          tmp[SPRINT_MAX_LEN];
+
             len = snmpv3_get_engineID(tmp, sizeof(tmp));
             pdu->securityEngineID = netsnmp_memdup(tmp, len);
             pdu->securityEngineIDLen = len;
@@ -978,7 +958,7 @@
 
 /* Send a trap under a context */
 void send_trap_vars_with_context(int trap, int specific, 
-              netsnmp_variable_list *vars, char *context)
+              netsnmp_variable_list *vars, const char *context)
 {
     if (trap == SNMP_TRAP_ENTERPRISESPECIFIC)
         netsnmp_send_traps(trap, specific, objid_enterprisetrap,
@@ -1061,11 +1041,11 @@
  *
  * @see send_v2trap
  */
-void send_v3trap(netsnmp_variable_list *vars, char *context)
+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);
+                       trap_version_id, OID_LENGTH(trap_version_id),
+                       vars, context, 0);
 }
 
 void
@@ -1219,9 +1199,10 @@
 void
 snmpd_parse_config_trapsess(const char *word, char *cptr)
 {
-    char           *argv[MAX_ARGS], *cp = cptr, tmp[SPRINT_MAX_LEN];
-    int             argn;
+    char           *argv[MAX_ARGS], *cp = cptr;
+    int             argn, rc;
     netsnmp_session session, *ss;
+    netsnmp_transport *transport;
     size_t          len;
 
     /*
@@ -1234,15 +1215,28 @@
      */
     argv[0] = strdup("snmpd-trapsess"); /* bogus entry for getopt() */
     for (argn = 1; cp && argn < MAX_ARGS; argn++) {
+        char            tmp[SPRINT_MAX_LEN];
+
         cp = copy_nword(cp, tmp, SPRINT_MAX_LEN);
         argv[argn] = strdup(tmp);
     }
 
-    snmp_parse_args(argn, argv, &session, "C:", trapOptProc);
+    netsnmp_parse_args(argn, argv, &session, "C:", trapOptProc,
+                       NETSNMP_PARSE_ARGS_NOLOGGING |
+                       NETSNMP_PARSE_ARGS_NOZERO);
 
-    ss = snmp_add(&session,
-		  netsnmp_transport_open_client("snmptrap", session.peername),
-		  NULL, NULL);
+    transport = netsnmp_transport_open_client("snmptrap", session.peername);
+    if (transport == NULL) {
+        config_perror("snmpd: failed to parse this line.");
+        return;
+    }
+    if ((rc = netsnmp_sess_config_and_open_transport(&session, transport))
+        != SNMPERR_SUCCESS) {
+        session.s_snmp_errno = rc;
+        session.s_errno = 0;
+        return;
+    }
+    ss = snmp_add(&session, transport, NULL, NULL);
     for (; argn > 0; argn--) {
         free(argv[argn - 1]);
     }
@@ -1261,21 +1255,18 @@
     if (ss->version == SNMP_VERSION_3 &&
         traptype != SNMP_MSG_INFORM   &&
         ss->securityEngineIDLen == 0) {
+            u_char          tmp[SPRINT_MAX_LEN];
+
             len = snmpv3_get_engineID( tmp, sizeof(tmp));
             ss->securityEngineID = netsnmp_memdup(tmp, len);
             ss->securityEngineIDLen = len;
     }
 
 #ifndef NETSNMP_DISABLE_SNMPV1
-    if (ss->version == SNMP_VERSION_1) {
-        add_trap_session(ss, SNMP_MSG_TRAP, 0, SNMP_VERSION_1);
-    } else {
+    if (ss->version == SNMP_VERSION_1)
+        traptype = SNMP_MSG_TRAP;
 #endif
-        add_trap_session(ss, traptype, (traptype == SNMP_MSG_INFORM),
-                         ss->version);
-#ifndef NETSNMP_DISABLE_SNMPV1
-    }
-#endif
+    add_trap_session(ss, traptype, (traptype == SNMP_MSG_INFORM), ss->version);
 }
 
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
diff --git a/agent/auto_nlist.c b/agent/auto_nlist.c
index 0b5995a..ecdaf24 100644
--- a/agent/auto_nlist.c
+++ b/agent/auto_nlist.c
@@ -66,7 +66,7 @@
          * allocate an extra byte for inclusion of a preceding '_' later 
          */
         it->nl[0].n_name = (char *) malloc(strlen(string) + 2);
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         strcpy(it->nl[0].n_name, string);
         it->nl[0].n_name[strlen(string)+1] = '\0';
 #elif defined(freebsd9)
@@ -176,7 +176,7 @@
     }
     kvm_close(kernel);
 #else                           /* ! HAVE_KVM_OPENFILES */
-#if (defined(aix4) || defined(aix5) || defined(aix6)) && defined(HAVE_KNLIST)
+#if (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && defined(HAVE_KNLIST)
     if (knlist(nl, 1, sizeof(struct nlist)) == -1) {
         DEBUGMSGTL(("auto_nlist:init_nlist", "knlist failed on symbol:  %s\n",
                     nl[0].n_name));
@@ -206,7 +206,7 @@
 #endif                          /*aix4 */
 #endif                          /* ! HAVE_KVM_OPENFILES */
     for (ret = 0; nl[ret].n_name != NULL; ret++) {
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         if (nl[ret].n_type == 0 && nl[ret].n_value != 0)
             nl[ret].n_type = 1;
 #endif
diff --git a/agent/helpers/Makefile.depend b/agent/helpers/Makefile.depend
index c24e34c..83fbd27 100644
--- a/agent/helpers/Makefile.depend
+++ b/agent/helpers/Makefile.depend
@@ -8,12 +8,16 @@
 ./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
+./all_helpers.lo: ../../include/net-snmp/library/oid.h
 ./all_helpers.lo: ../../include/net-snmp/library/types.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_api.h
 ./all_helpers.lo: ../../include/net-snmp/varbind_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_client.h
 ./all_helpers.lo: ../../include/net-snmp/pdu_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/asn1.h
+./all_helpers.lo: ../../include/net-snmp/output_api.h
+./all_helpers.lo: ../../include/net-snmp/library/snmp_debug.h
+./all_helpers.lo: ../../include/net-snmp/library/snmp_logging.h
 ./all_helpers.lo: ../../include/net-snmp/session_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/callback.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -21,8 +25,12 @@
 ./all_helpers.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./all_helpers.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./all_helpers.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./all_helpers.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./all_helpers.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./all_helpers.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -44,7 +52,6 @@
 ./all_helpers.lo: ../../include/net-snmp/library/check_varbind.h
 ./all_helpers.lo: ../../include/net-snmp/library/container.h
 ./all_helpers.lo: ../../include/net-snmp/library/factory.h
-./all_helpers.lo: ../../include/net-snmp/library/snmp_logging.h
 ./all_helpers.lo: ../../include/net-snmp/library/container_binary_array.h
 ./all_helpers.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./all_helpers.lo: ../../include/net-snmp/library/container_iterator.h
@@ -54,11 +61,10 @@
 ./all_helpers.lo: ../../include/net-snmp/config_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/read_config.h
 ./all_helpers.lo: ../../include/net-snmp/library/default_store.h
+./all_helpers.lo: ../../include/net-snmp/net-snmp-config.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_enum.h
 ./all_helpers.lo: ../../include/net-snmp/library/vacm.h
-./all_helpers.lo: ../../include/net-snmp/output_api.h
-./all_helpers.lo: ../../include/net-snmp/library/snmp_debug.h
 ./all_helpers.lo: ../../include/net-snmp/snmpv3_api.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpv3.h
 ./all_helpers.lo: ../../include/net-snmp/library/transform_oids.h
@@ -104,21 +110,22 @@
 ./all_helpers.lo: ../../include/net-snmp/agent/table_container.h
 ./all_helpers.lo: ../../include/net-snmp/agent/table_array.h
 ./all_helpers.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./baby_steps.lo: ../../include/net-snmp/system/sysv.h
-./baby_steps.lo: ../../include/net-snmp/system/generic.h
-./baby_steps.lo: ../../include/net-snmp/machine/generic.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
+./baby_steps.lo: ../../include/net-snmp/library/oid.h
 ./baby_steps.lo: ../../include/net-snmp/library/types.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_api.h
 ./baby_steps.lo: ../../include/net-snmp/varbind_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_client.h
 ./baby_steps.lo: ../../include/net-snmp/pdu_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/asn1.h
+./baby_steps.lo: ../../include/net-snmp/output_api.h
+./baby_steps.lo: ../../include/net-snmp/library/snmp_debug.h
+./baby_steps.lo: ../../include/net-snmp/library/snmp_logging.h
 ./baby_steps.lo: ../../include/net-snmp/session_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/callback.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -126,8 +133,12 @@
 ./baby_steps.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./baby_steps.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./baby_steps.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./baby_steps.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./baby_steps.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./baby_steps.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -149,7 +160,6 @@
 ./baby_steps.lo: ../../include/net-snmp/library/check_varbind.h
 ./baby_steps.lo: ../../include/net-snmp/library/container.h
 ./baby_steps.lo: ../../include/net-snmp/library/factory.h
-./baby_steps.lo: ../../include/net-snmp/library/snmp_logging.h
 ./baby_steps.lo: ../../include/net-snmp/library/container_binary_array.h
 ./baby_steps.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./baby_steps.lo: ../../include/net-snmp/library/container_iterator.h
@@ -162,8 +172,6 @@
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_enum.h
 ./baby_steps.lo: ../../include/net-snmp/library/vacm.h
-./baby_steps.lo: ../../include/net-snmp/output_api.h
-./baby_steps.lo: ../../include/net-snmp/library/snmp_debug.h
 ./baby_steps.lo: ../../include/net-snmp/snmpv3_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpv3.h
 ./baby_steps.lo: ../../include/net-snmp/library/transform_oids.h
@@ -209,20 +217,21 @@
 ./baby_steps.lo: ../../include/net-snmp/agent/table_container.h
 ./baby_steps.lo: ../../include/net-snmp/agent/table_array.h
 ./baby_steps.lo: ../../include/net-snmp/agent/mfd.h
+./baby_steps.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./bulk_to_next.lo: ../../include/net-snmp/net-snmp-config.h
-./bulk_to_next.lo: ../../include/net-snmp/system/linux.h
-./bulk_to_next.lo: ../../include/net-snmp/system/sysv.h
-./bulk_to_next.lo: ../../include/net-snmp/system/generic.h
-./bulk_to_next.lo: ../../include/net-snmp/machine/generic.h
 ./bulk_to_next.lo: ../../include/net-snmp/net-snmp-includes.h
 ./bulk_to_next.lo: ../../include/net-snmp/definitions.h
 ./bulk_to_next.lo: ../../include/net-snmp/types.h
+./bulk_to_next.lo: ../../include/net-snmp/library/oid.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/types.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/varbind_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_client.h
 ./bulk_to_next.lo: ../../include/net-snmp/pdu_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/asn1.h
+./bulk_to_next.lo: ../../include/net-snmp/output_api.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmp_debug.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmp_logging.h
 ./bulk_to_next.lo: ../../include/net-snmp/session_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/callback.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -230,8 +239,12 @@
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -253,7 +266,6 @@
 ./bulk_to_next.lo: ../../include/net-snmp/library/check_varbind.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/container.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/factory.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmp_logging.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/container_binary_array.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/container_iterator.h
@@ -266,8 +278,6 @@
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_enum.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/vacm.h
-./bulk_to_next.lo: ../../include/net-snmp/output_api.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmp_debug.h
 ./bulk_to_next.lo: ../../include/net-snmp/snmpv3_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpv3.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/transform_oids.h
@@ -313,20 +323,21 @@
 ./bulk_to_next.lo: ../../include/net-snmp/agent/table_container.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./cache_handler.lo: ../../include/net-snmp/system/sysv.h
-./cache_handler.lo: ../../include/net-snmp/system/generic.h
-./cache_handler.lo: ../../include/net-snmp/machine/generic.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
+./cache_handler.lo: ../../include/net-snmp/library/oid.h
 ./cache_handler.lo: ../../include/net-snmp/library/types.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_api.h
 ./cache_handler.lo: ../../include/net-snmp/varbind_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_client.h
 ./cache_handler.lo: ../../include/net-snmp/pdu_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/asn1.h
+./cache_handler.lo: ../../include/net-snmp/output_api.h
+./cache_handler.lo: ../../include/net-snmp/library/snmp_debug.h
+./cache_handler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./cache_handler.lo: ../../include/net-snmp/session_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/callback.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -334,8 +345,12 @@
 ./cache_handler.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./cache_handler.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./cache_handler.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./cache_handler.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./cache_handler.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./cache_handler.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -357,7 +372,6 @@
 ./cache_handler.lo: ../../include/net-snmp/library/check_varbind.h
 ./cache_handler.lo: ../../include/net-snmp/library/container.h
 ./cache_handler.lo: ../../include/net-snmp/library/factory.h
-./cache_handler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./cache_handler.lo: ../../include/net-snmp/library/container_binary_array.h
 ./cache_handler.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./cache_handler.lo: ../../include/net-snmp/library/container_iterator.h
@@ -370,8 +384,6 @@
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_enum.h
 ./cache_handler.lo: ../../include/net-snmp/library/vacm.h
-./cache_handler.lo: ../../include/net-snmp/output_api.h
-./cache_handler.lo: ../../include/net-snmp/library/snmp_debug.h
 ./cache_handler.lo: ../../include/net-snmp/snmpv3_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpv3.h
 ./cache_handler.lo: ../../include/net-snmp/library/transform_oids.h
@@ -417,20 +429,21 @@
 ./cache_handler.lo: ../../include/net-snmp/agent/table_container.h
 ./cache_handler.lo: ../../include/net-snmp/agent/table_array.h
 ./cache_handler.lo: ../../include/net-snmp/agent/mfd.h
+./cache_handler.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./debug_handler.lo: ../../include/net-snmp/net-snmp-config.h
-./debug_handler.lo: ../../include/net-snmp/system/linux.h
-./debug_handler.lo: ../../include/net-snmp/system/sysv.h
-./debug_handler.lo: ../../include/net-snmp/system/generic.h
-./debug_handler.lo: ../../include/net-snmp/machine/generic.h
 ./debug_handler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./debug_handler.lo: ../../include/net-snmp/definitions.h
 ./debug_handler.lo: ../../include/net-snmp/types.h
+./debug_handler.lo: ../../include/net-snmp/library/oid.h
 ./debug_handler.lo: ../../include/net-snmp/library/types.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_api.h
 ./debug_handler.lo: ../../include/net-snmp/varbind_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_client.h
 ./debug_handler.lo: ../../include/net-snmp/pdu_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/asn1.h
+./debug_handler.lo: ../../include/net-snmp/output_api.h
+./debug_handler.lo: ../../include/net-snmp/library/snmp_debug.h
+./debug_handler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./debug_handler.lo: ../../include/net-snmp/session_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/callback.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -438,8 +451,12 @@
 ./debug_handler.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./debug_handler.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./debug_handler.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./debug_handler.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./debug_handler.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./debug_handler.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -461,7 +478,6 @@
 ./debug_handler.lo: ../../include/net-snmp/library/check_varbind.h
 ./debug_handler.lo: ../../include/net-snmp/library/container.h
 ./debug_handler.lo: ../../include/net-snmp/library/factory.h
-./debug_handler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./debug_handler.lo: ../../include/net-snmp/library/container_binary_array.h
 ./debug_handler.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./debug_handler.lo: ../../include/net-snmp/library/container_iterator.h
@@ -474,8 +490,6 @@
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_enum.h
 ./debug_handler.lo: ../../include/net-snmp/library/vacm.h
-./debug_handler.lo: ../../include/net-snmp/output_api.h
-./debug_handler.lo: ../../include/net-snmp/library/snmp_debug.h
 ./debug_handler.lo: ../../include/net-snmp/snmpv3_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpv3.h
 ./debug_handler.lo: ../../include/net-snmp/library/transform_oids.h
@@ -521,20 +535,21 @@
 ./debug_handler.lo: ../../include/net-snmp/agent/table_container.h
 ./debug_handler.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./instance.lo: ../../include/net-snmp/system/sysv.h
-./instance.lo: ../../include/net-snmp/system/generic.h
-./instance.lo: ../../include/net-snmp/machine/generic.h
 ./instance.lo: ../../include/net-snmp/net-snmp-includes.h
 ./instance.lo: ../../include/net-snmp/definitions.h
 ./instance.lo: ../../include/net-snmp/types.h
+./instance.lo: ../../include/net-snmp/library/oid.h
 ./instance.lo: ../../include/net-snmp/library/types.h
 ./instance.lo: ../../include/net-snmp/library/snmp_api.h
 ./instance.lo: ../../include/net-snmp/varbind_api.h
 ./instance.lo: ../../include/net-snmp/library/snmp_client.h
 ./instance.lo: ../../include/net-snmp/pdu_api.h
 ./instance.lo: ../../include/net-snmp/library/asn1.h
+./instance.lo: ../../include/net-snmp/output_api.h
+./instance.lo: ../../include/net-snmp/library/snmp_debug.h
+./instance.lo: ../../include/net-snmp/library/snmp_logging.h
 ./instance.lo: ../../include/net-snmp/session_api.h
 ./instance.lo: ../../include/net-snmp/library/callback.h
 ./instance.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -542,8 +557,12 @@
 ./instance.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./instance.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./instance.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./instance.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./instance.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./instance.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./instance.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./instance.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./instance.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./instance.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./instance.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./instance.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -565,7 +584,6 @@
 ./instance.lo: ../../include/net-snmp/library/check_varbind.h
 ./instance.lo: ../../include/net-snmp/library/container.h
 ./instance.lo: ../../include/net-snmp/library/factory.h
-./instance.lo: ../../include/net-snmp/library/snmp_logging.h
 ./instance.lo: ../../include/net-snmp/library/container_binary_array.h
 ./instance.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./instance.lo: ../../include/net-snmp/library/container_iterator.h
@@ -578,8 +596,6 @@
 ./instance.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./instance.lo: ../../include/net-snmp/library/snmp_enum.h
 ./instance.lo: ../../include/net-snmp/library/vacm.h
-./instance.lo: ../../include/net-snmp/output_api.h
-./instance.lo: ../../include/net-snmp/library/snmp_debug.h
 ./instance.lo: ../../include/net-snmp/snmpv3_api.h
 ./instance.lo: ../../include/net-snmp/library/snmpv3.h
 ./instance.lo: ../../include/net-snmp/library/transform_oids.h
@@ -625,20 +641,21 @@
 ./instance.lo: ../../include/net-snmp/agent/table_container.h
 ./instance.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./mode_end_call.lo: ../../include/net-snmp/system/sysv.h
-./mode_end_call.lo: ../../include/net-snmp/system/generic.h
-./mode_end_call.lo: ../../include/net-snmp/machine/generic.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
+./mode_end_call.lo: ../../include/net-snmp/library/oid.h
 ./mode_end_call.lo: ../../include/net-snmp/library/types.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_api.h
 ./mode_end_call.lo: ../../include/net-snmp/varbind_api.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_client.h
 ./mode_end_call.lo: ../../include/net-snmp/pdu_api.h
 ./mode_end_call.lo: ../../include/net-snmp/library/asn1.h
+./mode_end_call.lo: ../../include/net-snmp/output_api.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmp_debug.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mode_end_call.lo: ../../include/net-snmp/session_api.h
 ./mode_end_call.lo: ../../include/net-snmp/library/callback.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -646,8 +663,12 @@
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mode_end_call.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -669,7 +690,6 @@
 ./mode_end_call.lo: ../../include/net-snmp/library/check_varbind.h
 ./mode_end_call.lo: ../../include/net-snmp/library/container.h
 ./mode_end_call.lo: ../../include/net-snmp/library/factory.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mode_end_call.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mode_end_call.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mode_end_call.lo: ../../include/net-snmp/library/container_iterator.h
@@ -682,8 +702,6 @@
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mode_end_call.lo: ../../include/net-snmp/library/vacm.h
-./mode_end_call.lo: ../../include/net-snmp/output_api.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mode_end_call.lo: ../../include/net-snmp/snmpv3_api.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpv3.h
 ./mode_end_call.lo: ../../include/net-snmp/library/transform_oids.h
@@ -729,20 +747,21 @@
 ./mode_end_call.lo: ../../include/net-snmp/agent/table_container.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/table_array.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/mfd.h
+./mode_end_call.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./multiplexer.lo: ../../include/net-snmp/net-snmp-config.h
-./multiplexer.lo: ../../include/net-snmp/system/linux.h
-./multiplexer.lo: ../../include/net-snmp/system/sysv.h
-./multiplexer.lo: ../../include/net-snmp/system/generic.h
-./multiplexer.lo: ../../include/net-snmp/machine/generic.h
 ./multiplexer.lo: ../../include/net-snmp/net-snmp-includes.h
 ./multiplexer.lo: ../../include/net-snmp/definitions.h
 ./multiplexer.lo: ../../include/net-snmp/types.h
+./multiplexer.lo: ../../include/net-snmp/library/oid.h
 ./multiplexer.lo: ../../include/net-snmp/library/types.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_api.h
 ./multiplexer.lo: ../../include/net-snmp/varbind_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_client.h
 ./multiplexer.lo: ../../include/net-snmp/pdu_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/asn1.h
+./multiplexer.lo: ../../include/net-snmp/output_api.h
+./multiplexer.lo: ../../include/net-snmp/library/snmp_debug.h
+./multiplexer.lo: ../../include/net-snmp/library/snmp_logging.h
 ./multiplexer.lo: ../../include/net-snmp/session_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/callback.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -750,8 +769,12 @@
 ./multiplexer.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./multiplexer.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./multiplexer.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./multiplexer.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./multiplexer.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./multiplexer.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -773,7 +796,6 @@
 ./multiplexer.lo: ../../include/net-snmp/library/check_varbind.h
 ./multiplexer.lo: ../../include/net-snmp/library/container.h
 ./multiplexer.lo: ../../include/net-snmp/library/factory.h
-./multiplexer.lo: ../../include/net-snmp/library/snmp_logging.h
 ./multiplexer.lo: ../../include/net-snmp/library/container_binary_array.h
 ./multiplexer.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./multiplexer.lo: ../../include/net-snmp/library/container_iterator.h
@@ -786,8 +808,6 @@
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_enum.h
 ./multiplexer.lo: ../../include/net-snmp/library/vacm.h
-./multiplexer.lo: ../../include/net-snmp/output_api.h
-./multiplexer.lo: ../../include/net-snmp/library/snmp_debug.h
 ./multiplexer.lo: ../../include/net-snmp/snmpv3_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpv3.h
 ./multiplexer.lo: ../../include/net-snmp/library/transform_oids.h
@@ -833,20 +853,21 @@
 ./multiplexer.lo: ../../include/net-snmp/agent/table_container.h
 ./multiplexer.lo: ../../include/net-snmp/agent/table_array.h
 ./multiplexer.lo: ../../include/net-snmp/agent/mfd.h
+./multiplexer.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./null.lo: ../../include/net-snmp/net-snmp-config.h
-./null.lo: ../../include/net-snmp/system/linux.h
-./null.lo: ../../include/net-snmp/system/sysv.h
-./null.lo: ../../include/net-snmp/system/generic.h
-./null.lo: ../../include/net-snmp/machine/generic.h
 ./null.lo: ../../include/net-snmp/net-snmp-includes.h
 ./null.lo: ../../include/net-snmp/definitions.h
 ./null.lo: ../../include/net-snmp/types.h
+./null.lo: ../../include/net-snmp/library/oid.h
 ./null.lo: ../../include/net-snmp/library/types.h
 ./null.lo: ../../include/net-snmp/library/snmp_api.h
 ./null.lo: ../../include/net-snmp/varbind_api.h
 ./null.lo: ../../include/net-snmp/library/snmp_client.h
 ./null.lo: ../../include/net-snmp/pdu_api.h
 ./null.lo: ../../include/net-snmp/library/asn1.h
+./null.lo: ../../include/net-snmp/output_api.h
+./null.lo: ../../include/net-snmp/library/snmp_debug.h
+./null.lo: ../../include/net-snmp/library/snmp_logging.h
 ./null.lo: ../../include/net-snmp/session_api.h
 ./null.lo: ../../include/net-snmp/library/callback.h
 ./null.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -854,8 +875,12 @@
 ./null.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./null.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./null.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./null.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./null.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./null.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./null.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./null.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./null.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./null.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./null.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./null.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -877,7 +902,6 @@
 ./null.lo: ../../include/net-snmp/library/check_varbind.h
 ./null.lo: ../../include/net-snmp/library/container.h
 ./null.lo: ../../include/net-snmp/library/factory.h
-./null.lo: ../../include/net-snmp/library/snmp_logging.h
 ./null.lo: ../../include/net-snmp/library/container_binary_array.h
 ./null.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./null.lo: ../../include/net-snmp/library/container_iterator.h
@@ -890,8 +914,6 @@
 ./null.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./null.lo: ../../include/net-snmp/library/snmp_enum.h
 ./null.lo: ../../include/net-snmp/library/vacm.h
-./null.lo: ../../include/net-snmp/output_api.h
-./null.lo: ../../include/net-snmp/library/snmp_debug.h
 ./null.lo: ../../include/net-snmp/snmpv3_api.h
 ./null.lo: ../../include/net-snmp/library/snmpv3.h
 ./null.lo: ../../include/net-snmp/library/transform_oids.h
@@ -937,20 +959,21 @@
 ./null.lo: ../../include/net-snmp/agent/table_container.h
 ./null.lo: ../../include/net-snmp/agent/table_array.h
 ./null.lo: ../../include/net-snmp/agent/mfd.h
+./null.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./old_api.lo: ../../include/net-snmp/net-snmp-config.h
-./old_api.lo: ../../include/net-snmp/system/linux.h
-./old_api.lo: ../../include/net-snmp/system/sysv.h
-./old_api.lo: ../../include/net-snmp/system/generic.h
-./old_api.lo: ../../include/net-snmp/machine/generic.h
 ./old_api.lo: ../../include/net-snmp/net-snmp-includes.h
 ./old_api.lo: ../../include/net-snmp/definitions.h
 ./old_api.lo: ../../include/net-snmp/types.h
+./old_api.lo: ../../include/net-snmp/library/oid.h
 ./old_api.lo: ../../include/net-snmp/library/types.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_api.h
 ./old_api.lo: ../../include/net-snmp/varbind_api.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_client.h
 ./old_api.lo: ../../include/net-snmp/pdu_api.h
 ./old_api.lo: ../../include/net-snmp/library/asn1.h
+./old_api.lo: ../../include/net-snmp/output_api.h
+./old_api.lo: ../../include/net-snmp/library/snmp_debug.h
+./old_api.lo: ../../include/net-snmp/library/snmp_logging.h
 ./old_api.lo: ../../include/net-snmp/session_api.h
 ./old_api.lo: ../../include/net-snmp/library/callback.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -958,8 +981,12 @@
 ./old_api.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./old_api.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./old_api.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./old_api.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./old_api.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./old_api.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./old_api.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -981,7 +1008,6 @@
 ./old_api.lo: ../../include/net-snmp/library/check_varbind.h
 ./old_api.lo: ../../include/net-snmp/library/container.h
 ./old_api.lo: ../../include/net-snmp/library/factory.h
-./old_api.lo: ../../include/net-snmp/library/snmp_logging.h
 ./old_api.lo: ../../include/net-snmp/library/container_binary_array.h
 ./old_api.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./old_api.lo: ../../include/net-snmp/library/container_iterator.h
@@ -994,8 +1020,6 @@
 ./old_api.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_enum.h
 ./old_api.lo: ../../include/net-snmp/library/vacm.h
-./old_api.lo: ../../include/net-snmp/output_api.h
-./old_api.lo: ../../include/net-snmp/library/snmp_debug.h
 ./old_api.lo: ../../include/net-snmp/snmpv3_api.h
 ./old_api.lo: ../../include/net-snmp/library/snmpv3.h
 ./old_api.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1041,21 +1065,22 @@
 ./old_api.lo: ../../include/net-snmp/agent/table_container.h
 ./old_api.lo: ../../include/net-snmp/agent/table_array.h
 ./old_api.lo: ../../include/net-snmp/agent/mfd.h
+./old_api.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./old_api.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./read_only.lo: ../../include/net-snmp/net-snmp-config.h
-./read_only.lo: ../../include/net-snmp/system/linux.h
-./read_only.lo: ../../include/net-snmp/system/sysv.h
-./read_only.lo: ../../include/net-snmp/system/generic.h
-./read_only.lo: ../../include/net-snmp/machine/generic.h
 ./read_only.lo: ../../include/net-snmp/net-snmp-includes.h
 ./read_only.lo: ../../include/net-snmp/definitions.h
 ./read_only.lo: ../../include/net-snmp/types.h
+./read_only.lo: ../../include/net-snmp/library/oid.h
 ./read_only.lo: ../../include/net-snmp/library/types.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_api.h
 ./read_only.lo: ../../include/net-snmp/varbind_api.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_client.h
 ./read_only.lo: ../../include/net-snmp/pdu_api.h
 ./read_only.lo: ../../include/net-snmp/library/asn1.h
+./read_only.lo: ../../include/net-snmp/output_api.h
+./read_only.lo: ../../include/net-snmp/library/snmp_debug.h
+./read_only.lo: ../../include/net-snmp/library/snmp_logging.h
 ./read_only.lo: ../../include/net-snmp/session_api.h
 ./read_only.lo: ../../include/net-snmp/library/callback.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1063,8 +1088,12 @@
 ./read_only.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./read_only.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./read_only.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./read_only.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./read_only.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./read_only.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./read_only.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1086,7 +1115,6 @@
 ./read_only.lo: ../../include/net-snmp/library/check_varbind.h
 ./read_only.lo: ../../include/net-snmp/library/container.h
 ./read_only.lo: ../../include/net-snmp/library/factory.h
-./read_only.lo: ../../include/net-snmp/library/snmp_logging.h
 ./read_only.lo: ../../include/net-snmp/library/container_binary_array.h
 ./read_only.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./read_only.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1099,8 +1127,6 @@
 ./read_only.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_enum.h
 ./read_only.lo: ../../include/net-snmp/library/vacm.h
-./read_only.lo: ../../include/net-snmp/output_api.h
-./read_only.lo: ../../include/net-snmp/library/snmp_debug.h
 ./read_only.lo: ../../include/net-snmp/snmpv3_api.h
 ./read_only.lo: ../../include/net-snmp/library/snmpv3.h
 ./read_only.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1146,20 +1172,21 @@
 ./read_only.lo: ../../include/net-snmp/agent/table_container.h
 ./read_only.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./row_merge.lo: ../../include/net-snmp/system/sysv.h
-./row_merge.lo: ../../include/net-snmp/system/generic.h
-./row_merge.lo: ../../include/net-snmp/machine/generic.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
+./row_merge.lo: ../../include/net-snmp/library/oid.h
 ./row_merge.lo: ../../include/net-snmp/library/types.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_api.h
 ./row_merge.lo: ../../include/net-snmp/varbind_api.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_client.h
 ./row_merge.lo: ../../include/net-snmp/pdu_api.h
 ./row_merge.lo: ../../include/net-snmp/library/asn1.h
+./row_merge.lo: ../../include/net-snmp/output_api.h
+./row_merge.lo: ../../include/net-snmp/library/snmp_debug.h
+./row_merge.lo: ../../include/net-snmp/library/snmp_logging.h
 ./row_merge.lo: ../../include/net-snmp/session_api.h
 ./row_merge.lo: ../../include/net-snmp/library/callback.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1167,8 +1194,12 @@
 ./row_merge.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./row_merge.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./row_merge.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./row_merge.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./row_merge.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./row_merge.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1190,7 +1221,6 @@
 ./row_merge.lo: ../../include/net-snmp/library/check_varbind.h
 ./row_merge.lo: ../../include/net-snmp/library/container.h
 ./row_merge.lo: ../../include/net-snmp/library/factory.h
-./row_merge.lo: ../../include/net-snmp/library/snmp_logging.h
 ./row_merge.lo: ../../include/net-snmp/library/container_binary_array.h
 ./row_merge.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./row_merge.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1203,8 +1233,6 @@
 ./row_merge.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_enum.h
 ./row_merge.lo: ../../include/net-snmp/library/vacm.h
-./row_merge.lo: ../../include/net-snmp/output_api.h
-./row_merge.lo: ../../include/net-snmp/library/snmp_debug.h
 ./row_merge.lo: ../../include/net-snmp/snmpv3_api.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpv3.h
 ./row_merge.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1250,20 +1278,21 @@
 ./row_merge.lo: ../../include/net-snmp/agent/table_container.h
 ./row_merge.lo: ../../include/net-snmp/agent/table_array.h
 ./row_merge.lo: ../../include/net-snmp/agent/mfd.h
+./row_merge.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./scalar.lo: ../../include/net-snmp/net-snmp-config.h
-./scalar.lo: ../../include/net-snmp/system/linux.h
-./scalar.lo: ../../include/net-snmp/system/sysv.h
-./scalar.lo: ../../include/net-snmp/system/generic.h
-./scalar.lo: ../../include/net-snmp/machine/generic.h
 ./scalar.lo: ../../include/net-snmp/net-snmp-includes.h
 ./scalar.lo: ../../include/net-snmp/definitions.h
 ./scalar.lo: ../../include/net-snmp/types.h
+./scalar.lo: ../../include/net-snmp/library/oid.h
 ./scalar.lo: ../../include/net-snmp/library/types.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_api.h
 ./scalar.lo: ../../include/net-snmp/varbind_api.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_client.h
 ./scalar.lo: ../../include/net-snmp/pdu_api.h
 ./scalar.lo: ../../include/net-snmp/library/asn1.h
+./scalar.lo: ../../include/net-snmp/output_api.h
+./scalar.lo: ../../include/net-snmp/library/snmp_debug.h
+./scalar.lo: ../../include/net-snmp/library/snmp_logging.h
 ./scalar.lo: ../../include/net-snmp/session_api.h
 ./scalar.lo: ../../include/net-snmp/library/callback.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1271,8 +1300,12 @@
 ./scalar.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./scalar.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./scalar.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./scalar.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./scalar.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./scalar.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./scalar.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1294,7 +1327,6 @@
 ./scalar.lo: ../../include/net-snmp/library/check_varbind.h
 ./scalar.lo: ../../include/net-snmp/library/container.h
 ./scalar.lo: ../../include/net-snmp/library/factory.h
-./scalar.lo: ../../include/net-snmp/library/snmp_logging.h
 ./scalar.lo: ../../include/net-snmp/library/container_binary_array.h
 ./scalar.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./scalar.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1307,8 +1339,6 @@
 ./scalar.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_enum.h
 ./scalar.lo: ../../include/net-snmp/library/vacm.h
-./scalar.lo: ../../include/net-snmp/output_api.h
-./scalar.lo: ../../include/net-snmp/library/snmp_debug.h
 ./scalar.lo: ../../include/net-snmp/snmpv3_api.h
 ./scalar.lo: ../../include/net-snmp/library/snmpv3.h
 ./scalar.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1354,20 +1384,21 @@
 ./scalar.lo: ../../include/net-snmp/agent/table_container.h
 ./scalar.lo: ../../include/net-snmp/agent/table_array.h
 ./scalar.lo: ../../include/net-snmp/agent/mfd.h
+./scalar.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./scalar_group.lo: ../../include/net-snmp/net-snmp-config.h
-./scalar_group.lo: ../../include/net-snmp/system/linux.h
-./scalar_group.lo: ../../include/net-snmp/system/sysv.h
-./scalar_group.lo: ../../include/net-snmp/system/generic.h
-./scalar_group.lo: ../../include/net-snmp/machine/generic.h
 ./scalar_group.lo: ../../include/net-snmp/net-snmp-includes.h
 ./scalar_group.lo: ../../include/net-snmp/definitions.h
 ./scalar_group.lo: ../../include/net-snmp/types.h
+./scalar_group.lo: ../../include/net-snmp/library/oid.h
 ./scalar_group.lo: ../../include/net-snmp/library/types.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_api.h
 ./scalar_group.lo: ../../include/net-snmp/varbind_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_client.h
 ./scalar_group.lo: ../../include/net-snmp/pdu_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/asn1.h
+./scalar_group.lo: ../../include/net-snmp/output_api.h
+./scalar_group.lo: ../../include/net-snmp/library/snmp_debug.h
+./scalar_group.lo: ../../include/net-snmp/library/snmp_logging.h
 ./scalar_group.lo: ../../include/net-snmp/session_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/callback.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1375,8 +1406,12 @@
 ./scalar_group.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./scalar_group.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./scalar_group.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./scalar_group.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./scalar_group.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./scalar_group.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1398,7 +1433,6 @@
 ./scalar_group.lo: ../../include/net-snmp/library/check_varbind.h
 ./scalar_group.lo: ../../include/net-snmp/library/container.h
 ./scalar_group.lo: ../../include/net-snmp/library/factory.h
-./scalar_group.lo: ../../include/net-snmp/library/snmp_logging.h
 ./scalar_group.lo: ../../include/net-snmp/library/container_binary_array.h
 ./scalar_group.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./scalar_group.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1411,8 +1445,6 @@
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_enum.h
 ./scalar_group.lo: ../../include/net-snmp/library/vacm.h
-./scalar_group.lo: ../../include/net-snmp/output_api.h
-./scalar_group.lo: ../../include/net-snmp/library/snmp_debug.h
 ./scalar_group.lo: ../../include/net-snmp/snmpv3_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpv3.h
 ./scalar_group.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1458,20 +1490,21 @@
 ./scalar_group.lo: ../../include/net-snmp/agent/table_container.h
 ./scalar_group.lo: ../../include/net-snmp/agent/table_array.h
 ./scalar_group.lo: ../../include/net-snmp/agent/mfd.h
+./scalar_group.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./serialize.lo: ../../include/net-snmp/net-snmp-config.h
-./serialize.lo: ../../include/net-snmp/system/linux.h
-./serialize.lo: ../../include/net-snmp/system/sysv.h
-./serialize.lo: ../../include/net-snmp/system/generic.h
-./serialize.lo: ../../include/net-snmp/machine/generic.h
 ./serialize.lo: ../../include/net-snmp/net-snmp-includes.h
 ./serialize.lo: ../../include/net-snmp/definitions.h
 ./serialize.lo: ../../include/net-snmp/types.h
+./serialize.lo: ../../include/net-snmp/library/oid.h
 ./serialize.lo: ../../include/net-snmp/library/types.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_api.h
 ./serialize.lo: ../../include/net-snmp/varbind_api.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_client.h
 ./serialize.lo: ../../include/net-snmp/pdu_api.h
 ./serialize.lo: ../../include/net-snmp/library/asn1.h
+./serialize.lo: ../../include/net-snmp/output_api.h
+./serialize.lo: ../../include/net-snmp/library/snmp_debug.h
+./serialize.lo: ../../include/net-snmp/library/snmp_logging.h
 ./serialize.lo: ../../include/net-snmp/session_api.h
 ./serialize.lo: ../../include/net-snmp/library/callback.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1479,8 +1512,12 @@
 ./serialize.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./serialize.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./serialize.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./serialize.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./serialize.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./serialize.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./serialize.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1502,7 +1539,6 @@
 ./serialize.lo: ../../include/net-snmp/library/check_varbind.h
 ./serialize.lo: ../../include/net-snmp/library/container.h
 ./serialize.lo: ../../include/net-snmp/library/factory.h
-./serialize.lo: ../../include/net-snmp/library/snmp_logging.h
 ./serialize.lo: ../../include/net-snmp/library/container_binary_array.h
 ./serialize.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./serialize.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1515,8 +1551,6 @@
 ./serialize.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_enum.h
 ./serialize.lo: ../../include/net-snmp/library/vacm.h
-./serialize.lo: ../../include/net-snmp/output_api.h
-./serialize.lo: ../../include/net-snmp/library/snmp_debug.h
 ./serialize.lo: ../../include/net-snmp/snmpv3_api.h
 ./serialize.lo: ../../include/net-snmp/library/snmpv3.h
 ./serialize.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1562,20 +1596,127 @@
 ./serialize.lo: ../../include/net-snmp/agent/table_container.h
 ./serialize.lo: ../../include/net-snmp/agent/table_array.h
 ./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-includes.h
+./snmp_get_statistic.lo: ../../include/net-snmp/definitions.h
+./snmp_get_statistic.lo: ../../include/net-snmp/types.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/oid.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/types.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/varbind_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_client.h
+./snmp_get_statistic.lo: ../../include/net-snmp/pdu_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/asn1.h
+./snmp_get_statistic.lo: ../../include/net-snmp/output_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_logging.h
+./snmp_get_statistic.lo: ../../include/net-snmp/session_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/callback.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_transport.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_service.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/ucd_compat.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/mib.h
+./snmp_get_statistic.lo: ../../include/net-snmp/mib_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/parse.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/oid_stash.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_impl.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/getopt.h
+./snmp_get_statistic.lo: ../../include/net-snmp/utilities.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/system.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/tools.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/int64.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/mt_support.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_alarm.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/data_list.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/check_varbind.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/factory.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/container_binary_array.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/container_list_ssll.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/container_iterator.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_assert.h
+./snmp_get_statistic.lo: ../../include/net-snmp/version.h
+./snmp_get_statistic.lo: ../../include/net-snmp/config_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/read_config.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/default_store.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_enum.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/vacm.h
+./snmp_get_statistic.lo: ../../include/net-snmp/snmpv3_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/transform_oids.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/keytools.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_module_config.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_agent.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_vars.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_handler.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/var_struct.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_registry.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/fd_event_manager.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/ds_agent.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_read_config.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_trap.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/all_helpers.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/instance.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/baby_steps.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar_group.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/watcher.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/multiplexer.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/null.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/debug_handler.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/cache_handler.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/old_api.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/read_only.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/row_merge.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/serialize.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/mode_end_call.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_data.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_dataset.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_tdata.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_iterator.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_container.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/table_array.h
+./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/system/linux.h
-./stash_cache.lo: ../../include/net-snmp/system/sysv.h
-./stash_cache.lo: ../../include/net-snmp/system/generic.h
-./stash_cache.lo: ../../include/net-snmp/machine/generic.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
+./stash_cache.lo: ../../include/net-snmp/library/oid.h
 ./stash_cache.lo: ../../include/net-snmp/library/types.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_api.h
 ./stash_cache.lo: ../../include/net-snmp/varbind_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_client.h
 ./stash_cache.lo: ../../include/net-snmp/pdu_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/asn1.h
+./stash_cache.lo: ../../include/net-snmp/output_api.h
+./stash_cache.lo: ../../include/net-snmp/library/snmp_debug.h
+./stash_cache.lo: ../../include/net-snmp/library/snmp_logging.h
 ./stash_cache.lo: ../../include/net-snmp/session_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/callback.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1583,8 +1724,12 @@
 ./stash_cache.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./stash_cache.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./stash_cache.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./stash_cache.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./stash_cache.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./stash_cache.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1606,7 +1751,6 @@
 ./stash_cache.lo: ../../include/net-snmp/library/check_varbind.h
 ./stash_cache.lo: ../../include/net-snmp/library/container.h
 ./stash_cache.lo: ../../include/net-snmp/library/factory.h
-./stash_cache.lo: ../../include/net-snmp/library/snmp_logging.h
 ./stash_cache.lo: ../../include/net-snmp/library/container_binary_array.h
 ./stash_cache.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./stash_cache.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1619,8 +1763,6 @@
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_enum.h
 ./stash_cache.lo: ../../include/net-snmp/library/vacm.h
-./stash_cache.lo: ../../include/net-snmp/output_api.h
-./stash_cache.lo: ../../include/net-snmp/library/snmp_debug.h
 ./stash_cache.lo: ../../include/net-snmp/snmpv3_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpv3.h
 ./stash_cache.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1666,22 +1808,23 @@
 ./stash_cache.lo: ../../include/net-snmp/agent/table_container.h
 ./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_to_next.lo: ../../include/net-snmp/net-snmp-config.h
-./stash_to_next.lo: ../../include/net-snmp/system/linux.h
-./stash_to_next.lo: ../../include/net-snmp/system/sysv.h
-./stash_to_next.lo: ../../include/net-snmp/system/generic.h
-./stash_to_next.lo: ../../include/net-snmp/machine/generic.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
+./stash_to_next.lo: ../../include/net-snmp/library/oid.h
 ./stash_to_next.lo: ../../include/net-snmp/library/types.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_api.h
 ./stash_to_next.lo: ../../include/net-snmp/varbind_api.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_client.h
 ./stash_to_next.lo: ../../include/net-snmp/pdu_api.h
 ./stash_to_next.lo: ../../include/net-snmp/library/asn1.h
+./stash_to_next.lo: ../../include/net-snmp/output_api.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmp_debug.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmp_logging.h
 ./stash_to_next.lo: ../../include/net-snmp/session_api.h
 ./stash_to_next.lo: ../../include/net-snmp/library/callback.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1689,8 +1832,12 @@
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./stash_to_next.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1712,7 +1859,6 @@
 ./stash_to_next.lo: ../../include/net-snmp/library/check_varbind.h
 ./stash_to_next.lo: ../../include/net-snmp/library/container.h
 ./stash_to_next.lo: ../../include/net-snmp/library/factory.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmp_logging.h
 ./stash_to_next.lo: ../../include/net-snmp/library/container_binary_array.h
 ./stash_to_next.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./stash_to_next.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1725,8 +1871,6 @@
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_enum.h
 ./stash_to_next.lo: ../../include/net-snmp/library/vacm.h
-./stash_to_next.lo: ../../include/net-snmp/output_api.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmp_debug.h
 ./stash_to_next.lo: ../../include/net-snmp/snmpv3_api.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpv3.h
 ./stash_to_next.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1772,22 +1916,23 @@
 ./stash_to_next.lo: ../../include/net-snmp/agent/table_container.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/table_array.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/mfd.h
+./stash_to_next.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./table_array.lo: ../../include/net-snmp/system/sysv.h
-./table_array.lo: ../../include/net-snmp/system/generic.h
-./table_array.lo: ../../include/net-snmp/machine/generic.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
+./table_array.lo: ../../include/net-snmp/library/oid.h
 ./table_array.lo: ../../include/net-snmp/library/types.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_array.lo: ../../include/net-snmp/varbind_api.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_array.lo: ../../include/net-snmp/pdu_api.h
 ./table_array.lo: ../../include/net-snmp/library/asn1.h
+./table_array.lo: ../../include/net-snmp/output_api.h
+./table_array.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_array.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_array.lo: ../../include/net-snmp/session_api.h
 ./table_array.lo: ../../include/net-snmp/library/callback.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1795,8 +1940,12 @@
 ./table_array.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_array.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_array.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_array.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_array.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_array.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_array.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1818,7 +1967,6 @@
 ./table_array.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_array.lo: ../../include/net-snmp/library/container.h
 ./table_array.lo: ../../include/net-snmp/library/factory.h
-./table_array.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_array.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_array.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_array.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1831,8 +1979,6 @@
 ./table_array.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_array.lo: ../../include/net-snmp/library/vacm.h
-./table_array.lo: ../../include/net-snmp/output_api.h
-./table_array.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_array.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_array.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_array.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1878,20 +2024,21 @@
 ./table_array.lo: ../../include/net-snmp/agent/table_container.h
 ./table_array.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table.lo: ../../include/net-snmp/system/sysv.h
-./table.lo: ../../include/net-snmp/system/generic.h
-./table.lo: ../../include/net-snmp/machine/generic.h
 ./table.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table.lo: ../../include/net-snmp/definitions.h
 ./table.lo: ../../include/net-snmp/types.h
+./table.lo: ../../include/net-snmp/library/oid.h
 ./table.lo: ../../include/net-snmp/library/types.h
 ./table.lo: ../../include/net-snmp/library/snmp_api.h
 ./table.lo: ../../include/net-snmp/varbind_api.h
 ./table.lo: ../../include/net-snmp/library/snmp_client.h
 ./table.lo: ../../include/net-snmp/pdu_api.h
 ./table.lo: ../../include/net-snmp/library/asn1.h
+./table.lo: ../../include/net-snmp/output_api.h
+./table.lo: ../../include/net-snmp/library/snmp_debug.h
+./table.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table.lo: ../../include/net-snmp/session_api.h
 ./table.lo: ../../include/net-snmp/library/callback.h
 ./table.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1899,8 +2046,12 @@
 ./table.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1922,7 +2073,6 @@
 ./table.lo: ../../include/net-snmp/library/check_varbind.h
 ./table.lo: ../../include/net-snmp/library/container.h
 ./table.lo: ../../include/net-snmp/library/factory.h
-./table.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1935,8 +2085,6 @@
 ./table.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table.lo: ../../include/net-snmp/library/vacm.h
-./table.lo: ../../include/net-snmp/output_api.h
-./table.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table.lo: ../../include/net-snmp/snmpv3_api.h
 ./table.lo: ../../include/net-snmp/library/snmpv3.h
 ./table.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1982,20 +2130,21 @@
 ./table.lo: ../../include/net-snmp/agent/table_container.h
 ./table.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table_container.lo: ../../include/net-snmp/system/sysv.h
-./table_container.lo: ../../include/net-snmp/system/generic.h
-./table_container.lo: ../../include/net-snmp/machine/generic.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
+./table_container.lo: ../../include/net-snmp/library/oid.h
 ./table_container.lo: ../../include/net-snmp/library/types.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_container.lo: ../../include/net-snmp/varbind_api.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_container.lo: ../../include/net-snmp/pdu_api.h
 ./table_container.lo: ../../include/net-snmp/library/asn1.h
+./table_container.lo: ../../include/net-snmp/output_api.h
+./table_container.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_container.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_container.lo: ../../include/net-snmp/session_api.h
 ./table_container.lo: ../../include/net-snmp/library/callback.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2003,8 +2152,12 @@
 ./table_container.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_container.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_container.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_container.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_container.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_container.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_container.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2026,7 +2179,6 @@
 ./table_container.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_container.lo: ../../include/net-snmp/library/container.h
 ./table_container.lo: ../../include/net-snmp/library/factory.h
-./table_container.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_container.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_container.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_container.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2039,8 +2191,6 @@
 ./table_container.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_container.lo: ../../include/net-snmp/library/vacm.h
-./table_container.lo: ../../include/net-snmp/output_api.h
-./table_container.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_container.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_container.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_container.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2086,20 +2236,21 @@
 ./table_container.lo: ../../include/net-snmp/agent/table_container.h
 ./table_container.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table_data.lo: ../../include/net-snmp/system/sysv.h
-./table_data.lo: ../../include/net-snmp/system/generic.h
-./table_data.lo: ../../include/net-snmp/machine/generic.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
+./table_data.lo: ../../include/net-snmp/library/oid.h
 ./table_data.lo: ../../include/net-snmp/library/types.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_data.lo: ../../include/net-snmp/varbind_api.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_data.lo: ../../include/net-snmp/pdu_api.h
 ./table_data.lo: ../../include/net-snmp/library/asn1.h
+./table_data.lo: ../../include/net-snmp/output_api.h
+./table_data.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_data.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_data.lo: ../../include/net-snmp/session_api.h
 ./table_data.lo: ../../include/net-snmp/library/callback.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2107,8 +2258,12 @@
 ./table_data.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_data.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_data.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_data.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_data.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_data.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_data.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2130,7 +2285,6 @@
 ./table_data.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_data.lo: ../../include/net-snmp/library/container.h
 ./table_data.lo: ../../include/net-snmp/library/factory.h
-./table_data.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_data.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_data.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_data.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2143,8 +2297,6 @@
 ./table_data.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_data.lo: ../../include/net-snmp/library/vacm.h
-./table_data.lo: ../../include/net-snmp/output_api.h
-./table_data.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_data.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_data.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_data.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2190,20 +2342,21 @@
 ./table_data.lo: ../../include/net-snmp/agent/table_container.h
 ./table_data.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table_dataset.lo: ../../include/net-snmp/system/sysv.h
-./table_dataset.lo: ../../include/net-snmp/system/generic.h
-./table_dataset.lo: ../../include/net-snmp/machine/generic.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
+./table_dataset.lo: ../../include/net-snmp/library/oid.h
 ./table_dataset.lo: ../../include/net-snmp/library/types.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_dataset.lo: ../../include/net-snmp/varbind_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_dataset.lo: ../../include/net-snmp/pdu_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/asn1.h
+./table_dataset.lo: ../../include/net-snmp/output_api.h
+./table_dataset.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_dataset.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_dataset.lo: ../../include/net-snmp/session_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/callback.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2211,8 +2364,12 @@
 ./table_dataset.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_dataset.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_dataset.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_dataset.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_dataset.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_dataset.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2234,7 +2391,6 @@
 ./table_dataset.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_dataset.lo: ../../include/net-snmp/library/container.h
 ./table_dataset.lo: ../../include/net-snmp/library/factory.h
-./table_dataset.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_dataset.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_dataset.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_dataset.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2247,8 +2403,6 @@
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_dataset.lo: ../../include/net-snmp/library/vacm.h
-./table_dataset.lo: ../../include/net-snmp/output_api.h
-./table_dataset.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_dataset.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_dataset.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2294,20 +2448,21 @@
 ./table_dataset.lo: ../../include/net-snmp/agent/table_container.h
 ./table_dataset.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table_iterator.lo: ../../include/net-snmp/system/sysv.h
-./table_iterator.lo: ../../include/net-snmp/system/generic.h
-./table_iterator.lo: ../../include/net-snmp/machine/generic.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
+./table_iterator.lo: ../../include/net-snmp/library/oid.h
 ./table_iterator.lo: ../../include/net-snmp/library/types.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_iterator.lo: ../../include/net-snmp/varbind_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_iterator.lo: ../../include/net-snmp/pdu_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/asn1.h
+./table_iterator.lo: ../../include/net-snmp/output_api.h
+./table_iterator.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_iterator.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_iterator.lo: ../../include/net-snmp/session_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/callback.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2315,8 +2470,12 @@
 ./table_iterator.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_iterator.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_iterator.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_iterator.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_iterator.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_iterator.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2338,7 +2497,6 @@
 ./table_iterator.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_iterator.lo: ../../include/net-snmp/library/container.h
 ./table_iterator.lo: ../../include/net-snmp/library/factory.h
-./table_iterator.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_iterator.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_iterator.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_iterator.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2351,8 +2509,6 @@
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_iterator.lo: ../../include/net-snmp/library/vacm.h
-./table_iterator.lo: ../../include/net-snmp/output_api.h
-./table_iterator.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_iterator.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_iterator.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2398,21 +2554,22 @@
 ./table_iterator.lo: ../../include/net-snmp/agent/table_container.h
 ./table_iterator.lo: ../../include/net-snmp/agent/table_array.h
 ./table_iterator.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./table_row.lo: ../../include/net-snmp/system/sysv.h
-./table_row.lo: ../../include/net-snmp/system/generic.h
-./table_row.lo: ../../include/net-snmp/machine/generic.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
+./table_row.lo: ../../include/net-snmp/library/oid.h
 ./table_row.lo: ../../include/net-snmp/library/types.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_row.lo: ../../include/net-snmp/varbind_api.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_row.lo: ../../include/net-snmp/pdu_api.h
 ./table_row.lo: ../../include/net-snmp/library/asn1.h
+./table_row.lo: ../../include/net-snmp/output_api.h
+./table_row.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_row.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_row.lo: ../../include/net-snmp/session_api.h
 ./table_row.lo: ../../include/net-snmp/library/callback.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2420,8 +2577,12 @@
 ./table_row.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_row.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_row.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_row.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_row.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_row.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_row.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2443,7 +2604,6 @@
 ./table_row.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_row.lo: ../../include/net-snmp/library/container.h
 ./table_row.lo: ../../include/net-snmp/library/factory.h
-./table_row.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_row.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_row.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_row.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2456,8 +2616,6 @@
 ./table_row.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_row.lo: ../../include/net-snmp/library/vacm.h
-./table_row.lo: ../../include/net-snmp/output_api.h
-./table_row.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_row.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_row.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_row.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2503,20 +2661,21 @@
 ./table_row.lo: ../../include/net-snmp/agent/table_container.h
 ./table_row.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./table_tdata.lo: ../../include/net-snmp/system/sysv.h
-./table_tdata.lo: ../../include/net-snmp/system/generic.h
-./table_tdata.lo: ../../include/net-snmp/machine/generic.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
+./table_tdata.lo: ../../include/net-snmp/library/oid.h
 ./table_tdata.lo: ../../include/net-snmp/library/types.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_api.h
 ./table_tdata.lo: ../../include/net-snmp/varbind_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_tdata.lo: ../../include/net-snmp/pdu_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/asn1.h
+./table_tdata.lo: ../../include/net-snmp/output_api.h
+./table_tdata.lo: ../../include/net-snmp/library/snmp_debug.h
+./table_tdata.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_tdata.lo: ../../include/net-snmp/session_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/callback.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2524,8 +2683,12 @@
 ./table_tdata.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./table_tdata.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./table_tdata.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./table_tdata.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./table_tdata.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./table_tdata.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2547,7 +2710,6 @@
 ./table_tdata.lo: ../../include/net-snmp/library/check_varbind.h
 ./table_tdata.lo: ../../include/net-snmp/library/container.h
 ./table_tdata.lo: ../../include/net-snmp/library/factory.h
-./table_tdata.lo: ../../include/net-snmp/library/snmp_logging.h
 ./table_tdata.lo: ../../include/net-snmp/library/container_binary_array.h
 ./table_tdata.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./table_tdata.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2560,8 +2722,6 @@
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_enum.h
 ./table_tdata.lo: ../../include/net-snmp/library/vacm.h
-./table_tdata.lo: ../../include/net-snmp/output_api.h
-./table_tdata.lo: ../../include/net-snmp/library/snmp_debug.h
 ./table_tdata.lo: ../../include/net-snmp/snmpv3_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpv3.h
 ./table_tdata.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2607,20 +2767,21 @@
 ./table_tdata.lo: ../../include/net-snmp/agent/table_container.h
 ./table_tdata.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./watcher.lo: ../../include/net-snmp/system/sysv.h
-./watcher.lo: ../../include/net-snmp/system/generic.h
-./watcher.lo: ../../include/net-snmp/machine/generic.h
 ./watcher.lo: ../../include/net-snmp/net-snmp-includes.h
 ./watcher.lo: ../../include/net-snmp/definitions.h
 ./watcher.lo: ../../include/net-snmp/types.h
+./watcher.lo: ../../include/net-snmp/library/oid.h
 ./watcher.lo: ../../include/net-snmp/library/types.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_api.h
 ./watcher.lo: ../../include/net-snmp/varbind_api.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_client.h
 ./watcher.lo: ../../include/net-snmp/pdu_api.h
 ./watcher.lo: ../../include/net-snmp/library/asn1.h
+./watcher.lo: ../../include/net-snmp/output_api.h
+./watcher.lo: ../../include/net-snmp/library/snmp_debug.h
+./watcher.lo: ../../include/net-snmp/library/snmp_logging.h
 ./watcher.lo: ../../include/net-snmp/session_api.h
 ./watcher.lo: ../../include/net-snmp/library/callback.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2628,8 +2789,12 @@
 ./watcher.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./watcher.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./watcher.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./watcher.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./watcher.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./watcher.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./watcher.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2651,7 +2816,6 @@
 ./watcher.lo: ../../include/net-snmp/library/check_varbind.h
 ./watcher.lo: ../../include/net-snmp/library/container.h
 ./watcher.lo: ../../include/net-snmp/library/factory.h
-./watcher.lo: ../../include/net-snmp/library/snmp_logging.h
 ./watcher.lo: ../../include/net-snmp/library/container_binary_array.h
 ./watcher.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./watcher.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2664,8 +2828,6 @@
 ./watcher.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_enum.h
 ./watcher.lo: ../../include/net-snmp/library/vacm.h
-./watcher.lo: ../../include/net-snmp/output_api.h
-./watcher.lo: ../../include/net-snmp/library/snmp_debug.h
 ./watcher.lo: ../../include/net-snmp/snmpv3_api.h
 ./watcher.lo: ../../include/net-snmp/library/snmpv3.h
 ./watcher.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2711,3 +2873,4 @@
 ./watcher.lo: ../../include/net-snmp/agent/table_container.h
 ./watcher.lo: ../../include/net-snmp/agent/table_array.h
 ./watcher.lo: ../../include/net-snmp/agent/mfd.h
+./watcher.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
diff --git a/agent/helpers/Makefile.in b/agent/helpers/Makefile.in
index c6b732f..5178b79 100644
--- a/agent/helpers/Makefile.in
+++ b/agent/helpers/Makefile.in
@@ -1,3 +1,7 @@
+#
+# Makefile for libnetsnmphelpers
+#
+
 top_builddir=../..
 
 # use GNU vpath, if available, to only set a path for source and headers
@@ -14,131 +18,21 @@
 
 INSTALLLIBS=libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION)
 INCLUDESUBDIR=agent
-HEADERS=all_helpers.h \
-	baby_steps.h \
-	bulk_to_next.h \
-	cache_handler.h \
-        debug_handler.h \
-	instance.h \
-	mode_end_call.h \
-        multiplexer.h \
-        null.h \
-        old_api.h \
-        read_only.h \
-        row_merge.h \
-	scalar.h \
-	scalar_group.h \
-        serialize.h \
-	stash_cache.h \
-	stash_to_next.h \
-	table_array.h \
-	table_container.h \
-        table.h \
-        table_data.h \
-        table_dataset.h \
-        table_tdata.h \
-        table_iterator.h \
-	watcher.h
-
-# No header 'table_row.h'
-
-HEADERSONLY=mfd.h set_helper.h
-INCLUDESUBDIRHEADERS=$(HEADERS) $(HEADERSONLY)
 
 #
 # Build info
 #
-NETSNMPLIB      = ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
 HELPERLIB       = libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION)
-AGENTLIB        = ../libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
-MIBLIB          = ../libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
 # -I. -I.. -I../..
 CPPFLAGS= $(TOP_INCLUDES) -I. $(AGENT_INCLUDES) $(MIBGROUP_INCLUDES) \
 	$(SNMPLIB_INCLUDES) @CPPFLAGS@
 
-SRCS =  all_helpers.c \
-	baby_steps.c \
-	bulk_to_next.c \
-	cache_handler.c \
-	debug_handler.c \
-	instance.c \
-	mode_end_call.c \
-	multiplexer.c \
-	null.c \
-	old_api.c \
-	read_only.c \
-	row_merge.c \
-	scalar.c \
-	scalar_group.c \
-	serialize.c \
-	stash_cache.c \
-	stash_to_next.c \
-	table.c \
-	table_array.c \
-	table_container.c \
-	table_data.c \
-	table_dataset.c \
-	table_iterator.c \
-	table_row.c \
-	table_tdata.c \
-	watcher.c
+OBJS = dummy.o
 
-OBJS =  all_helpers.o \
-	baby_steps.o \
-	bulk_to_next.o \
-	cache_handler.o \
-	debug_handler.o \
-	instance.o \
-	mode_end_call.o \
-	multiplexer.o \
-	null.o \
-	old_api.o \
-	read_only.o \
-	row_merge.o \
-	scalar.o \
-	scalar_group.o \
-	serialize.o \
-	stash_cache.o \
-	stash_to_next.o \
-	table.o \
-	table_array.o \
-	table_container.o \
-	table_data.o \
-	table_dataset.o \
-	table_iterator.o \
-	table_row.o \
-	table_tdata.o \
-	watcher.o
-
-LOBJS = all_helpers.lo \
-	baby_steps.lo \
-	bulk_to_next.lo \
-	cache_handler.lo \
-	debug_handler.lo \
-	instance.lo \
-	mode_end_call.lo \
-	multiplexer.lo \
-	null.lo \
-	old_api.lo \
-	read_only.lo \
-	row_merge.lo \
-	scalar.lo \
-	scalar_group.lo \
-	serialize.lo \
-	stash_cache.lo \
-	stash_to_next.lo \
-	table.lo \
-	table_array.lo \
-	table_container.lo \
-	table_data.lo \
-	table_dataset.lo \
-	table_iterator.lo \
-	table_row.lo \
-	table_tdata.lo \
-	watcher.lo
+LOBJS = dummy.lo
 
 all: standardall
 
 libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION):    $(LOBJS)
-	$(LIB_LD_CMD) $@ $(LOBJS) $(AGENTLIB) $(NETSNMPLIB) $(LDFLAGS) $(LIB_LD_LIBS)
+	$(LIB_LD_CMD) $@ $(LOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) $(LIB_LD_LIBS)
 	$(RANLIB) $@
diff --git a/agent/helpers/baby_steps.c b/agent/helpers/baby_steps.c
index 64bba89..8515dea 100644
--- a/agent/helpers/baby_steps.c
+++ b/agent/helpers/baby_steps.c
@@ -99,7 +99,7 @@
     DEBUGMSGTL(("baby_steps", "Got request, mode %s\n",
                 se_find_label_in_slist("agent_mode",reqinfo->mode)));
 
-    bs_modes = handler->myvoid;
+    bs_modes = (netsnmp_baby_steps_modes*)handler->myvoid;
     netsnmp_assert(NULL != bs_modes);
 
     switch (reqinfo->mode) {
diff --git a/agent/helpers/cache_handler.c b/agent/helpers/cache_handler.c
index bfd6e0a..6bb32a0 100644
--- a/agent/helpers/cache_handler.c
+++ b/agent/helpers/cache_handler.c
@@ -10,17 +10,17 @@
  */
 #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/cache_handler.h>
-
 #if HAVE_STRING_H
 #include <string.h>
 #else
 #include <strings.h>
 #endif
 
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/cache_handler.h>
+
 static netsnmp_cache  *cache_head = NULL;
 static int             cache_outstanding_valid = 0;
 static int             _cache_load( netsnmp_cache *cache );
@@ -113,6 +113,9 @@
  *  @{
  */
 
+static void
+_cache_free( netsnmp_cache *cache );
+
 /** get cache head
  * @internal
  * unadvertised function to get cache head. You really should not
@@ -209,6 +212,12 @@
         }
     }
 
+    if(0 != cache->timer_id)
+        netsnmp_cache_timer_stop(cache);
+
+    if (cache->valid)
+        _cache_free(cache);
+
     if (cache->rootoid)
         free(cache->rootoid);
 
@@ -217,6 +226,36 @@
     return SNMPERR_SUCCESS;
 }
 
+/** removes a cache
+ */
+int
+netsnmp_cache_remove(netsnmp_cache *cache)
+{
+    netsnmp_cache  *cur,*prev;
+
+    if (!cache || !cache_head)
+        return -1;
+
+    if (cache == cache_head) {
+        cache_head = cache_head->next;
+        if (cache_head)
+            cache_head->prev = NULL;
+        return 0;
+    }
+
+    prev = cache_head;
+    cur = cache_head->next;
+    for (; cur; prev = cur, cur = cur->next) {
+        if (cache == cur) {
+            prev->next = cur->next;
+            if (cur->next)
+                cur->next->prev = cur->prev;
+            return 0;
+        }
+    }
+    return -1;
+}
+
 /** callback function to call cache load function */
 static void
 _timer_reload(unsigned int regNo, void *clientargs)
@@ -365,7 +404,7 @@
 NETSNMP_STATIC_INLINE char *
 _build_cache_name(const char *name)
 {
-    char *dup = malloc(strlen(name) + strlen(CACHE_NAME) + 2);
+    char *dup = (char*)malloc(strlen(name) + strlen(CACHE_NAME) + 2);
     if (NULL == dup)
         return NULL;
     sprintf(dup, "%s:%s", CACHE_NAME, name);
@@ -396,7 +435,7 @@
 {
     netsnmp_cache  *result;
     char *cache_name = _build_cache_name(name);
-    result = netsnmp_agent_get_list_data(reqinfo, cache_name);
+    result = (netsnmp_cache*)netsnmp_agent_get_list_data(reqinfo, cache_name);
     SNMP_FREE(cache_name);
     return result;
 }
@@ -487,7 +526,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), "%p", cache);
     DEBUGMSGTL(("helper:cache_handler", "using cache %s: ", addrstr));
     DEBUGMSGOID(("helper:cache_handler", cache->rootoid, cache->rootoid_len));
     DEBUGMSG(("helper:cache_handler", "\n"));
diff --git a/agent/helpers/debug_handler.c b/agent/helpers/debug_handler.c
index 832ad2d..e4a8438 100644
--- a/agent/helpers/debug_handler.c
+++ b/agent/helpers/debug_handler.c
@@ -46,8 +46,14 @@
     return netsnmp_create_handler("debug", netsnmp_debug_helper);
 }
 
+#ifdef NETSNMP_NO_DEBUGGING
+
+#define debug_print_requests(x)
+
+#else /* NETSNMP_NO_DEBUGGING */
+
 /** @internal debug print variables in a chain */
-void
+static void
 debug_print_requests(netsnmp_request_info *requests)
 {
     netsnmp_request_info *request;
@@ -75,6 +81,7 @@
     }
 }
 
+#endif /* NETSNMP_NO_DEBUGGING */
 
 /** @internal Implements the debug handler */
 int
@@ -83,60 +90,67 @@
                      netsnmp_agent_request_info *reqinfo,
                      netsnmp_request_info *requests)
 {
+    int ret;
 
-    netsnmp_mib_handler *hptr;
-    int             i, ret, count;
-    char           *cp;
+    DEBUGIF("helper:debug") {
+        netsnmp_mib_handler *hptr;
+        char                *cp;
+        int                  i, count;
 
-    DEBUGMSGTL(("helper:debug", "Entering Debugging Helper:\n"));
-    DEBUGMSGTL(("helper:debug", "  Handler Registration Info:\n"));
-    DEBUGMSGTL(("helper:debug", "    Name:        %s\n",
-                reginfo->handlerName));
-    DEBUGMSGTL(("helper:debug", "    Context:     %s\n",
-                SNMP_STRORNULL(reginfo->contextName)));
-    DEBUGMSGTL(("helper:debug", "    Base OID:    "));
-    DEBUGMSGOID(("helper:debug", reginfo->rootoid, reginfo->rootoid_len));
-    DEBUGMSG(("helper:debug", "\n"));
+        DEBUGMSGTL(("helper:debug", "Entering Debugging Helper:\n"));
+        DEBUGMSGTL(("helper:debug", "  Handler Registration Info:\n"));
+        DEBUGMSGTL(("helper:debug", "    Name:        %s\n",
+                    reginfo->handlerName));
+        DEBUGMSGTL(("helper:debug", "    Context:     %s\n",
+                    SNMP_STRORNULL(reginfo->contextName)));
+        DEBUGMSGTL(("helper:debug", "    Base OID:    "));
+        DEBUGMSGOID(("helper:debug", reginfo->rootoid, reginfo->rootoid_len));
+        DEBUGMSG(("helper:debug", "\n"));
 
-    DEBUGMSGTL(("helper:debug", "    Modes:       0x%x = ",
-                reginfo->modes));
-    for (count = 0, i = reginfo->modes; i; i = i >> 1, count++) {
-        if (i & 0x01) {
-            cp = se_find_label_in_slist("handler_can_mode",
-                                             0x01 << count);
-            DEBUGMSG(("helper:debug", "%s | ", SNMP_STRORNULL(cp)));
+        DEBUGMSGTL(("helper:debug", "    Modes:       0x%x = ",
+                    reginfo->modes));
+        for (count = 0, i = reginfo->modes; i; i = i >> 1, count++) {
+            if (i & 0x01) {
+                cp = se_find_label_in_slist("handler_can_mode",
+                                            0x01 << count);
+                DEBUGMSG(("helper:debug", "%s | ", SNMP_STRORNULL(cp)));
+            }
         }
+        DEBUGMSG(("helper:debug", "\n"));
+
+        DEBUGMSGTL(("helper:debug", "    Priority:    %d\n",
+                    reginfo->priority));
+
+        DEBUGMSGTL(("helper:debug", "  Handler Calling Chain:\n"));
+        DEBUGMSGTL(("helper:debug", "   "));
+        for (hptr = reginfo->handler; hptr; hptr = hptr->next) {
+            DEBUGMSG(("helper:debug", " -> %s", hptr->handler_name));
+            if (hptr->myvoid)
+                DEBUGMSG(("helper:debug", " [myvoid = %p]", hptr->myvoid));
+        }
+        DEBUGMSG(("helper:debug", "\n"));
+
+        DEBUGMSGTL(("helper:debug", "  Request information:\n"));
+        DEBUGMSGTL(("helper:debug", "    Mode:        %s (%d = 0x%x)\n",
+                    se_find_label_in_slist("agent_mode", reqinfo->mode),
+                    reqinfo->mode, reqinfo->mode));
+        DEBUGMSGTL(("helper:debug", "    Request Variables:\n"));
+        debug_print_requests(requests);
+
+        DEBUGMSGTL(("helper:debug", "  --- calling next handler --- \n"));
     }
-    DEBUGMSG(("helper:debug", "\n"));
 
-    DEBUGMSGTL(("helper:debug", "    Priority:    %d\n",
-                reginfo->priority));
-
-    DEBUGMSGTL(("helper:debug", "  Handler Calling Chain:\n"));
-    DEBUGMSGTL(("helper:debug", "   "));
-    for (hptr = reginfo->handler; hptr; hptr = hptr->next) {
-        DEBUGMSG(("helper:debug", " -> %s", hptr->handler_name));
-        if (hptr->myvoid)
-            DEBUGMSG(("helper:debug", " [myvoid = %p]", hptr->myvoid));
-    }
-    DEBUGMSG(("helper:debug", "\n"));
-
-    DEBUGMSGTL(("helper:debug", "  Request information:\n"));
-    DEBUGMSGTL(("helper:debug", "    Mode:        %s (%d = 0x%x)\n",
-                se_find_label_in_slist("agent_mode", reqinfo->mode),
-                reqinfo->mode, reqinfo->mode));
-    DEBUGMSGTL(("helper:debug", "    Request Variables:\n"));
-    debug_print_requests(requests);
-
-    DEBUGMSGTL(("helper:debug", "  --- calling next handler --- \n"));
     ret = netsnmp_call_next_handler(handler, reginfo, reqinfo, requests);
 
-    DEBUGMSGTL(("helper:debug", "  Results:\n"));
-    DEBUGMSGTL(("helper:debug", "    Returned code: %d\n", ret));
-    DEBUGMSGTL(("helper:debug", "    Returned Variables:\n"));
-    debug_print_requests(requests);
+    DEBUGIF("helper:debug") {
+        DEBUGMSGTL(("helper:debug", "  Results:\n"));
+        DEBUGMSGTL(("helper:debug", "    Returned code: %d\n", ret));
+        DEBUGMSGTL(("helper:debug", "    Returned Variables:\n"));
+        debug_print_requests(requests);
 
-    DEBUGMSGTL(("helper:debug", "Exiting Debugging Helper:\n"));
+        DEBUGMSGTL(("helper:debug", "Exiting Debugging Helper:\n"));
+    }
+
     return ret;
 }
 
@@ -150,4 +164,3 @@
     netsnmp_register_handler_by_name("debug", netsnmp_get_debug_handler());
 }
 /**  @} */
-
diff --git a/agent/helpers/dummy.c b/agent/helpers/dummy.c
new file mode 100644
index 0000000..6979ae4
--- /dev/null
+++ b/agent/helpers/dummy.c
@@ -0,0 +1 @@
+char const netsnmp_helpers_dummy_text[] = "dummy symbol to make sure that linking netsnmphelpers does not fail on systems that do not support empty libraries.";
diff --git a/agent/helpers/instance.c b/agent/helpers/instance.c
index 9ebdb87..2d07b69 100644
--- a/agent/helpers/instance.c
+++ b/agent/helpers/instance.c
@@ -22,13 +22,14 @@
 #include <strings.h>
 #endif
 
+#include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
 
 typedef struct netsnmp_num_file_instance_s {
     char *file_name;
     FILE *filep;
-    int   type;
+    u_char type;
     int   flags;
 } netsnmp_num_file_instance;
 
@@ -483,6 +484,15 @@
                    (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
 
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
+{
+    free(p);
+}
+#else
+#define free_wrapper free
+#endif
+
 #ifndef NETSNMP_NO_DEPRECATED_FUNCTIONS
 
 /**
@@ -532,7 +542,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
@@ -651,7 +661,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
@@ -734,7 +744,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
@@ -850,7 +860,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
@@ -950,7 +960,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
diff --git a/agent/helpers/mode_end_call.c b/agent/helpers/mode_end_call.c
index 912f58c..d7dd302 100644
--- a/agent/helpers/mode_end_call.c
+++ b/agent/helpers/mode_end_call.c
@@ -101,7 +101,7 @@
                                     requests);
 
     /* then call the callback handlers */
-    for(ptr = handler->myvoid; ptr; ptr = ptr->next) {
+    for (ptr = (netsnmp_mode_handler_list*)handler->myvoid; ptr; ptr = ptr->next) {
         if (ptr->mode == NETSNMP_MODE_END_ALL_MODES ||
             reqinfo->mode == ptr->mode) {
             ret2 = netsnmp_call_handler(ptr->callback_handler, reginfo,
diff --git a/agent/helpers/old_api.c b/agent/helpers/old_api.c
index ec26263..fdc8bd6 100644
--- a/agent/helpers/old_api.c
+++ b/agent/helpers/old_api.c
@@ -15,6 +15,15 @@
 
 #define MIB_CLIENTS_ARE_EVIL 1
 
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
+{
+    free(p);
+}
+#else
+#define free_wrapper free
+#endif
+
 /*
  * don't use these! 
  */
@@ -352,7 +361,8 @@
             write_method = NULL;
             netsnmp_request_add_list_data(requests,
                                           netsnmp_create_data_list
-                                          (OLD_API_NAME, cacheptr, free));
+                                          (OLD_API_NAME, cacheptr,
+                                           &free_wrapper));
             /*
              * BBB: fall through for everything that is a set (see AAA) 
              */
diff --git a/agent/helpers/row_merge.c b/agent/helpers/row_merge.c
index 9ae7ea8..93d3532 100644
--- a/agent/helpers/row_merge.c
+++ b/agent/helpers/row_merge.c
@@ -76,14 +76,14 @@
      * see if we've already been here
      */
     rc = snprintf(buf, sizeof(buf), "row_merge:%p", reginfo);
-    if ((-1 == rc) || (rc >= sizeof(buf))) {
+    if ((-1 == rc) || ((size_t)rc >= sizeof(buf))) {
         snmp_log(LOG_ERR,"error creating key\n");
         return NULL;
     }
     
-    rm_status = netsnmp_agent_get_list_data(reqinfo, buf);
+    rm_status = (netsnmp_row_merge_status*)netsnmp_agent_get_list_data(reqinfo, buf);
     if ((NULL == rm_status) && create_missing) {
-        void *data_list;
+        netsnmp_data_list *data_list;
         
         rm_status = SNMP_MALLOC_TYPEDEF(netsnmp_row_merge_status);
         if (NULL == rm_status) {
diff --git a/agent/helpers/scalar.c b/agent/helpers/scalar.c
index 23b6bb7..b734c04 100644
--- a/agent/helpers/scalar.c
+++ b/agent/helpers/scalar.c
@@ -78,8 +78,8 @@
      * Extend the registered OID with space for the instance subid
      * (but don't extend the length just yet!)
      */
-    reginfo->rootoid = realloc(reginfo->rootoid,
-                              (reginfo->rootoid_len+1) * sizeof(oid) );
+    reginfo->rootoid = (oid*)realloc(reginfo->rootoid,
+                                    (reginfo->rootoid_len+1) * sizeof(oid) );
     reginfo->rootoid[ reginfo->rootoid_len ] = 0;
 
     netsnmp_inject_handler(reginfo, netsnmp_get_instance_handler());
@@ -113,8 +113,8 @@
      * Extend the registered OID with space for the instance subid
      * (but don't extend the length just yet!)
      */
-    reginfo->rootoid = realloc(reginfo->rootoid,
-                              (reginfo->rootoid_len+1) * sizeof(oid) );
+    reginfo->rootoid = (oid*)realloc(reginfo->rootoid,
+                                    (reginfo->rootoid_len+1) * sizeof(oid) );
     reginfo->rootoid[ reginfo->rootoid_len ] = 0;
 
     netsnmp_inject_handler(reginfo, netsnmp_get_instance_handler());
diff --git a/agent/mibgroup/utilities/snmp_get_statistic.c b/agent/helpers/snmp_get_statistic.c
similarity index 82%
rename from agent/mibgroup/utilities/snmp_get_statistic.c
rename to agent/helpers/snmp_get_statistic.c
index 1e06f79..b9dac76 100644
--- a/agent/mibgroup/utilities/snmp_get_statistic.c
+++ b/agent/helpers/snmp_get_statistic.c
@@ -2,7 +2,7 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "snmp_get_statistic.h"
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 static int
 netsnmp_get_statistic_helper_handler(netsnmp_mib_handler *handler,
@@ -12,8 +12,12 @@
 {
     if (reqinfo->mode == MODE_GET) {
         const oid idx = requests->requestvb->name[reginfo->rootoid_len - 2] +
-            (((char*)handler->myvoid) - ((char*)0));
-        const uint32_t value = snmp_get_statistic(idx);
+            (oid)(uintptr_t)handler->myvoid;
+        uint32_t value;
+
+        if (idx > NETSNMP_STAT_MAX_STATS)
+            return SNMP_ERR_GENERR;
+        value = snmp_get_statistic(idx);
         snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
                                  (const u_char*)&value, sizeof(value));
         return SNMP_ERR_NOERROR;
@@ -29,7 +33,7 @@
                                netsnmp_get_statistic_helper_handler);
     if (ret) {
         ret->flags |= MIB_HANDLER_AUTO_NEXT;
-        ret->myvoid = ((char*)0) + offset;
+        ret->myvoid = (void*)(uintptr_t)offset;
     }
     return ret;
 }
diff --git a/agent/helpers/stash_cache.c b/agent/helpers/stash_cache.c
index 5252cb2..c998363 100644
--- a/agent/helpers/stash_cache.c
+++ b/agent/helpers/stash_cache.c
@@ -10,6 +10,15 @@
 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
@@ -62,7 +71,7 @@
     }
 
     handler->myvoid = cinfo;
-    handler->data_free = free;
+    handler->data_free = &free_wrapper;
 
     return handler;
 }
@@ -108,7 +117,7 @@
 netsnmp_oid_stash_node  **
 netsnmp_extract_stash_cache(netsnmp_agent_request_info *reqinfo)
 {
-    return netsnmp_agent_get_list_data(reqinfo, STASH_CACHE_NAME);
+    return (netsnmp_oid_stash_node**)netsnmp_agent_get_list_data(reqinfo, STASH_CACHE_NAME);
 }
 
 
@@ -139,7 +148,7 @@
     case MODE_GET:
         DEBUGMSGTL(("helper:stash_cache", "Processing GET request\n"));
         for(request = requests; request; request = request->next) {
-            cdata =
+            cdata = (netsnmp_variable_list*)
                 netsnmp_oid_stash_get_data(cinfo->cache,
                                            requests->requestvb->name,
                                            requests->requestvb->name_length);
@@ -161,7 +170,7 @@
                                                requests->requestvb->name,
                                                requests->requestvb->name_length);
             if (cnode && cnode->thedata) {
-                cdata = cnode->thedata;
+                cdata =  (netsnmp_variable_list*)cnode->thedata;
                 if (cdata->val.string && cdata->name && cdata->name_length) {
                     DEBUGMSGTL(("helper:stash_cache", "Found cached GETNEXT varbind\n"));
                     DEBUGMSGOID(("helper:stash_cache", cdata->name, cdata->name_length));
diff --git a/agent/helpers/table.c b/agent/helpers/table.c
index 374ef48..9eb0132 100644
--- a/agent/helpers/table.c
+++ b/agent/helpers/table.c
@@ -168,8 +168,8 @@
     int             oid_index_pos;
     unsigned int    oid_column_pos;
     unsigned int    tmp_idx;
-    size_t	    tmp_len;
-    int             incomplete, out_of_range, cleaned_up = 0;
+    ssize_t 	    tmp_len;
+    int             incomplete, out_of_range;
     int             status = SNMP_ERR_NOERROR, need_processing = 0;
     oid            *tmp_name;
     netsnmp_table_request_info *tbl_req_info;
@@ -195,8 +195,9 @@
 
     DEBUGIF("helper:table:req") {
         DEBUGMSGTL(("helper:table:req",
-                    "Got request for handler %s: base oid:",
-                    handler->handler_name));
+                    "Got %s (%d) mode request for handler %s: base oid:",
+                    se_find_label_in_slist("agent_mode", reqinfo->mode),
+                    reqinfo->mode, handler->handler_name));
         DEBUGMSGOID(("helper:table:req", reginfo->rootoid,
                      reginfo->rootoid_len));
         DEBUGMSG(("helper:table:req", "\n"));
@@ -229,15 +230,15 @@
          * a valid table info pointer).
          */
         if(NULL == netsnmp_extract_table_info(requests)) {
-            DEBUGMSGTL(("table:helper","no table info for set - skipping\n"));
+            DEBUGMSGTL(("helper:table","no table info for set - skipping\n"));
         }
         else
             need_processing = 1;
     }
     else {
         /*
-         * for RESERVE1 and GETS, only continue if we have at least
-         * one valid request.
+         * for GETS, only continue if we have at least one valid request.
+         * for RESERVE1, only continue if we have indexes for all requests.
          */
            
     /*
@@ -394,7 +395,8 @@
             /*
              * oid is long enough to contain COLUMN info
              */
-            DEBUGMSGTL(("helper:table:col", "  have at least a column (%ld)\n",
+            DEBUGMSGTL(("helper:table:col",
+                        "  have at least a column (%" NETSNMP_PRIo "d)\n",
                         var->name[oid_column_pos]));
             if (var->name[oid_column_pos] < tbl_info->min_column) {
                 DEBUGMSGTL(("helper:table:col",
@@ -450,8 +452,9 @@
                     continue;
                 if (tbl_req_info->colnum != var->name[oid_column_pos]) {
                     DEBUGMSGTL(("helper:table:col",
-                                "    which doesn't match req %ld - truncating index info\n",
-                                   var->name[oid_column_pos]));
+                                "    which doesn't match req "
+                                "%" NETSNMP_PRIo "d - truncating index info\n",
+                                var->name[oid_column_pos]));
                     /*
                      * different column! truncate useless index info 
                      */
@@ -523,6 +526,8 @@
         for (tmp_idx = 0, vb = tbl_req_info->indexes;
              tmp_idx < tbl_info->number_indexes;
              ++tmp_idx, vb = vb->next_variable) {
+            size_t parsed_oid_len;
+
             if (incomplete && tmp_len) {
                 /*
                  * incomplete/illegal OID, set up dummy 0 to parse 
@@ -537,29 +542,27 @@
                  *
                  * Reject requests of the form 'myObject'   (no instance)
                  */
-                if (reqinfo->mode != MODE_GETNEXT) {
-                    table_helper_cleanup(reqinfo, requests,
-                                         SNMP_NOSUCHINSTANCE);
-                    cleaned_up = 1;
-                }
                 tmp_len = 0;
-                tmp_name = (oid *) & tmp_len;
+                tmp_name = NULL;
                 break;
             }
             /*
              * try and parse current index 
              */
-            if (parse_one_oid_index(&tmp_name, &tmp_len,
+            netsnmp_assert(tmp_len >= 0);
+            parsed_oid_len = tmp_len;
+            if (parse_one_oid_index(&tmp_name, &parsed_oid_len,
                                     vb, 1) != SNMPERR_SUCCESS) {
                 incomplete = 1;
                 tmp_len = -1;   /* is this necessary? Better safe than
                                  * sorry */
             } else {
+                tmp_len = parsed_oid_len;
+                DEBUGMSGTL(("helper:table", "  got 1 (incomplete=%d)\n",
+                            incomplete));
                 /*
                  * do not count incomplete indexes 
                  */
-                DEBUGMSGTL(("helper:table", "  got 1 (incomplete=%d)\n",
-                            incomplete));
                 if (incomplete)
                     continue;
                 ++tbl_req_info->number_indexes; /** got one ok */
@@ -572,12 +575,11 @@
         }                       /** for loop */
 
         DEBUGIF("helper:table:results") {
-            DEBUGMSGTL(("helper:table:results", "  found %d indexes\n",
-                        tbl_req_info->number_indexes));
-            if (!cleaned_up) {
                 unsigned int    count;
                 u_char         *buf = NULL;
                 size_t          buf_len = 0, out_len = 0;
+                DEBUGMSGTL(("helper:table:results", "  found %d indexes\n",
+                            tbl_req_info->number_indexes));
                 DEBUGMSGTL(("helper:table:results",
                             "  column: %d, indexes: %d",
                             tbl_req_info->colnum,
@@ -607,7 +609,6 @@
                     free(buf);
                 }
                 DEBUGMSG(("helper:table:results", "\n"));
-            }
         }
 
 
@@ -618,8 +619,22 @@
         if ((reqinfo->mode != MODE_GETNEXT) &&
             ((tbl_req_info->number_indexes != tbl_info->number_indexes) ||
              (tmp_len != -1))) {
+
             DEBUGMSGTL(("helper:table",
                         "invalid index(es) for table - skipping\n"));
+
+            if ( MODE_IS_SET(reqinfo->mode) ) {
+                /*
+                 * no point in continuing without indexes for set.
+                 */
+                netsnmp_assert(reqinfo->mode == MODE_SET_RESERVE1);
+                /** clear first request so we wont try to run FREE mode */
+                netsnmp_free_request_data_sets(requests);
+                /** set actual error */
+                table_helper_cleanup(reqinfo, request, SNMP_ERR_NOCREATION);
+                need_processing = 0; /* don't call next handler */
+                break;
+            }
             table_helper_cleanup(reqinfo, request, SNMP_NOSUCHINSTANCE);
             continue;
         }
@@ -1150,7 +1165,7 @@
 {
     netsnmp_oid_stash_node **stashp = NULL;
     stashp = (netsnmp_oid_stash_node **)
-        netsnmp_agent_get_list_data(reqinfo, storage_name);
+        netsnmp_agent_get_list_data(reqinfo, (const char *) storage_name);
 
     if (!stashp) {
         /*
@@ -1162,7 +1177,7 @@
             return NULL;        /* ack. out of mem */
 
         netsnmp_agent_add_list_data(reqinfo,
-                                    netsnmp_create_data_list(storage_name,
+                                    netsnmp_create_data_list((const char *) storage_name,
                                                              stashp,
                                                              _row_stash_data_list_free));
     }
diff --git a/agent/helpers/table_array.c b/agent/helpers/table_array.c
index c7f52f9..b998929 100644
--- a/agent/helpers/table_array.c
+++ b/agent/helpers/table_array.c
@@ -229,7 +229,7 @@
 netsnmp_container      *
 netsnmp_extract_array_context(netsnmp_request_info *request)
 {
-    return netsnmp_request_get_list_data(request, TABLE_ARRAY_NAME);
+    return (netsnmp_container*)netsnmp_request_get_list_data(request, TABLE_ARRAY_NAME);
 }
 
 /** this function is called to validate RowStatus transitions. */
@@ -489,7 +489,7 @@
             index.oids = tblreq_info->index_oid;
             index.len = tblreq_info->index_oid_len;
 
-            row = CONTAINER_FIND(tad->table, &index);
+            row = (netsnmp_index*)CONTAINER_FIND(tad->table, &index);
             if (!row) {
                 DEBUGMSGTL(("table_array:get", "no row found\n"));
                 netsnmp_set_request_error(agtreq_info, current,
@@ -556,7 +556,7 @@
          */
         index.oids = tblreq_info->index_oid;
         index.len = tblreq_info->index_oid_len;
-        tmp = CONTAINER_FIND(request_group, &index);
+        tmp = (netsnmp_index*)CONTAINER_FIND(request_group, &index);
         if (tmp) {
             DEBUGMSGTL(("table_array:group",
                         "    existing group:"));
@@ -597,7 +597,7 @@
          * search for row. all changes are made to the original row,
          * later, we'll make a copy in undo_info before we start processing.
          */
-        row = g->existing_row = CONTAINER_FIND(tad->table, &index);
+        row = g->existing_row = (netsnmp_index*)CONTAINER_FIND(tad->table, &index);
         if (!g->existing_row) {
             if (!tad->cb->create_row) {
                 if(MODE_IS_SET(agtreq_info->mode))
diff --git a/agent/helpers/table_container.c b/agent/helpers/table_container.c
index 85cdb41..82c7f29 100644
--- a/agent/helpers/table_container.c
+++ b/agent/helpers/table_container.c
@@ -180,7 +180,7 @@
     }
 
     if (flags)
-        table->key_type = flags & 0x03;  /* Use lowest two bits */
+        table->key_type = (char)(flags & 0x03);  /* Use lowest two bits */
     else
         table->key_type = TABLE_CONTAINER_KEY_NETSNMP_INDEX;
 
@@ -433,6 +433,73 @@
     }
 }
 
+/** removes a table_container entry from a request list */
+void
+netsnmp_container_table_row_remove(netsnmp_request_info *request,
+                                   netsnmp_index        *row)
+{
+    netsnmp_request_info       *req;
+    netsnmp_table_request_info *table_info = NULL;
+    netsnmp_variable_list      *this_index = NULL;
+    netsnmp_variable_list      *that_index = NULL;
+    oid      base_oid[] = {0, 0};	/* Make sure index OIDs are legal! */
+    oid      this_oid[MAX_OID_LEN];
+    oid      that_oid[MAX_OID_LEN];
+    size_t   this_oid_len, that_oid_len;
+
+    if (!request)
+        return;
+
+    /*
+     * We'll add the new row information to any request
+     * structure with the same index values as the request
+     * passed in (which includes that one!).
+     *
+     * So construct an OID based on these index values.
+     */
+
+    table_info = netsnmp_extract_table_info(request);
+    this_index = table_info->indexes;
+    build_oid_noalloc(this_oid, MAX_OID_LEN, &this_oid_len,
+                      base_oid, 2, this_index);
+
+    /*
+     * We need to look through the whole of the request list
+     * (as received by the current handler), as there's no
+     * guarantee that this routine will be called by the first
+     * varbind that refers to this row.
+     *   In particular, a RowStatus controlled row creation
+     * may easily occur later in the variable list.
+     *
+     * So first, we rewind to the head of the list....
+     */
+    for (req=request; req->prev; req=req->prev)
+        ;
+
+    /*
+     * ... and then start looking for matching indexes
+     * (by constructing OIDs from these index values)
+     */
+    for (; req; req=req->next) {
+        if (req->processed) 
+            continue;
+        
+        table_info = netsnmp_extract_table_info(req);
+        that_index = table_info->indexes;
+        build_oid_noalloc(that_oid, MAX_OID_LEN, &that_oid_len,
+                          base_oid, 2, that_index);
+      
+        /*
+         * This request has the same index values,
+         * so add the newly-created row information.
+         */
+        if (snmp_oid_compare(this_oid, this_oid_len,
+                             that_oid, that_oid_len) == 0) {
+            netsnmp_request_remove_list_data(req, TABLE_CONTAINER_ROW);
+        }
+    }
+}
+
 /** @cond */
 /**********************************************************************
  **********************************************************************
@@ -501,7 +568,7 @@
          * column, if necessary.
          */
         _set_key( tad, request, tblreq_info, &key, &index );
-        row = _find_next_row(tad->table, tblreq_info, key);
+        row = (netsnmp_index*)_find_next_row(tad->table, tblreq_info, key);
         if (row) {
             /*
              * update indexes in tblreq_info (index & varbind),
@@ -537,7 +604,7 @@
     else {
 
         _set_key( tad, request, tblreq_info, &key, &index );
-        row = CONTAINER_FIND(tad->table, key);
+        row = (netsnmp_index*)CONTAINER_FIND(tad->table, key);
         if (NULL == row) {
             /*
              * not results found. For a get, that is an error
@@ -740,7 +807,7 @@
 netsnmp_table_index_find_next_row(netsnmp_container *c,
                                   netsnmp_table_request_info *tblreq)
 {
-    return _find_next_row(c, tblreq, NULL );
+    return (netsnmp_index*)_find_next_row(c, tblreq, NULL );
 }
 
 /* ==================================
diff --git a/agent/helpers/table_dataset.c b/agent/helpers/table_dataset.c
index 23e0deb..2403b2f 100644
--- a/agent/helpers/table_dataset.c
+++ b/agent/helpers/table_dataset.c
@@ -77,7 +77,7 @@
 /** deletes a single dataset table data.
  *  returns the (possibly still good) next pointer of the deleted data object.
  */
-NETSNMP_INLINE netsnmp_table_data_set_storage *
+NETSNMP_STATIC_INLINE netsnmp_table_data_set_storage *
 netsnmp_table_dataset_delete_data(netsnmp_table_data_set_storage *data)
 {
     netsnmp_table_data_set_storage *nextPtr = NULL;
@@ -108,7 +108,7 @@
     if (!row)
         return;
 
-    data = netsnmp_table_data_delete_row(row);
+    data = (netsnmp_table_data_set_storage*)netsnmp_table_data_delete_row(row);
     netsnmp_table_dataset_delete_all_data(data);
 }
 
@@ -490,10 +490,6 @@
 
         if (MODE_IS_SET(reqinfo->mode)) {
 
-            char buf[256]; /* is this reasonable size?? */
-            int  rc;
-            size_t len;
-
             /*
              * use a cached copy of the row for modification 
              */
@@ -502,30 +498,16 @@
              * cache location: may have been created already by other
              * SET requests in the same master request. 
              */
-            rc = snprintf(buf, sizeof(buf), "dataset_row_stash:%s:",
-                          datatable->table->name);
-            if ((-1 == rc) || (rc >= sizeof(buf))) {
-                snmp_log(LOG_ERR,"%s handler name too long\n",
-                         datatable->table->name);
-                netsnmp_set_request_error(reqinfo, request,
-                                          SNMP_ERR_GENERR);
+            stashp = netsnmp_table_dataset_get_or_create_stash(reqinfo,
+                                                               datatable,
+                                                               table_info);
+            if (NULL == stashp) {
+                netsnmp_set_request_error(reqinfo, request, SNMP_ERR_GENERR);
                 continue;
             }
-            len = sizeof(buf) - rc;
-            rc = snprint_objid(&buf[rc], len, table_info->index_oid,
-                               table_info->index_oid_len);
-            if (-1 == rc) {
-                snmp_log(LOG_ERR,"%s oid or name too long\n",
-                         datatable->table->name);
-                netsnmp_set_request_error(reqinfo, request,
-                                          SNMP_ERR_GENERR);
-                continue;
-            }
-            stashp = (netsnmp_oid_stash_node **)
-                netsnmp_table_get_or_create_row_stash(reqinfo, buf);
 
             newrowstash
-                = netsnmp_oid_stash_get_data(*stashp, suffix, suffix_len);
+                = (newrow_stash*)netsnmp_oid_stash_get_data(*stashp, suffix, suffix_len);
 
             if (!newrowstash) {
                 if (!row) {
@@ -593,9 +575,10 @@
         case MODE_GET:
         case MODE_GETNEXT:
         case MODE_GETBULK:     /* XXXWWW */
-            if (!data || data->type == SNMP_NOSUCHINSTANCE)
-                netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHINSTANCE);
-            else
+            if (!data || data->type == SNMP_NOSUCHINSTANCE) {
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_NOSUCHINSTANCE);
+            } else {
                 /*
                  * Note: data->data.voidp can be NULL, e.g. when a zero-length
                  * octet string has been stored in the table cache.
@@ -604,8 +587,9 @@
                                                 row,
                                                 table_info->colnum,
                                                 data->type,
-                                                data->data.voidp,
+                                       (u_char*)data->data.voidp,
                                                 data->data_len);
+            }
             break;
 
         case MODE_SET_RESERVE1:
@@ -798,9 +782,9 @@
     		    for (req = requests; req; req=req->next) {
         
 		    	/*
-         			* For requests that have the old row values,
-         			* so add the newly-created row information.
-         	    	*/
+                         * For requests that have the old row values,
+                         * so add the newly-created row information.
+                         */
         	    	if ((netsnmp_table_row *) netsnmp_extract_table_row(req) == row) {
 	    			netsnmp_request_remove_list_data(req, TABLE_DATA_ROW);
             			netsnmp_request_add_list_data(req,
@@ -849,7 +833,7 @@
                                      unsigned int column)
 {
     netsnmp_table_data_set_storage *data =
-        netsnmp_extract_table_row_data( request );
+        (netsnmp_table_data_set_storage*)netsnmp_extract_table_row_data( request );
     if (data) {
         data = netsnmp_table_data_set_find_column(data, column);
     }
@@ -1013,7 +997,7 @@
         struct tree    *tp2;
     
         if (!snmp_parse_oid(tp->augments, name, &name_length)) {
-            config_pwarn("I can't parse the augment tabel name");
+            config_pwarn("I can't parse the augment table name");
             snmp_log(LOG_WARNING, "  can't parse %s\n", tp->augments);
             SNMP_FREE (table_set);
             return;
@@ -1101,7 +1085,7 @@
     netsnmp_table_row *row;
     netsnmp_table_data_set_storage *dr;
 
-    line = copy_nword(line, tname, SNMP_MAXBUF_MEDIUM);
+    line = copy_nword(line, tname, sizeof(tname));
 
     tables = (data_set_tables *) netsnmp_get_list_data(auto_tables, tname);
     if (!tables) {
@@ -1124,7 +1108,7 @@
 
         DEBUGMSGTL(("table_set_add_row", "adding index of type %d\n",
                     vb->type));
-        buf_size = SNMP_MAXBUF_MEDIUM;
+        buf_size = sizeof(buf);
         line = read_config_read_memory(vb->type, line, buf, &buf_size);
         netsnmp_table_row_add_index(row, vb->type, buf, buf_size);
     }
@@ -1142,7 +1126,7 @@
             return;
         }
 
-        buf_size = SNMP_MAXBUF_MEDIUM;
+        buf_size = sizeof(buf);
         line = read_config_read_memory(dr->type, line, buf, &buf_size);
         DEBUGMSGTL(("table_set_add_row",
                     "adding data at column %d of type %d\n", dr->column,
@@ -1162,6 +1146,60 @@
 }
 
 
+netsnmp_oid_stash_node **
+netsnmp_table_dataset_get_or_create_stash(netsnmp_agent_request_info *reqinfo,
+                                          netsnmp_table_data_set *datatable,
+                                          netsnmp_table_request_info *table_info)
+{
+    netsnmp_oid_stash_node **stashp = NULL;
+    char                     buf[256]; /* is this reasonable size?? */
+    size_t                   len;
+    int                      rc;
+
+    rc = snprintf(buf, sizeof(buf), "dataset_row_stash:%s:",
+                  datatable->table->name);
+    if ((-1 == rc) || ((size_t)rc >= sizeof(buf))) {
+        snmp_log(LOG_ERR,"%s handler name too long\n", datatable->table->name);
+        return NULL;
+    }
+
+    len = sizeof(buf) - rc;
+    rc = snprint_objid(&buf[rc], len, table_info->index_oid,
+                       table_info->index_oid_len);
+    if (-1 == rc) {
+        snmp_log(LOG_ERR,"%s oid or name too long\n", datatable->table->name);
+        return NULL;
+    }
+
+    stashp = (netsnmp_oid_stash_node **)
+        netsnmp_table_get_or_create_row_stash(reqinfo, (u_char *) buf);
+    return stashp;
+}
+
+netsnmp_table_row *
+netsnmp_table_dataset_get_newrow(netsnmp_request_info *request,
+                                 netsnmp_agent_request_info *reqinfo,
+                                 int rootoid_len,
+                                 netsnmp_table_data_set *datatable,
+                                 netsnmp_table_request_info *table_info)
+{
+    oid * const suffix = request->requestvb->name + rootoid_len + 2;
+    size_t suffix_len = request->requestvb->name_length - (rootoid_len + 2);
+    netsnmp_oid_stash_node **stashp;
+    newrow_stash   *newrowstash;
+
+    stashp = netsnmp_table_dataset_get_or_create_stash(reqinfo, datatable,
+                                                       table_info);
+    if (NULL == stashp)
+        return NULL;
+
+    newrowstash = (newrow_stash*)netsnmp_oid_stash_get_data(*stashp, suffix, suffix_len);
+    if (NULL == newrowstash)
+        return NULL;
+
+    return newrowstash->newrow;
+}
+
 /* ==================================
  *
  * Data Set API: Row operations
@@ -1235,7 +1273,7 @@
         }
         data->column = column;
         data->writable = writable;
-        data->next = row->data;
+        data->next = (struct netsnmp_table_data_set_storage_s*)row->data;
         row->data = data;
     } else {
         data->writable = writable;
@@ -1244,8 +1282,24 @@
 }
 
 /**
- * sets a given column in a row with data given a type, value, and
- * length.  Data is memdup'ed by the function.
+ * Sets a given column in a row with data given a type, value,
+ * and length. Data is memdup'ed by the function, at least if
+ * type != SNMP_NOSUCHINSTANCE and if value_len > 0.
+ *
+ * @param[in] row       Pointer to the row to be modified.
+ * @param[in] column    Index of the column to be modified.
+ * @param[in] type      Either the ASN type of the value to be set or
+ *   SNMP_NOSUCHINSTANCE.
+ * @param[in] value     If type != SNMP_NOSUCHINSTANCE, pointer to the
+ *   new value. May be NULL if value_len == 0, e.g. when storing a
+ *   zero-length octet string. Ignored when type == SNMP_NOSUCHINSTANCE.
+ * @param[in] value_len If type != SNMP_NOSUCHINSTANCE, number of bytes
+ *   occupied by *value. Ignored when type == SNMP_NOSUCHINSTANCE.
+ *
+ * @return SNMPERR_SUCCESS upon success; SNMPERR_MALLOC when out of memory;
+ *   or SNMPERR_GENERR when row == 0 or when type does not match the datatype
+ *   of the data stored in *row. 
+ *
  */
 int
 netsnmp_set_row_column(netsnmp_table_row *row, unsigned int column,
@@ -1271,26 +1325,32 @@
 
         data->column = column;
         data->type = type;
-        data->next = row->data;
+        data->next = (struct netsnmp_table_data_set_storage_s*)row->data;
         row->data = data;
     }
 
-    if (value) {
-        if (data->type != type)
-            return SNMPERR_GENERR;
+    /* Transitions from / to SNMP_NOSUCHINSTANCE are allowed, but no other transitions. */
+    if (data->type != type && data->type != SNMP_NOSUCHINSTANCE
+        && type != SNMP_NOSUCHINSTANCE)
+        return SNMPERR_GENERR;
 
-        SNMP_FREE(data->data.voidp);
-        if (value_len) {
-            data->data.string = netsnmp_memdup(value, (value_len));
-            if (!data->data.string) {
-                snmp_log(LOG_CRIT, "no memory in netsnmp_set_row_column");
-                return SNMPERR_MALLOC;
-            }
-        } else {
-            data->data.string = malloc(1);
-        }
-        data->data_len = value_len;
+    /* Return now if neither the type nor the data itself has been modified. */
+    if (data->type == type && data->data_len == value_len
+        && (value == NULL || memcmp(&data->data.string, value, value_len) == 0))
+            return SNMPERR_SUCCESS;
+
+    /* Reallocate memory and store the new value. */
+    data->data.voidp = realloc(data->data.voidp, value ? value_len : 0);
+    if (value && value_len && !data->data.voidp) {
+        data->data_len = 0;
+        data->type = SNMP_NOSUCHINSTANCE;
+        snmp_log(LOG_CRIT, "no memory in netsnmp_set_row_column");
+        return SNMPERR_MALLOC;
     }
+    if (value && value_len)
+        memcpy(data->data.string, value, value_len);
+    data->type = type;
+    data->data_len = value_len;
     return SNMPERR_SUCCESS;
 }
 
@@ -1322,7 +1382,7 @@
 
     if (tset)
         while ((type = va_arg(debugargs, int)) != 0)
-            netsnmp_table_data_add_index(tset->table, type);
+            netsnmp_table_data_add_index(tset->table, (u_char)type);
 
     va_end(debugargs);
 }
diff --git a/agent/helpers/table_iterator.c b/agent/helpers/table_iterator.c
index bcca797..87c7412 100644
--- a/agent/helpers/table_iterator.c
+++ b/agent/helpers/table_iterator.c
@@ -315,7 +315,7 @@
 
 static void
 netsnmp_free_ti_cache(void *it) {
-    ti_cache_info *beer = it;
+    ti_cache_info *beer = (ti_cache_info*)it;
     if (!it) return;
     if (beer->data_context && beer->free_context) {
             (beer->free_context)(beer->data_context, beer->iinfo);
@@ -341,7 +341,7 @@
         return NULL;
 
     /* extract existing cached state */
-    ti_info = netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
+    ti_info = (ti_cache_info*)netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
 
     /* no existing cached state.  make a new one. */
     if (!ti_info) {
@@ -476,7 +476,7 @@
                 request->processed = TABLE_ITERATOR_NOTAGAIN;
             }
 
-            ti_info =
+            ti_info = (ti_cache_info*)
                 netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
             if (!ti_info) {
                 ti_info = SNMP_MALLOC_TYPEDEF(ti_cache_info);
@@ -576,7 +576,7 @@
                     if (request->processed)
                         continue;
 
-                    /* XXX: store in an array for faster retrival */
+                    /* XXX: store in an array for faster retrieval */
                     table_info = netsnmp_extract_table_info(request);
                     if (table_info == NULL) {
                         /*
@@ -590,7 +590,7 @@
                     }
                     coloid[reginfo->rootoid_len + 1] = table_info->colnum;
 
-                    ti_info =
+                    ti_info = (ti_cache_info*)
                         netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
 
                     switch(reqinfo->mode) {
@@ -763,7 +763,7 @@
                 for(request = requests ; request; request = request->next) {
                     if (request->processed)
                         continue;
-                    ti_info =
+                    ti_info = (ti_cache_info*)
                         netsnmp_request_get_list_data(request,
                                                       TI_REQUEST_CACHE);
                     if (!ti_info->results) {
@@ -794,7 +794,7 @@
         for(request = requests ; request; request = request->next) {
             if (request->processed)
                 continue;
-            ti_info =
+            ti_info = (ti_cache_info*)
                 netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
             table_info =
                 netsnmp_extract_table_info(request);
diff --git a/agent/helpers/table_tdata.c b/agent/helpers/table_tdata.c
index a57e00c..cf166e3 100644
--- a/agent/helpers/table_tdata.c
+++ b/agent/helpers/table_tdata.c
@@ -58,9 +58,17 @@
     if ( !table )
         return NULL;
 
+    table->flags = flags;
     if (name)
         table->name = strdup(name);
-    table->container = netsnmp_container_find( "table_container" );
+
+    if (!(table->flags & TDATA_FLAG_NO_CONTAINER)) {
+        table->container = netsnmp_container_find( name );
+        if (!table->container)
+            table->container = netsnmp_container_find( "table_container" );
+        if (table->container)
+            table->container->container_name = strdup(name);
+    }
     return table;
 }
 
@@ -214,7 +222,9 @@
     /*
      * add this row to the stored table
      */
-    CONTAINER_INSERT( table->container, row );
+    if (CONTAINER_INSERT( table->container, row ) != 0)
+        return SNMPERR_GENERR;
+
     DEBUGMSGTL(("tdata_add_row", "added row (%p)\n", row));
 
     return SNMPERR_SUCCESS;
@@ -316,9 +326,13 @@
     netsnmp_request_info       *request;
     netsnmp_table_request_info *table_info;
     netsnmp_tdata_row          *row;
+    int                         need_processing = 1;
 
     switch ( reqinfo->mode ) {
     case MODE_GET:
+        need_processing = 0; /* only need processing if some vars found */
+        /** Fall through */
+
     case MODE_SET_RESERVE1:
 
         for (request = requests; request; request = request->next) {
@@ -326,10 +340,18 @@
                 continue;
     
             table_info = netsnmp_extract_table_info(request);
-            if (!table_info)
-                continue;           /* ack */
-            row = netsnmp_container_table_row_extract( request );
-
+            if (!table_info) {
+                netsnmp_assert(table_info); /* yes, this will always hit */
+                netsnmp_set_request_error(reqinfo, request, SNMP_ERR_GENERR);
+                continue;           /* eek */
+            }
+            row = (netsnmp_tdata_row*)netsnmp_container_table_row_extract( request );
+            if (!row && (reqinfo->mode == MODE_GET)) {
+                netsnmp_assert(row); /* yes, this will always hit */
+                netsnmp_set_request_error(reqinfo, request, SNMP_ERR_GENERR);
+                continue;           /* eek */
+            }
+            ++need_processing;
             netsnmp_request_add_list_data(request,
                                       netsnmp_create_data_list(
                                           TABLE_TDATA_TABLE, table, NULL));
@@ -337,6 +359,9 @@
                                       netsnmp_create_data_list(
                                           TABLE_TDATA_ROW,   row,   NULL));
         }
+        /** skip next handler if processing not needed */
+        if (!need_processing)
+            handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
     }
 
     /* next handler called automatically - 'AUTO_NEXT' */
@@ -374,8 +399,8 @@
 netsnmp_container *
 netsnmp_tdata_extract_container(netsnmp_request_info *request)
 {
-    netsnmp_tdata *tdata = netsnmp_request_get_list_data(request,
-                                                         TABLE_TDATA_TABLE);
+    netsnmp_tdata *tdata = (netsnmp_tdata*)
+        netsnmp_request_get_list_data(request, TABLE_TDATA_TABLE);
     return ( tdata ? tdata->container : NULL );
 }
 
@@ -407,6 +432,14 @@
     netsnmp_container_table_row_insert(request, (netsnmp_index *)row);
 }
 
+/** inserts a newly created tdata row into a request */
+NETSNMP_INLINE void
+netsnmp_remove_tdata_row(netsnmp_request_info *request,
+                         netsnmp_tdata_row *row)
+{
+    netsnmp_container_table_row_remove(request, (netsnmp_index *)row);
+}
+
 
 /* ==================================
  *
@@ -436,7 +469,7 @@
 netsnmp_tdata_row_get(  netsnmp_tdata     *table,
                         netsnmp_tdata_row *row)
 {
-    return CONTAINER_FIND( table->container, row );
+    return (netsnmp_tdata_row*)CONTAINER_FIND( table->container, row );
 }
 
 /** returns the next row in the table */
@@ -471,7 +504,7 @@
 
     index.oids = searchfor;
     index.len  = searchfor_len;
-    return CONTAINER_FIND( table->container, &index );
+    return (netsnmp_tdata_row*)CONTAINER_FIND( table->container, &index );
 }
 
 /** finds the lexically next row in the 'tdata' table
@@ -500,7 +533,7 @@
 
     index.oids = searchfor;
     index.len  = searchfor_len;
-    return CONTAINER_NEXT( table->container, &index );
+    return (netsnmp_tdata_row*)CONTAINER_NEXT( table->container, &index );
 }
 
 int
diff --git a/agent/helpers/watcher.c b/agent/helpers/watcher.c
index 8ef456a..de59680 100644
--- a/agent/helpers/watcher.c
+++ b/agent/helpers/watcher.c
@@ -10,6 +10,15 @@
 
 #include <string.h>
 
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
+{
+    free(p);
+}
+#else
+#define free_wrapper free
+#endif
+
 /** @defgroup watcher watcher
  *  Watch a specified variable and process it as an instance or scalar object
  *  @ingroup leaf
@@ -142,7 +151,7 @@
 NETSNMP_STATIC_INLINE netsnmp_watcher_cache*
 netsnmp_watcher_cache_create(const void* data, size_t size)
 {
-    netsnmp_watcher_cache *res =
+    netsnmp_watcher_cache *res = (netsnmp_watcher_cache*)
         malloc(sizeof(netsnmp_watcher_cache) + size - 1);
     if (res) {
         res->size = size;
@@ -213,7 +222,7 @@
         } else
             netsnmp_request_add_list_data(requests,
                                           netsnmp_create_data_list
-                                          ("watcher", old_data, free));
+                                          ("watcher", old_data, &free_wrapper));
         break;
 
     case MODE_SET_FREE:
@@ -231,7 +240,7 @@
         break;
 
     case MODE_SET_UNDO:
-        old_data = netsnmp_request_get_list_data(requests, "watcher");
+        old_data = (netsnmp_watcher_cache*)netsnmp_request_get_list_data(requests, "watcher");
         set_data(winfo, old_data->data, old_data->size);
         break;
 
diff --git a/agent/kernel.c b/agent/kernel.c
index bc476da..00fde77 100644
--- a/agent/kernel.c
+++ b/agent/kernel.c
@@ -1,7 +1,19 @@
-
-/*
- *  13 Jun 91  wsak (wk0x@andrew) added mips support
+/***********************************************************************
+   Net-SNMP - Simple Network Management Protocol agent library.
+ ***********************************************************************/
+/** @file kernel.c
+ *     Net-SNMP Kernel Data Access Library.
+ *     Provides access to kernel virtual memory for systems that
+ *     support it.
+ * @author   See README file for a list of contributors
  */
+/* Copyrights:
+ *     Copyright holders are listed in README file.
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted. License terms are specified
+ *     in COPYING file distributed with the Net-SNMP package.
+ */
+/***********************************************************************/
 
 #include <net-snmp/net-snmp-config.h>
 
@@ -40,7 +52,7 @@
 
 
 #if HAVE_KVM_H
-kvm_t          *kd;
+kvm_t *kd = NULL;
 
 /**
  * Initialize the support for accessing kernel virtual memory.
@@ -56,6 +68,12 @@
     char            err[4096];
 
     kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, err);
+    if (!kd)
+#ifdef KVM_NO_FILES
+	kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, err);
+#else
+	kd = kvm_openfiles(NULL, "/dev/null", NULL, O_RDONLY, err);
+#endif
     if (!kd && !netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                        NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
         snmp_log(LOG_CRIT, "init_kmem: kvm_openfiles failed: %s\n", err);
@@ -73,18 +91,18 @@
     return res;
 }
 
-
-/*
- *  klookup:
+/** Reads kernel memory.
+ *  Seeks to the specified location in kmem, then
+ *  does a read of given amount ob bytes into target buffer.
  *
- *  It seeks to the location  off  in kmem
- *  It does a read into  target  of  siz  bytes.
+ * @param off The location to seek.
  *
- *  Return 0 on failure and 1 on sucess.
+ * @param target The target buffer to read into.
  *
+ * @param siz Number of bytes to read.
+ *
+ * @return gives 1 on success and 0 on failure.
  */
-
-
 int
 klookup(unsigned long off, void *target, size_t siz)
 {
@@ -107,6 +125,18 @@
     return 1;
 }
 
+/** Closes the kernel memory support.
+ */
+void
+free_kmem(void)
+{
+    if (kd != NULL)
+    {
+      kvm_close(kd);
+      kd = NULL;
+    }
+}
+
 #else                           /* HAVE_KVM_H */
 
 static off_t    klseek(off_t);
@@ -151,19 +181,17 @@
     return res;
 }
 
-
-/*
+/** @private
  *  Seek into the kernel for a value.
  */
-static          off_t
+static off_t
 klseek(off_t base)
 {
     return (lseek(kmem, (off_t) base, SEEK_SET));
 }
 
-
-/*
- *  Read from the kernel 
+/** @private
+ *  Read from the kernel.
  */
 static int
 klread(char *buf, int buflen)
@@ -171,18 +199,18 @@
     return (read(kmem, buf, buflen));
 }
 
-
-/*
- *  klookup:
+/** Reads kernel memory.
+ *  Seeks to the specified location in kmem, then
+ *  does a read of given amount ob bytes into target buffer.
  *
- *  It seeks to the location  off  in kmem
- *  It does a read into  target  of  siz  bytes.
+ * @param off The location to seek.
  *
- *  Return 0 on failure and 1 on sucess.
+ * @param target The target buffer to read into.
  *
+ * @param siz Number of bytes to read.
+ *
+ * @return gives 1 on success and 0 on failure.
  */
-
-
 int
 klookup(unsigned long off, void *target, size_t siz)
 {
@@ -212,6 +240,27 @@
     return (1);
 }
 
+/** Closes the kernel memory support.
+ */
+void
+free_kmem(void)
+{
+    if (swap >= 0) {
+        close(swap);
+        swap = -1;
+    }
+    if (mem >= 0) {
+        close(mem);
+        mem = -1;
+    }
+    if (kmem >= 0) {
+        close(kmem);
+        kmem = -1;
+    }
+}
+
 #endif                          /* HAVE_KVM_H */
 
+#else
+int unused;	/* Suppress "empty translation unit" warning */
 #endif                          /* NETSNMP_CAN_USE_NLIST */
diff --git a/agent/kernel.h b/agent/kernel.h
index eb6a74c..131687a 100644
--- a/agent/kernel.h
+++ b/agent/kernel.h
@@ -1,7 +1,24 @@
+/***********************************************************************
+   Net-SNMP - Simple Network Management Protocol agent library.
+ ***********************************************************************/
+/** @file kernel.h
+ *     Net-SNMP Kernel Data Access Library - header.
+ *     Provides access to kernel virtual memory for systems that
+ *     support it.
+ * @author   See README file for a list of contributors
+ */
+/* Copyrights:
+ *     Copyright holders are listed in README file.
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted. License terms are specified
+ *     in COPYING file distributed with the Net-SNMP package.
+ */
+/***********************************************************************/
 
 #ifdef NETSNMP_CAN_USE_NLIST
 extern int      init_kmem(const char *);
 extern int      klookup(unsigned long, void *, size_t);
+extern void     free_kmem(void);
 #define NETSNMP_KLOOKUP(x,y,z) klookup((unsigned long) x,y,z)
 #else
 #define NETSNMP_KLOOKUP(x,y,z) (0)
@@ -11,3 +28,4 @@
 #include <kvm.h>
 extern kvm_t   *kd;
 #endif
+/***********************************************************************/
diff --git a/agent/mib_modules.c b/agent/mib_modules.c
index ea8271c..cde317e 100644
--- a/agent/mib_modules.c
+++ b/agent/mib_modules.c
@@ -17,11 +17,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -33,9 +29,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
diff --git a/agent/mibgroup/Makefile.depend b/agent/mibgroup/Makefile.depend
index fdd5fbb..dabf0ab 100644
--- a/agent/mibgroup/Makefile.depend
+++ b/agent/mibgroup/Makefile.depend
@@ -8,12 +8,16 @@
 ./header_complex.lo: ../../include/net-snmp/net-snmp-includes.h
 ./header_complex.lo: ../../include/net-snmp/definitions.h
 ./header_complex.lo: ../../include/net-snmp/types.h
+./header_complex.lo: ../../include/net-snmp/library/oid.h
 ./header_complex.lo: ../../include/net-snmp/library/types.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_api.h
 ./header_complex.lo: ../../include/net-snmp/varbind_api.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_client.h
 ./header_complex.lo: ../../include/net-snmp/pdu_api.h
 ./header_complex.lo: ../../include/net-snmp/library/asn1.h
+./header_complex.lo: ../../include/net-snmp/output_api.h
+./header_complex.lo: ../../include/net-snmp/library/snmp_debug.h
+./header_complex.lo: ../../include/net-snmp/library/snmp_logging.h
 ./header_complex.lo: ../../include/net-snmp/session_api.h
 ./header_complex.lo: ../../include/net-snmp/library/callback.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -21,8 +25,12 @@
 ./header_complex.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./header_complex.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./header_complex.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./header_complex.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./header_complex.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./header_complex.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -44,7 +52,6 @@
 ./header_complex.lo: ../../include/net-snmp/library/check_varbind.h
 ./header_complex.lo: ../../include/net-snmp/library/container.h
 ./header_complex.lo: ../../include/net-snmp/library/factory.h
-./header_complex.lo: ../../include/net-snmp/library/snmp_logging.h
 ./header_complex.lo: ../../include/net-snmp/library/container_binary_array.h
 ./header_complex.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./header_complex.lo: ../../include/net-snmp/library/container_iterator.h
@@ -54,11 +61,10 @@
 ./header_complex.lo: ../../include/net-snmp/config_api.h
 ./header_complex.lo: ../../include/net-snmp/library/read_config.h
 ./header_complex.lo: ../../include/net-snmp/library/default_store.h
+./header_complex.lo: ../../include/net-snmp/net-snmp-config.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_enum.h
 ./header_complex.lo: ../../include/net-snmp/library/vacm.h
-./header_complex.lo: ../../include/net-snmp/output_api.h
-./header_complex.lo: ../../include/net-snmp/library/snmp_debug.h
 ./header_complex.lo: ../../include/net-snmp/snmpv3_api.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpv3.h
 ./header_complex.lo: ../../include/net-snmp/library/transform_oids.h
@@ -103,26 +109,24 @@
 ./header_complex.lo: ../../include/net-snmp/agent/table_iterator.h
 ./header_complex.lo: ../../include/net-snmp/agent/table_container.h
 ./header_complex.lo: ../../include/net-snmp/agent/table_array.h
-./header_complex.lo: ../../include/net-snmp/agent/mfd.h header_complex.h
+./header_complex.lo: ../../include/net-snmp/agent/mfd.h
+./header_complex.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./header_complex.lo: header_complex.h
 ./kernel_sunos5.lo: ../../include/net-snmp/net-snmp-config.h
-./kernel_sunos5.lo: ../../include/net-snmp/system/linux.h
-./kernel_sunos5.lo: ../../include/net-snmp/system/sysv.h
-./kernel_sunos5.lo: ../../include/net-snmp/system/generic.h
-./kernel_sunos5.lo: ../../include/net-snmp/machine/generic.h
 ./testhandler.lo: ../../include/net-snmp/net-snmp-config.h
-./testhandler.lo: ../../include/net-snmp/system/linux.h
-./testhandler.lo: ../../include/net-snmp/system/sysv.h
-./testhandler.lo: ../../include/net-snmp/system/generic.h
-./testhandler.lo: ../../include/net-snmp/machine/generic.h
 ./testhandler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./testhandler.lo: ../../include/net-snmp/definitions.h
 ./testhandler.lo: ../../include/net-snmp/types.h
+./testhandler.lo: ../../include/net-snmp/library/oid.h
 ./testhandler.lo: ../../include/net-snmp/library/types.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_api.h
 ./testhandler.lo: ../../include/net-snmp/varbind_api.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_client.h
 ./testhandler.lo: ../../include/net-snmp/pdu_api.h
 ./testhandler.lo: ../../include/net-snmp/library/asn1.h
+./testhandler.lo: ../../include/net-snmp/output_api.h
+./testhandler.lo: ../../include/net-snmp/library/snmp_debug.h
+./testhandler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./testhandler.lo: ../../include/net-snmp/session_api.h
 ./testhandler.lo: ../../include/net-snmp/library/callback.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -130,8 +134,12 @@
 ./testhandler.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./testhandler.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./testhandler.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./testhandler.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./testhandler.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./testhandler.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -153,7 +161,6 @@
 ./testhandler.lo: ../../include/net-snmp/library/check_varbind.h
 ./testhandler.lo: ../../include/net-snmp/library/container.h
 ./testhandler.lo: ../../include/net-snmp/library/factory.h
-./testhandler.lo: ../../include/net-snmp/library/snmp_logging.h
 ./testhandler.lo: ../../include/net-snmp/library/container_binary_array.h
 ./testhandler.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./testhandler.lo: ../../include/net-snmp/library/container_iterator.h
@@ -166,8 +173,6 @@
 ./testhandler.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_enum.h
 ./testhandler.lo: ../../include/net-snmp/library/vacm.h
-./testhandler.lo: ../../include/net-snmp/output_api.h
-./testhandler.lo: ../../include/net-snmp/library/snmp_debug.h
 ./testhandler.lo: ../../include/net-snmp/snmpv3_api.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpv3.h
 ./testhandler.lo: ../../include/net-snmp/library/transform_oids.h
@@ -212,21 +217,23 @@
 ./testhandler.lo: ../../include/net-snmp/agent/table_iterator.h
 ./testhandler.lo: ../../include/net-snmp/agent/table_container.h
 ./testhandler.lo: ../../include/net-snmp/agent/table_array.h
-./testhandler.lo: ../../include/net-snmp/agent/mfd.h testhandler.h
+./testhandler.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./util_funcs.lo: ../../include/net-snmp/system/sysv.h
-./util_funcs.lo: ../../include/net-snmp/system/generic.h
-./util_funcs.lo: ../../include/net-snmp/machine/generic.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
+./util_funcs.lo: ../../include/net-snmp/library/oid.h
 ./util_funcs.lo: ../../include/net-snmp/library/types.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_api.h
 ./util_funcs.lo: ../../include/net-snmp/varbind_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_client.h
 ./util_funcs.lo: ../../include/net-snmp/pdu_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs.lo: ../../include/net-snmp/output_api.h
+./util_funcs.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs.lo: ../../include/net-snmp/session_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/callback.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -234,8 +241,12 @@
 ./util_funcs.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./util_funcs.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -257,7 +268,6 @@
 ./util_funcs.lo: ../../include/net-snmp/library/check_varbind.h
 ./util_funcs.lo: ../../include/net-snmp/library/container.h
 ./util_funcs.lo: ../../include/net-snmp/library/factory.h
-./util_funcs.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs.lo: ../../include/net-snmp/library/container_binary_array.h
 ./util_funcs.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./util_funcs.lo: ../../include/net-snmp/library/container_iterator.h
@@ -270,8 +280,6 @@
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_enum.h
 ./util_funcs.lo: ../../include/net-snmp/library/vacm.h
-./util_funcs.lo: ../../include/net-snmp/output_api.h
-./util_funcs.lo: ../../include/net-snmp/library/snmp_debug.h
 ./util_funcs.lo: ../../include/net-snmp/snmpv3_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpv3.h
 ./util_funcs.lo: ../../include/net-snmp/library/transform_oids.h
@@ -316,30 +324,28 @@
 ./util_funcs.lo: ../../include/net-snmp/agent/table_iterator.h
 ./util_funcs.lo: ../../include/net-snmp/agent/table_container.h
 ./util_funcs.lo: ../../include/net-snmp/agent/table_array.h
-./util_funcs.lo: ../../include/net-snmp/agent/mfd.h struct.h util_funcs.h
-./util_funcs.lo: util_funcs/header_generic.h util_funcs/header_simple_table.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/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/system/linux.h
-./winExtDLL.lo: ../../include/net-snmp/system/sysv.h
-./winExtDLL.lo: ../../include/net-snmp/system/generic.h
-./winExtDLL.lo: ../../include/net-snmp/machine/generic.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/system/linux.h
-./agent/extend.lo: ../../include/net-snmp/system/sysv.h
-./agent/extend.lo: ../../include/net-snmp/system/generic.h
-./agent/extend.lo: ../../include/net-snmp/machine/generic.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
+./agent/extend.lo: ../../include/net-snmp/library/oid.h
 ./agent/extend.lo: ../../include/net-snmp/library/types.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/extend.lo: ../../include/net-snmp/varbind_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/extend.lo: ../../include/net-snmp/pdu_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/asn1.h
+./agent/extend.lo: ../../include/net-snmp/output_api.h
+./agent/extend.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/extend.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/extend.lo: ../../include/net-snmp/session_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/callback.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -347,8 +353,12 @@
 ./agent/extend.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/extend.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/extend.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/extend.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/extend.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/extend.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -370,7 +380,6 @@
 ./agent/extend.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/extend.lo: ../../include/net-snmp/library/container.h
 ./agent/extend.lo: ../../include/net-snmp/library/factory.h
-./agent/extend.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/extend.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/extend.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/extend.lo: ../../include/net-snmp/library/container_iterator.h
@@ -383,8 +392,6 @@
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/extend.lo: ../../include/net-snmp/library/vacm.h
-./agent/extend.lo: ../../include/net-snmp/output_api.h
-./agent/extend.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/extend.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/extend.lo: ../../include/net-snmp/library/transform_oids.h
@@ -430,23 +437,24 @@
 ./agent/extend.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/extend.lo: ../../include/net-snmp/agent/table_array.h
 ./agent/extend.lo: ../../include/net-snmp/agent/mfd.h
+./agent/extend.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agent/extend.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./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/system/linux.h
-./agent/nsCache.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsCache.lo: ../../include/net-snmp/system/generic.h
-./agent/nsCache.lo: ../../include/net-snmp/machine/generic.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
+./agent/nsCache.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/types.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsCache.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsCache.lo: ../../include/net-snmp/output_api.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsCache.lo: ../../include/net-snmp/session_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -454,8 +462,12 @@
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -477,7 +489,6 @@
 ./agent/nsCache.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/container.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/factory.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/container_iterator.h
@@ -490,8 +501,6 @@
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsCache.lo: ../../include/net-snmp/output_api.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsCache.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/transform_oids.h
@@ -536,21 +545,23 @@
 ./agent/nsCache.lo: ../../include/net-snmp/agent/table_iterator.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/table_array.h
-./agent/nsCache.lo: ../../include/net-snmp/agent/mfd.h agent/nsCache.h
+./agent/nsCache.lo: ../../include/net-snmp/agent/mfd.h
+./agent/nsCache.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./agent/nsCache.lo: agent/nsCache.h
 ./agent/nsDebug.lo: ../../include/net-snmp/net-snmp-config.h
-./agent/nsDebug.lo: ../../include/net-snmp/system/linux.h
-./agent/nsDebug.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsDebug.lo: ../../include/net-snmp/system/generic.h
-./agent/nsDebug.lo: ../../include/net-snmp/machine/generic.h
 ./agent/nsDebug.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsDebug.lo: ../../include/net-snmp/definitions.h
 ./agent/nsDebug.lo: ../../include/net-snmp/types.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/types.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsDebug.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsDebug.lo: ../../include/net-snmp/output_api.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsDebug.lo: ../../include/net-snmp/session_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -558,8 +569,12 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -581,7 +596,6 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/container.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/factory.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/container_iterator.h
@@ -594,8 +608,6 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsDebug.lo: ../../include/net-snmp/output_api.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsDebug.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/transform_oids.h
@@ -640,21 +652,23 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/table_iterator.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/table_array.h
-./agent/nsDebug.lo: ../../include/net-snmp/agent/mfd.h agent/nsDebug.h
+./agent/nsDebug.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./agent/nsLogging.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsLogging.lo: ../../include/net-snmp/system/generic.h
-./agent/nsLogging.lo: ../../include/net-snmp/machine/generic.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
+./agent/nsLogging.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/types.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsLogging.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsLogging.lo: ../../include/net-snmp/output_api.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsLogging.lo: ../../include/net-snmp/session_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -662,8 +676,12 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -685,7 +703,6 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/container.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/factory.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/container_iterator.h
@@ -698,8 +715,6 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsLogging.lo: ../../include/net-snmp/output_api.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsLogging.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/transform_oids.h
@@ -744,21 +759,23 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/table_iterator.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/table_array.h
-./agent/nsLogging.lo: ../../include/net-snmp/agent/mfd.h agent/nsLogging.h
+./agent/nsLogging.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/system/generic.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/machine/generic.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
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/types.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/output_api.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/session_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -766,8 +783,12 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -789,7 +810,6 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/factory.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -802,8 +822,6 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/output_api.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -849,21 +867,22 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/table_array.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/system/generic.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/machine/generic.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
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/types.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/output_api.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/session_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -871,8 +890,12 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -894,7 +917,6 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/factory.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -907,8 +929,6 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/output_api.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -954,21 +974,22 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/table_array.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/system/sysv.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/system/generic.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/machine/generic.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
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/oid.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/types.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/pdu_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/asn1.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/output_api.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/session_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -976,8 +997,12 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -999,7 +1024,6 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/factory.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1012,8 +1036,6 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/vacm.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/output_api.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1059,21 +1081,22 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/table_container.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/table_array.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./agentx/agentx_config.lo: ../../include/net-snmp/system/sysv.h
-./agentx/agentx_config.lo: ../../include/net-snmp/system/generic.h
-./agentx/agentx_config.lo: ../../include/net-snmp/machine/generic.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
+./agentx/agentx_config.lo: ../../include/net-snmp/library/oid.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/types.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/asn1.h
+./agentx/agentx_config.lo: ../../include/net-snmp/output_api.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/session_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/callback.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1081,8 +1104,12 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1104,7 +1131,6 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/container.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/factory.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1117,8 +1143,6 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/vacm.h
-./agentx/agentx_config.lo: ../../include/net-snmp/output_api.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1164,22 +1188,23 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/table_container.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/table_array.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/mfd.h
+./agentx/agentx_config.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./agentx/client.lo: ../../include/net-snmp/system/sysv.h
-./agentx/client.lo: ../../include/net-snmp/system/generic.h
-./agentx/client.lo: ../../include/net-snmp/machine/generic.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
+./agentx/client.lo: ../../include/net-snmp/library/oid.h
 ./agentx/client.lo: ../../include/net-snmp/library/types.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/client.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/client.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/asn1.h
+./agentx/client.lo: ../../include/net-snmp/output_api.h
+./agentx/client.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/client.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/client.lo: ../../include/net-snmp/session_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/callback.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1187,8 +1212,12 @@
 ./agentx/client.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/client.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/client.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/client.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/client.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/client.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1210,7 +1239,6 @@
 ./agentx/client.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/client.lo: ../../include/net-snmp/library/container.h
 ./agentx/client.lo: ../../include/net-snmp/library/factory.h
-./agentx/client.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/client.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/client.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/client.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1223,8 +1251,6 @@
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/client.lo: ../../include/net-snmp/library/vacm.h
-./agentx/client.lo: ../../include/net-snmp/output_api.h
-./agentx/client.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/client.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/client.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1270,22 +1296,23 @@
 ./agentx/client.lo: ../../include/net-snmp/agent/table_container.h
 ./agentx/client.lo: ../../include/net-snmp/agent/table_array.h
 ./agentx/client.lo: ../../include/net-snmp/agent/mfd.h
+./agentx/client.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./agentx/master_admin.lo: ../../include/net-snmp/system/sysv.h
-./agentx/master_admin.lo: ../../include/net-snmp/system/generic.h
-./agentx/master_admin.lo: ../../include/net-snmp/machine/generic.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
+./agentx/master_admin.lo: ../../include/net-snmp/library/oid.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/types.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/master_admin.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/asn1.h
+./agentx/master_admin.lo: ../../include/net-snmp/output_api.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/master_admin.lo: ../../include/net-snmp/session_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/callback.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1293,8 +1320,12 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1316,7 +1347,6 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/container.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/factory.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1329,8 +1359,6 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/vacm.h
-./agentx/master_admin.lo: ../../include/net-snmp/output_api.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/master_admin.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1376,25 +1404,26 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/table_container.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/table_array.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/mfd.h
+./agentx/master_admin.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./agentx/master_admin.lo: agentx/protocol.h agentx/client.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/agent_index.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./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/system/linux.h
-./agentx/master.lo: ../../include/net-snmp/system/sysv.h
-./agentx/master.lo: ../../include/net-snmp/system/generic.h
-./agentx/master.lo: ../../include/net-snmp/machine/generic.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
+./agentx/master.lo: ../../include/net-snmp/library/oid.h
 ./agentx/master.lo: ../../include/net-snmp/library/types.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/master.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/master.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/master.lo: ../../include/net-snmp/library/asn1.h
+./agentx/master.lo: ../../include/net-snmp/output_api.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/master.lo: ../../include/net-snmp/session_api.h
 ./agentx/master.lo: ../../include/net-snmp/library/callback.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1402,8 +1431,12 @@
 ./agentx/master.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/master.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1425,7 +1458,6 @@
 ./agentx/master.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/master.lo: ../../include/net-snmp/library/container.h
 ./agentx/master.lo: ../../include/net-snmp/library/factory.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/master.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/master.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/master.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1438,8 +1470,6 @@
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/master.lo: ../../include/net-snmp/library/vacm.h
-./agentx/master.lo: ../../include/net-snmp/output_api.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/master.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/master.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/master.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1484,22 +1514,24 @@
 ./agentx/master.lo: ../../include/net-snmp/agent/table_iterator.h
 ./agentx/master.lo: ../../include/net-snmp/agent/table_container.h
 ./agentx/master.lo: ../../include/net-snmp/agent/table_array.h
-./agentx/master.lo: ../../include/net-snmp/agent/mfd.h ../../agent/snmpd.h
-./agentx/master.lo: agentx/protocol.h agentx/master_admin.h
+./agentx/master.lo: ../../include/net-snmp/agent/mfd.h
+./agentx/master.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./agentx/master.lo: ../../agent/snmpd.h agentx/protocol.h
+./agentx/master.lo: agentx/master_admin.h
 ./agentx/protocol.lo: ../../include/net-snmp/net-snmp-config.h
-./agentx/protocol.lo: ../../include/net-snmp/system/linux.h
-./agentx/protocol.lo: ../../include/net-snmp/system/sysv.h
-./agentx/protocol.lo: ../../include/net-snmp/system/generic.h
-./agentx/protocol.lo: ../../include/net-snmp/machine/generic.h
 ./agentx/protocol.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/protocol.lo: ../../include/net-snmp/definitions.h
 ./agentx/protocol.lo: ../../include/net-snmp/types.h
+./agentx/protocol.lo: ../../include/net-snmp/library/oid.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/types.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/protocol.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/asn1.h
+./agentx/protocol.lo: ../../include/net-snmp/output_api.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/protocol.lo: ../../include/net-snmp/session_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/callback.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1507,8 +1539,12 @@
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1530,7 +1566,6 @@
 ./agentx/protocol.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/container.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/factory.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1543,8 +1578,6 @@
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/vacm.h
-./agentx/protocol.lo: ../../include/net-snmp/output_api.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/protocol.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1556,19 +1589,19 @@
 ./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/system/linux.h
-./agentx/subagent.lo: ../../include/net-snmp/system/sysv.h
-./agentx/subagent.lo: ../../include/net-snmp/system/generic.h
-./agentx/subagent.lo: ../../include/net-snmp/machine/generic.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
+./agentx/subagent.lo: ../../include/net-snmp/library/oid.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/types.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/subagent.lo: ../../include/net-snmp/pdu_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/asn1.h
+./agentx/subagent.lo: ../../include/net-snmp/output_api.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmp_debug.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/subagent.lo: ../../include/net-snmp/session_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/callback.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1576,8 +1609,12 @@
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1599,7 +1636,6 @@
 ./agentx/subagent.lo: ../../include/net-snmp/library/check_varbind.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/container.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/factory.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmp_logging.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/container_binary_array.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1612,8 +1648,6 @@
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_enum.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/vacm.h
-./agentx/subagent.lo: ../../include/net-snmp/output_api.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmp_debug.h
 ./agentx/subagent.lo: ../../include/net-snmp/snmpv3_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpv3.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1658,27 +1692,28 @@
 ./agentx/subagent.lo: ../../include/net-snmp/agent/table_iterator.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/table_container.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/table_array.h
-./agentx/subagent.lo: ../../include/net-snmp/agent/mfd.h ../../agent/snmpd.h
-./agentx/subagent.lo: agentx/protocol.h agentx/client.h
+./agentx/subagent.lo: ../../include/net-snmp/agent/mfd.h
+./agentx/subagent.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./agentx/subagent.lo: ../../agent/snmpd.h agentx/protocol.h agentx/client.h
 ./agentx/subagent.lo: agentx/agentx_config.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./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
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/system/linux.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/machine/generic.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
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1686,8 +1721,12 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1709,7 +1748,6 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1722,8 +1760,6 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1769,21 +1805,22 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./disman/mteEventTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteEventTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteEventTable.lo: ../../include/net-snmp/machine/generic.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
+./disman/mteEventTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteEventTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1791,8 +1828,12 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1814,7 +1855,6 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1827,8 +1867,6 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteEventTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1874,24 +1912,25 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteEventTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteEventTable.lo: ./disman/mteTriggerTable.h
 ./disman/mteEventTable.lo: ./disman/mteEventTable.h
 ./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/system/linux.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/machine/generic.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
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -1899,8 +1938,12 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -1922,7 +1965,6 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -1935,8 +1977,6 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -1982,22 +2022,23 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteObjectsTable.lo: header_complex.h ./disman/mteTriggerTable.h
 ./disman/mteObjectsTable.lo: ./disman/mteObjectsTable.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/system/linux.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/machine/generic.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/types.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2005,8 +2046,12 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2028,7 +2073,6 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2041,8 +2085,6 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2088,23 +2130,24 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteTriggerBooleanTable.lo: header_complex.h
 ./disman/mteTriggerBooleanTable.lo: ./disman/mteTriggerBooleanTable.h
 ./disman/mteTriggerBooleanTable.lo: ./disman/mteTriggerTable.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/system/linux.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/machine/generic.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/types.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2112,8 +2155,12 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2135,7 +2182,6 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2148,8 +2194,6 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2195,23 +2239,24 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteTriggerDeltaTable.lo: header_complex.h
 ./disman/mteTriggerDeltaTable.lo: ./disman/mteTriggerDeltaTable.h
 ./disman/mteTriggerDeltaTable.lo: ./disman/mteTriggerTable.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/system/linux.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/machine/generic.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/types.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2219,8 +2264,12 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2242,7 +2291,6 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2255,8 +2303,6 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2302,23 +2348,24 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteTriggerExistenceTable.lo: header_complex.h
 ./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/system/linux.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/machine/generic.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
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2326,8 +2373,12 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2349,7 +2400,6 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2362,8 +2412,6 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2409,6 +2457,7 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteTriggerTable.lo: header_complex.h ./disman/mteTriggerTable.h
 ./disman/mteTriggerTable.lo: ./disman/mteTriggerBooleanTable.h
 ./disman/mteTriggerTable.lo: ./disman/mteTriggerDeltaTable.h
@@ -2417,19 +2466,19 @@
 ./disman/mteTriggerTable.lo: ./disman/mteEventTable.h
 ./disman/mteTriggerTable.lo: ./disman/mteObjectsTable.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/system/linux.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/system/sysv.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/system/generic.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/machine/generic.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/types.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/oid.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/types.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/pdu_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/asn1.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/output_api.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/session_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2437,8 +2486,12 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2460,7 +2513,6 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/factory.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2473,8 +2525,6 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/vacm.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/output_api.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2520,23 +2570,24 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/table_container.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/table_array.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/mfd.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./disman/mteTriggerThresholdTable.lo: header_complex.h
 ./disman/mteTriggerThresholdTable.lo: ./disman/mteTriggerThresholdTable.h
 ./disman/mteTriggerThresholdTable.lo: ./disman/mteTriggerTable.h
 ./examples/data_set.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/data_set.lo: ../../include/net-snmp/system/linux.h
-./examples/data_set.lo: ../../include/net-snmp/system/sysv.h
-./examples/data_set.lo: ../../include/net-snmp/system/generic.h
-./examples/data_set.lo: ../../include/net-snmp/machine/generic.h
 ./examples/data_set.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/data_set.lo: ../../include/net-snmp/definitions.h
 ./examples/data_set.lo: ../../include/net-snmp/types.h
+./examples/data_set.lo: ../../include/net-snmp/library/oid.h
 ./examples/data_set.lo: ../../include/net-snmp/library/types.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/data_set.lo: ../../include/net-snmp/varbind_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/data_set.lo: ../../include/net-snmp/pdu_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/asn1.h
+./examples/data_set.lo: ../../include/net-snmp/output_api.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/data_set.lo: ../../include/net-snmp/session_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/callback.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2544,8 +2595,12 @@
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/data_set.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2567,7 +2622,6 @@
 ./examples/data_set.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/data_set.lo: ../../include/net-snmp/library/container.h
 ./examples/data_set.lo: ../../include/net-snmp/library/factory.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/data_set.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/data_set.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/data_set.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2580,8 +2634,6 @@
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/data_set.lo: ../../include/net-snmp/library/vacm.h
-./examples/data_set.lo: ../../include/net-snmp/output_api.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/data_set.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/data_set.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2627,20 +2679,21 @@
 ./examples/data_set.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/mfd.h
+./examples/data_set.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/delayed_instance.lo: ../../include/net-snmp/system/linux.h
-./examples/delayed_instance.lo: ../../include/net-snmp/system/sysv.h
-./examples/delayed_instance.lo: ../../include/net-snmp/system/generic.h
-./examples/delayed_instance.lo: ../../include/net-snmp/machine/generic.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/definitions.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/types.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/oid.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/types.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/varbind_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/pdu_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/asn1.h
+./examples/delayed_instance.lo: ../../include/net-snmp/output_api.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/session_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/callback.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2648,8 +2701,12 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2671,7 +2728,6 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/container.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/factory.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2684,8 +2740,6 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/vacm.h
-./examples/delayed_instance.lo: ../../include/net-snmp/output_api.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2731,21 +2785,22 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/mfd.h
+./examples/delayed_instance.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/delayed_instance.lo: ./examples/delayed_instance.h
 ./examples/example.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/example.lo: ../../include/net-snmp/system/linux.h
-./examples/example.lo: ../../include/net-snmp/system/sysv.h
-./examples/example.lo: ../../include/net-snmp/system/generic.h
-./examples/example.lo: ../../include/net-snmp/machine/generic.h
 ./examples/example.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/example.lo: ../../include/net-snmp/definitions.h
 ./examples/example.lo: ../../include/net-snmp/types.h
+./examples/example.lo: ../../include/net-snmp/library/oid.h
 ./examples/example.lo: ../../include/net-snmp/library/types.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/example.lo: ../../include/net-snmp/varbind_api.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/example.lo: ../../include/net-snmp/pdu_api.h
 ./examples/example.lo: ../../include/net-snmp/library/asn1.h
+./examples/example.lo: ../../include/net-snmp/output_api.h
+./examples/example.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/example.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/example.lo: ../../include/net-snmp/session_api.h
 ./examples/example.lo: ../../include/net-snmp/library/callback.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2753,8 +2808,12 @@
 ./examples/example.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/example.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/example.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/example.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/example.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/example.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2776,7 +2835,6 @@
 ./examples/example.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/example.lo: ../../include/net-snmp/library/container.h
 ./examples/example.lo: ../../include/net-snmp/library/factory.h
-./examples/example.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/example.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/example.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/example.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2789,8 +2847,6 @@
 ./examples/example.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/example.lo: ../../include/net-snmp/library/vacm.h
-./examples/example.lo: ../../include/net-snmp/output_api.h
-./examples/example.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/example.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/example.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2836,21 +2892,22 @@
 ./examples/example.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/example.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/example.lo: ../../include/net-snmp/agent/mfd.h
+./examples/example.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/example.lo: util_funcs/header_generic.h ./examples/example.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/system/linux.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/system/sysv.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/system/generic.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/machine/generic.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/definitions.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/types.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/oid.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/types.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/pdu_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/asn1.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/output_api.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/session_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2858,8 +2915,12 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2881,7 +2942,6 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/factory.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/container_iterator.h
@@ -2894,8 +2954,6 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/vacm.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/output_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/transform_oids.h
@@ -2941,22 +2999,23 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/mfd.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/system/sysv.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/system/generic.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/machine/generic.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
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/oid.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/types.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/pdu_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/asn1.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/output_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/session_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -2964,8 +3023,12 @@
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -2987,7 +3050,6 @@
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/factory.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3000,8 +3062,6 @@
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/vacm.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/output_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3047,25 +3107,26 @@
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mfd.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_columns.h
 ./examples/netSnmpHostsTable.lo: ./examples/netSnmpHostsTable_enums.h
 ./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/system/linux.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/system/sysv.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/system/generic.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/machine/generic.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
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/oid.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/types.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/pdu_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/asn1.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/output_api.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/session_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3073,8 +3134,12 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3096,7 +3161,6 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/factory.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3109,8 +3173,6 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/vacm.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/output_api.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3124,19 +3186,19 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_checkfns_local.h
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_enums.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/system/linux.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/system/sysv.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/system/generic.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/machine/generic.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/definitions.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/types.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/oid.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/types.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/pdu_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/asn1.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/output_api.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/session_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3144,8 +3206,12 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3167,7 +3233,6 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/factory.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3180,8 +3245,6 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/vacm.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/output_api.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3194,19 +3257,19 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_enums.h
 ./examples/notification.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/notification.lo: ../../include/net-snmp/system/linux.h
-./examples/notification.lo: ../../include/net-snmp/system/sysv.h
-./examples/notification.lo: ../../include/net-snmp/system/generic.h
-./examples/notification.lo: ../../include/net-snmp/machine/generic.h
 ./examples/notification.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/notification.lo: ../../include/net-snmp/definitions.h
 ./examples/notification.lo: ../../include/net-snmp/types.h
+./examples/notification.lo: ../../include/net-snmp/library/oid.h
 ./examples/notification.lo: ../../include/net-snmp/library/types.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/notification.lo: ../../include/net-snmp/varbind_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/notification.lo: ../../include/net-snmp/pdu_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/asn1.h
+./examples/notification.lo: ../../include/net-snmp/output_api.h
+./examples/notification.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/notification.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/notification.lo: ../../include/net-snmp/session_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/callback.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3214,8 +3277,12 @@
 ./examples/notification.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/notification.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/notification.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/notification.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/notification.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/notification.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3237,7 +3304,6 @@
 ./examples/notification.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/notification.lo: ../../include/net-snmp/library/container.h
 ./examples/notification.lo: ../../include/net-snmp/library/factory.h
-./examples/notification.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/notification.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/notification.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/notification.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3250,8 +3316,6 @@
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/notification.lo: ../../include/net-snmp/library/vacm.h
-./examples/notification.lo: ../../include/net-snmp/output_api.h
-./examples/notification.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/notification.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/notification.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3296,21 +3360,23 @@
 ./examples/notification.lo: ../../include/net-snmp/agent/table_iterator.h
 ./examples/notification.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/notification.lo: ../../include/net-snmp/agent/table_array.h
-./examples/notification.lo: ../../include/net-snmp/agent/mfd.h notification.h
+./examples/notification.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./examples/scalar_int.lo: ../../include/net-snmp/system/sysv.h
-./examples/scalar_int.lo: ../../include/net-snmp/system/generic.h
-./examples/scalar_int.lo: ../../include/net-snmp/machine/generic.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
+./examples/scalar_int.lo: ../../include/net-snmp/library/oid.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/types.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/varbind_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/scalar_int.lo: ../../include/net-snmp/pdu_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/asn1.h
+./examples/scalar_int.lo: ../../include/net-snmp/output_api.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/scalar_int.lo: ../../include/net-snmp/session_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/callback.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3318,8 +3384,12 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3341,7 +3411,6 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/container.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/factory.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3354,8 +3423,6 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/vacm.h
-./examples/scalar_int.lo: ../../include/net-snmp/output_api.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/scalar_int.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3401,20 +3468,21 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/mfd.h
+./examples/scalar_int.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/system/linux.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/system/sysv.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/system/generic.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/machine/generic.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/definitions.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/types.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/oid.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/types.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/varbind_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/pdu_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/asn1.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/output_api.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/session_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/callback.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3422,8 +3490,12 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3445,7 +3517,6 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/container.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/factory.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3458,8 +3529,6 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/vacm.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/output_api.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3505,22 +3574,23 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/mfd.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./examples/ucdDemoPublic.lo: util_funcs/header_generic.h
 ./examples/ucdDemoPublic.lo: ./examples/ucdDemoPublic.h
 ./examples/watched.lo: ../../include/net-snmp/net-snmp-config.h
-./examples/watched.lo: ../../include/net-snmp/system/linux.h
-./examples/watched.lo: ../../include/net-snmp/system/sysv.h
-./examples/watched.lo: ../../include/net-snmp/system/generic.h
-./examples/watched.lo: ../../include/net-snmp/machine/generic.h
 ./examples/watched.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/watched.lo: ../../include/net-snmp/definitions.h
 ./examples/watched.lo: ../../include/net-snmp/types.h
+./examples/watched.lo: ../../include/net-snmp/library/oid.h
 ./examples/watched.lo: ../../include/net-snmp/library/types.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_api.h
 ./examples/watched.lo: ../../include/net-snmp/varbind_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/watched.lo: ../../include/net-snmp/pdu_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/asn1.h
+./examples/watched.lo: ../../include/net-snmp/output_api.h
+./examples/watched.lo: ../../include/net-snmp/library/snmp_debug.h
+./examples/watched.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/watched.lo: ../../include/net-snmp/session_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/callback.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3528,8 +3598,12 @@
 ./examples/watched.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./examples/watched.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./examples/watched.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./examples/watched.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./examples/watched.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./examples/watched.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3551,7 +3625,6 @@
 ./examples/watched.lo: ../../include/net-snmp/library/check_varbind.h
 ./examples/watched.lo: ../../include/net-snmp/library/container.h
 ./examples/watched.lo: ../../include/net-snmp/library/factory.h
-./examples/watched.lo: ../../include/net-snmp/library/snmp_logging.h
 ./examples/watched.lo: ../../include/net-snmp/library/container_binary_array.h
 ./examples/watched.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./examples/watched.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3564,8 +3637,6 @@
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_enum.h
 ./examples/watched.lo: ../../include/net-snmp/library/vacm.h
-./examples/watched.lo: ../../include/net-snmp/output_api.h
-./examples/watched.lo: ../../include/net-snmp/library/snmp_debug.h
 ./examples/watched.lo: ../../include/net-snmp/snmpv3_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpv3.h
 ./examples/watched.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3611,21 +3682,22 @@
 ./examples/watched.lo: ../../include/net-snmp/agent/table_container.h
 ./examples/watched.lo: ../../include/net-snmp/agent/table_array.h
 ./examples/watched.lo: ../../include/net-snmp/agent/mfd.h
+./examples/watched.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hr_device.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_device.lo: ../../include/net-snmp/system/linux.h
-./host/hr_device.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_device.lo: ../../include/net-snmp/system/generic.h
-./host/hr_device.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_device.lo: host_res.h
 ./host/hr_device.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_device.lo: ../../include/net-snmp/definitions.h
 ./host/hr_device.lo: ../../include/net-snmp/types.h
+./host/hr_device.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_device.lo: ../../include/net-snmp/library/types.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_device.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_device.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_device.lo: ../../include/net-snmp/output_api.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_device.lo: ../../include/net-snmp/session_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3633,8 +3705,12 @@
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_device.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3656,7 +3732,6 @@
 ./host/hr_device.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_device.lo: ../../include/net-snmp/library/container.h
 ./host/hr_device.lo: ../../include/net-snmp/library/factory.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_device.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_device.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_device.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3669,8 +3744,6 @@
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_device.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_device.lo: ../../include/net-snmp/output_api.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_device.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_device.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3687,20 +3760,20 @@
 ./host/hr_device.lo: ../../include/net-snmp/agent/agent_registry.h
 ./host/hr_device.lo: ../../include/net-snmp/library/fd_event_manager.h
 ./host/hr_device.lo: ./host/hr_device.h
-./host/hr_disk.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_disk.lo: ../../include/net-snmp/system/linux.h
-./host/hr_disk.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_disk.lo: ../../include/net-snmp/system/generic.h
-./host/hr_disk.lo: ../../include/net-snmp/machine/generic.h host_res.h
+./host/hr_disk.lo: ../../include/net-snmp/net-snmp-config.h host_res.h
 ./host/hr_disk.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_disk.lo: ../../include/net-snmp/definitions.h
 ./host/hr_disk.lo: ../../include/net-snmp/types.h
+./host/hr_disk.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/types.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_disk.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_disk.lo: ../../include/net-snmp/output_api.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_disk.lo: ../../include/net-snmp/session_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3708,8 +3781,12 @@
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3731,7 +3808,6 @@
 ./host/hr_disk.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/container.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/factory.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3744,8 +3820,6 @@
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_disk.lo: ../../include/net-snmp/output_api.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_disk.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3764,19 +3838,19 @@
 ./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/system/linux.h
-./host/hr_filesys.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_filesys.lo: ../../include/net-snmp/system/generic.h
-./host/hr_filesys.lo: ../../include/net-snmp/machine/generic.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
+./host/hr_filesys.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/types.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_filesys.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_filesys.lo: ../../include/net-snmp/output_api.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_filesys.lo: ../../include/net-snmp/session_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3784,8 +3858,12 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3807,7 +3885,6 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/container.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/factory.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3820,8 +3897,6 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_filesys.lo: ../../include/net-snmp/output_api.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_filesys.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3867,23 +3942,24 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/mfd.h
+./host/hr_filesys.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/hardware/memory.h
-./host/hr_filesys.lo: host_res.h ./host/hr_filesys.h
-./host/hr_filesys.lo: ./host/hr_storage.h ./host/hr_disk.h
+./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/system/linux.h
-./host/hrh_filesys.lo: ../../include/net-snmp/system/sysv.h
-./host/hrh_filesys.lo: ../../include/net-snmp/system/generic.h
-./host/hrh_filesys.lo: ../../include/net-snmp/machine/generic.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
+./host/hrh_filesys.lo: ../../include/net-snmp/library/oid.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/types.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/varbind_api.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/pdu_api.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/asn1.h
+./host/hrh_filesys.lo: ../../include/net-snmp/output_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/session_api.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/callback.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3891,8 +3967,12 @@
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -3914,7 +3994,6 @@
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/container.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/factory.h
-./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/container_iterator.h
@@ -3927,8 +4006,6 @@
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/vacm.h
-./host/hrh_filesys.lo: ../../include/net-snmp/output_api.h
-./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/library/transform_oids.h
@@ -3974,24 +4051,25 @@
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/mfd.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/hardware/memory.h
 ./host/hrh_filesys.lo: ../../include/net-snmp/agent/hardware/fsys.h
-./host/hrh_filesys.lo: host_res.h ./host/hrh_filesys.h
-./host/hrh_filesys.lo: ./host/hrh_storage.h ./host/hr_disk.h
+./host/hrh_filesys.lo: host_res.h ./host/hrh_filesys.h ./host/hrh_storage.h
+./host/hrh_filesys.lo: ./host/hr_disk.h
 ./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hrh_storage.lo: ../../include/net-snmp/system/linux.h
-./host/hrh_storage.lo: ../../include/net-snmp/system/sysv.h
-./host/hrh_storage.lo: ../../include/net-snmp/system/generic.h
-./host/hrh_storage.lo: ../../include/net-snmp/machine/generic.h
 ./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hrh_storage.lo: ../../include/net-snmp/definitions.h
 ./host/hrh_storage.lo: ../../include/net-snmp/types.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/oid.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/types.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/varbind_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hrh_storage.lo: ../../include/net-snmp/pdu_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/asn1.h
+./host/hrh_storage.lo: ../../include/net-snmp/output_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrh_storage.lo: ../../include/net-snmp/session_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/callback.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -3999,8 +4077,12 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4022,7 +4104,6 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/container.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/factory.h
-./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4035,8 +4116,6 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/vacm.h
-./host/hrh_storage.lo: ../../include/net-snmp/output_api.h
-./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hrh_storage.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hrh_storage.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4082,24 +4161,25 @@
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/mfd.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/hardware/memory.h
 ./host/hrh_storage.lo: ../../include/net-snmp/agent/hardware/fsys.h
-./host/hrh_storage.lo: host_res.h ./host/hrh_filesys.h
-./host/hrh_storage.lo: ./host/hrh_storage.h ./host/hr_disk.h
+./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/system/linux.h
-./host/hr_network.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_network.lo: ../../include/net-snmp/system/generic.h
-./host/hr_network.lo: ../../include/net-snmp/machine/generic.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
+./host/hr_network.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_network.lo: ../../include/net-snmp/library/types.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_network.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_network.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_network.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_network.lo: ../../include/net-snmp/output_api.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_network.lo: ../../include/net-snmp/session_api.h
 ./host/hr_network.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4107,8 +4187,12 @@
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_network.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4130,7 +4214,6 @@
 ./host/hr_network.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_network.lo: ../../include/net-snmp/library/container.h
 ./host/hr_network.lo: ../../include/net-snmp/library/factory.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_network.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_network.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_network.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4143,8 +4226,6 @@
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_network.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_network.lo: ../../include/net-snmp/output_api.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_network.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_network.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4190,23 +4271,24 @@
 ./host/hr_network.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/mfd.h
+./host/hr_network.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hr_network.lo: ../../include/net-snmp/data_access/interface.h
 ./host/hr_network.lo: host_res.h mibII/interfaces.h
 ./host/hr_network.lo: ./host/hr_network.h
-./host/hr_other.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_other.lo: ../../include/net-snmp/system/linux.h
-./host/hr_other.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_other.lo: ../../include/net-snmp/system/generic.h
-./host/hr_other.lo: ../../include/net-snmp/machine/generic.h host_res.h
+./host/hr_other.lo: ../../include/net-snmp/net-snmp-config.h host_res.h
 ./host/hr_other.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_other.lo: ../../include/net-snmp/definitions.h
 ./host/hr_other.lo: ../../include/net-snmp/types.h
+./host/hr_other.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_other.lo: ../../include/net-snmp/library/types.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_other.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_other.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_other.lo: ../../include/net-snmp/output_api.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_other.lo: ../../include/net-snmp/session_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4214,8 +4296,12 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_other.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4237,7 +4323,6 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_other.lo: ../../include/net-snmp/library/container.h
 ./host/hr_other.lo: ../../include/net-snmp/library/factory.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_other.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_other.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_other.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4250,8 +4335,6 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_other.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_other.lo: ../../include/net-snmp/output_api.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_other.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_other.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4269,20 +4352,20 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/fd_event_manager.h
 ./host/hr_other.lo: ./host/hr_other.h
 ./host/hr_partition.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_partition.lo: ../../include/net-snmp/system/linux.h
-./host/hr_partition.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_partition.lo: ../../include/net-snmp/system/generic.h
-./host/hr_partition.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_partition.lo: host_res.h
 ./host/hr_partition.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_partition.lo: ../../include/net-snmp/definitions.h
 ./host/hr_partition.lo: ../../include/net-snmp/types.h
+./host/hr_partition.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/types.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_partition.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_partition.lo: ../../include/net-snmp/output_api.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_partition.lo: ../../include/net-snmp/session_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4290,8 +4373,12 @@
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4313,7 +4400,6 @@
 ./host/hr_partition.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/container.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/factory.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4326,8 +4412,6 @@
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_partition.lo: ../../include/net-snmp/output_api.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_partition.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4343,23 +4427,23 @@
 ./host/hr_partition.lo: ../../include/net-snmp/agent/var_struct.h
 ./host/hr_partition.lo: ../../include/net-snmp/agent/agent_registry.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/fd_event_manager.h
-./host/hr_partition.lo: ./host/hr_partition.h
-./host/hr_partition.lo: ./host/hr_filesys.h ./host/hr_disk.h
+./host/hr_partition.lo: ./host/hr_partition.h ./host/hr_filesys.h
+./host/hr_partition.lo: ./host/hr_disk.h
 ./host/hr_print.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_print.lo: ../../include/net-snmp/system/linux.h
-./host/hr_print.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_print.lo: ../../include/net-snmp/system/generic.h
-./host/hr_print.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_print.lo: host_res.h
 ./host/hr_print.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_print.lo: ../../include/net-snmp/definitions.h
 ./host/hr_print.lo: ../../include/net-snmp/types.h
+./host/hr_print.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_print.lo: ../../include/net-snmp/library/types.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_print.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_print.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_print.lo: ../../include/net-snmp/output_api.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_print.lo: ../../include/net-snmp/session_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4367,8 +4451,12 @@
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_print.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4390,7 +4478,6 @@
 ./host/hr_print.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_print.lo: ../../include/net-snmp/library/container.h
 ./host/hr_print.lo: ../../include/net-snmp/library/factory.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_print.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_print.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_print.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4403,8 +4490,6 @@
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_print.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_print.lo: ../../include/net-snmp/output_api.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_print.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_print.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4420,24 +4505,24 @@
 ./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
-./host/hr_print.lo: util_funcs.h util_funcs/header_generic.h
-./host/hr_print.lo: util_funcs/header_simple_table.h
+./host/hr_print.lo: ./host/hr_print.h struct.h util_funcs.h util_funcs/Exit.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/MIB_STATS_CACHE_TIMEOUT.h
 ./host/hr_proc.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_proc.lo: ../../include/net-snmp/system/linux.h
-./host/hr_proc.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_proc.lo: ../../include/net-snmp/system/generic.h
-./host/hr_proc.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_proc.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_proc.lo: ../../include/net-snmp/definitions.h
 ./host/hr_proc.lo: ../../include/net-snmp/types.h
+./host/hr_proc.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/types.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_proc.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_proc.lo: ../../include/net-snmp/output_api.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_proc.lo: ../../include/net-snmp/session_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4445,8 +4530,12 @@
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4468,7 +4557,6 @@
 ./host/hr_proc.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/container.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/factory.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4481,8 +4569,6 @@
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_proc.lo: ../../include/net-snmp/output_api.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_proc.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4528,25 +4614,26 @@
 ./host/hr_proc.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/mfd.h
-./host/hr_proc.lo: host_res.h ./host/hr_proc.h
-./host/hr_proc.lo: ../../include/net-snmp/agent/auto_nlist.h
+./host/hr_proc.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./host/hr_proc.lo: host_res.h
+./host/hr_proc.lo: ./host/hr_proc.h ../../include/net-snmp/agent/auto_nlist.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/hardware/cpu.h
 ./host/hr_proc.lo: ucd-snmp/loadave.h mibdefs.h
 ./host/hr_storage.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_storage.lo: ../../include/net-snmp/system/linux.h
-./host/hr_storage.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_storage.lo: ../../include/net-snmp/system/generic.h
-./host/hr_storage.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_storage.lo: host_res.h
 ./host/hr_storage.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_storage.lo: ../../include/net-snmp/definitions.h
 ./host/hr_storage.lo: ../../include/net-snmp/types.h
+./host/hr_storage.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/types.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_storage.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_storage.lo: ../../include/net-snmp/output_api.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_storage.lo: ../../include/net-snmp/session_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4554,8 +4641,12 @@
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4577,7 +4668,6 @@
 ./host/hr_storage.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/container.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/factory.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4590,8 +4680,6 @@
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_storage.lo: ../../include/net-snmp/output_api.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_storage.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4607,8 +4695,7 @@
 ./host/hr_storage.lo: ../../include/net-snmp/agent/var_struct.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/agent_registry.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/fd_event_manager.h
-./host/hr_storage.lo: ./host/hr_storage.h
-./host/hr_storage.lo: ./host/hr_filesys.h
+./host/hr_storage.lo: ./host/hr_storage.h ./host/hr_filesys.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4640,21 +4727,22 @@
 ./host/hr_storage.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/mfd.h
+./host/hr_storage.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/hardware/memory.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/linux.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/sysv.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/system/generic.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/machine/generic.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/definitions.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/types.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/oid.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/types.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/varbind_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/pdu_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/asn1.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/output_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/session_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/callback.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4662,8 +4750,12 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4685,7 +4777,6 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/factory.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4698,8 +4789,6 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/vacm.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/output_api.h
-./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4745,23 +4834,24 @@
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/mfd.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./host/hr_swinst.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_swinst.lo: ../../include/net-snmp/system/generic.h
-./host/hr_swinst.lo: ../../include/net-snmp/machine/generic.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
 ./host/hr_swinst.lo: ../../include/net-snmp/types.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/types.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_swinst.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_swinst.lo: ../../include/net-snmp/output_api.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_swinst.lo: ../../include/net-snmp/session_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4769,8 +4859,12 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4792,7 +4886,6 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/container.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/factory.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4805,8 +4898,6 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_swinst.lo: ../../include/net-snmp/output_api.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_swinst.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/transform_oids.h
@@ -4824,12 +4915,9 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/fd_event_manager.h
 ./host/hr_swinst.lo: ./host/hr_swinst.h
 ./host/hr_swrun.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hr_swrun.lo: ../../include/net-snmp/system/linux.h
-./host/hr_swrun.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_swrun.lo: ../../include/net-snmp/system/generic.h
-./host/hr_swrun.lo: ../../include/net-snmp/machine/generic.h
 ./host/hr_swrun.lo: ../../include/net-snmp/output_api.h
 ./host/hr_swrun.lo: ../../include/net-snmp/types.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/types.h
 ./host/hr_swrun.lo: ../../include/net-snmp/definitions.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_api.h
@@ -4844,8 +4932,12 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4902,19 +4994,19 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./host/hr_swrun.lo: ../../agent/kernel.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/system/linux.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/system/sysv.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/system/generic.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/machine/generic.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/definitions.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/types.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/oid.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/types.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/varbind_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/pdu_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/asn1.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/output_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/session_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/callback.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -4922,8 +5014,12 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -4945,7 +5041,6 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/factory.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -4958,8 +5053,6 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/vacm.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/output_api.h
-./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5005,23 +5098,24 @@
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/mfd.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hrSWRunPerfTable.lo: ../../include/net-snmp/data_access/swrun.h
 ./host/hrSWRunPerfTable.lo: ./host/hrSWRunPerfTable.h
 ./host/hrSWRunPerfTable.lo: ./host/data_access/swrun.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-config.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/system/linux.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/system/sysv.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/system/generic.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/machine/generic.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/definitions.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/types.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/oid.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/types.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/varbind_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/pdu_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/asn1.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/output_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/session_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/callback.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5029,8 +5123,12 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5052,7 +5150,6 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/container.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/factory.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5065,8 +5162,6 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/vacm.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/output_api.h
-./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5112,22 +5207,23 @@
 ./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_array.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/agent/mfd.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./host/hrSWRunTable.lo: ../../include/net-snmp/data_access/swrun.h
-./host/hrSWRunTable.lo: ./host/hrSWRunTable.h ./host/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/system/linux.h
-./host/hr_system.lo: ../../include/net-snmp/system/sysv.h
-./host/hr_system.lo: ../../include/net-snmp/system/generic.h
-./host/hr_system.lo: ../../include/net-snmp/machine/generic.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
+./host/hr_system.lo: ../../include/net-snmp/library/oid.h
 ./host/hr_system.lo: ../../include/net-snmp/library/types.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_api.h
 ./host/hr_system.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_system.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_system.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_system.lo: ../../include/net-snmp/output_api.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmp_debug.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_system.lo: ../../include/net-snmp/session_api.h
 ./host/hr_system.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5135,8 +5231,12 @@
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./host/hr_system.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5158,7 +5258,6 @@
 ./host/hr_system.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_system.lo: ../../include/net-snmp/library/container.h
 ./host/hr_system.lo: ../../include/net-snmp/library/factory.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_system.lo: ../../include/net-snmp/library/container_binary_array.h
 ./host/hr_system.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./host/hr_system.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5171,8 +5270,6 @@
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_enum.h
 ./host/hr_system.lo: ../../include/net-snmp/library/vacm.h
-./host/hr_system.lo: ../../include/net-snmp/output_api.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_system.lo: ../../include/net-snmp/snmpv3_api.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpv3.h
 ./host/hr_system.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5217,23 +5314,24 @@
 ./host/hr_system.lo: ../../include/net-snmp/agent/table_iterator.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/table_container.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/table_array.h
-./host/hr_system.lo: ../../include/net-snmp/agent/mfd.h host.h host_res.h
-./host/hr_system.lo: ./host/hr_system.h
+./host/hr_system.lo: ../../include/net-snmp/agent/mfd.h
+./host/hr_system.lo: ../../include/net-snmp/agent/snmp_get_statistic.h host.h
+./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/system/linux.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/system/sysv.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/system/generic.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/machine/generic.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
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/oid.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/types.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/varbind_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_client.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/pdu_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/asn1.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/output_api.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_debug.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/session_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/callback.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5241,8 +5339,12 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5264,7 +5366,6 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/check_varbind.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/container.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/factory.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5277,8 +5378,6 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/vacm.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/output_api.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/snmpv3_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpv3.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5324,24 +5423,25 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/table_container.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/table_array.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/mfd.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/data_access/ip_scalars.h
 ./ip-mib/ip_scalars.lo: ./ip-mib/ip_scalars.h
 ./mibII/at.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/at.lo: ../../include/net-snmp/system/linux.h
-./mibII/at.lo: ../../include/net-snmp/system/sysv.h
-./mibII/at.lo: ../../include/net-snmp/system/generic.h
-./mibII/at.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/at.lo: ./mibII/mibII_common.h
 ./mibII/at.lo: ../../agent/kernel.h
 ./mibII/at.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/at.lo: ../../include/net-snmp/definitions.h
 ./mibII/at.lo: ../../include/net-snmp/types.h
+./mibII/at.lo: ../../include/net-snmp/library/oid.h
 ./mibII/at.lo: ../../include/net-snmp/library/types.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/at.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/at.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/asn1.h
+./mibII/at.lo: ../../include/net-snmp/output_api.h
+./mibII/at.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/at.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/at.lo: ../../include/net-snmp/session_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/callback.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5349,8 +5449,12 @@
 ./mibII/at.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/at.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/at.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/at.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/at.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/at.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5372,7 +5476,6 @@
 ./mibII/at.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/at.lo: ../../include/net-snmp/library/container.h
 ./mibII/at.lo: ../../include/net-snmp/library/factory.h
-./mibII/at.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/at.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/at.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/at.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5385,8 +5488,6 @@
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/at.lo: ../../include/net-snmp/library/vacm.h
-./mibII/at.lo: ../../include/net-snmp/output_api.h
-./mibII/at.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/at.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/at.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5432,25 +5533,26 @@
 ./mibII/at.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/at.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/at.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/at.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/at.lo: ../../include/net-snmp/agent/auto_nlist.h ./mibII/at.h
 ./mibII/at.lo: ./mibII/interfaces.h
 ./mibII/at.lo: ../../include/net-snmp/data_access/interface.h
 ./mibII/icmp.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/icmp.lo: ../../include/net-snmp/system/linux.h
-./mibII/icmp.lo: ../../include/net-snmp/system/sysv.h
-./mibII/icmp.lo: ../../include/net-snmp/system/generic.h
-./mibII/icmp.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/icmp.lo: ./mibII/mibII_common.h
 ./mibII/icmp.lo: ../../agent/kernel.h
 ./mibII/icmp.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/icmp.lo: ../../include/net-snmp/definitions.h
 ./mibII/icmp.lo: ../../include/net-snmp/types.h
+./mibII/icmp.lo: ../../include/net-snmp/library/oid.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/types.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/icmp.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/asn1.h
+./mibII/icmp.lo: ../../include/net-snmp/output_api.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/icmp.lo: ../../include/net-snmp/session_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5458,8 +5560,12 @@
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5481,7 +5587,6 @@
 ./mibII/icmp.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/container.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/factory.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5494,8 +5599,6 @@
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/vacm.h
-./mibII/icmp.lo: ../../include/net-snmp/output_api.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/icmp.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5541,25 +5644,26 @@
 ./mibII/icmp.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/icmp.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/sysORTable.h
 ./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/system/linux.h
-./mibII/interfaces.lo: ../../include/net-snmp/system/sysv.h
-./mibII/interfaces.lo: ../../include/net-snmp/system/generic.h
-./mibII/interfaces.lo: ../../include/net-snmp/machine/generic.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
 ./mibII/interfaces.lo: ../../include/net-snmp/types.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/oid.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/types.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/interfaces.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/asn1.h
+./mibII/interfaces.lo: ../../include/net-snmp/output_api.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/interfaces.lo: ../../include/net-snmp/session_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/callback.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5567,8 +5671,12 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5590,7 +5698,6 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/container.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/factory.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5603,8 +5710,6 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/vacm.h
-./mibII/interfaces.lo: ../../include/net-snmp/output_api.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/interfaces.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5650,6 +5755,7 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/interfaces.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/agent_callbacks.h
@@ -5657,20 +5763,20 @@
 ./mibII/interfaces.lo: ./mibII/interfaces.h struct.h
 ./mibII/interfaces.lo: util_funcs/header_generic.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ipAddr.lo: ../../include/net-snmp/system/linux.h
-./mibII/ipAddr.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ipAddr.lo: ../../include/net-snmp/system/generic.h
-./mibII/ipAddr.lo: ../../include/net-snmp/machine/generic.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
 ./mibII/ipAddr.lo: ../../include/net-snmp/types.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/types.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ipAddr.lo: ../../include/net-snmp/output_api.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/session_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5678,8 +5784,12 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5701,7 +5811,6 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/factory.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5714,8 +5823,6 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ipAddr.lo: ../../include/net-snmp/output_api.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5761,26 +5868,27 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/ipAddr.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/data_access/interface.h
 ./mibII/ipAddr.lo: ./mibII/ip.h ./mibII/var_route.h ./mibII/route_write.h
 ./mibII/ipAddr.lo: ./mibII/at.h ./mibII/interfaces.h
 ./mibII/ip.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ip.lo: ../../include/net-snmp/system/linux.h
-./mibII/ip.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ip.lo: ../../include/net-snmp/system/generic.h
-./mibII/ip.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/ip.lo: ./mibII/mibII_common.h
 ./mibII/ip.lo: ../../agent/kernel.h
 ./mibII/ip.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ip.lo: ../../include/net-snmp/definitions.h
 ./mibII/ip.lo: ../../include/net-snmp/types.h
+./mibII/ip.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ip.lo: ../../include/net-snmp/library/types.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ip.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ip.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ip.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ip.lo: ../../include/net-snmp/output_api.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ip.lo: ../../include/net-snmp/session_api.h
 ./mibII/ip.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5788,8 +5896,12 @@
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ip.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5811,7 +5923,6 @@
 ./mibII/ip.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ip.lo: ../../include/net-snmp/library/container.h
 ./mibII/ip.lo: ../../include/net-snmp/library/factory.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ip.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ip.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ip.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5824,8 +5935,6 @@
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ip.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ip.lo: ../../include/net-snmp/output_api.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ip.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ip.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ip.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5871,6 +5980,7 @@
 ./mibII/ip.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/ip.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/ip.lo: ../../include/net-snmp/agent/agent_callbacks.h
@@ -5878,20 +5988,20 @@
 ./mibII/ip.lo: ./mibII/var_route.h ./mibII/route_write.h ./mibII/at.h
 ./mibII/ip.lo: ./mibII/ipAddr.h ./mibII/interfaces.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/system/linux.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/system/generic.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/ipCidrRouteTable_access.lo: ./mibII/route_headers.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/definitions.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/types.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/types.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/output_api.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/session_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -5899,8 +6009,12 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -5922,7 +6036,6 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/factory.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/container_iterator.h
@@ -5935,8 +6048,6 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/output_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/transform_oids.h
@@ -5982,23 +6093,24 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/system/generic.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/machine/generic.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
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/types.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/types.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/output_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/session_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6006,8 +6118,12 @@
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6029,7 +6145,6 @@
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/factory.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6042,8 +6157,6 @@
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/output_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6089,6 +6202,7 @@
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_columns.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_enums.h
@@ -6096,19 +6210,19 @@
 ./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_access.h
 ./mibII/ipCidrRouteTable.lo: ./mibII/var_route.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/system/linux.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/system/generic.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/definitions.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/types.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/types.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/output_api.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/session_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6116,8 +6230,12 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6139,7 +6257,6 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/factory.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6152,8 +6269,6 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/output_api.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6166,19 +6281,19 @@
 ./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/system/linux.h
-./mibII/ipv6.lo: ../../include/net-snmp/system/sysv.h
-./mibII/ipv6.lo: ../../include/net-snmp/system/generic.h
-./mibII/ipv6.lo: ../../include/net-snmp/machine/generic.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
+./mibII/ipv6.lo: ../../include/net-snmp/library/oid.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/types.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipv6.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/asn1.h
+./mibII/ipv6.lo: ../../include/net-snmp/output_api.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipv6.lo: ../../include/net-snmp/session_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6186,8 +6301,12 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6209,7 +6328,6 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/factory.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6222,8 +6340,6 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/vacm.h
-./mibII/ipv6.lo: ../../include/net-snmp/output_api.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/ipv6.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6269,23 +6385,24 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/ipv6.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./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/system/linux.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/system/sysv.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/system/generic.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/machine/generic.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
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/oid.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/types.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/asn1.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/output_api.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/session_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/callback.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6293,8 +6410,12 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6316,7 +6437,6 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/container.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/factory.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6329,8 +6449,6 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/vacm.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/output_api.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6376,21 +6494,22 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/table_container.h
 ./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_netbsd.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/system/linux.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/system/sysv.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/system/generic.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/definitions.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/types.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/oid.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/types.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/asn1.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/output_api.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/session_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/callback.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6398,8 +6517,12 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6421,7 +6544,6 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/container.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/factory.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6434,8 +6556,6 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/vacm.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/output_api.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6481,21 +6601,22 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/table_array.h
 ./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/mta_sendmail.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/system/linux.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/system/sysv.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/system/generic.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/definitions.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/types.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/oid.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/types.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/asn1.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/output_api.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/session_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/callback.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6503,8 +6624,12 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6526,7 +6651,6 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/container.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/factory.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6539,8 +6663,6 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/vacm.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/output_api.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6586,21 +6708,22 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/mta_sendmail.lo: ./mibII/mta_sendmail.h
 ./mibII/route_write.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/route_write.lo: ../../include/net-snmp/system/linux.h
-./mibII/route_write.lo: ../../include/net-snmp/system/sysv.h
-./mibII/route_write.lo: ../../include/net-snmp/system/generic.h
-./mibII/route_write.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/route_write.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/route_write.lo: ../../include/net-snmp/definitions.h
 ./mibII/route_write.lo: ../../include/net-snmp/types.h
+./mibII/route_write.lo: ../../include/net-snmp/library/oid.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/types.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/route_write.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/asn1.h
+./mibII/route_write.lo: ../../include/net-snmp/output_api.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/route_write.lo: ../../include/net-snmp/session_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/callback.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6608,8 +6731,12 @@
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6631,7 +6758,6 @@
 ./mibII/route_write.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/container.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/factory.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6644,8 +6770,6 @@
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/vacm.h
-./mibII/route_write.lo: ../../include/net-snmp/output_api.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/route_write.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6690,23 +6814,24 @@
 ./mibII/route_write.lo: ../../include/net-snmp/agent/table_iterator.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/table_array.h
-./mibII/route_write.lo: ../../include/net-snmp/agent/mfd.h ./mibII/ip.h
-./mibII/route_write.lo: ./mibII/var_route.h ./mibII/route_write.h
-./mibII/route_write.lo: ./mibII/at.h
+./mibII/route_write.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/route_write.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./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/system/linux.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/system/sysv.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/system/generic.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/machine/generic.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
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/oid.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/types.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/asn1.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/output_api.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/session_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/callback.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6714,8 +6839,12 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6737,7 +6866,6 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/container.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/factory.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6750,8 +6878,6 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/vacm.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/output_api.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6797,21 +6923,22 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/system/sysv.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/system/generic.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/machine/generic.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
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/oid.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/types.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/asn1.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/output_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/session_api.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/callback.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6819,8 +6946,12 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6842,7 +6973,6 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/factory.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6855,8 +6985,6 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/vacm.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/output_api.h
-./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/transform_oids.h
@@ -6902,24 +7030,24 @@
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
-./mibII/snmp_mib_5_5.lo: ./utilities/snmp_get_statistic.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/system/linux.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/system/sysv.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/system/generic.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/machine/generic.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
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/oid.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/types.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/asn1.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/output_api.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/session_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/callback.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -6927,8 +7055,12 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -6950,7 +7082,6 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/container.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/factory.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/container_iterator.h
@@ -6963,8 +7094,6 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/vacm.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/output_api.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7010,23 +7139,24 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/snmp_mib.lo: ./mibII/snmp_mib.h ./mibII/updates.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/sysORTable.lo: ../../include/net-snmp/system/linux.h
-./mibII/sysORTable.lo: ../../include/net-snmp/system/sysv.h
-./mibII/sysORTable.lo: ../../include/net-snmp/system/generic.h
-./mibII/sysORTable.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/definitions.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/types.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/oid.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/types.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/asn1.h
+./mibII/sysORTable.lo: ../../include/net-snmp/output_api.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/session_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7034,8 +7164,12 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7057,7 +7191,6 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/factory.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7070,8 +7203,6 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/vacm.h
-./mibII/sysORTable.lo: ../../include/net-snmp/output_api.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7117,24 +7248,25 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/sysORTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/agent_sysORTable.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/sysORTable.h
 ./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/system/linux.h
-./mibII/system_mib.lo: ../../include/net-snmp/system/sysv.h
-./mibII/system_mib.lo: ../../include/net-snmp/system/generic.h
-./mibII/system_mib.lo: ../../include/net-snmp/machine/generic.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
+./mibII/system_mib.lo: ../../include/net-snmp/library/oid.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/types.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/system_mib.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/asn1.h
+./mibII/system_mib.lo: ../../include/net-snmp/output_api.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/system_mib.lo: ../../include/net-snmp/session_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/callback.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7142,8 +7274,12 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7165,7 +7301,6 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/container.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/factory.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7178,8 +7313,6 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/vacm.h
-./mibII/system_mib.lo: ../../include/net-snmp/output_api.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/system_mib.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7225,28 +7358,30 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/mfd.h
+./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/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: 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: ./mibII/system_mib.h ./mibII/updates.h
 ./mibII/tcp.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/tcp.lo: ../../include/net-snmp/system/linux.h
-./mibII/tcp.lo: ../../include/net-snmp/system/sysv.h
-./mibII/tcp.lo: ../../include/net-snmp/system/generic.h
-./mibII/tcp.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/tcp.lo: ./mibII/mibII_common.h
 ./mibII/tcp.lo: ../../agent/kernel.h
 ./mibII/tcp.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/tcp.lo: ../../include/net-snmp/definitions.h
 ./mibII/tcp.lo: ../../include/net-snmp/types.h
+./mibII/tcp.lo: ../../include/net-snmp/library/oid.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/types.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/tcp.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/asn1.h
+./mibII/tcp.lo: ../../include/net-snmp/output_api.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/tcp.lo: ../../include/net-snmp/session_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7254,8 +7389,12 @@
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7277,7 +7416,6 @@
 ./mibII/tcp.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/container.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/factory.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7290,8 +7428,6 @@
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/vacm.h
-./mibII/tcp.lo: ../../include/net-snmp/output_api.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/tcp.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7337,27 +7473,28 @@
 ./mibII/tcp.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/tcp.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./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/system/linux.h
-./mibII/tcpTable.lo: ../../include/net-snmp/system/sysv.h
-./mibII/tcpTable.lo: ../../include/net-snmp/system/generic.h
-./mibII/tcpTable.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/tcpTable.lo: ./mibII/mibII_common.h
 ./mibII/tcpTable.lo: ../../agent/kernel.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/definitions.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/types.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/oid.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/types.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/asn1.h
+./mibII/tcpTable.lo: ../../include/net-snmp/output_api.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/session_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7365,8 +7502,12 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7388,7 +7529,6 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/factory.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7401,8 +7541,6 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/vacm.h
-./mibII/tcpTable.lo: ../../include/net-snmp/output_api.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7448,24 +7586,25 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/tcpTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/auto_nlist.h ./mibII/tcp.h
 ./mibII/tcpTable.lo: ./mibII/tcpTable.h
 ./mibII/udp.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/udp.lo: ../../include/net-snmp/system/linux.h
-./mibII/udp.lo: ../../include/net-snmp/system/sysv.h
-./mibII/udp.lo: ../../include/net-snmp/system/generic.h
-./mibII/udp.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/udp.lo: ./mibII/mibII_common.h
 ./mibII/udp.lo: ../../agent/kernel.h
 ./mibII/udp.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/udp.lo: ../../include/net-snmp/definitions.h
 ./mibII/udp.lo: ../../include/net-snmp/types.h
+./mibII/udp.lo: ../../include/net-snmp/library/oid.h
 ./mibII/udp.lo: ../../include/net-snmp/library/types.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/udp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/udp.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/asn1.h
+./mibII/udp.lo: ../../include/net-snmp/output_api.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/udp.lo: ../../include/net-snmp/session_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7473,8 +7612,12 @@
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/udp.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7496,7 +7639,6 @@
 ./mibII/udp.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/udp.lo: ../../include/net-snmp/library/container.h
 ./mibII/udp.lo: ../../include/net-snmp/library/factory.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/udp.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/udp.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/udp.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7509,8 +7651,6 @@
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/udp.lo: ../../include/net-snmp/library/vacm.h
-./mibII/udp.lo: ../../include/net-snmp/output_api.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/udp.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/udp.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7556,27 +7696,28 @@
 ./mibII/udp.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/udp.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/sysORTable.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/udp.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ./mibII/udp.h
 ./mibII/udp.lo: ./mibII/udpTable.h
 ./mibII/udpTable.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/udpTable.lo: ../../include/net-snmp/system/linux.h
-./mibII/udpTable.lo: ../../include/net-snmp/system/sysv.h
-./mibII/udpTable.lo: ../../include/net-snmp/system/generic.h
-./mibII/udpTable.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/udpTable.lo: ./mibII/mibII_common.h
 ./mibII/udpTable.lo: ../../agent/kernel.h
 ./mibII/udpTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/udpTable.lo: ../../include/net-snmp/definitions.h
 ./mibII/udpTable.lo: ../../include/net-snmp/types.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/oid.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/types.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/udpTable.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/asn1.h
+./mibII/udpTable.lo: ../../include/net-snmp/output_api.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/udpTable.lo: ../../include/net-snmp/session_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7584,8 +7725,12 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7607,7 +7752,6 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/factory.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7620,8 +7764,6 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/vacm.h
-./mibII/udpTable.lo: ../../include/net-snmp/output_api.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/udpTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7667,22 +7809,23 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/udpTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/auto_nlist.h ./mibII/udp.h
 ./mibII/udpTable.lo: ./mibII/udpTable.h
 ./mibII/updates.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/updates.lo: ../../include/net-snmp/system/linux.h
-./mibII/updates.lo: ../../include/net-snmp/system/sysv.h
-./mibII/updates.lo: ../../include/net-snmp/system/generic.h
-./mibII/updates.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/updates.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/updates.lo: ../../include/net-snmp/definitions.h
 ./mibII/updates.lo: ../../include/net-snmp/types.h
+./mibII/updates.lo: ../../include/net-snmp/library/oid.h
 ./mibII/updates.lo: ../../include/net-snmp/library/types.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/updates.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/updates.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/updates.lo: ../../include/net-snmp/library/asn1.h
+./mibII/updates.lo: ../../include/net-snmp/output_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/updates.lo: ../../include/net-snmp/session_api.h
 ./mibII/updates.lo: ../../include/net-snmp/library/callback.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7690,8 +7833,12 @@
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/updates.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7713,7 +7860,6 @@
 ./mibII/updates.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/updates.lo: ../../include/net-snmp/library/container.h
 ./mibII/updates.lo: ../../include/net-snmp/library/factory.h
-./mibII/updates.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/updates.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/updates.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/updates.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7726,8 +7872,6 @@
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/updates.lo: ../../include/net-snmp/library/vacm.h
-./mibII/updates.lo: ../../include/net-snmp/output_api.h
-./mibII/updates.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/updates.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/updates.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/updates.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7773,20 +7917,21 @@
 ./mibII/updates.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/updates.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/updates.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/updates.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/system/linux.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/system/sysv.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/system/generic.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/definitions.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/types.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/oid.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/types.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/asn1.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/output_api.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/session_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7794,8 +7939,12 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7817,7 +7966,6 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/factory.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7830,8 +7978,6 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/vacm.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/output_api.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7877,22 +8023,23 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./mibII/vacm_conf.lo: ./mibII/vacm_conf.h ../../agent/snmpd.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/vacm_context.lo: ../../include/net-snmp/system/linux.h
-./mibII/vacm_context.lo: ../../include/net-snmp/system/sysv.h
-./mibII/vacm_context.lo: ../../include/net-snmp/system/generic.h
-./mibII/vacm_context.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/definitions.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/types.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/oid.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/types.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/asn1.h
+./mibII/vacm_context.lo: ../../include/net-snmp/output_api.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/session_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -7900,8 +8047,12 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -7923,7 +8074,6 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/factory.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/container_iterator.h
@@ -7936,8 +8086,6 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/vacm.h
-./mibII/vacm_context.lo: ../../include/net-snmp/output_api.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/transform_oids.h
@@ -7983,21 +8131,22 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/vacm_context.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/vacm_context.lo: ./mibII/vacm_context.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/system/linux.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/system/sysv.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/system/generic.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/machine/generic.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/definitions.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/types.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/oid.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/types.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/asn1.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/output_api.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/session_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8005,8 +8154,12 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8028,7 +8181,6 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/factory.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8041,8 +8193,6 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/vacm.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/output_api.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8088,24 +8238,25 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./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/system/linux.h
-./mibII/var_route.lo: ../../include/net-snmp/system/sysv.h
-./mibII/var_route.lo: ../../include/net-snmp/system/generic.h
-./mibII/var_route.lo: ../../include/net-snmp/machine/generic.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
 ./mibII/var_route.lo: ../../include/net-snmp/types.h
+./mibII/var_route.lo: ../../include/net-snmp/library/oid.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/types.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/var_route.lo: ../../include/net-snmp/pdu_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/asn1.h
+./mibII/var_route.lo: ../../include/net-snmp/output_api.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/var_route.lo: ../../include/net-snmp/session_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/callback.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8113,8 +8264,12 @@
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8136,7 +8291,6 @@
 ./mibII/var_route.lo: ../../include/net-snmp/library/check_varbind.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/container.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/factory.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmp_logging.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/container_binary_array.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8149,8 +8303,6 @@
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_enum.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/vacm.h
-./mibII/var_route.lo: ../../include/net-snmp/output_api.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmp_debug.h
 ./mibII/var_route.lo: ../../include/net-snmp/snmpv3_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpv3.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8196,25 +8348,26 @@
 ./mibII/var_route.lo: ../../include/net-snmp/agent/table_container.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/table_array.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/var_route.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./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
 ./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-config.h
-./misc/ipfwacc.lo: ../../include/net-snmp/system/linux.h
-./misc/ipfwacc.lo: ../../include/net-snmp/system/sysv.h
-./misc/ipfwacc.lo: ../../include/net-snmp/system/generic.h
-./misc/ipfwacc.lo: ../../include/net-snmp/machine/generic.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-includes.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/definitions.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/types.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/oid.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/types.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/varbind_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_client.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/pdu_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/asn1.h
+./misc/ipfwacc.lo: ../../include/net-snmp/output_api.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_debug.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/session_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/callback.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8222,8 +8375,12 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8245,7 +8402,6 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/check_varbind.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/container.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/factory.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/container_binary_array.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8258,8 +8414,6 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_enum.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/vacm.h
-./misc/ipfwacc.lo: ../../include/net-snmp/output_api.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_debug.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/snmpv3_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpv3.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8305,21 +8459,22 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/table_container.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/table_array.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/system/sysv.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/system/generic.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/machine/generic.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
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/oid.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/types.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/varbind_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/pdu_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/asn1.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/output_api.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_debug.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/session_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/callback.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8327,8 +8482,12 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8350,7 +8509,6 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/check_varbind.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/container.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/factory.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/container_binary_array.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8363,8 +8521,6 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_enum.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/vacm.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/output_api.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_debug.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/snmpv3_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpv3.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8410,23 +8566,24 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/table_container.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/table_array.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/mfd.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/sysORTable.h
 ./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/system/linux.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/system/sysv.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/system/generic.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/machine/generic.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
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/oid.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/types.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/varbind_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/pdu_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/asn1.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/output_api.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/session_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/callback.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8434,8 +8591,12 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8457,7 +8618,6 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/container.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/factory.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8470,8 +8630,6 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/vacm.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/output_api.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8517,22 +8675,23 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/table_container.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/table_array.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/mfd.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/system/sysv.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/system/generic.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/machine/generic.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
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/oid.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/types.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/varbind_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/pdu_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/asn1.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/output_api.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/session_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/callback.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8540,8 +8699,12 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8563,7 +8726,6 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/container.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/factory.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8576,8 +8738,6 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/vacm.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/output_api.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8623,6 +8783,7 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/table_container.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/table_array.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/mfd.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./notification/snmpNotifyTable.lo: header_complex.h
 ./notification/snmpNotifyTable.lo: ./notification/snmpNotifyTable.h
 ./notification/snmpNotifyTable.lo: ./notification/snmpNotifyFilterProfileTable.h
@@ -8638,19 +8799,19 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/sysORTable.h
 ./notification/snmpNotifyTable.lo: notification-log-mib/notification_log.h
 ./Rmon/agutil.lo: ../../include/net-snmp/net-snmp-config.h
-./Rmon/agutil.lo: ../../include/net-snmp/system/linux.h
-./Rmon/agutil.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/agutil.lo: ../../include/net-snmp/system/generic.h
-./Rmon/agutil.lo: ../../include/net-snmp/machine/generic.h
 ./Rmon/agutil.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/agutil.lo: ../../include/net-snmp/definitions.h
 ./Rmon/agutil.lo: ../../include/net-snmp/types.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/types.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/agutil.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/agutil.lo: ../../include/net-snmp/output_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/agutil.lo: ../../include/net-snmp/session_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8658,8 +8819,12 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8681,7 +8846,6 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/container.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/factory.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8694,8 +8858,6 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/agutil.lo: ../../include/net-snmp/output_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/agutil.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/agutil.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8740,22 +8902,23 @@
 ./Rmon/agutil.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/agutil.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/agutil.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/agutil.h
-./Rmon/agutil.lo: ./Rmon/agutil_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/mfd.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/agutil.lo: ./Rmon/agutil.h ./Rmon/agutil_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/net-snmp-config.h
-./Rmon/alarm.lo: ../../include/net-snmp/system/linux.h
-./Rmon/alarm.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/alarm.lo: ../../include/net-snmp/system/generic.h
-./Rmon/alarm.lo: ../../include/net-snmp/machine/generic.h
 ./Rmon/alarm.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/alarm.lo: ../../include/net-snmp/definitions.h
 ./Rmon/alarm.lo: ../../include/net-snmp/types.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/types.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/alarm.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/alarm.lo: ../../include/net-snmp/output_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/alarm.lo: ../../include/net-snmp/session_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8763,8 +8926,12 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8786,7 +8953,6 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/container.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/factory.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8799,8 +8965,6 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/alarm.lo: ../../include/net-snmp/output_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/alarm.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/alarm.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8845,22 +9009,23 @@
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/alarm.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/alarm.h
-./Rmon/alarm.lo: ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/system/generic.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/machine/generic.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
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/types.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/output_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/session_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8868,8 +9033,12 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8891,7 +9060,6 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/container.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/factory.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -8904,8 +9072,6 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/output_api.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -8950,22 +9116,23 @@
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/alarmTable.lo: ../../include/net-snmp/agent/mfd.h utilities/iquery.h
-./Rmon/alarmTable.lo: ./Rmon/alarmTable.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./Rmon/event.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/event.lo: ../../include/net-snmp/system/generic.h
-./Rmon/event.lo: ../../include/net-snmp/machine/generic.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
+./Rmon/event.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/event.lo: ../../include/net-snmp/library/types.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/event.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/event.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/event.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/event.lo: ../../include/net-snmp/output_api.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/event.lo: ../../include/net-snmp/session_api.h
 ./Rmon/event.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -8973,8 +9140,12 @@
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/event.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -8996,7 +9167,6 @@
 ./Rmon/event.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/event.lo: ../../include/net-snmp/library/container.h
 ./Rmon/event.lo: ../../include/net-snmp/library/factory.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/event.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/event.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/event.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9009,8 +9179,6 @@
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/event.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/event.lo: ../../include/net-snmp/output_api.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/event.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/event.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/event.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9055,22 +9223,23 @@
 ./Rmon/event.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/event.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/event.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/event.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/event.h
-./Rmon/event.lo: ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/event.lo: ../../include/net-snmp/agent/mfd.h
+./Rmon/event.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/event.lo: ./Rmon/event.h ./Rmon/agutil_api.h ./Rmon/row_api.h
 ./Rmon/history.lo: ../../include/net-snmp/net-snmp-config.h
-./Rmon/history.lo: ../../include/net-snmp/system/linux.h
-./Rmon/history.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/history.lo: ../../include/net-snmp/system/generic.h
-./Rmon/history.lo: ../../include/net-snmp/machine/generic.h
 ./Rmon/history.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/history.lo: ../../include/net-snmp/definitions.h
 ./Rmon/history.lo: ../../include/net-snmp/types.h
+./Rmon/history.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/history.lo: ../../include/net-snmp/library/types.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/history.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/history.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/history.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/history.lo: ../../include/net-snmp/output_api.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/history.lo: ../../include/net-snmp/session_api.h
 ./Rmon/history.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9078,8 +9247,12 @@
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/history.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9101,7 +9274,6 @@
 ./Rmon/history.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/history.lo: ../../include/net-snmp/library/container.h
 ./Rmon/history.lo: ../../include/net-snmp/library/factory.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/history.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/history.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/history.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9114,8 +9286,6 @@
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/history.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/history.lo: ../../include/net-snmp/output_api.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/history.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/history.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/history.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9160,22 +9330,23 @@
 ./Rmon/history.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/history.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/history.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/history.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/history.h
-./Rmon/history.lo: ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/history.lo: ../../include/net-snmp/agent/mfd.h
+./Rmon/history.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/history.lo: ./Rmon/history.h ./Rmon/agutil_api.h ./Rmon/row_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/net-snmp-config.h
-./Rmon/rows.lo: ../../include/net-snmp/system/linux.h
-./Rmon/rows.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/rows.lo: ../../include/net-snmp/system/generic.h
-./Rmon/rows.lo: ../../include/net-snmp/machine/generic.h
 ./Rmon/rows.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/rows.lo: ../../include/net-snmp/definitions.h
 ./Rmon/rows.lo: ../../include/net-snmp/types.h
+./Rmon/rows.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/types.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/rows.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/rows.lo: ../../include/net-snmp/output_api.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/rows.lo: ../../include/net-snmp/session_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9183,8 +9354,12 @@
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9206,7 +9381,6 @@
 ./Rmon/rows.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/container.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/factory.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9219,8 +9393,6 @@
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/rows.lo: ../../include/net-snmp/output_api.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/rows.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/rows.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9265,22 +9437,23 @@
 ./Rmon/rows.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/rows.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/rows.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/agutil_api.h
-./Rmon/rows.lo: ./Rmon/rows.h ./Rmon/row_api.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/mfd.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/rows.lo: ./Rmon/agutil_api.h ./Rmon/rows.h ./Rmon/row_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/net-snmp-config.h
-./Rmon/statistics.lo: ../../include/net-snmp/system/linux.h
-./Rmon/statistics.lo: ../../include/net-snmp/system/sysv.h
-./Rmon/statistics.lo: ../../include/net-snmp/system/generic.h
-./Rmon/statistics.lo: ../../include/net-snmp/machine/generic.h
 ./Rmon/statistics.lo: ../../include/net-snmp/net-snmp-includes.h
 ./Rmon/statistics.lo: ../../include/net-snmp/definitions.h
 ./Rmon/statistics.lo: ../../include/net-snmp/types.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/oid.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/types.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/varbind_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_client.h
 ./Rmon/statistics.lo: ../../include/net-snmp/pdu_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/asn1.h
+./Rmon/statistics.lo: ../../include/net-snmp/output_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_debug.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/statistics.lo: ../../include/net-snmp/session_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/callback.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9288,8 +9461,12 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9311,7 +9488,6 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/library/check_varbind.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/container.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/factory.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_logging.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/container_binary_array.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9324,8 +9500,6 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_enum.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/vacm.h
-./Rmon/statistics.lo: ../../include/net-snmp/output_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_debug.h
 ./Rmon/statistics.lo: ../../include/net-snmp/snmpv3_api.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/snmpv3.h
 ./Rmon/statistics.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9370,22 +9544,24 @@
 ./Rmon/statistics.lo: ../../include/net-snmp/agent/table_iterator.h
 ./Rmon/statistics.lo: ../../include/net-snmp/agent/table_container.h
 ./Rmon/statistics.lo: ../../include/net-snmp/agent/table_array.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/mfd.h ./Rmon/statistics.h
-./Rmon/statistics.lo: ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/mfd.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/statistics.lo: ./Rmon/statistics.h ./Rmon/agutil_api.h
+./Rmon/statistics.lo: ./Rmon/row_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9393,8 +9569,12 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9416,7 +9596,6 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9429,8 +9608,6 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9476,22 +9653,23 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ./sctp-mib/sctpAssocLocalAddrTable.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9499,8 +9677,12 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9522,7 +9704,6 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9535,8 +9716,6 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9582,22 +9761,23 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ./sctp-mib/sctpAssocRemAddrTable.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9605,8 +9785,12 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9628,7 +9812,6 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9641,8 +9824,6 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9688,22 +9869,23 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpAssocTable.lo: ./sctp-mib/sctpAssocTable.h
 ./sctp-mib/sctpAssocTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9711,8 +9893,12 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9734,7 +9920,6 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9747,8 +9932,6 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9794,22 +9977,23 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ./sctp-mib/sctpLookupLocalPortTable.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9817,8 +10001,12 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9840,7 +10028,6 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9853,8 +10040,6 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -9900,22 +10085,23 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ./sctp-mib/sctpLookupRemHostNameTable.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -9923,8 +10109,12 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -9946,7 +10136,6 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -9959,8 +10148,6 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10006,22 +10193,23 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ./sctp-mib/sctpLookupRemIPAddrTable.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10029,8 +10217,12 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10052,7 +10244,6 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10065,8 +10256,6 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10112,22 +10301,23 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ./sctp-mib/sctpLookupRemPortTable.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10135,8 +10325,12 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10158,7 +10352,6 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10171,8 +10364,6 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10218,22 +10409,23 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ./sctp-mib/sctpLookupRemPrimIPAddrTable.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10241,8 +10433,12 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10264,7 +10460,6 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10277,8 +10472,6 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10324,22 +10517,23 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpScalars.lo: ./sctp-mib/sctpScalars.h
 ./sctp-mib/sctpScalars.lo: ./sctp-mib/sctpScalars_common.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10347,8 +10541,12 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10370,7 +10568,6 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10383,8 +10580,6 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10430,21 +10625,22 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpScalars_common.lo: ./sctp-mib/sctpScalars_common.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10452,8 +10648,12 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10475,7 +10675,6 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10488,8 +10687,6 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10535,21 +10732,22 @@
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpScalars_freebsd.lo: ./sctp-mib/sctpScalars_common.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10557,8 +10755,12 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10580,7 +10782,6 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10593,8 +10794,6 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10640,21 +10839,22 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpScalars_linux.lo: ./sctp-mib/sctpScalars_common.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10662,8 +10862,12 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10685,7 +10889,6 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10698,8 +10901,6 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10745,22 +10946,23 @@
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/machine/generic.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
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10768,8 +10970,12 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10791,7 +10997,6 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10804,8 +11009,6 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10851,6 +11054,7 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpAssocTable.h
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpAssocRemAddrTable.h
@@ -10861,19 +11065,19 @@
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpLookupRemPrimIPAddrTable.h
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpLookupRemIPAddrTable.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10881,8 +11085,12 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -10904,7 +11112,6 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container_iterator.h
@@ -10917,8 +11124,6 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/transform_oids.h
@@ -10964,27 +11169,30 @@
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpTables_freebsd.lo: ./sctp-mib/sctpAssocTable.h
 ./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/header_generic.h
-./sctp-mib/sctpTables_freebsd.lo: util_funcs/header_simple_table.h struct.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/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/system/linux.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -10992,8 +11200,12 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11015,7 +11227,6 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11028,8 +11239,6 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11075,25 +11284,26 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpTables_linux.lo: ./sctp-mib/sctpAssocTable.h
 ./sctp-mib/sctpTables_linux.lo: ./sctp-mib/sctpTables_common.h
 ./sctp-mib/sctpTables_linux.lo: ./sctp-mib/sctpAssocLocalAddrTable.h
 ./sctp-mib/sctpTables_linux.lo: ./sctp-mib/sctpAssocRemAddrTable.h
 ./sctp-mib/sctpTables_linux.lo: ../../agent/mibgroup/util_funcs/get_pid_from_inode.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/net-snmp-config.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/system/linux.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/system/sysv.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/system/generic.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/machine/generic.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/types.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/oid.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/types.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/pdu_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/asn1.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/output_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/session_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11101,8 +11311,12 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11124,7 +11338,6 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/check_varbind.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/factory.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11137,8 +11350,6 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/vacm.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/output_api.h
-./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11184,28 +11395,31 @@
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_container.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_array.h
 ./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/mfd.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./sctp-mib/sctpTables_solaris2.lo: ./sctp-mib/sctpAssocTable.h
 ./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/header_generic.h
-./sctp-mib/sctpTables_solaris2.lo: util_funcs/header_simple_table.h struct.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/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/system/linux.h
-./smux/smux.lo: ../../include/net-snmp/system/sysv.h
-./smux/smux.lo: ../../include/net-snmp/system/generic.h
-./smux/smux.lo: ../../include/net-snmp/machine/generic.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
+./smux/smux.lo: ../../include/net-snmp/library/oid.h
 ./smux/smux.lo: ../../include/net-snmp/library/types.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_api.h
 ./smux/smux.lo: ../../include/net-snmp/varbind_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/smux.lo: ../../include/net-snmp/pdu_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/asn1.h
+./smux/smux.lo: ../../include/net-snmp/output_api.h
+./smux/smux.lo: ../../include/net-snmp/library/snmp_debug.h
+./smux/smux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/smux.lo: ../../include/net-snmp/session_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/callback.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11213,8 +11427,12 @@
 ./smux/smux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./smux/smux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./smux/smux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./smux/smux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./smux/smux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./smux/smux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11236,7 +11454,6 @@
 ./smux/smux.lo: ../../include/net-snmp/library/check_varbind.h
 ./smux/smux.lo: ../../include/net-snmp/library/container.h
 ./smux/smux.lo: ../../include/net-snmp/library/factory.h
-./smux/smux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/smux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./smux/smux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./smux/smux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11249,8 +11466,6 @@
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./smux/smux.lo: ../../include/net-snmp/library/vacm.h
-./smux/smux.lo: ../../include/net-snmp/output_api.h
-./smux/smux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./smux/smux.lo: ../../include/net-snmp/snmpv3_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpv3.h
 ./smux/smux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11295,22 +11510,23 @@
 ./smux/smux.lo: ../../include/net-snmp/agent/table_iterator.h
 ./smux/smux.lo: ../../include/net-snmp/agent/table_container.h
 ./smux/smux.lo: ../../include/net-snmp/agent/table_array.h
-./smux/smux.lo: ../../include/net-snmp/agent/mfd.h smux.h mibdefs.h
-./smux/smux.lo: ../../agent/snmpd.h
+./smux/smux.lo: ../../include/net-snmp/agent/mfd.h
+./smux/smux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h smux.h
+./smux/smux.lo: mibdefs.h ../../agent/snmpd.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/net-snmp-config.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/system/linux.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/system/sysv.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/system/generic.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/machine/generic.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/net-snmp-includes.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/definitions.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/types.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/oid.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/types.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/pdu_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/asn1.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/output_api.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_debug.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/session_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11318,8 +11534,12 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11341,7 +11561,6 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/check_varbind.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/factory.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/container_binary_array.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11354,8 +11573,6 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_enum.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/vacm.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/output_api.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_debug.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/snmpv3_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpv3.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11400,22 +11617,23 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/table_iterator.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/table_container.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/table_array.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/agent/mfd.h smux.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/agent/mfd.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/agent/snmp_get_statistic.h smux.h
 ./smux/snmp_bgp.lo: ./smux/snmp_bgp.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/net-snmp-config.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/system/linux.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/system/sysv.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/system/generic.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/machine/generic.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/net-snmp-includes.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/definitions.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/types.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/oid.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/types.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/pdu_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/asn1.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/output_api.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_debug.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/session_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11423,8 +11641,12 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11446,7 +11668,6 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/check_varbind.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/factory.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/container_binary_array.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11459,8 +11680,6 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_enum.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/vacm.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/output_api.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_debug.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/snmpv3_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpv3.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11505,22 +11724,23 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/table_iterator.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/table_container.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/table_array.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/agent/mfd.h smux.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/agent/mfd.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/agent/snmp_get_statistic.h smux.h
 ./smux/snmp_ospf.lo: ./smux/snmp_ospf.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/net-snmp-config.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/system/linux.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/system/sysv.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/system/generic.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/machine/generic.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/definitions.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/types.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/oid.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/types.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/pdu_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/asn1.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/output_api.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_debug.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/session_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11528,8 +11748,12 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11551,7 +11775,6 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/check_varbind.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/factory.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11564,8 +11787,6 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/vacm.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/output_api.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/snmpv3_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpv3.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11610,22 +11831,23 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/table_iterator.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/table_container.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/table_array.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/agent/mfd.h smux.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/machine/generic.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
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/output_api.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11633,8 +11855,12 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11656,7 +11882,6 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11669,8 +11894,6 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/output_api.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11716,23 +11939,24 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/sysORTable.h
 ./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/system/linux.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/machine/generic.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
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/output_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11740,8 +11964,12 @@
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11763,7 +11991,6 @@
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11776,8 +12003,6 @@
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/output_api.h
-./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11823,24 +12048,24 @@
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/sysORTable.h
 ./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./snmpv3/snmpMPDStats_5_5.lo: ./snmpv3/snmpMPDStats_5_5.h
-./snmpv3/snmpMPDStats_5_5.lo: ./utilities/snmp_get_statistic.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/net-snmp-config.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/system/linux.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/machine/generic.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/types.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/output_api.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11848,8 +12073,12 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11871,7 +12100,6 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11884,8 +12112,6 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/output_api.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/transform_oids.h
@@ -11931,23 +12157,24 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/sysORTable.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./snmpv3/snmpMPDStats.lo: ./snmpv3/snmpMPDStats.h util_funcs/header_generic.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/net-snmp-config.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/system/linux.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/machine/generic.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/types.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/output_api.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -11955,8 +12182,12 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -11978,7 +12209,6 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/container_iterator.h
@@ -11991,8 +12221,6 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/output_api.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12038,20 +12266,21 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/table_array.h
 ./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/system/linux.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/machine/generic.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
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/output_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12059,8 +12288,12 @@
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12082,7 +12315,6 @@
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12095,8 +12327,6 @@
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/output_api.h
-./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12142,24 +12372,24 @@
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/sysORTable.h
 ./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_callbacks.h
 ./snmpv3/usmStats_5_5.lo: ./snmpv3/usmStats_5_5.h
-./snmpv3/usmStats_5_5.lo: ./utilities/snmp_get_statistic.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/net-snmp-config.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/system/linux.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/machine/generic.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/types.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/output_api.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12167,8 +12397,12 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12190,7 +12424,6 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12203,8 +12436,6 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/output_api.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12250,23 +12481,24 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/sysORTable.h
 ./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/system/linux.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/system/sysv.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/system/generic.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/machine/generic.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
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/oid.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/types.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/pdu_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/asn1.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/output_api.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_debug.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/session_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12274,8 +12506,12 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12297,7 +12533,6 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/check_varbind.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/factory.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_logging.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/container_binary_array.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12310,8 +12545,6 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_enum.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/vacm.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/output_api.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_debug.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/snmpv3_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpv3.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12357,21 +12590,22 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/table_container.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/table_array.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/mfd.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./snmpv3/usmUser.lo: util_funcs/header_generic.h ./snmpv3/usmUser.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/net-snmp-config.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/system/linux.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/system/sysv.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/system/generic.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/machine/generic.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/definitions.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/types.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/oid.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/types.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/varbind_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/pdu_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/asn1.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/output_api.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/session_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/callback.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12379,8 +12613,12 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12402,7 +12640,6 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/check_varbind.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/container.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/factory.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/container_binary_array.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12415,8 +12652,6 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_enum.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/vacm.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/output_api.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_debug.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/snmpv3_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpv3.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12462,22 +12697,23 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/table_container.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/table_array.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/mfd.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./target/snmpTargetAddrEntry.lo: ./target/snmpTargetAddrEntry.h
 ./target/snmpTargetAddrEntry.lo: util_funcs/header_generic.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/net-snmp-config.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/system/linux.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/system/sysv.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/system/generic.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/machine/generic.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/definitions.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/types.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/oid.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/types.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/varbind_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/pdu_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/asn1.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/output_api.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/session_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/callback.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12485,8 +12721,12 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12508,7 +12748,6 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/check_varbind.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/container.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/factory.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/container_binary_array.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12521,8 +12760,6 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_enum.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/vacm.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/output_api.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_debug.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/snmpv3_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpv3.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12568,21 +12805,22 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/table_container.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/table_array.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./target/target.lo: ../../include/net-snmp/system/sysv.h
-./target/target.lo: ../../include/net-snmp/system/generic.h
-./target/target.lo: ../../include/net-snmp/machine/generic.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
+./target/target.lo: ../../include/net-snmp/library/oid.h
 ./target/target.lo: ../../include/net-snmp/library/types.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_api.h
 ./target/target.lo: ../../include/net-snmp/varbind_api.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/target.lo: ../../include/net-snmp/pdu_api.h
 ./target/target.lo: ../../include/net-snmp/library/asn1.h
+./target/target.lo: ../../include/net-snmp/output_api.h
+./target/target.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/target.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target.lo: ../../include/net-snmp/session_api.h
 ./target/target.lo: ../../include/net-snmp/library/callback.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12590,8 +12828,12 @@
 ./target/target.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./target/target.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./target/target.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./target/target.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./target/target.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./target/target.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./target/target.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12613,7 +12855,6 @@
 ./target/target.lo: ../../include/net-snmp/library/check_varbind.h
 ./target/target.lo: ../../include/net-snmp/library/container.h
 ./target/target.lo: ../../include/net-snmp/library/factory.h
-./target/target.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target.lo: ../../include/net-snmp/library/container_binary_array.h
 ./target/target.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./target/target.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12626,8 +12867,6 @@
 ./target/target.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_enum.h
 ./target/target.lo: ../../include/net-snmp/library/vacm.h
-./target/target.lo: ../../include/net-snmp/output_api.h
-./target/target.lo: ../../include/net-snmp/library/snmp_debug.h
 ./target/target.lo: ../../include/net-snmp/snmpv3_api.h
 ./target/target.lo: ../../include/net-snmp/library/snmpv3.h
 ./target/target.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12673,22 +12912,23 @@
 ./target/target.lo: ../../include/net-snmp/agent/table_container.h
 ./target/target.lo: ../../include/net-snmp/agent/table_array.h
 ./target/target.lo: ../../include/net-snmp/agent/mfd.h
+./target/target.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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/system/linux.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/system/sysv.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/system/generic.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/machine/generic.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
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/oid.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/types.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_api.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/varbind_api.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/pdu_api.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/asn1.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/output_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/session_api.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/callback.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12696,8 +12936,12 @@
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12719,7 +12963,6 @@
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/check_varbind.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/container.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/factory.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_binary_array.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12732,8 +12975,6 @@
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_enum.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/vacm.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/output_api.h
-./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_debug.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/snmpv3_api.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpv3.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12779,22 +13020,22 @@
 ./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_container.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_array.h
 ./target/target_counters_5_5.lo: ../../include/net-snmp/agent/mfd.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./target/target_counters_5_5.lo: ./target/target_counters_5_5.h
-./target/target_counters_5_5.lo: ./utilities/snmp_get_statistic.h
 ./target/target_counters.lo: ../../include/net-snmp/net-snmp-config.h
-./target/target_counters.lo: ../../include/net-snmp/system/linux.h
-./target/target_counters.lo: ../../include/net-snmp/system/sysv.h
-./target/target_counters.lo: ../../include/net-snmp/system/generic.h
-./target/target_counters.lo: ../../include/net-snmp/machine/generic.h
 ./target/target_counters.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/target_counters.lo: ../../include/net-snmp/definitions.h
 ./target/target_counters.lo: ../../include/net-snmp/types.h
+./target/target_counters.lo: ../../include/net-snmp/library/oid.h
 ./target/target_counters.lo: ../../include/net-snmp/library/types.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_api.h
 ./target/target_counters.lo: ../../include/net-snmp/varbind_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/target_counters.lo: ../../include/net-snmp/pdu_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/asn1.h
+./target/target_counters.lo: ../../include/net-snmp/output_api.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmp_debug.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target_counters.lo: ../../include/net-snmp/session_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/callback.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12802,8 +13043,12 @@
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./target/target_counters.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12825,7 +13070,6 @@
 ./target/target_counters.lo: ../../include/net-snmp/library/check_varbind.h
 ./target/target_counters.lo: ../../include/net-snmp/library/container.h
 ./target/target_counters.lo: ../../include/net-snmp/library/factory.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmp_logging.h
 ./target/target_counters.lo: ../../include/net-snmp/library/container_binary_array.h
 ./target/target_counters.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./target/target_counters.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12838,8 +13082,6 @@
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_enum.h
 ./target/target_counters.lo: ../../include/net-snmp/library/vacm.h
-./target/target_counters.lo: ../../include/net-snmp/output_api.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmp_debug.h
 ./target/target_counters.lo: ../../include/net-snmp/snmpv3_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpv3.h
 ./target/target_counters.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12885,21 +13127,129 @@
 ./target/target_counters.lo: ../../include/net-snmp/agent/table_container.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/table_array.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/mfd.h
+./target/target_counters.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./target/target_counters.lo: ./target/target_counters.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/net-snmp-config.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/net-snmp-includes.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/definitions.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/types.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/oid.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/types.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/varbind_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_client.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/pdu_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/asn1.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/output_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_debug.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_logging.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/session_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/callback.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_transport.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_service.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/ucd_compat.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/mib.h
+./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/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
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/getopt.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/utilities.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/system.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/tools.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/int64.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/mt_support.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_alarm.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/data_list.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/check_varbind.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/container.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/factory.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/container_binary_array.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/container_list_ssll.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/container_iterator.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/container.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_assert.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/version.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/config_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/read_config.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/default_store.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_enum.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/vacm.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/snmpv3_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpv3.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/transform_oids.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/keytools.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/agent_module_config.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/snmp_agent.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/snmp_vars.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/agent_handler.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/var_struct.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/agent_registry.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/fd_event_manager.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/ds_agent.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/agent_read_config.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/agent_trap.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/all_helpers.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/instance.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/baby_steps.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/scalar.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/scalar_group.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/watcher.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/multiplexer.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/null.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/debug_handler.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/cache_handler.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/old_api.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/read_only.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/row_merge.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/serialize.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/mode_end_call.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_data.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_dataset.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_tdata.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_iterator.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_container.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/table_array.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/mfd.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ./tsm-mib/snmpTsmConfigurationUsePrefix.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/net-snmp-config.h
-./tunnel/tunnel.lo: ../../include/net-snmp/system/linux.h
-./tunnel/tunnel.lo: ../../include/net-snmp/system/sysv.h
-./tunnel/tunnel.lo: ../../include/net-snmp/system/generic.h
-./tunnel/tunnel.lo: ../../include/net-snmp/machine/generic.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/net-snmp-includes.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/definitions.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/types.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/oid.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/types.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/varbind_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_client.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/pdu_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/asn1.h
+./tunnel/tunnel.lo: ../../include/net-snmp/output_api.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_debug.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_logging.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/session_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/callback.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -12907,8 +13257,12 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -12930,7 +13284,6 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/check_varbind.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/container.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/factory.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_logging.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/container_binary_array.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/container_iterator.h
@@ -12943,8 +13296,6 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_enum.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/vacm.h
-./tunnel/tunnel.lo: ../../include/net-snmp/output_api.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_debug.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/snmpv3_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpv3.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/transform_oids.h
@@ -12990,6 +13341,7 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/table_container.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/table_array.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/mfd.h
+./tunnel/tunnel.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/sysORTable.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/agent_callbacks.h tunnel.h
 ./tunnel/tunnel.lo: if-mib/ifTable/ifTable.h
@@ -13000,19 +13352,19 @@
 ./tunnel/tunnel.lo: if-mib/ifTable/ifTable_data_access.h
 ./tunnel/tunnel.lo: if-mib/ifTable/ifTable_defs.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/types.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13020,8 +13372,12 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13043,7 +13399,6 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13056,8 +13411,6 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13103,23 +13456,133 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/auto_nlist.h struct.h
 ./ucd-snmp/disk.lo: ./ucd-snmp/disk.h mibdefs.h
 ./ucd-snmp/disk.lo: util_funcs/header_simple_table.h ./ucd-snmp/errormib.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/net-snmp-config.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/net-snmp-includes.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/definitions.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/types.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/oid.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/types.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/varbind_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_client.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/pdu_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_logging.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/session_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/callback.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_transport.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_service.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/ucd_compat.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/mib.h
+./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/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
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/getopt.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/utilities.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/system.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/tools.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/int64.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/mt_support.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_alarm.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/data_list.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/check_varbind.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/factory.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/container_binary_array.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/container_list_ssll.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/container_iterator.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_assert.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/version.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/config_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/read_config.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/default_store.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_enum.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/vacm.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/snmpv3_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpv3.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/transform_oids.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/scapi.h
+./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/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
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_iterator.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_container.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/table_array.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/hardware/fsys.h struct.h
+./ucd-snmp/disk_hw.lo: ./ucd-snmp/disk.h mibdefs.h
+./ucd-snmp/disk_hw.lo: util_funcs/header_simple_table.h ./ucd-snmp/errormib.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/types.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13127,8 +13590,12 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13150,7 +13617,6 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13163,8 +13629,6 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13210,21 +13674,23 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./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/system/linux.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13232,8 +13698,12 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13255,7 +13725,6 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13268,8 +13737,6 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13314,25 +13781,27 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/mfd.h struct.h util_funcs.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
+./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/system/linux.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/types.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13340,8 +13809,12 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13363,7 +13836,6 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13376,8 +13848,6 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13423,23 +13893,24 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/auto_nlist.h struct.h
 ./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/system/linux.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13447,8 +13918,12 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13470,7 +13945,6 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13483,8 +13957,6 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13530,25 +14002,30 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./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: utilities/execute.h
+./ucd-snmp/extensible.lo: ../../agent/mibgroup/util_funcs.h util_funcs/Exit.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
-./ucd-snmp/file.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/file.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/file.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/file.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/types.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/file.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13556,8 +14033,12 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13579,7 +14060,6 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13592,8 +14072,6 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/file.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13638,23 +14116,24 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/file.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/file.lo: ./ucd-snmp/file.h mibdefs.h
+./ucd-snmp/file.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/file.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./ucd-snmp/file.lo: struct.h ./ucd-snmp/file.h mibdefs.h
 ./ucd-snmp/file.lo: util_funcs/header_simple_table.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/types.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13662,8 +14141,12 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13685,7 +14168,6 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13698,8 +14180,6 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13744,22 +14224,23 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/mfd.h ./ucd-snmp/hpux.h
-./ucd-snmp/hpux.lo: mibdefs.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13767,8 +14248,12 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13790,7 +14275,6 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13803,8 +14287,6 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13850,22 +14332,23 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/lmSensors.lo: util_funcs/header_simple_table.h
 ./ucd-snmp/lmSensors.lo: ./ucd-snmp/lmSensors.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/types.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13873,8 +14356,12 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -13896,7 +14383,6 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container_iterator.h
@@ -13909,8 +14395,6 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/transform_oids.h
@@ -13956,22 +14440,24 @@
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/hardware/sensors.h
+./ucd-snmp/lmsensorsMib.lo: hardware/sensors/hw_sensors.h
 ./ucd-snmp/lmsensorsMib.lo: ucd-snmp/lmsensorsMib.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/types.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -13979,8 +14465,12 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14002,7 +14492,6 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14015,8 +14504,6 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14062,130 +14549,26 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/auto_nlist.h struct.h
 ./ucd-snmp/loadave.lo: ./ucd-snmp/loadave.h mibdefs.h
 ./ucd-snmp/loadave.lo: util_funcs/header_simple_table.h ../../agent/kernel.h
 ./ucd-snmp/logmatch.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/machine/generic.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/net-snmp-includes.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/definitions.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/types.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/types.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/varbind_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_client.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/asn1.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/callback.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_service.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpUnixDomain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpUDPDomain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpTCPDomain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpIPXDomain.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/ucd_compat.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/oid_stash.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_impl.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp-tc.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/getopt.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/system.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/tools.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/int64.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/mt_support.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/check_varbind.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_logging.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_binary_array.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_list_ssll.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container_iterator.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/container.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_assert.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/version.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/config_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/read_config.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/default_store.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_parse_args.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_enum.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_debug.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/snmpv3_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpv3.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/transform_oids.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/scapi.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/lcd_time.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_secmod.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmpusm.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/mib_module_config.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_tdata.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_iterator.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_container.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/logmatch.lo: ./ucd-snmp/logmatch.h mibdefs.h
-./ucd-snmp/logmatch.lo: util_funcs/header_generic.h
-./ucd-snmp/logmatch.lo: util_funcs/header_simple_table.h
+./ucd-snmp/logmatch.lo: ./ucd-snmp/logmatch.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14193,8 +14576,12 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14216,7 +14603,6 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14229,8 +14615,6 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14276,23 +14660,24 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_aix4.lo: util_funcs/header_generic.h ./ucd-snmp/memory.h
 ./ucd-snmp/memory_aix4.lo: ./ucd-snmp/memory_aix4.h mibdefs.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14300,8 +14685,12 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14323,7 +14712,6 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14336,8 +14724,6 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14383,22 +14769,23 @@
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory.lo: ../../include/net-snmp/agent/hardware/memory.h
 ./ucd-snmp/memory.lo: ./ucd-snmp/memory.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14406,8 +14793,12 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14429,7 +14820,6 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14442,8 +14832,6 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14489,23 +14877,24 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_darwin7.lo: util_funcs/header_generic.h ./ucd-snmp/memory.h
 ./ucd-snmp/memory_darwin7.lo: ./ucd-snmp/memory_darwin7.h mibdefs.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14513,8 +14902,12 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14536,7 +14929,6 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14549,8 +14941,6 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14596,23 +14986,24 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_dynix.lo: util_funcs/header_generic.h ./ucd-snmp/memory.h
 ./ucd-snmp/memory_dynix.lo: ./ucd-snmp/memory_dynix.h mibdefs.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14620,8 +15011,12 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14643,7 +15038,6 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14656,8 +15050,6 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14703,26 +15095,29 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/table_array.h
 ./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/header_generic.h
-./ucd-snmp/memory_freebsd2.lo: util_funcs/header_simple_table.h struct.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/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
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14730,8 +15125,12 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14753,7 +15152,6 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14766,8 +15164,6 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14813,23 +15209,24 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_hpux.lo: ./ucd-snmp/memory.h ./ucd-snmp/memory_hpux.h
 ./ucd-snmp/memory_hpux.lo: mibdefs.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14837,8 +15234,12 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14860,7 +15261,6 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14873,8 +15273,6 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/transform_oids.h
@@ -14920,23 +15318,24 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_netbsd1.lo: util_funcs/header_generic.h ./ucd-snmp/memory.h
 ./ucd-snmp/memory_netbsd1.lo: ./ucd-snmp/memory_netbsd1.h mibdefs.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/types.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -14944,8 +15343,12 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -14967,7 +15370,6 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -14980,8 +15382,6 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15027,24 +15427,25 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/memory_solaris2.lo: util_funcs/header_generic.h
 ./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/system/linux.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15052,8 +15453,12 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15075,7 +15480,6 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15088,8 +15492,6 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15134,26 +15536,28 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/pass.lo: ./ucd-snmp/pass.h mibdefs.h ./ucd-snmp/pass_common.h
-./ucd-snmp/pass.lo: ./ucd-snmp/extensible.h util_funcs.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/agent/mfd.h
+./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
+./ucd-snmp/pass.lo: util_funcs/header_simple_table.h util_funcs/restart.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/system/linux.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/types.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15161,8 +15565,12 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15184,7 +15592,6 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15197,8 +15604,6 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15244,25 +15649,27 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/table_array.h
 ./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/header_generic.h
-./ucd-snmp/pass_common.lo: util_funcs/header_simple_table.h struct.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/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/system/linux.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15270,8 +15677,12 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15293,7 +15704,6 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15306,8 +15716,6 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15352,26 +15760,29 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/pass_persist.lo: ./ucd-snmp/pass_persist.h mibdefs.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/mfd.h
+./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/header_generic.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/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/system/linux.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15379,8 +15790,12 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15402,7 +15817,6 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15415,8 +15829,6 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15461,25 +15873,28 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/proc.lo: ./ucd-snmp/proc.h mibdefs.h ./ucd-snmp/errormib.h
-./ucd-snmp/proc.lo: util_funcs.h util_funcs/header_generic.h
-./ucd-snmp/proc.lo: util_funcs/header_simple_table.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/agent/mfd.h
+./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: 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/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/system/linux.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15487,8 +15902,12 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15510,7 +15929,6 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15523,8 +15941,6 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15569,21 +15985,23 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/mfd.h ./ucd-snmp/proxy.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/mfd.h
+./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/system/linux.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15591,8 +16009,12 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15614,7 +16036,6 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15627,8 +16048,6 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15673,25 +16092,28 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/mfd.h struct.h
-./ucd-snmp/versioninfo.lo: ./ucd-snmp/versioninfo.h mibdefs.h util_funcs.h
+./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/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/system/linux.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15699,8 +16121,12 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15722,7 +16148,6 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15735,8 +16160,6 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15781,23 +16204,24 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mfd.h mibdefs.h
-./ucd-snmp/vmstat_aix4.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
-./ucd-snmp/vmstat_aix4.lo: ./ucd-snmp/vmstat_aix4.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./ucd-snmp/vmstat_aix4.lo: mibdefs.h util_funcs/header_generic.h
+./ucd-snmp/vmstat_aix4.lo: ./ucd-snmp/vmstat.h ./ucd-snmp/vmstat_aix4.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15805,8 +16229,12 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15828,7 +16256,6 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15841,8 +16268,6 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15888,23 +16313,24 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat_bsdi4.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_bsdi4.lo: mibdefs.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -15912,8 +16338,12 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -15935,7 +16365,6 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container_iterator.h
@@ -15948,8 +16377,6 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/transform_oids.h
@@ -15995,23 +16422,24 @@
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/hardware/cpu.h
 ./ucd-snmp/vmstat.lo: ./ucd-snmp/vmstat.h mibdefs.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16019,8 +16447,12 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16042,7 +16474,6 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16055,8 +16486,6 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16102,23 +16531,24 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat_darwin7.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_darwin7.lo: mibdefs.h ./ucd-snmp/vmstat_darwin7.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16126,8 +16556,12 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16149,7 +16583,6 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16162,8 +16595,6 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16208,23 +16639,24 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/mfd.h mibdefs.h
-./ucd-snmp/vmstat_dynix.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
-./ucd-snmp/vmstat_dynix.lo: ./ucd-snmp/vmstat_dynix.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./ucd-snmp/vmstat_dynix.lo: mibdefs.h util_funcs/header_generic.h
+./ucd-snmp/vmstat_dynix.lo: ./ucd-snmp/vmstat.h ./ucd-snmp/vmstat_dynix.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16232,8 +16664,12 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16255,7 +16691,6 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16268,8 +16703,6 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16315,24 +16748,25 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat_freebsd2.lo: util_funcs/header_generic.h
 ./ucd-snmp/vmstat_freebsd2.lo: ./ucd-snmp/vmstat.h mibdefs.h
 ./ucd-snmp/vmstat_freebsd2.lo: ./ucd-snmp/vmstat_freebsd2.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16340,8 +16774,12 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16363,7 +16801,6 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16376,8 +16813,6 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16422,23 +16857,24 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/mfd.h mibdefs.h
-./ucd-snmp/vmstat_hpux.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
-./ucd-snmp/vmstat_hpux.lo: ./ucd-snmp/vmstat_hpux.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./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/system/linux.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/machine/generic.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
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16446,8 +16882,12 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16469,7 +16909,6 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16482,8 +16921,6 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16529,24 +16966,25 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/hardware/cpu.h
 ./ucd-snmp/vmstat_linux.lo: mibdefs.h struct.h util_funcs/header_generic.h
 ./ucd-snmp/vmstat_linux.lo: ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16554,8 +16992,12 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16577,7 +17019,6 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16590,8 +17031,6 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16637,23 +17076,24 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/table_array.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/auto_nlist.h
 ./ucd-snmp/vmstat_netbsd1.lo: util_funcs/header_generic.h ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_netbsd1.lo: mibdefs.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/system/linux.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/system/sysv.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/system/generic.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/machine/generic.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/types.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/oid.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/types.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/pdu_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/asn1.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/output_api.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/session_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16661,8 +17101,12 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16684,7 +17128,6 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/check_varbind.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/factory.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_logging.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/container_binary_array.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16697,8 +17140,6 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_enum.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/vacm.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/output_api.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_debug.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/snmpv3_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpv3.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16743,18 +17184,53 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/table_iterator.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/table_container.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/table_array.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/mfd.h mibdefs.h
-./ucd-snmp/vmstat_solaris2.lo: util_funcs/header_generic.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/mfd.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./ucd-snmp/vmstat_solaris2.lo: mibdefs.h util_funcs/header_generic.h
 ./ucd-snmp/vmstat_solaris2.lo: ./ucd-snmp/vmstat.h
 ./ucd-snmp/vmstat_solaris2.lo: ./ucd-snmp/vmstat_solaris2.h
+./util_funcs/Exit.lo: ../../include/net-snmp/net-snmp-config.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_logging.h
+./util_funcs/Exit.lo: ../../include/net-snmp/types.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/oid.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/types.h
+./util_funcs/Exit.lo: ../../include/net-snmp/definitions.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_api.h
+./util_funcs/Exit.lo: ../../include/net-snmp/varbind_api.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_client.h
+./util_funcs/Exit.lo: ../../include/net-snmp/pdu_api.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs/Exit.lo: ../../include/net-snmp/output_api.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/Exit.lo: ../../include/net-snmp/session_api.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/callback.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_transport.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_service.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/ucd_compat.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/mib.h
+./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/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
+./util_funcs/Exit.lo: ./util_funcs/Exit.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/net-snmp-config.h
-./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/linux.h
-./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/sysv.h
-./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/system/generic.h
-./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/machine/generic.h
 ./util_funcs/get_pid_from_inode.lo: ./util_funcs/get_pid_from_inode.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/output_api.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/types.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/oid.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/types.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/definitions.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_api.h
@@ -16769,8 +17245,12 @@
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16784,19 +17264,19 @@
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_debug.h
 ./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/net-snmp-config.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/system/linux.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/system/sysv.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/system/generic.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/machine/generic.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/net-snmp-includes.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/definitions.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/types.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/oid.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/types.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/varbind_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_client.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/pdu_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/output_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/session_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/callback.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16804,8 +17284,12 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16827,7 +17311,6 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/check_varbind.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/container.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/factory.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_binary_array.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16840,8 +17323,6 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_enum.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/vacm.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/output_api.h
-./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_debug.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/snmpv3_api.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpv3.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16887,21 +17368,22 @@
 ./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_container.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_array.h
 ./util_funcs/header_generic.lo: ../../include/net-snmp/agent/mfd.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./util_funcs/header_generic.lo: ./util_funcs/header_generic.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-config.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/linux.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/sysv.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/system/generic.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/machine/generic.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-includes.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/definitions.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/types.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/oid.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/types.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/varbind_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_client.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/pdu_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/output_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/session_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/callback.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -16909,8 +17391,12 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -16932,7 +17418,6 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/check_varbind.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/factory.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_logging.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_binary_array.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container_iterator.h
@@ -16945,8 +17430,6 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_enum.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/vacm.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/output_api.h
-./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_debug.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/snmpv3_api.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpv3.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/transform_oids.h
@@ -16992,21 +17475,91 @@
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_container.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_array.h
 ./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/mfd.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./util_funcs/header_simple_table.lo: ./util_funcs/header_simple_table.h
+./util_funcs/restart.lo: ../../include/net-snmp/net-snmp-config.h
+./util_funcs/restart.lo: ../../include/net-snmp/net-snmp-includes.h
+./util_funcs/restart.lo: ../../include/net-snmp/definitions.h
+./util_funcs/restart.lo: ../../include/net-snmp/types.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/oid.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/types.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/varbind_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_client.h
+./util_funcs/restart.lo: ../../include/net-snmp/pdu_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs/restart.lo: ../../include/net-snmp/output_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_debug.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_logging.h
+./util_funcs/restart.lo: ../../include/net-snmp/session_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/callback.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_transport.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_service.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/ucd_compat.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/mib.h
+./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/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
+./util_funcs/restart.lo: ../../include/net-snmp/library/getopt.h
+./util_funcs/restart.lo: ../../include/net-snmp/utilities.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/system.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/tools.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/int64.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/mt_support.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_alarm.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/data_list.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/check_varbind.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/container.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/factory.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/container_binary_array.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/container_list_ssll.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/container_iterator.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/container.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_assert.h
+./util_funcs/restart.lo: ../../include/net-snmp/version.h
+./util_funcs/restart.lo: ../../include/net-snmp/config_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/read_config.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/default_store.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_enum.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/vacm.h
+./util_funcs/restart.lo: ../../include/net-snmp/snmpv3_api.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpv3.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/transform_oids.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/keytools.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/scapi.h
+./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/snmpusm.h
 ./utilities/execute.lo: ../../include/net-snmp/net-snmp-config.h
-./utilities/execute.lo: ../../include/net-snmp/system/linux.h
-./utilities/execute.lo: ../../include/net-snmp/system/sysv.h
-./utilities/execute.lo: ../../include/net-snmp/system/generic.h
-./utilities/execute.lo: ../../include/net-snmp/machine/generic.h
 ./utilities/execute.lo: ../../include/net-snmp/net-snmp-includes.h
 ./utilities/execute.lo: ../../include/net-snmp/definitions.h
 ./utilities/execute.lo: ../../include/net-snmp/types.h
+./utilities/execute.lo: ../../include/net-snmp/library/oid.h
 ./utilities/execute.lo: ../../include/net-snmp/library/types.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_api.h
 ./utilities/execute.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/execute.lo: ../../include/net-snmp/pdu_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/asn1.h
+./utilities/execute.lo: ../../include/net-snmp/output_api.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmp_debug.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/execute.lo: ../../include/net-snmp/session_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/callback.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -17014,8 +17567,12 @@
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./utilities/execute.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -17037,7 +17594,6 @@
 ./utilities/execute.lo: ../../include/net-snmp/library/check_varbind.h
 ./utilities/execute.lo: ../../include/net-snmp/library/container.h
 ./utilities/execute.lo: ../../include/net-snmp/library/factory.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/execute.lo: ../../include/net-snmp/library/container_binary_array.h
 ./utilities/execute.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./utilities/execute.lo: ../../include/net-snmp/library/container_iterator.h
@@ -17050,8 +17606,6 @@
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_enum.h
 ./utilities/execute.lo: ../../include/net-snmp/library/vacm.h
-./utilities/execute.lo: ../../include/net-snmp/output_api.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmp_debug.h
 ./utilities/execute.lo: ../../include/net-snmp/snmpv3_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpv3.h
 ./utilities/execute.lo: ../../include/net-snmp/library/transform_oids.h
@@ -17097,25 +17651,23 @@
 ./utilities/execute.lo: ../../include/net-snmp/agent/table_container.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/table_array.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/mfd.h
-./utilities/execute.lo: ucd-snmp/errormib.h mibdefs.h util_funcs.h
-./utilities/execute.lo: util_funcs/header_generic.h
-./utilities/execute.lo: util_funcs/header_simple_table.h struct.h
-./utilities/execute.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
-./utilities/execute.lo: ./utilities/execute.h
+./utilities/execute.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./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/system/linux.h
-./utilities/iquery.lo: ../../include/net-snmp/system/sysv.h
-./utilities/iquery.lo: ../../include/net-snmp/system/generic.h
-./utilities/iquery.lo: ../../include/net-snmp/machine/generic.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
+./utilities/iquery.lo: ../../include/net-snmp/library/oid.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/types.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/iquery.lo: ../../include/net-snmp/pdu_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/asn1.h
+./utilities/iquery.lo: ../../include/net-snmp/output_api.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmp_debug.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/iquery.lo: ../../include/net-snmp/session_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/callback.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -17123,8 +17675,12 @@
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -17146,7 +17702,6 @@
 ./utilities/iquery.lo: ../../include/net-snmp/library/check_varbind.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/container.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/factory.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/container_binary_array.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/container_iterator.h
@@ -17159,8 +17714,6 @@
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_enum.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/vacm.h
-./utilities/iquery.lo: ../../include/net-snmp/output_api.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmp_debug.h
 ./utilities/iquery.lo: ../../include/net-snmp/snmpv3_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpv3.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/transform_oids.h
@@ -17205,21 +17758,23 @@
 ./utilities/iquery.lo: ../../include/net-snmp/agent/table_iterator.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/table_container.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/table_array.h
-./utilities/iquery.lo: ../../include/net-snmp/agent/mfd.h utilities/iquery.h
+./utilities/iquery.lo: ../../include/net-snmp/agent/mfd.h
+./utilities/iquery.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./utilities/iquery.lo: utilities/iquery.h
 ./utilities/override.lo: ../../include/net-snmp/net-snmp-config.h
-./utilities/override.lo: ../../include/net-snmp/system/linux.h
-./utilities/override.lo: ../../include/net-snmp/system/sysv.h
-./utilities/override.lo: ../../include/net-snmp/system/generic.h
-./utilities/override.lo: ../../include/net-snmp/machine/generic.h
 ./utilities/override.lo: ../../include/net-snmp/net-snmp-includes.h
 ./utilities/override.lo: ../../include/net-snmp/definitions.h
 ./utilities/override.lo: ../../include/net-snmp/types.h
+./utilities/override.lo: ../../include/net-snmp/library/oid.h
 ./utilities/override.lo: ../../include/net-snmp/library/types.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_api.h
 ./utilities/override.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/override.lo: ../../include/net-snmp/pdu_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/asn1.h
+./utilities/override.lo: ../../include/net-snmp/output_api.h
+./utilities/override.lo: ../../include/net-snmp/library/snmp_debug.h
+./utilities/override.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/override.lo: ../../include/net-snmp/session_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/callback.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -17227,8 +17782,12 @@
 ./utilities/override.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./utilities/override.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./utilities/override.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./utilities/override.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./utilities/override.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./utilities/override.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -17250,7 +17809,6 @@
 ./utilities/override.lo: ../../include/net-snmp/library/check_varbind.h
 ./utilities/override.lo: ../../include/net-snmp/library/container.h
 ./utilities/override.lo: ../../include/net-snmp/library/factory.h
-./utilities/override.lo: ../../include/net-snmp/library/snmp_logging.h
 ./utilities/override.lo: ../../include/net-snmp/library/container_binary_array.h
 ./utilities/override.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./utilities/override.lo: ../../include/net-snmp/library/container_iterator.h
@@ -17263,8 +17821,6 @@
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_enum.h
 ./utilities/override.lo: ../../include/net-snmp/library/vacm.h
-./utilities/override.lo: ../../include/net-snmp/output_api.h
-./utilities/override.lo: ../../include/net-snmp/library/snmp_debug.h
 ./utilities/override.lo: ../../include/net-snmp/snmpv3_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpv3.h
 ./utilities/override.lo: ../../include/net-snmp/library/transform_oids.h
@@ -17310,108 +17866,4 @@
 ./utilities/override.lo: ../../include/net-snmp/agent/table_container.h
 ./utilities/override.lo: ../../include/net-snmp/agent/table_array.h
 ./utilities/override.lo: ../../include/net-snmp/agent/mfd.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-config.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/linux.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/sysv.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/system/generic.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/machine/generic.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-includes.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/definitions.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/types.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/types.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/varbind_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_client.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/pdu_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/asn1.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/session_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/callback.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_transport.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_service.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUnixDomain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPDomain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/ucd_compat.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/mib.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/mib_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/parse.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/oid_stash.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_impl.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp-tc.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/getopt.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/utilities.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/system.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/tools.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/int64.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/mt_support.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_alarm.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/data_list.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/check_varbind.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/factory.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_logging.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_binary_array.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_list_ssll.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container_iterator.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_assert.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/version.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/config_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/read_config.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/default_store.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_parse_args.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_enum.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/vacm.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/output_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_debug.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/snmpv3_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/transform_oids.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/keytools.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/scapi.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/lcd_time.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_secmod.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/snmpusm.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mib_module_config.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_module_config.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_agent.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/snmp_vars.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_handler.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/var_struct.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_registry.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/library/fd_event_manager.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/ds_agent.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_read_config.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_trap.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/all_helpers.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/instance.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/baby_steps.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/scalar_group.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/watcher.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/multiplexer.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/null.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/debug_handler.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/cache_handler.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/old_api.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/read_only.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/row_merge.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/serialize.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mode_end_call.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_data.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_dataset.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_tdata.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_iterator.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_container.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/table_array.h
-./utilities/snmp_get_statistic.lo: ../../include/net-snmp/agent/mfd.h
-./utilities/snmp_get_statistic.lo: ./utilities/snmp_get_statistic.h
+./utilities/override.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
diff --git a/agent/mibgroup/Rmon/agutil.c b/agent/mibgroup/Rmon/agutil.c
index 26ba173..12c6342 100644
--- a/agent/mibgroup/Rmon/agutil.c
+++ b/agent/mibgroup/Rmon/agutil.c
@@ -200,20 +200,7 @@
 u_long
 AGUTIL_sys_up_time(void)
 {
-    struct timeval  current, delta;
-    extern struct timeval starttime;
-
-    gettimeofday(&current, NULL);
-    current.tv_sec--;
-    current.tv_usec += 1000000L;
-    delta.tv_sec = current.tv_sec - starttime.tv_sec;
-    delta.tv_usec = current.tv_usec - starttime.tv_usec;
-    if (delta.tv_usec > 1000000L) {
-        delta.tv_usec -= 1000000L;
-        delta.tv_sec++;
-    }
-
-    return delta.tv_sec * 100 + delta.tv_usec / 10000;
+    return netsnmp_get_agent_runtime();
 }
 
 /*
diff --git a/agent/mibgroup/Rmon/alarm.c b/agent/mibgroup/Rmon/alarm.c
index aac5b42..95cb017 100644
--- a/agent/mibgroup/Rmon/alarm.c
+++ b/agent/mibgroup/Rmon/alarm.c
@@ -27,11 +27,7 @@
 #include <unistd.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/agent/mibgroup/Rmon/event.c b/agent/mibgroup/Rmon/event.c
index 127cf3f..8d2d4a1 100644
--- a/agent/mibgroup/Rmon/event.c
+++ b/agent/mibgroup/Rmon/event.c
@@ -24,11 +24,7 @@
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/agent/mibgroup/Rmon/history.c b/agent/mibgroup/Rmon/history.c
index ad03eef..c8e9c25 100644
--- a/agent/mibgroup/Rmon/history.c
+++ b/agent/mibgroup/Rmon/history.c
@@ -24,11 +24,7 @@
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/agent/mibgroup/Rmon/rows.c b/agent/mibgroup/Rmon/rows.c
index d67c567..924a93b 100644
--- a/agent/mibgroup/Rmon/rows.c
+++ b/agent/mibgroup/Rmon/rows.c
@@ -267,7 +267,7 @@
 {
     table_ptr->name = name;
     if (!table_ptr->name)
-        table_ptr->name = "Unknown";
+        table_ptr->name = NETSNMP_REMOVE_CONST(char*,"Unknown");
 
     table_ptr->max_number_of_entries = max_number_of_entries;
     table_ptr->ClbkCreate = ClbkCreate;
diff --git a/agent/mibgroup/Rmon/statistics.c b/agent/mibgroup/Rmon/statistics.c
index 6ccb844..3ed4acb 100644
--- a/agent/mibgroup/Rmon/statistics.c
+++ b/agent/mibgroup/Rmon/statistics.c
@@ -24,11 +24,7 @@
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/agent/mibgroup/agent/extend.c b/agent/mibgroup/agent/extend.c
index 7004ea5..239eeb3 100644
--- a/agent/mibgroup/agent/extend.c
+++ b/agent/mibgroup/agent/extend.c
@@ -213,8 +213,8 @@
     snmpd_register_config_handler("exec", extend_parse_config, NULL, NULL);
     snmpd_register_config_handler("sh",   extend_parse_config, NULL, NULL);
     snmpd_register_config_handler("execFix", extend_parse_config, NULL, NULL);
-    compatability_entries = calloc( max_compatability_entries,
-                                    sizeof(netsnmp_old_extend));
+    compatability_entries = (netsnmp_old_extend *)
+        calloc( max_compatability_entries, sizeof(netsnmp_old_extend));
     REGISTER_MIB("ucd-extensible", old_extensible_variables,
                  variable2, old_extensible_variables_oid);
 #endif
@@ -234,6 +234,10 @@
 int
 extend_load_cache(netsnmp_cache *cache, void *magic)
 {
+#ifndef USING_UTILITIES_EXECUTE_MODULE
+    NETSNMP_LOGONCE((LOG_WARNING,"support for run_exec_command not available\n"));
+    return -1;
+#else
     int  out_len = 1024*100;
     char out_buf[ 1024*100 ];
     int  cmd_len = 255*2 + 2;	/* 2 * DisplayStrings */
@@ -273,7 +277,7 @@
             }
         }
         if ( extension->numlines > 1 ) {
-            extension->lines = calloc( sizeof(char *), extension->numlines );
+            extension->lines = (char**)calloc( sizeof(char *), extension->numlines );
             memcpy( extension->lines, line_buf,
                                        sizeof(char *) * extension->numlines );
         } else {
@@ -282,6 +286,7 @@
     }
     extension->result = ret;
     return ret;
+#endif /* !defined(USING_UTILITIES_EXECUTE_MODULE) */
 }
 
 void
@@ -1111,8 +1116,8 @@
     oid oid_buf[MAX_OID_LEN];
     int oid_len;
     int i;
-    char *token;
-    int   token_len;
+    char  *token;
+    size_t token_len;
 
     if (!request || !table_info || !table_info->indexes
                  || !table_info->indexes->next_variable) {
diff --git a/agent/mibgroup/agent/nsCache.c b/agent/mibgroup/agent/nsCache.c
index a773aeb..5815e90 100644
--- a/agent/mibgroup/agent/nsCache.c
+++ b/agent/mibgroup/agent/nsCache.c
@@ -42,7 +42,7 @@
 #define NSCACHE_STATUS_ACTIVE   4
 #define NSCACHE_STATUS_EXPIRED  5
 
-extern struct snmp_alarm *
+NETSNMP_IMPORT struct snmp_alarm *
 sa_find_specific(unsigned int clientreg);
 
 
diff --git a/agent/mibgroup/agent/nsLogging.c b/agent/mibgroup/agent/nsLogging.c
index 7a21fa8..344e53a 100644
--- a/agent/mibgroup/agent/nsLogging.c
+++ b/agent/mibgroup/agent/nsLogging.c
@@ -444,11 +444,11 @@
                 switch (*request->requestvb->val.integer) {
                     case RS_ACTIVE:
                     case RS_CREATEANDGO:
-                        logh->enabled = 1;
+                        netsnmp_enable_this_loghandler(logh);
                         break;
                     case RS_NOTINSERVICE:
                     case RS_CREATEANDWAIT:
-                        logh->enabled = 0;
+                        netsnmp_disable_this_loghandler(logh);
                         break;
 		    case RS_DESTROY:
 		        netsnmp_remove_loghandler( logh );
diff --git a/agent/mibgroup/agent/nsModuleTable.c b/agent/mibgroup/agent/nsModuleTable.c
index bc45691..1d763f3 100644
--- a/agent/mibgroup/agent/nsModuleTable.c
+++ b/agent/mibgroup/agent/nsModuleTable.c
@@ -136,18 +136,18 @@
     *my_data_context = ctree->tree;
 
     vptr = put_index_data;
-    snmp_set_var_value(vptr, (u_char *) ctree->context_ptr->context_name,
+    snmp_set_var_value(vptr, ctree->context_ptr->context_name,
                        strlen(ctree->context_ptr->context_name));
 
     vptr = vptr->next_variable;
     snmp_set_var_value(vptr,
-                       (u_char *)ctree->context_ptr->first_subtree->name_a,
+                       ctree->context_ptr->first_subtree->name_a,
                        ctree->context_ptr->first_subtree->namelen *
                        sizeof(oid));
 
     ultmp = ctree->context_ptr->first_subtree->priority;
     vptr = vptr->next_variable;
-    snmp_set_var_value(vptr, (u_char *) & ultmp, sizeof(ultmp));
+    snmp_set_var_value(vptr, & ultmp, sizeof(ultmp));
 
     return put_index_data;
 }
@@ -184,16 +184,16 @@
     *my_data_context = ctree->tree;
 
     vptr = put_index_data;
-    snmp_set_var_value(vptr, (u_char *) ctree->context_ptr->context_name,
+    snmp_set_var_value(vptr, ctree->context_ptr->context_name,
                        strlen(ctree->context_ptr->context_name));
 
     vptr = vptr->next_variable;
-    snmp_set_var_value(vptr, (u_char *) ctree->tree->name_a,
+    snmp_set_var_value(vptr, ctree->tree->name_a,
                        ctree->tree->namelen * sizeof(oid));
 
     ultmp = ctree->tree->priority;
     vptr = vptr->next_variable;
-    snmp_set_var_value(vptr, (u_char *) & ultmp, sizeof(ultmp));
+    snmp_set_var_value(vptr, & ultmp, sizeof(ultmp));
 
     return put_index_data;
 }
diff --git a/agent/mibgroup/agent_mibs.h b/agent/mibgroup/agent_mibs.h
index 8c0de1c..50dd159 100644
--- a/agent/mibgroup/agent_mibs.h
+++ b/agent/mibgroup/agent_mibs.h
@@ -1,6 +1,8 @@
 config_require(agent/nsTransactionTable)
 config_require(agent/nsModuleTable)
+#ifndef NETSNMP_NO_DEBUGGING
 config_require(agent/nsDebug)
+#endif
 config_require(agent/nsCache)
 config_require(agent/nsLogging)
 config_require(agent/nsVacmAccessTable)
diff --git a/agent/mibgroup/agentx/client.c b/agent/mibgroup/agentx/client.c
index 1dbdd2b..58987e3 100644
--- a/agent/mibgroup/agentx/client.c
+++ b/agent/mibgroup/agentx/client.c
@@ -19,11 +19,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -36,9 +32,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -48,8 +41,6 @@
 #include "agentx/client.h"
 #include "agentx/subagent.h"
 
-extern struct timeval starttime;
-
         /*
          * AgentX handling utility routines
          *
@@ -63,7 +54,6 @@
                    int reqid, netsnmp_pdu *pdu, void *magic)
 {
     struct synch_state *state = (struct synch_state *) magic;
-    struct timeval  now, diff;
 
     if (!state || reqid != state->reqid) {
         return handle_agentx_packet(op, session, reqid, pdu, magic);
@@ -80,17 +70,7 @@
             /*
              * Synchronise sysUpTime with the master agent
              */
-            gettimeofday(&now, NULL);
-            now.tv_sec--;
-            now.tv_usec += 1000000L;
-            diff.tv_sec = pdu->time / 100;
-            diff.tv_usec = (pdu->time - (diff.tv_sec * 100)) * 10000;
-            starttime.tv_sec = now.tv_sec - diff.tv_sec;
-            starttime.tv_usec = now.tv_usec - diff.tv_usec;
-            if (starttime.tv_usec > 1000000L) {
-                starttime.tv_usec -= 1000000L;
-                starttime.tv_sec++;
-            }
+            netsnmp_set_agent_uptime(pdu->time);
         }
     } else if (op == NETSNMP_CALLBACK_OP_TIMED_OUT) {
         state->pdu = NULL;
@@ -212,7 +192,7 @@
     pdu->range_subid = range_subid;
     if (contextName) {
         pdu->flags |= AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT;
-        pdu->community = strdup(contextName);
+        pdu->community = (u_char *) strdup(contextName);
         pdu->community_len = strlen(contextName);
     }
 
@@ -269,7 +249,7 @@
     pdu->range_subid = range_subid;
     if (contextName) {
         pdu->flags |= AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT;
-        pdu->community = strdup(contextName);
+        pdu->community = (u_char *) strdup(contextName);
         pdu->community_len = strlen(contextName);
     }
 
diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c
index 05f148f..1ffc043 100644
--- a/agent/mibgroup/agentx/master.c
+++ b/agent/mibgroup/agentx/master.c
@@ -31,9 +31,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c
index b073da3..866936e 100644
--- a/agent/mibgroup/agentx/master_admin.c
+++ b/agent/mibgroup/agentx/master_admin.c
@@ -13,11 +13,7 @@
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -29,9 +25,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -48,9 +41,6 @@
 #include <net-snmp/agent/agent_sysORTable.h>
 #include "master.h"
 
-extern struct timeval starttime;
-
-
 
 netsnmp_session *
 find_agentx_session(netsnmp_session * session, int sessid)
@@ -68,7 +58,6 @@
 open_agentx_session(netsnmp_session * session, netsnmp_pdu *pdu)
 {
     netsnmp_session *sp;
-    struct timeval  now;
 
     DEBUGMSGTL(("agentx/master", "open %8p\n", session));
     sp = (netsnmp_session *) malloc(sizeof(netsnmp_session));
@@ -108,8 +97,7 @@
                                                  name_length);
     sp->securityAuthProtoLen = pdu->variables->name_length;
     sp->securityName = strdup((char *) pdu->variables->val.string);
-    gettimeofday(&now, NULL);
-    sp->engineTime = calculate_time_diff(&now, &starttime);
+    sp->engineTime = (netsnmp_get_agent_runtime() + 50) / 100;
 
     sp->subsession = session;   /* link back to head */
     sp->flags |= SNMP_FLAGS_SUBSESSION;
@@ -229,7 +217,7 @@
     reg->handler->myvoid = session;
     reg->global_cacheid = cacheid;
     if (NULL != pdu->community)
-        reg->contextName = strdup(pdu->community);
+        reg->contextName = strdup((char *)pdu->community);
 
     /*
      * register mib. Note that for failure cases, the registration info
@@ -412,10 +400,10 @@
 int
 agentx_notify(netsnmp_session * session, netsnmp_pdu *pdu)
 {
-    netsnmp_session *sp;
+    netsnmp_session       *sp;
     netsnmp_variable_list *var;
-    extern oid      sysuptime_oid[], snmptrap_oid[];
-    extern size_t   sysuptime_oid_len, snmptrap_oid_len;
+    extern const oid       sysuptime_oid[], snmptrap_oid[];
+    extern const size_t    sysuptime_oid_len, snmptrap_oid_len;
 
     sp = find_agentx_session(session, pdu->sessid);
     if (sp == NULL)
@@ -477,7 +465,6 @@
                             int reqid, netsnmp_pdu *pdu, void *magic)
 {
     netsnmp_agent_session *asp;
-    struct timeval  now;
 
     if (operation == NETSNMP_CALLBACK_OP_DISCONNECT) {
         DEBUGMSGTL(("agentx/master",
@@ -580,8 +567,7 @@
         break;
     }
 
-    gettimeofday(&now, NULL);
-    asp->pdu->time = calculate_time_diff(&now, &starttime);
+    asp->pdu->time = netsnmp_get_agent_uptime();
     asp->pdu->command = AGENTX_MSG_RESPONSE;
     asp->pdu->errstat = asp->status;
     DEBUGMSGTL(("agentx/master", "send response, stat %d (req=0x%lx,trans="
diff --git a/agent/mibgroup/agentx/protocol.c b/agent/mibgroup/agentx/protocol.c
index 771b45b..0845cf1 100644
--- a/agent/mibgroup/agentx/protocol.c
+++ b/agent/mibgroup/agentx/protocol.c
@@ -26,11 +26,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -46,10 +42,6 @@
 #include <arpa/inet.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 
 #include "agentx/protocol.h"
@@ -708,7 +700,7 @@
 	 * pdu->community and pdu->community_len fields, respectively. */
 	if (pdu->contextName != NULL && pdu->community == NULL)
 	{	
-		pdu->community     = strdup(pdu->contextName);
+		pdu->community     = (u_char *) strdup(pdu->contextName);
 		pdu->community_len = pdu->contextNameLen;
 		pdu->flags |= AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT;
 	}
@@ -1172,8 +1164,8 @@
      */
     tmp_oid_len = (prefix ? n_subid + 5 : n_subid);
     if (*oid_len < tmp_oid_len) {
-        DEBUGMSGTL(("agentx", "Oversized Object ID (buf=%d pdu=%d)\n",
-		    (int) *oid_len, tmp_oid_len));
+        DEBUGMSGTL(("agentx", "Oversized Object ID (buf=%" NETSNMP_PRIz "d"
+		    " pdu=%d)\n", *oid_len, tmp_oid_len));
         DEBUGINDENTLESS();
         return NULL;
     }
@@ -1627,7 +1619,7 @@
 		 * need to copy the context into the PDU's context fields.  */
 		if (pdu->community_len > 0 && pdu->contextName == NULL)
 		{
-			pdu->contextName    = strdup(pdu->community);
+			pdu->contextName    = strdup((char *) pdu->community);
 			pdu->contextNameLen = pdu->community_len;
 		}
 
diff --git a/agent/mibgroup/agentx/subagent.c b/agent/mibgroup/agentx/subagent.c
index 03a38b7..1c00db1 100644
--- a/agent/mibgroup/agentx/subagent.c
+++ b/agent/mibgroup/agentx/subagent.c
@@ -8,11 +8,7 @@
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -21,9 +17,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -173,8 +166,6 @@
 save_set_vars(netsnmp_session * ss, netsnmp_pdu *pdu)
 {
     struct agent_netsnmp_set_info *ptr;
-    struct timeval  now;
-    extern struct timeval starttime;
 
     ptr = (struct agent_netsnmp_set_info *)
         malloc(sizeof(struct agent_netsnmp_set_info));
@@ -187,8 +178,7 @@
     ptr->transID = pdu->transid;
     ptr->sess = ss;
     ptr->mode = SNMP_MSG_INTERNAL_SET_RESERVE1;
-    gettimeofday(&now, NULL);
-    ptr->uptime = calculate_time_diff(&now, &starttime);
+    ptr->uptime = netsnmp_get_agent_uptime();
 
     ptr->var_list = snmp_clone_varbind(pdu->variables);
     if (ptr->var_list == NULL) {
@@ -499,7 +489,7 @@
      */
 
     internal_pdu = snmp_clone_pdu(pdu);
-    internal_pdu->contextName = internal_pdu->community;
+    internal_pdu->contextName = (char *) internal_pdu->community;
     internal_pdu->contextNameLen = internal_pdu->community_len;
     internal_pdu->community = NULL;
     internal_pdu->community_len = 0;
@@ -707,7 +697,7 @@
 }
 
 
-int
+static int
 agentx_sysOR_callback(int majorID, int minorID, void *serverarg,
                       void *clientarg)
 {
@@ -914,9 +904,10 @@
 static void
 agentx_reopen_sysORTable(const struct sysORTable* data, void* v)
 {
-  netsnmp_session *agentx_ss = (netsnmp_session *) v;
-  agentx_add_agentcaps(agentx_ss, data->OR_oid, data->OR_oidlen,
-  	                          data->OR_descr);
+    netsnmp_session *agentx_ss = (netsnmp_session *) v;
+  
+    agentx_add_agentcaps(agentx_ss, data->OR_oid, data->OR_oidlen,
+                         data->OR_descr);
 }
 
 /*
diff --git a/agent/mibgroup/default_modules.h b/agent/mibgroup/default_modules.h
index 7f953d3..1d767ae 100644
--- a/agent/mibgroup/default_modules.h
+++ b/agent/mibgroup/default_modules.h
@@ -13,7 +13,8 @@
 config_require(mibII/sysORTable)
 config_require(mibII/vacm_vars)
 config_require(mibII/vacm_conf)
-config_require(utilities/execute)
+config_require(util_funcs/Exit)
+config_require(util_funcs/restart)
 
 /* very few default mibs */
 config_add_mib(SNMPv2-MIB)
diff --git a/agent/mibgroup/disman/event/mteEvent.c b/agent/mibgroup/disman/event/mteEvent.c
index 2fe6979..05360d3 100644
--- a/agent/mibgroup/disman/event/mteEvent.c
+++ b/agent/mibgroup/disman/event/mteEvent.c
@@ -338,9 +338,9 @@
                        oid *suffix, size_t sfx_len ) /* Matching instance  */
 {
     netsnmp_variable_list *var, *v2;
-    oid    snmptrap_oid[]   = { 1,3,6,1,6,3,1,1,4,1,0 };
-    size_t snmptrap_oid_len = OID_LENGTH(snmptrap_oid);
-    netsnmp_session *s;
+    extern const oid       snmptrap_oid[];
+    extern const size_t    snmptrap_oid_len;
+    netsnmp_session       *s;
 
          /*
           * The Event-MIB specification says that objects from the
diff --git a/agent/mibgroup/disman/event/mteEvent.h b/agent/mibgroup/disman/event/mteEvent.h
index b358519..3be5c6e 100644
--- a/agent/mibgroup/disman/event/mteEvent.h
+++ b/agent/mibgroup/disman/event/mteEvent.h
@@ -46,7 +46,7 @@
      * Column values for the main mteEventTable
      */
     char            mteEventComment[MTE_STR2_LEN+1];
-    char            mteEventActions;
+    u_char          mteEventActions;
 
     /*
      * Column values for Notification events (mteEventNotificationTable)
diff --git a/agent/mibgroup/disman/event/mteEventConf.c b/agent/mibgroup/disman/event/mteEventConf.c
index 1b9de78..72e3ae3 100644
--- a/agent/mibgroup/disman/event/mteEventConf.c
+++ b/agent/mibgroup/disman/event/mteEventConf.c
@@ -469,7 +469,7 @@
 store_mteETable(int majorID, int minorID, void *serverarg, void *clientarg)
 {
     char            line[SNMP_MAXBUF];
-    char           *cptr;
+    char           *cptr, *cp;
     void           *vp;
     size_t          tint;
     netsnmp_tdata_row *row;
@@ -499,12 +499,12 @@
         strcat(line, "_mteETable ");
         cptr = line + strlen(line);
 
-        vp   = entry->mteOwner;        tint = strlen( vp );
-        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteEName;        tint = strlen( vp );
-        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteEventComment; tint = strlen( vp );
-        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->mteOwner;        tint = strlen( cp );
+        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteEName;        tint = strlen( cp );
+        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteEventComment; tint = strlen( cp );
+        cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
         /* ... (but skip the mteEventAction field)... */
         tint = entry->flags & (MTE_EVENT_FLAG_ENABLED|MTE_EVENT_FLAG_ACTIVE); 
         cptr = read_config_store_data( ASN_UNSIGNED,  cptr, &tint, NULL );
@@ -520,17 +520,17 @@
             strcat(line, "_mteENotTable ");
             cptr = line + strlen(line);
     
-            vp = entry->mteOwner;         tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
-            vp = entry->mteEName;         tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
+            cp = entry->mteOwner;         tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
+            cp = entry->mteEName;         tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
             vp   = entry->mteNotification;
             cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp,
                                           &entry->mteNotification_len);
-            vp = entry->mteNotifyOwner;   tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
-            vp = entry->mteNotifyObjects; tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
+            cp = entry->mteNotifyOwner;   tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
+            cp = entry->mteNotifyObjects; tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
             snmpd_store_config(line);
         }
 
@@ -539,19 +539,19 @@
             strcat(line, "_mteESetTable ");
             cptr = line + strlen(line);
     
-            vp = entry->mteOwner;         tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
-            vp = entry->mteEName;         tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
+            cp = entry->mteOwner;         tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
+            cp = entry->mteEName;         tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
             vp   = entry->mteSetOID;
             cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp,
                                           &entry->mteSetOID_len);
             tint = entry->mteSetValue;
             cptr = read_config_store_data(ASN_INTEGER,   cptr, &tint, NULL);
-            vp = entry->mteSetTarget;     tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
-            vp = entry->mteSetContext;    tint = strlen( vp );
-            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
+            cp = entry->mteSetTarget;     tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
+            cp = entry->mteSetContext;    tint = strlen( cp );
+            cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
             tint = entry->flags & (MTE_SET_FLAG_OBJWILD|MTE_SET_FLAG_CTXWILD); 
             cptr = read_config_store_data(ASN_UNSIGNED,  cptr, &tint, NULL);
             snmpd_store_config(line);
diff --git a/agent/mibgroup/disman/event/mteObjectsConf.c b/agent/mibgroup/disman/event/mteObjectsConf.c
index 3e9c11b..7679865 100644
--- a/agent/mibgroup/disman/event/mteObjectsConf.c
+++ b/agent/mibgroup/disman/event/mteObjectsConf.c
@@ -111,7 +111,7 @@
 store_mteOTable(int majorID, int minorID, void *serverarg, void *clientarg)
 {
     char            line[SNMP_MAXBUF];
-    char           *cptr;
+    char           *cptr, *cp;
     void           *vp;
     size_t          tint;
     netsnmp_tdata_row *row;
@@ -137,10 +137,10 @@
         strcat(line, "_mteOTable ");
         cptr = line + strlen(line);
 
-        vp = entry->mteOwner; tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
-        vp = entry->mteOName; tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
+        cp = entry->mteOwner; tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
+        cp = entry->mteOName; tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint );
         cptr = read_config_store_data(ASN_UNSIGNED,  cptr,
                                       &entry->mteOIndex, NULL);
         vp   = entry->mteObjectID;
diff --git a/agent/mibgroup/disman/event/mteObjectsTable.c b/agent/mibgroup/disman/event/mteObjectsTable.c
index 96482e5..5843f58 100644
--- a/agent/mibgroup/disman/event/mteObjectsTable.c
+++ b/agent/mibgroup/disman/event/mteObjectsTable.c
@@ -309,6 +309,10 @@
                 }
             }
         }
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/event/mteTrigger.h b/agent/mibgroup/disman/event/mteTrigger.h
index 2b3eb48..19626b1 100644
--- a/agent/mibgroup/disman/event/mteTrigger.h
+++ b/agent/mibgroup/disman/event/mteTrigger.h
@@ -122,8 +122,8 @@
     /*
      * Column values for Existence tests (mteTriggerExistenceTable)
      */
-    char            mteTExTest;
-    char            mteTExStartup;
+    u_char          mteTExTest;
+    u_char          mteTExStartup;
     char            mteTExObjOwner[MTE_STR1_LEN+1];
     char            mteTExObjects[ MTE_STR1_LEN+1];
     char            mteTExEvOwner[ MTE_STR1_LEN+1];
diff --git a/agent/mibgroup/disman/event/mteTriggerConf.c b/agent/mibgroup/disman/event/mteTriggerConf.c
index c015e24..3ce9106 100644
--- a/agent/mibgroup/disman/event/mteTriggerConf.c
+++ b/agent/mibgroup/disman/event/mteTriggerConf.c
@@ -24,13 +24,16 @@
     /*
      * Register config handler for user-level (fixed) triggers ...
      */
-    snmpd_register_config_handler("monitor",
-                                   parse_mteMonitor,  NULL,
-                                  "triggername [-I] [-i OID | -o OID]* [-e event] expression ");
-    snmpd_register_config_handler("defaultMonitors",
-                                   parse_default_mteMonitors, NULL, "yes|no");
-    snmpd_register_config_handler("linkUpDownNotifications",
-                                   parse_linkUpDown_traps,    NULL, "yes|no");
+    snmpd_register_const_config_handler("monitor",
+                                        parse_mteMonitor,
+                                        NULL,
+                                        "triggername [-I] [-i OID | -o OID]* [-e event] expression ");
+    snmpd_register_const_config_handler("defaultMonitors",
+                                        parse_default_mteMonitors,
+                                        NULL, "yes|no");
+    snmpd_register_const_config_handler("linkUpDownNotifications",
+                                        parse_linkUpDown_traps,
+                                        NULL, "yes|no");
 
     /*
      * ... for persistent storage of various event table entries ...
@@ -140,11 +143,11 @@
 
 
 void
-parse_mteMonitor(const char *token, char *line)
+parse_mteMonitor(const char *token, const char *line)
 {
     char   buf[  SPRINT_MAX_LEN];
     char   tname[MTE_STR1_LEN+1];
-    char  *cp;
+    const char  *cp;
     long   test = 0;
 
     char   ename[MTE_STR1_LEN+1];
@@ -163,7 +166,7 @@
     char   oid_name_buf[SPRINT_MAX_LEN];
     oid    name_buf[MAX_OID_LEN];
     size_t name_buf_len;
-    long   op    = 0;
+    u_char op    = 0;
     long   value = 0;
 
     struct mteObject  *object;
@@ -183,9 +186,9 @@
     memset( buf,   0, sizeof(buf));
     memset( tname, 0, sizeof(tname));
     memset( ename, 0, sizeof(ename));
-    for (cp = copy_nword(line, buf, SPRINT_MAX_LEN);
+    for (cp = copy_nword_const(line, buf, SPRINT_MAX_LEN);
          ;
-         cp = copy_nword(cp,   buf, SPRINT_MAX_LEN)) {
+         cp = copy_nword_const(cp,   buf, SPRINT_MAX_LEN)) {
 
         if ( buf[0] == '-' ) {
             switch (buf[1]) {
@@ -198,7 +201,7 @@
             case 'r':
             case 'u':
                 /* skip option parameter */
-                cp = skip_token( cp );
+                cp = skip_token_const( cp );
                 break;
             case 'D':
             case 'I':
@@ -212,7 +215,7 @@
                  *      Handle either case.
                  */
                 if (cp && *cp != '-')
-                    cp = skip_token( cp );
+                    cp = skip_token_const( cp );
                 break;
             case '0':
             case '1':
@@ -276,7 +279,7 @@
         * Otherwise the first token is the OID to be monitored.
         *   Skip it and look at the next token (if any).
         */
-        cp = copy_nword(cp,   buf, SPRINT_MAX_LEN);
+        cp = copy_nword_const(cp,   buf, SPRINT_MAX_LEN);
         if (cp) {
             /*
              * If this is a numeric value, then it'll be the MIN
@@ -284,7 +287,7 @@
              * Otherwise it'll be the operation field of a
              *   boolean test (the third form)
              */
-            if ( isdigit(buf[0]) || buf[0] == '-' )
+            if ( isdigit((unsigned char)(buf[0])) || buf[0] == '-' )
                 test = MTE_TRIGGER_THRESHOLD;
             else
                 test = MTE_TRIGGER_BOOLEAN;
@@ -315,9 +318,9 @@
      * Now start parsing again at the beginning of the directive,
      *   extracting the various options...
      */
-    for (cp = copy_nword(line, buf, SPRINT_MAX_LEN);
+    for (cp = copy_nword_const(line, buf, SPRINT_MAX_LEN);
          ;
-         cp = copy_nword(cp,   buf, SPRINT_MAX_LEN)) {
+         cp = copy_nword_const(cp,   buf, SPRINT_MAX_LEN)) {
 
         if (buf[0] == '-' ) {
             switch (buf[1]) {
@@ -332,7 +335,7 @@
                 memset( oid_name_buf, 0, sizeof(oid_name_buf));
                 memset(     name_buf, 0, sizeof(    name_buf));
                 name_buf_len = MAX_OID_LEN;
-                cp = copy_nword(cp, oid_name_buf, MTE_STR1_LEN);
+                cp = copy_nword_const(cp, oid_name_buf, MTE_STR1_LEN);
                 if (!snmp_parse_oid(oid_name_buf, name_buf, &name_buf_len)) {
                     snmp_log(LOG_ERR, "discontinuity OID: %s\n", oid_name_buf);
                     config_perror("unknown discontinuity OID");
@@ -346,7 +349,7 @@
                 break;
     
             case 'e':   /*  event */
-                cp     = copy_nword(cp, ename, MTE_STR1_LEN);
+                cp     = copy_nword_const(cp, ename, MTE_STR1_LEN);
                 break;
     
             case 'I':   /* value instance */
@@ -367,7 +370,7 @@
                     continue;
                 }
                 idx++;
-                cp     = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                cp     = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                 object = mteObjects_addOID( "snmpd.conf", tname, idx, buf, 0 );
                 if (!object) {
                     snmp_log(LOG_ERR, "Unknown payload OID: %s\n", buf);
@@ -379,7 +382,7 @@
     
             case 'o':   /*  object  */
                 idx++;
-                cp     = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                cp     = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                 object = mteObjects_addOID( "snmpd.conf", tname, idx, buf, 1 );
                 if (!object) {
                     snmp_log(LOG_ERR, "Unknown payload OID: %s\n", buf);
@@ -390,7 +393,7 @@
                 break;
     
             case 'r':   /*  repeat frequency */
-                cp     = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                cp     = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                 repeat = strtoul(buf, NULL, 0);
                 break;
     
@@ -406,7 +409,7 @@
                 break;
     
             case 'u':   /*  user */
-                cp     = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                cp     = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                 sess   = netsnmp_iquery_user_session(buf);
                 if (NULL == sess) {
                     snmp_log(LOG_ERR, "user name %s not found\n", buf);
@@ -447,7 +450,7 @@
                        } else {
                            op = MTE_EXIST_ABSENT;
                        }
-                       cp = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                       cp = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                     }
                     /*
                      * ... then extract the monitored OID.
@@ -455,7 +458,7 @@
                      */
                     memcpy(oid_name_buf, buf, SPRINT_MAX_LEN);
                     cp = NULL;  /* To terminate the processing loop */
-                    DEBUGMSGTL(("disman:event:conf", "%s: Exist (%s, %ld)\n",
+                    DEBUGMSGTL(("disman:event:conf", "%s: Exist (%s, %d)\n",
                                                      tname, oid_name_buf, op));
                     break;
     
@@ -465,7 +468,7 @@
                      *   identify the boolean operator ...
                      */
                     memcpy(oid_name_buf, buf, SPRINT_MAX_LEN);
-                    cp = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                    cp = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                     if (buf[0] == '!') {
                        op = MTE_BOOL_UNEQUAL;
                     } else if (buf[0] == '=') {
@@ -487,10 +490,10 @@
                      * ... then extract the comparison value.
                      *     (ignoring anything that remains)
                      */
-                    cp    = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                    cp    = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                     value = strtol(buf, NULL, 0);
                     cp = NULL;  /* To terminate the processing loop */
-                    DEBUGMSGTL(("disman:event:conf", "%s: Bool (%s, %ld, %ld)\n",
+                    DEBUGMSGTL(("disman:event:conf", "%s: Bool (%s, %d, %ld)\n",
                                               tname, oid_name_buf, op, value));
                     break;
     
@@ -501,7 +504,7 @@
                      */
                     memcpy(oid_name_buf, buf, SPRINT_MAX_LEN);
                     memset(         buf,   0, SPRINT_MAX_LEN);
-                    cp  = copy_nword(cp, buf, SPRINT_MAX_LEN);
+                    cp  = copy_nword_const(cp, buf, SPRINT_MAX_LEN);
                         value = strtol(buf, NULL, 0);
     
                     /*
@@ -689,7 +692,7 @@
             }
             value = strtol(cp, NULL, 0);
             entry->mteTThDFallValue  = value;
-            cp = skip_token(cp);
+            cp = skip_token_const(cp);
             value = strtol(cp, NULL, 0);
             entry->mteTThDRiseValue  = value;
             /*
@@ -729,7 +732,7 @@
 }
 
 void
-parse_linkUpDown_traps(const char *token, char *line)
+parse_linkUpDown_traps(const char *token, const char *line)
 {
     /*
      * XXX - This isn't strictly correct according to the
@@ -748,7 +751,7 @@
 
 
 void
-parse_default_mteMonitors(const char *token, char *line)
+parse_default_mteMonitors(const char *token, const char *line)
 {
     if (strncmp( line, "yes", 3) == 0) {
         DEBUGMSGTL(("disman:event:conf", "Registering default monitors\n"));
@@ -1268,7 +1271,7 @@
 store_mteTTable(int majorID, int minorID, void *serverarg, void *clientarg)
 {
     char            line[SNMP_MAXBUF];
-    char           *cptr;
+    char           *cptr, *cp;
     void           *vp;
     size_t          tint;
     netsnmp_tdata_row *row;
@@ -1298,12 +1301,12 @@
         strcat(line, "_mteTTable ");
         cptr = line + strlen(line);
 
-        vp   = entry->mteOwner;          tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteTName;          tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteTriggerComment; tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->mteOwner;          tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteTName;          tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteTriggerComment; tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         /*
          * ... (but skip the mteTriggerTest and
          *      assorted boolean flag fields)...
@@ -1311,16 +1314,16 @@
         vp   = entry->mteTriggerValueID;
         tint = entry->mteTriggerValueID_len;
         cptr = read_config_store_data(   ASN_OBJECT_ID, cptr, &vp,  &tint );
-        vp   = entry->mteTriggerTarget;  tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteTriggerContext; tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->mteTriggerTarget;  tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteTriggerContext; tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->mteTriggerFrequency;
         cptr = read_config_store_data(   ASN_UNSIGNED,  cptr, &tint, NULL );
-        vp   = entry->mteTriggerOOwner;  tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->mteTriggerObjects; tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->mteTriggerOOwner;  tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->mteTriggerObjects; tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->flags &
                   (MTE_TRIGGER_FLAG_VWILD  |MTE_TRIGGER_FLAG_CWILD|
                    MTE_TRIGGER_FLAG_ENABLED|MTE_TRIGGER_FLAG_ACTIVE);
@@ -1337,10 +1340,10 @@
             strcat(line, "_mteTDTable ");
             cptr = line + strlen(line);
 
-            vp   = entry->mteOwner;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTName;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteOwner;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTName;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
 
             vp   = entry->mteDeltaDiscontID;
             tint = entry->mteDeltaDiscontID_len;
@@ -1362,24 +1365,24 @@
             strcat(line, "_mteTExTable ");
             cptr = line + strlen(line);
 
-            vp   = entry->mteOwner;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTName;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteOwner;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTName;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
 
             tint = (entry->mteTExTest    & 0xff) << 8;
             tint|= (entry->mteTExStartup & 0xff);
             cptr = read_config_store_data(   ASN_UNSIGNED,  cptr, &tint, NULL );
 
-            vp   = entry->mteTExObjOwner;  tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTExObjects;   tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTExObjOwner;  tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTExObjects;   tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
-            vp   = entry->mteTExEvOwner;   tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTExEvent;     tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTExEvOwner;   tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTExEvent;     tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
             snmpd_store_config(line);
         }
@@ -1388,10 +1391,10 @@
             strcat(line, "_mteTBlTable ");
             cptr = line + strlen(line);
 
-            vp   = entry->mteOwner;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTName;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteOwner;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTName;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
 
             tint =  entry->mteTBoolComparison;
             tint |= (entry->flags & MTE_TRIGGER_FLAG_BSTART);
@@ -1399,15 +1402,15 @@
             tint =  entry->mteTBoolValue;
             cptr = read_config_store_data(   ASN_INTEGER,   cptr, &tint, NULL );
 
-            vp   = entry->mteTBoolObjOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTBoolObjects; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTBoolObjOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTBoolObjects; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
-            vp   = entry->mteTBoolEvOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTBoolEvent;   tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTBoolEvOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTBoolEvent;   tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
             snmpd_store_config(line);
         }
@@ -1416,10 +1419,10 @@
             strcat(line, "_mteTThTable ");
             cptr = line + strlen(line);
 
-            vp   = entry->mteOwner;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTName;          tint = strlen( vp );
-            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteOwner;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTName;          tint = strlen( cp );
+            cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
 
             cptr = read_config_store_data(ASN_UNSIGNED, cptr,
                                          &entry->mteTThStartup,    NULL );
@@ -1432,28 +1435,28 @@
             cptr = read_config_store_data(ASN_INTEGER,  cptr,
                                          &entry->mteTThDFallValue, NULL );
 
-            vp   = entry->mteTThObjOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThObjects; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTThObjOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThObjects; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
-            vp   = entry->mteTThRiseOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThRiseEvent; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThFallOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThFallEvent; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTThRiseOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThRiseEvent; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThFallOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThFallEvent; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
-            vp   = entry->mteTThDRiseOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThDRiseEvent; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThDFallOwner; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
-            vp   = entry->mteTThDFallEvent; tint = strlen( vp );
-            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp,  &tint );
+            cp   = entry->mteTThDRiseOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThDRiseEvent; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThDFallOwner; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
+            cp   = entry->mteTThDFallEvent; tint = strlen( cp );
+            cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp,  &tint );
 
             snmpd_store_config(line);
         }
diff --git a/agent/mibgroup/disman/event/mteTriggerConf.h b/agent/mibgroup/disman/event/mteTriggerConf.h
index 560c3ea..bfbcfcb 100644
--- a/agent/mibgroup/disman/event/mteTriggerConf.h
+++ b/agent/mibgroup/disman/event/mteTriggerConf.h
@@ -7,9 +7,9 @@
  * function declarations 
  */
 void            init_mteTriggerConf(void);
-void            parse_mteMonitor( const char *, char *);
-void            parse_default_mteMonitors( const char *, char *);
-void            parse_linkUpDown_traps(const char *, char *);
+void            parse_mteMonitor( const char *, const char *);
+void            parse_default_mteMonitors( const char *, const char *);
+void            parse_linkUpDown_traps(const char *, const char *);
 
 void            parse_mteTTable(  const char *, char *);
 void            parse_mteTDTable( const char *, char *);
diff --git a/agent/mibgroup/disman/event/mteTriggerTable.c b/agent/mibgroup/disman/event/mteTriggerTable.c
index 6239612..145f079 100644
--- a/agent/mibgroup/disman/event/mteTriggerTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerTable.c
@@ -463,6 +463,10 @@
                 break;
             }
         }
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/expr/expExpressionConf.c b/agent/mibgroup/disman/expr/expExpressionConf.c
index f9a9d97..518dd88 100644
--- a/agent/mibgroup/disman/expr/expExpressionConf.c
+++ b/agent/mibgroup/disman/expr/expExpressionConf.c
@@ -229,7 +229,7 @@
 store_expETable(int majorID, int minorID, void *serverarg, void *clientarg)
 {
     char                  line[SNMP_MAXBUF];
-    char                 *cptr;
+    char                 *cptr, *cp;
     void                 *vp;
     size_t                tint;
     netsnmp_tdata_row    *row;
@@ -259,17 +259,17 @@
         strcat(line, "_expETable ");
         cptr = line + strlen(line);
 
-        vp   = entry->expOwner;          tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->expName;           tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->expOwner;          tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->expName;           tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
 
-        vp   = entry->expExpression;     tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->expExpression;     tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->expValueType;
         cptr = read_config_store_data(   ASN_UNSIGNED,  cptr, &tint, NULL );
-        vp   = entry->expComment;        tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->expComment;        tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->expDeltaInterval;
         cptr = read_config_store_data(   ASN_UNSIGNED,  cptr, &tint, NULL );
 
diff --git a/agent/mibgroup/disman/expr/expObjectConf.c b/agent/mibgroup/disman/expr/expObjectConf.c
index 6e18c22..c75c934 100644
--- a/agent/mibgroup/disman/expr/expObjectConf.c
+++ b/agent/mibgroup/disman/expr/expObjectConf.c
@@ -115,7 +115,7 @@
 store_expOTable(int majorID, int minorID, void *serverarg, void *clientarg)
 {
     char                  line[SNMP_MAXBUF];
-    char                 *cptr;
+    char                 *cptr, *cp;
     void                 *vp;
     size_t                tint;
     netsnmp_tdata_row    *row;
@@ -145,10 +145,10 @@
         strcat(line, "_expOTable ");
         cptr = line + strlen(line);
 
-        vp   = entry->expOwner;          tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->expName;           tint = strlen( vp );
-        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->expOwner;          tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->expName;           tint = strlen( cp );
+        cptr = read_config_store_data(   ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->expObjectIndex;
         cptr = read_config_store_data(   ASN_UNSIGNED,  cptr, &tint, NULL );
 
diff --git a/agent/mibgroup/disman/expr/expValueTable.c b/agent/mibgroup/disman/expr/expValueTable.c
index 2fdb4fc..d74dbd1 100644
--- a/agent/mibgroup/disman/expr/expValueTable.c
+++ b/agent/mibgroup/disman/expr/expValueTable.c
@@ -124,7 +124,7 @@
         }
         if ( vp->val.objid[0] != 0 ) {
             DEBUGMSGTL(( "disman:expr:val",
-                         "non-zero instance (%d)\n", vp->val.objid[0]));
+                         "non-zero instance (%" NETSNMP_PRIo "d)\n", vp->val.objid[0]));
             return NULL;  /* Invalid instance */
         }
 
@@ -158,7 +158,7 @@
          */
         if ( vp->val_len > 0 && vp->val.objid[0] != 0 ) {
             DEBUGMSGTL(( "disman:expr:val",
-                         "non-zero next instance (%d)\n", vp->val.objid[0]));
+                         "non-zero next instance (%" NETSNMP_PRIo "d)\n", vp->val.objid[0]));
             return NULL;        /* All valid instances start with .0 */
         }
         plen = exp->expPrefix_len;
diff --git a/agent/mibgroup/disman/expression/expExpressionTable.c b/agent/mibgroup/disman/expression/expExpressionTable.c
index a4dd212..5aab952 100644
--- a/agent/mibgroup/disman/expression/expExpressionTable.c
+++ b/agent/mibgroup/disman/expression/expExpressionTable.c
@@ -581,6 +581,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -665,6 +666,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -753,6 +755,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -837,6 +840,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1161,6 +1165,7 @@
                 StorageTmp->have_copied_auth_info = 1;
             }
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/expression/expObjectTable.c b/agent/mibgroup/disman/expression/expObjectTable.c
index 08a607c..fcadfe7 100644
--- a/agent/mibgroup/disman/expression/expObjectTable.c
+++ b/agent/mibgroup/disman/expression/expObjectTable.c
@@ -573,6 +573,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -653,6 +654,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -734,7 +736,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -831,6 +833,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -914,7 +917,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -998,7 +1001,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1092,6 +1095,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1176,7 +1180,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1447,6 +1451,7 @@
                 StorageTmp->expObjectEntryStatus = RS_NOTINSERVICE;
             }
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/mteObjectsTable.c b/agent/mibgroup/disman/mteObjectsTable.c
index 2cf2b0e..77dbe10 100644
--- a/agent/mibgroup/disman/mteObjectsTable.c
+++ b/agent/mibgroup/disman/mteObjectsTable.c
@@ -424,6 +424,9 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -508,6 +511,8 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
 
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -776,6 +781,8 @@
                 StorageTmp->mteObjectsEntryStatus = RS_NOTINSERVICE;
             }
         }
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/mteTriggerTable.c b/agent/mibgroup/disman/mteTriggerTable.c
index f4db62a..5a2bd7b 100644
--- a/agent/mibgroup/disman/mteTriggerTable.c
+++ b/agent/mibgroup/disman/mteTriggerTable.c
@@ -1604,6 +1604,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1690,6 +1691,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1772,7 +1774,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1866,6 +1868,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1949,7 +1952,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2038,6 +2041,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2127,6 +2131,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2210,7 +2215,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2297,6 +2302,7 @@
             StorageTmp->mteTriggerEntryStatus == RS_ACTIVE)
             mte_enable_trigger(StorageTmp);
 
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2386,6 +2392,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2474,6 +2481,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2562,7 +2570,7 @@
         else if (StorageTmp->mteTriggerEnabled == MTETRIGGERENABLED_FALSE)
             mte_disable_trigger(StorageTmp);
 
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2893,6 +2901,7 @@
             StorageTmp->mteTriggerEnabled == MTETRIGGERENABLED_TRUE &&
             StorageTmp->mteTriggerEntryStatus == RS_ACTIVE)
             mte_enable_trigger(StorageTmp);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.c b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
index 0eb5c16..225c95c 100644
--- a/agent/mibgroup/disman/nslookup/lookupCtlTable.c
+++ b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
@@ -6,7 +6,6 @@
  *File Name:lookupCtlTable.c
  *File Description:Rows of the lookupCtlTable MIB add , delete and read.Rows of lookupResultsTable
  *              MIB add and delete.
- 
  *
  *Current Version:1.0
  *Author:ChenJing
@@ -16,33 +15,29 @@
 /*
  * This should always be included first before anything else 
  */
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#include <netdb.h>
-#include <netinet/in.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.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 <arpa/inet.h>
+#include <netdb.h>
+
 #include "lookupCtlTable.h"
 #include "lookupResultsTable.h"
 #include "header_complex.h"
 
+#ifndef INETADDRESSTYPE_ENUMS
+#define INETADDRESSTYPE_ENUMS
+
+#define INETADDRESSTYPE_UNKNOWN  0
+#define INETADDRESSTYPE_IPV4     1
+#define INETADDRESSTYPE_IPV6     2
+#define INETADDRESSTYPE_IPV4Z    3
+#define INETADDRESSTYPE_IPV6Z    4
+#define INETADDRESSTYPE_DNS     16
+
+#endif                          /* INETADDRESSTYPE_ENUMS */
+
 /*
  *For discontinuity checking.
  */
@@ -53,7 +48,7 @@
 
 struct variable2 lookupCtlTable_variables[] = {
     /*
-     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix
      */
     {COLUMN_LOOKUPCTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_lookupCtlTable, 2, {1, 3}},
@@ -74,7 +69,6 @@
  * global storage of our data, saved in and configured by header_complex() 
  */
 
-
 struct header_complex_index *lookupCtlTableStorage = NULL;
 struct header_complex_index *lookupResultsTableStorage = NULL;
 
@@ -82,7 +76,6 @@
 int modify_lookupCtlOperStatus(struct lookupTable_data *thedata, long val);
 int modify_lookupCtlRc(struct lookupTable_data *thedata, long val);
 
-
 void
 init_lookupCtlTable(void)
 {
@@ -115,11 +108,12 @@
     struct lookupTable_data *StorageNew = NULL;
     StorageNew = SNMP_MALLOC_STRUCT(lookupTable_data);
     if (StorageNew == NULL) {
+        snmp_log(LOG_ERR, "Out in memory in nslookup-mib/create_lookupTable_date\n");
         exit(1);
     }
     StorageNew->lookupCtlTargetAddress = strdup("");
     StorageNew->lookupCtlTargetAddressLen = 0;
-    StorageNew->lookupCtlOperStatus = 2l;
+    StorageNew->lookupCtlOperStatus = 2L;
     StorageNew->lookupCtlTime = 0;
     StorageNew->storagetype = ST_NONVOLATILE;
     return StorageNew;
@@ -133,16 +127,17 @@
 {
     netsnmp_variable_list *vars = NULL;
 
-
     DEBUGMSGTL(("lookupCtlTable", "adding data...  "));
     /*
      * add the index variables to the varbind list, which is 
      * used by header_complex to index the data 
      */
-
-
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);   /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);     /* lookupCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOwnerIndex,
+        thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOperationName,
+        thedata->lookupCtlOperationNameLen);
 
 
     if (header_complex_add_data(&lookupCtlTableStorage, vars, thedata) ==
@@ -164,10 +159,15 @@
     p = thedata->ResultsTable;
     if (thedata->ResultsTable != NULL)
         do {
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->lookupCtlOwnerIndex, p->lookupCtlOwnerIndexLen);  /* lookupCtlOwnerIndex */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->lookupCtlOperationName, p->lookupCtlOperationNameLen);    /* lookupCtlOperationName */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &p->lookupResultsIndex, sizeof(p->lookupResultsIndex));       /* lookupResultsIndex */
-
+            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                (char *) p->lookupCtlOwnerIndex,
+                p->lookupCtlOwnerIndexLen);
+            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                (char *) p->lookupCtlOperationName,
+                p->lookupCtlOperationNameLen);
+            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+                (char *) &p->lookupResultsIndex,
+                sizeof(p->lookupResultsIndex));
 
             DEBUGMSGTL(("lookupResultsTable", "adding data...  "));
             /*
@@ -185,7 +185,6 @@
             p = p->next;
         } while (p != NULL);
 
-
     DEBUGMSGTL(("lookupResultsTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
@@ -222,8 +221,7 @@
 parse_lookupCtlTable(const char *token, char *line)
 {
     size_t          tmpint;
-    struct lookupTable_data *StorageTmp =
-        SNMP_MALLOC_STRUCT(lookupTable_data);
+    struct lookupTable_data *StorageTmp = SNMP_MALLOC_STRUCT(lookupTable_data);
 
     DEBUGMSGTL(("lookupCtlTable", "parsing config...  "));
 
@@ -306,10 +304,8 @@
     struct lookupTable_data *StorageTmp;
     struct header_complex_index *hcindex;
 
-
     DEBUGMSGTL(("lookupCtlTable", "storing data...  "));
 
-
     for (hcindex = lookupCtlTableStorage; hcindex != NULL;
          hcindex = hcindex->next) {
         StorageTmp = (struct lookupTable_data *) hcindex->data;
@@ -319,7 +315,6 @@
             strcat(line, "lookupCtlTable ");
             cptr = line + strlen(line);
 
-
             cptr =
                 read_config_store_data(ASN_OCTET_STR, cptr,
                                        &StorageTmp->lookupCtlOwnerIndex,
@@ -356,9 +351,6 @@
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->lookupCtlRowStatus,
                                        &tmpint);
-
-
-
             snmpd_store_config(line);
         }
     }
@@ -380,8 +372,6 @@
                    size_t *length,
                    int exact, size_t *var_len, WriteMethod ** write_method)
 {
-
-
     struct lookupTable_data *StorageTmp = NULL;
 
     /*
@@ -399,8 +389,6 @@
      * this is where we do the value assignments for the mib results.
      */
     switch (vp->magic) {
-
-
     case COLUMN_LOOKUPCTLTARGETADDRESSTYPE:
         *write_method = write_lookupCtlTargetAddressType;
         *var_len = sizeof(StorageTmp->lookupCtlTargetAddressType);
@@ -409,28 +397,23 @@
     case COLUMN_LOOKUPCTLTARGETADDRESS:
         *write_method = write_lookupCtlTargetAddress;
         *var_len = (StorageTmp->lookupCtlTargetAddressLen);
-
         return (u_char *) StorageTmp->lookupCtlTargetAddress;
 
     case COLUMN_LOOKUPCTLOPERSTATUS:
         *var_len = sizeof(StorageTmp->lookupCtlOperStatus);
-
         return (u_char *) & StorageTmp->lookupCtlOperStatus;
 
     case COLUMN_LOOKUPCTLTIME:
         *var_len = sizeof(StorageTmp->lookupCtlTime);
-
         return (u_char *) & StorageTmp->lookupCtlTime;
 
     case COLUMN_LOOKUPCTLRC:
         *var_len = sizeof(StorageTmp->lookupCtlRc);
-
         return (u_char *) & StorageTmp->lookupCtlRc;
 
     case COLUMN_LOOKUPCTLROWSTATUS:
         *write_method = write_lookupCtlRowStatus;
         *var_len = sizeof(StorageTmp->lookupCtlRowStatus);
-
         return (u_char *) & StorageTmp->lookupCtlRowStatus;
 
     default:
@@ -440,28 +423,67 @@
 }
 
 
+static struct lookupResultsTable_data *
+add_result(struct lookupTable_data *item, int index,
+        int iatype, const void *data, size_t data_len)
+{
+    struct lookupResultsTable_data *temp;
+    temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
+    if (temp == NULL) {
+        snmp_log(LOG_ERR, "Out of memory in nslookup-mib/run_lookup\n");
+        return NULL;
+    }
+    temp->lookupResultsIndex = index;
+    temp->next = NULL;
+
+    temp->lookupCtlOwnerIndex = malloc(item->lookupCtlOwnerIndexLen + 1);
+    if (temp->lookupCtlOwnerIndex == NULL) {
+        snmp_log(LOG_ERR, "Out of memory in nslookup-mib/run_lookup\n");
+        free(temp);
+        return NULL;
+    }
+    memcpy(temp->lookupCtlOwnerIndex,
+           item->lookupCtlOwnerIndex,
+           item->lookupCtlOwnerIndexLen + 1);
+    temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] = '\0';
+    temp->lookupCtlOwnerIndexLen = item->lookupCtlOwnerIndexLen;
+
+    temp->lookupCtlOperationName = malloc(item->lookupCtlOperationNameLen + 1);
+    if (temp->lookupCtlOperationName == NULL) {
+        snmp_log(LOG_ERR, "Out of memory in nslookup-mib/run_lookup\n");
+        free(temp->lookupCtlOwnerIndex);
+        free(temp);
+        return NULL;
+    }
+    memcpy(temp->lookupCtlOperationName,
+           item->lookupCtlOperationName,
+           item->lookupCtlOperationNameLen + 1);
+    temp->lookupCtlOperationName[item->lookupCtlOperationNameLen] = '\0';
+    temp->lookupCtlOperationNameLen = item->lookupCtlOperationNameLen;
+
+    temp->lookupResultsAddressType = iatype;
+    temp->lookupResultsAddress = malloc(data_len + 1);
+    memcpy(temp->lookupResultsAddress, data, data_len);
+    temp->lookupResultsAddress[data_len] = '\0';
+    temp->lookupResultsAddressLen = data_len;
+    if (!item->ResultsTable)
+        item->ResultsTable = temp;
+
+    return temp;
+}
+
 void
 run_lookup(struct lookupTable_data *item)
 {
-
     long            addressType;
     char           *address = NULL;
     size_t          addresslen;
     struct lookupResultsTable_data *current = NULL;
     struct lookupResultsTable_data *temp = NULL;
-    int             i = 0, n = 1, t = 0;
-
-    /* for ipv4,ipv6 */
-    unsigned int    addr_in, addr_in6;
-    struct hostent *lookup = NULL;
+    int             i = 0, n = 1;
 
     struct timeval  tpstart, tpend;
-    unsigned long   timeuse, timeuse4, timeuse6;
-
-    /* for dns */
-
-    struct in_addr  a;
-    struct in6_addr a6;
+    unsigned long   timeuse, timeuse4 = 0, timeuse6 = 0;
 
     if (item == NULL)
         return;
@@ -472,454 +494,274 @@
     memcpy(address, item->lookupCtlTargetAddress, addresslen + 1);
     address[addresslen] = '\0';
 
-    if (addressType == 1) {
-        addr_in = inet_addr(address);
-        if (addr_in == 0xffffffff
-            && strcmp(address, "255.255.255.255") != 0) {
+    if (addressType == INETADDRESSTYPE_IPV4) {
+        struct in_addr addr_in;
+        struct hostent *lookup;
+
+        if (inet_pton(AF_INET, address, &addr_in) != 1) {
             DEBUGMSGTL(("lookupResultsTable", "Invalid argument: %s\n",
                         address));
+            modify_lookupCtlRc(item, 99);
             return;
         }
 
         gettimeofday(&tpstart, NULL);
-        lookup = gethostbyaddr((char *) &addr_in, 4, AF_INET);
+        lookup = gethostbyaddr(&addr_in, sizeof(addr_in), AF_INET);
         gettimeofday(&tpend, NULL);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
         modify_lookupCtlTime(item, timeuse);
-        modify_lookupCtlOperStatus(item, 3l);
+        modify_lookupCtlOperStatus(item, 3L);
 
         if (lookup == NULL) {
             DEBUGMSGTL(("lookupCtlTable",
                         "Can't get a network host entry for ipv4 address: %s\n",
                         address));
-            modify_lookupCtlRc(item, 1l);
+            modify_lookupCtlRc(item, h_errno);
             return;
         } else {
-            modify_lookupCtlRc(item, 0l);
+            modify_lookupCtlRc(item, 0L);
             if (lookup->h_name != NULL) {
-                current = temp =
-                    SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
-                }
-                temp->lookupResultsIndex = n;
-
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsAddressType = 16;
-                temp->lookupResultsAddress =
-                    (char *) malloc(strlen(lookup->h_name) + 1);
-                memcpy(temp->lookupResultsAddress, lookup->h_name,
-                       strlen(lookup->h_name) + 1);
-                temp->lookupResultsAddress[strlen(lookup->h_name)] = '\0';
-                temp->lookupResultsAddressLen = strlen(lookup->h_name);
-                item->ResultsTable = temp;
+                current = temp = add_result(item, n, INETADDRESSTYPE_DNS,
+                            lookup->h_name, strlen(lookup->h_name));
                 n = n + 1;
-
             }
 
             i = 0;
             while (lookup->h_aliases[i]) {
-                temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
-                }
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsIndex = n;
-                temp->lookupResultsAddressType = 16;
-                temp->lookupResultsAddress =
-                    (char *) malloc(strlen(lookup->h_aliases[i]) + 1);
-                memcpy(temp->lookupResultsAddress, lookup->h_aliases[i],
-                       strlen(lookup->h_aliases[i]) + 1);
-                temp->lookupResultsAddress[strlen(lookup->h_aliases[i])] =
-                    '\0';
-                temp->lookupResultsAddressLen =
-                    strlen(lookup->h_aliases[i]);
+                temp = add_result(item, n, INETADDRESSTYPE_DNS,
+                            lookup->h_aliases[i], strlen(lookup->h_aliases[i]));
                 current->next = temp;
                 current = temp;
                 i = i + 1;
                 n = n + 1;
             }
-            current->next = NULL;
-
         }
 
-
         if (item->ResultsTable != NULL)
             if (lookupResultsTable_add(item) != SNMPERR_SUCCESS)
                 DEBUGMSGTL(("lookupResultsTable",
                             "registered an entry error\n"));
-
         SNMP_FREE(address);
-        address = NULL;
         return;
     }
 
-    else if (addressType == 16) {
+    else if (addressType == INETADDRESSTYPE_DNS) {
+        struct hostent *lookup;
+#if HAVE_GETADDRINFO
+        int             res;
+        struct addrinfo *ais;
+        struct addrinfo hints = { 0, AF_INET6, SOCK_DGRAM };
+#endif
 
         gettimeofday(&tpstart, NULL);
         lookup = gethostbyname(address);
         gettimeofday(&tpend, NULL);
         timeuse4 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
-        timeuse4 /= 1000;
         if (lookup == NULL) {
             DEBUGMSGTL(("lookupCtlTable",
                         "Can't get a network host entry for %s\n",
                         address));
+            modify_lookupCtlRc(item, h_errno);
         } else {
-            while (*lookup->h_addr_list) {
-                memcpy(&a, *lookup->h_addr_list++, sizeof(a));
+            while (lookup->h_addr_list[i]) {
+                char buf[64];
+                int buflen;
 
-                temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
-                }
-                temp->lookupResultsIndex = n;
-
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
+                inet_ntop(lookup->h_addrtype, lookup->h_addr_list[i], buf, sizeof(buf));
+                buflen = strlen(buf);
+                switch (lookup->h_addrtype) {
+                case AF_INET:
+                    temp = add_result(item, n, INETADDRESSTYPE_IPV4, buf, buflen);
+                    break;
+                case AF_INET6:
+                    temp = add_result(item, n, INETADDRESSTYPE_IPV6, buf, buflen);
+                    break;
+                default:
+                    snmp_log(LOG_ERR, "nslookup-mib/run_lookup: Unknown address type %d\n", lookup->h_addrtype);
+                    temp = add_result(item, n, INETADDRESSTYPE_UNKNOWN, "", 0);
+                    break;
                 }
 
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsAddressType = 1;
-                temp->lookupResultsAddress =
-                    (char *) malloc(strlen(inet_ntoa(a)) + 1);
-                if (temp->lookupResultsAddress == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupResultsAddress, inet_ntoa(a),
-                       strlen(inet_ntoa(a)) + 1);
-                temp->lookupResultsAddress[strlen(inet_ntoa(a))] = '\0';
-                temp->lookupResultsAddressLen = strlen(inet_ntoa(a));
                 if (n == 1)
                     item->ResultsTable = temp;
                 else
                     current->next = temp;
                 current = temp;
                 n = n + 1;
-
+                i = i + 1;
             }
-            current->next = NULL;
-            t = n;
-
         }
 
-        struct hostent *hp;
-        char            pa[64];
-        char           *hostname = NULL;
-
+#if HAVE_GETADDRINFO
         gettimeofday(&tpstart, NULL);
-        hp = gethostbyname2(address, AF_INET6);
+        res = getaddrinfo(address, NULL, &hints, &ais);
         gettimeofday(&tpend, NULL);
         timeuse6 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
-        timeuse6 /= 1000;
 
-        if (hp == NULL) {
+        if (res != 0) {
             DEBUGMSGTL(("lookupCtlTable",
                         "Can't get a ipv6 network host entry for %s\n",
                         address));
+            modify_lookupCtlRc(item, res);
         } else {
-            while (*hp->h_addr_list) {
-                memmove((caddr_t) & a6, *hp->h_addr_list++, 16);
-                hostname = (char *) hp->h_name;
+            struct addrinfo *aip = ais;
+            while (aip) {
+                char buf[64];
+                int buflen;
 
-                temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
+                switch (aip->ai_family) {
+                case AF_INET:
+                    inet_ntop(aip->ai_family,
+                        &((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,
+                        buf, sizeof(buf));
+                    buflen = strlen(buf);
+                    temp = add_result(item, n, INETADDRESSTYPE_IPV6, buf, buflen);
+                    break;
+                default:
+                    snmp_log(LOG_ERR, "nslookup-mib/run_lookup: Unknown address type %d\n", aip->ai_family);
+                    temp = add_result(item, n, INETADDRESSTYPE_UNKNOWN, "", 0);
+                    break;
                 }
-                temp->lookupResultsIndex = n;
+                DEBUGMSGTL(("lookupCtlTable", "Adding %d %s\n", n, buf));
 
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsAddressType = 2;
-                temp->lookupResultsAddress =
-                    (char *)
-                    malloc(strlen(inet_ntop(AF_INET6, &a6, pa, 64)) + 1);
-                memcpy(temp->lookupResultsAddress,
-                       inet_ntop(AF_INET6, &a6, pa, 64),
-                       strlen(inet_ntop(AF_INET6, &a6, pa, 64)) + 1);
-                temp->
-                    lookupResultsAddress[strlen
-                                         (inet_ntop
-                                          (AF_INET6, &a6, pa, 64))] = '\0';
-                temp->lookupResultsAddressLen =
-                    strlen(inet_ntop(AF_INET6, &a6, pa, 64));
                 if (n == 1)
                     item->ResultsTable = temp;
                 else
                     current->next = temp;
                 current = temp;
                 n = n + 1;
-
+                aip = aip->ai_next;
             }
-            current->next = NULL;
+            freeaddrinfo(ais);
         }
+#elif HAVE_GETHOSTBYNAME2
+        gettimeofday(&tpstart, NULL);
+        lookup = gethostbyname2(address, AF_INET6);
+        gettimeofday(&tpend, NULL);
+        timeuse6 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
+            tpend.tv_usec - tpstart.tv_usec;
+
+        if (lookup == NULL) {
+            DEBUGMSGTL(("lookupCtlTable",
+                        "Can't get a ipv6 network host entry for %s\n",
+                        address));
+            modify_lookupCtlRc(item, h_errno);
+        } else {
+            i = 0;
+            while (lookup->h_addr_list[i]) {
+                char buf[64];
+                int buflen;
+
+                inet_ntop(lookup->h_addrtype, lookup->h_addr_list[i],
+                        buf, sizeof(buf));
+                buflen = strlen(buf);
+                switch (lookup->h_addrtype) {
+                case AF_INET:
+                    temp = add_result(item, n, INETADDRESSTYPE_IPV4, buf, buflen);
+                    break;
+                case AF_INET6:
+                    temp = add_result(item, n, INETADDRESSTYPE_IPV6, buf, buflen);
+                    break;
+                default:
+                    snmp_log(LOG_ERR, "nslookup-mib/run_lookup: Unknown address type %d\n", lookup->h_addrtype);
+                    temp = add_result(item, n, INETADDRESSTYPE_UNKNOWN, "", 0);
+                    break;
+                }
+                DEBUGMSGTL(("lookupCtlTable", "Adding %d %s\n", n, buf));
+
+                if (n == 1)
+                    item->ResultsTable = temp;
+                else
+                    current->next = temp;
+                current = temp;
+                n = n + 1;
+                i = i + 1;
+            }
+        }
+#endif
+
         timeuse = timeuse4 + timeuse6;
+        timeuse /= 1000;
         modify_lookupCtlTime(item, timeuse);
-        modify_lookupCtlOperStatus(item, 3l);
+        modify_lookupCtlOperStatus(item, 3L);
 
         if (item->ResultsTable != NULL) {
-
-            modify_lookupCtlRc(item, 0l);
+            modify_lookupCtlRc(item, 0L);
             if (lookupResultsTable_add(item) != SNMPERR_SUCCESS)
                 DEBUGMSGTL(("lookupResultsTable",
                             "registered an entry error\n"));
-        } else {
-            modify_lookupCtlRc(item, 1l);
         }
         SNMP_FREE(address);
-        address = NULL;
-
         return;
-
     }
 
+    else if (addressType == INETADDRESSTYPE_IPV6) {
+        struct in6_addr addr_in6;
+        struct hostent *lookup;
 
-    else if (addressType == 2) {
         if (inet_pton(AF_INET6, address, &addr_in6) == 1)
             DEBUGMSGTL(("lookupCtlTable", "success! \n"));
         else
             DEBUGMSGTL(("lookupCtlTable", "error! \n"));
 
-
         gettimeofday(&tpstart, NULL);
-        lookup = gethostbyaddr((char *) &addr_in6, 16, AF_INET6);
+        lookup = gethostbyaddr(&addr_in6, sizeof(addr_in6), AF_INET6);
         gettimeofday(&tpend, NULL);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
         modify_lookupCtlTime(item, timeuse);
-        modify_lookupCtlOperStatus(item, 3l);
+        modify_lookupCtlOperStatus(item, 3L);
 
         if (lookup == NULL) {
             DEBUGMSGTL(("lookupCtlTable",
                         "Can't get a network host entry for %s\n",
                         address));
-            modify_lookupCtlRc(item, 1l);
+            modify_lookupCtlRc(item, h_errno);
             return;
         } else {
-            modify_lookupCtlRc(item, 0l);
+            modify_lookupCtlRc(item, 0L);
             if (lookup->h_name != NULL) {
-                current = temp =
-                    SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
-                }
-                temp->lookupResultsIndex = n;
-
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsAddressType = 16;
-                temp->lookupResultsAddress =
-                    (char *) malloc(strlen(lookup->h_name) + 1);
-                memcpy(temp->lookupResultsAddress, lookup->h_name,
-                       strlen(lookup->h_name) + 1);
-                temp->lookupResultsAddress[strlen(lookup->h_name)] = '\0';
-                temp->lookupResultsAddressLen = strlen(lookup->h_name);
-                item->ResultsTable = temp;
+                current = temp = add_result(item, n, INETADDRESSTYPE_DNS,
+                            lookup->h_name, strlen(lookup->h_name));
                 n = n + 1;
-
             }
 
             i = 0;
             while (lookup->h_aliases[i]) {
-                temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == NULL) {
-                    exit(1);
-                }
-                temp->lookupCtlOwnerIndex =
-                    (char *) malloc(item->lookupCtlOwnerIndexLen + 1);
-                if (temp->lookupCtlOwnerIndex == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndex,
-                       item->lookupCtlOwnerIndexLen + 1);
-                temp->lookupCtlOwnerIndex[item->lookupCtlOwnerIndexLen] =
-                    '\0';
-                temp->lookupCtlOwnerIndexLen =
-                    item->lookupCtlOwnerIndexLen;
-
-                temp->lookupCtlOperationName =
-                    (char *) malloc(item->lookupCtlOperationNameLen + 1);
-                if (temp->lookupCtlOperationName == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupCtlOperationName,
-                       item->lookupCtlOperationName,
-                       item->lookupCtlOperationNameLen + 1);
-                temp->lookupCtlOperationName[item->
-                                             lookupCtlOperationNameLen] =
-                    '\0';
-                temp->lookupCtlOperationNameLen =
-                    item->lookupCtlOperationNameLen;
-
-                temp->lookupResultsIndex = n;
-                temp->lookupResultsAddressType = 16;
-                temp->lookupResultsAddress =
-                    (char *) malloc(strlen(lookup->h_aliases[i]) + 1);
-                if (temp->lookupResultsAddress == NULL) {
-                    exit(1);
-                }
-                memcpy(temp->lookupResultsAddress, lookup->h_aliases[i],
-                       strlen(lookup->h_aliases[i]) + 1);
-                temp->lookupResultsAddress[strlen(lookup->h_aliases[i])] =
-                    '\0';
-                temp->lookupResultsAddressLen =
-                    strlen(lookup->h_aliases[i]);
+                current = temp = add_result(item, n, INETADDRESSTYPE_DNS,
+                            lookup->h_aliases[i], strlen(lookup->h_aliases[i]));
                 current->next = temp;
                 current = temp;
                 i = i + 1;
                 n = n + 1;
-
             }
 
             if (item->ResultsTable != NULL)
                 current->next = NULL;
             else
                 current = NULL;
-
         }
 
-
         if (item->ResultsTable != NULL)
             if (lookupResultsTable_add(item) != SNMPERR_SUCCESS)
                 DEBUGMSGTL(("lookupResultsTable",
                             "registered an entry error\n"));
         SNMP_FREE(address);
-        address = NULL;
         return;
     } else {
         SNMP_FREE(address);
-        address = NULL;
         return;
     }
 }
@@ -931,8 +773,11 @@
     netsnmp_variable_list *vars = NULL;
     struct lookupTable_data *StorageTmp = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);   /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);     /* lookupCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOperationName,
+        thedata->lookupCtlOperationNameLen);
 
 
     if ((StorageTmp =
@@ -956,8 +801,11 @@
     netsnmp_variable_list *vars = NULL;
     struct lookupTable_data *StorageTmp = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);   /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);     /* lookupCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOperationName,
+        thedata->lookupCtlOperationNameLen);
 
 
     if ((StorageTmp =
@@ -981,8 +829,11 @@
     netsnmp_variable_list *vars = NULL;
     struct lookupTable_data *StorageTmp = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);   /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);     /* lookupCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOperationName,
+        thedata->lookupCtlOperationNameLen);
 
 
     if ((StorageTmp =
@@ -1009,8 +860,11 @@
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);   /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);     /* lookupCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+        (char *) thedata->lookupCtlOperationName,
+        thedata->lookupCtlOperationNameLen);
     memset(newoid, '\0', MAX_OID_LEN * sizeof(oid));
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
@@ -1075,32 +929,28 @@
         }
         break;
 
-
     case RESERVE2:
         /*
          * memory reseveration, final preparation... 
          */
         break;
 
-
     case FREE:
         /*
          * Release any resources that have been allocated 
          */
         break;
 
-
     case ACTION:
         /*
          * The variable has been stored in objid for
          * you to use, and you have just been asked to do something with
-         * it.  Note that anything done here must be reversable in the UNDO case 
+         * it.  Note that anything done here must be reversable in the UNDO case
          */
         tmpvar = StorageTmp->lookupCtlTargetAddressType;
         StorageTmp->lookupCtlTargetAddressType = *((long *) var_val);
         break;
 
-
     case UNDO:
         /*
          * Back out any changes made in the ACTION case 
@@ -1108,12 +958,15 @@
         StorageTmp->lookupCtlTargetAddressType = tmpvar;
         break;
 
-
     case COMMIT:
         /*
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1156,37 +1009,32 @@
                      "write to lookupCtlTargetAddress not ASN_OCTET_STR\n");
             return SNMP_ERR_WRONGTYPE;
         }
-
         break;
 
-
     case RESERVE2:
         /*
          * memory reseveration, final preparation... 
          */
-
         break;
 
-
     case FREE:
         /*
          * Release any resources that have been allocated 
          */
-
         break;
 
-
     case ACTION:
         /*
          * The variable has been stored in long_ret for
          * you to use, and you have just been asked to do something with
-         * it.  Note that anything done here must be reversable in the UNDO case 
+         * it.  Note that anything done here must be reversable in the UNDO case
          */
         tmpvar = StorageTmp->lookupCtlTargetAddress;
         tmplen = StorageTmp->lookupCtlTargetAddressLen;
 
         if ((StorageTmp->lookupCtlTargetAddress =
              (char *) malloc(var_val_len + 1)) == NULL) {
+            snmp_log(LOG_ERR, "Out of memory in nslookup-mib/write_lookupCtlTargetAddress\n");
             exit(1);
         }
         memcpy(StorageTmp->lookupCtlTargetAddress, var_val, var_val_len);
@@ -1195,7 +1043,6 @@
 
         break;
 
-
     case UNDO:
         /*
          * Back out any changes made in the ACTION case 
@@ -1207,7 +1054,6 @@
 
         break;
 
-
     case COMMIT:
         /*
          * Things are working well, so it's now safe to make the change
@@ -1217,6 +1063,9 @@
         free(tmpvar);
         tmpvar = NULL;
 
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1224,9 +1073,6 @@
 
 
 
-
-
-
 int
 write_lookupCtlRowStatus(int action,
                          u_char * var_val,
@@ -1235,7 +1081,7 @@
                          u_char * statP, oid * name, size_t name_len)
 {
     struct lookupTable_data *StorageTmp = NULL;
-    static struct lookupTable_data *StorageNew, *StorageDel = NULL;
+    static struct lookupTable_data *StorageNew = NULL, *StorageDel = NULL;
     size_t          newlen =
         name_len - (sizeof(lookupCtlTable_variables_oid) / sizeof(oid) +
                     3 - 1);
@@ -1282,7 +1128,6 @@
              * ditch illegal values now 
              */
             if (set_value == RS_ACTIVE || set_value == RS_NOTINSERVICE) {
-
                 return SNMP_ERR_INCONSISTENTVALUE;
             }
 
@@ -1384,7 +1229,7 @@
              * XXX: fill in default row values here into StorageNew 
              */
 
-            StorageNew->lookupCtlTargetAddressType = 1; /* ipv4 */
+            StorageNew->lookupCtlTargetAddressType = INETADDRESSTYPE_IPV4;
 
             StorageNew->lookupCtlRowStatus = set_value;
 
@@ -1395,13 +1240,8 @@
              * XXX: free, zero vars, no longer needed? 
              */
         }
-
-
         break;
 
-
-
-
     case FREE:
         /*
          * XXX: free, zero vars 
@@ -1411,9 +1251,6 @@
          */
         break;
 
-
-
-
     case ACTION:
         /*
          * The variable has been stored in set_value for you to
@@ -1421,8 +1258,6 @@
          * it.  Note that anything done here must be reversable in
          * the UNDO case 
          */
-
-
         if (StorageTmp == NULL) {
             /*
              * row creation, so add it 
@@ -1431,11 +1266,9 @@
                 return SNMP_ERR_NOERROR;
             }
             if (StorageNew != NULL)
-#if 1
                 DEBUGMSGTL(("lookupCtlTable",
                             "write_lookupCtlRowStatus entering new=%d...  \n",
                             action));
-#endif
             lookupCtlTable_add(StorageNew);
             /*
              * XXX: ack, and if it is NULL? 
@@ -1467,9 +1300,6 @@
         }
         break;
 
-
-
-
     case UNDO:
         /*
          * Back out any changes made in the ACTION case 
@@ -1501,9 +1331,6 @@
         }
         break;
 
-
-
-
     case COMMIT:
         /*
          * Things are working well, so it's now safe to make the change
@@ -1517,15 +1344,9 @@
 
         if (StorageDel != NULL) {
             SNMP_FREE(StorageDel->lookupCtlOwnerIndex);
-            StorageDel->lookupCtlOwnerIndex = NULL;
             SNMP_FREE(StorageDel->lookupCtlOperationName);
-            StorageDel->lookupCtlOperationName = NULL;
             SNMP_FREE(StorageDel->lookupCtlTargetAddress);
-            StorageDel->lookupCtlTargetAddress = NULL;
             SNMP_FREE(StorageDel);
-            StorageDel = NULL;
-
-            StorageDel = 0;
             /*
              * XXX: free it, its dead 
              */
@@ -1541,17 +1362,18 @@
             }
         }
         if (StorageTmp && StorageTmp->lookupCtlRowStatus == RS_ACTIVE) {
-#if 1
             DEBUGMSGTL(("lookupCtlTable",
                         "write_lookupCtlRowStatus entering runbefore=%ld...  \n",
                         StorageTmp->lookupCtlTargetAddressType));
 
-#endif
-            modify_lookupCtlOperStatus(StorageTmp, 2l);
+            modify_lookupCtlOperStatus(StorageTmp, 2L);
             run_lookup((struct lookupTable_data *) StorageTmp);
 
         }
 
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.h b/agent/mibgroup/disman/nslookup/lookupCtlTable.h
index f73b062..7a729ab 100644
--- a/agent/mibgroup/disman/nslookup/lookupCtlTable.h
+++ b/agent/mibgroup/disman/nslookup/lookupCtlTable.h
@@ -24,9 +24,8 @@
     /*
      * our storage structure(s) 
      */
+
 struct lookupTable_data {
-
-
     char           *lookupCtlOwnerIndex;        /* string */
     size_t          lookupCtlOwnerIndexLen;
     char           *lookupCtlOperationName;     /* string */
@@ -41,10 +40,10 @@
     int             storagetype;
 
     struct lookupResultsTable_data *ResultsTable;
-
-
 };
-typedef struct lookupResultsTable_data {
+
+
+struct lookupResultsTable_data {
     struct lookupResultsTable_data *next;
     char           *lookupCtlOwnerIndex;        /* string */
     size_t          lookupCtlOwnerIndexLen;
@@ -55,7 +54,7 @@
     char           *lookupResultsAddress;
     size_t          lookupResultsAddressLen;
     int             storagetype;
-} resultsIns;
+};
 
 /*
  * function declarations 
@@ -77,11 +76,11 @@
  */
 #define COLUMN_LOOKUPCTLOWNERINDEX		1
 #define COLUMN_LOOKUPCTLOPERATIONNAME		2
-#define COLUMN_LOOKUPCTLTARGETADDRESSTYPE		3
+#define COLUMN_LOOKUPCTLTARGETADDRESSTYPE	3
 #define COLUMN_LOOKUPCTLTARGETADDRESS		4
 #define COLUMN_LOOKUPCTLOPERSTATUS		5
-#define COLUMN_LOOKUPCTLTIME		6
-#define COLUMN_LOOKUPCTLRC		7
+#define COLUMN_LOOKUPCTLTIME			6
+#define COLUMN_LOOKUPCTLRC			7
 #define COLUMN_LOOKUPCTLROWSTATUS		8
 
 #endif                          /* LOOKUPMIB_H */
diff --git a/agent/mibgroup/disman/nslookup/lookupResultsTable.c b/agent/mibgroup/disman/nslookup/lookupResultsTable.c
index bfb56c9..d6a937c 100644
--- a/agent/mibgroup/disman/nslookup/lookupResultsTable.c
+++ b/agent/mibgroup/disman/nslookup/lookupResultsTable.c
@@ -14,20 +14,6 @@
 /*
  * This should always be included first before anything else 
  */
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-
-
 
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
@@ -239,9 +225,15 @@
 {
     netsnmp_variable_list *vars_list = NULL;
 
-    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOwnerIndex, thedata->lookupCtlOwnerIndexLen);      /* lookupCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->lookupCtlOperationName, thedata->lookupCtlOperationNameLen);        /* lookupCtlOperationName */
-    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &thedata->lookupResultsIndex, sizeof(thedata->lookupResultsIndex));   /* lookupResultsIndex */
+    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+    		(char *) thedata->lookupCtlOwnerIndex,
+		thedata->lookupCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+    		(char *) thedata->lookupCtlOperationName,
+		thedata->lookupCtlOperationNameLen);
+    snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+    		(char *) &thedata->lookupResultsIndex,
+		sizeof(thedata->lookupResultsIndex));
 
     /*
      * XXX: fill in default row values here into StorageNew 
diff --git a/agent/mibgroup/disman/ping/pingCtlTable.c b/agent/mibgroup/disman/ping/pingCtlTable.c
index 3f4f128..35218f8 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.c
+++ b/agent/mibgroup/disman/ping/pingCtlTable.c
@@ -2237,6 +2237,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2334,6 +2335,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2423,6 +2425,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2513,6 +2516,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2605,6 +2609,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2707,6 +2712,7 @@
             modify_ResultsOper(StorageTmp, 2);
         }
 
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2803,6 +2809,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2888,6 +2895,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2973,6 +2981,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3060,6 +3069,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3158,6 +3168,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3249,6 +3260,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3340,6 +3352,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3437,6 +3450,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3533,6 +3547,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3619,6 +3634,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3717,6 +3733,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3802,6 +3819,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3890,6 +3908,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3978,6 +3997,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -4348,6 +4368,7 @@
             }
 
         }
+        snmp_store_needed(NULL);
 
         break;
     }
diff --git a/agent/mibgroup/disman/schedule/schedConf.c b/agent/mibgroup/disman/schedule/schedConf.c
index 2e67b73..4fb9850 100644
--- a/agent/mibgroup/disman/schedule/schedConf.c
+++ b/agent/mibgroup/disman/schedule/schedConf.c
@@ -74,11 +74,11 @@
     /*
      * Skip over optional assignment in "var = value"
      */
-    while (line && isspace(*line))
+    while (line && isspace((unsigned char)(*line)))
         line++;
     if (line && *line == '=' ) {
         line++;
-        while (line && isspace(*line)) {
+        while (line && isspace((unsigned char)(*line))) {
             line++;
         }
     }
@@ -119,7 +119,7 @@
 _sched_convert_bits( char *cron_spec, char *bit_buf,
                      int  bit_buf_len, int max_val, int startAt1 ) {
     char *cp = cron_spec;
-    char b[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
+    u_char b[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
     int val, major, minor;
     int overshoot;
 
@@ -219,11 +219,11 @@
     /*
      * Skip over optional assignment in "var = value"
      */
-    while (line && isspace(*line))
+    while (line && isspace((unsigned char)(*line)))
         line++;
     if ( *line == '=' ) {
         line++;
-        while (line && isspace(*line)) {
+        while (line && isspace((unsigned char)(*line))) {
             line++;
         }
     }
@@ -357,7 +357,7 @@
 {
     char              line[SNMP_MAXBUF];
     char              time_bits[22];  /* schedWeekDay..schedMinute */
-    char             *cptr;
+    char             *cptr, *cp;
     void             *vp;
     size_t            tint;
     netsnmp_tdata_row *row;
@@ -387,12 +387,12 @@
         strcpy(line, "_schedTable ");
         cptr = line + strlen(line);
 
-        vp   = entry->schedOwner;     tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->schedName;      tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp,  &tint );
-        vp   = entry->schedDescr;     tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->schedOwner;     tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->schedName;      tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp,  &tint );
+        cp   = entry->schedDescr;     tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp,  &tint );
         tint = entry->schedInterval;
         cptr = read_config_store_data(ASN_UNSIGNED,  cptr, &tint, NULL );
 
@@ -408,8 +408,8 @@
         vp   = time_bits;    tint = 22;
         cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp, &tint );
 
-        vp   = entry->schedContextName; tint = strlen( vp );
-        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &vp,  &tint );
+        cp   = entry->schedContextName; tint = strlen( cp );
+        cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp,  &tint );
         vp   = entry->schedVariable;
         tint = entry->schedVariable_len;
         cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp,  &tint );
diff --git a/agent/mibgroup/disman/schedule/schedCore.c b/agent/mibgroup/disman/schedule/schedCore.c
index 28400f5..c914769 100644
--- a/agent/mibgroup/disman/schedule/schedCore.c
+++ b/agent/mibgroup/disman/schedule/schedCore.c
@@ -11,6 +11,25 @@
 
 netsnmp_tdata *schedule_table;
 
+
+#if !defined(HAVE_LOCALTIME_R) && !defined(localtime_r)
+/*
+ * localtime_r() replacement for older MinGW versions.
+ * Note: this implementation is not thread-safe, while it should.
+ */
+struct tm      *
+localtime_r(const time_t * timer, struct tm *result)
+{
+    struct tm      *result_p;
+
+    result_p = localtime(timer);
+    if (result && result_p)
+        *result = *result_p;
+    return result_p;
+}
+#endif
+
+
     /*
      * Initialize the container for the schedule table,
      * regardless of which initialisation routine is called first.
@@ -84,10 +103,10 @@
      * Internal utility routines to help interpret
      *  calendar-based schedule bit strings
      */
-static char _masks[] = { /* 0xff, */ 0x7f, 0x3f, 0x1f,
-                         0x0f, 0x07, 0x03, 0x01, 0x00 };
-static char _bits[]  = { 0x80, 0x40, 0x20, 0x10,
-                         0x08, 0x04, 0x02, 0x01 };
+static u_char _masks[] = { /* 0xff, */ 0x7f, 0x3f, 0x1f,
+                           0x0f, 0x07, 0x03, 0x01, 0x00 };
+static u_char _bits[]  = { 0x80, 0x40, 0x20, 0x10,
+                           0x08, 0x04, 0x02, 0x01 };
 
 /*
  * Are any of the bits set?
@@ -146,7 +165,7 @@
         /*
          * Look for the first bit that's set
          */
-    for ( i=0; i<len; i++ ) {
+    for ( i=0; i<(int)len; i++ ) {
         if ( buf[i] != 0 ) {
             major = i*8;
             for ( j=0; j<8; j++ ) {
@@ -164,9 +183,9 @@
                                31, 30, 31, 31,
                                30, 31, 30, 31, 29 };
 
-static char _truncate[] = { 0xfe, 0xf0, 0xfe, 0xfc,
-                            0xfe, 0xfc, 0xfe, 0xfe,
-                            0xfc, 0xfe, 0xfc, 0xfe, 0xf8 };
+static u_char _truncate[] = { 0xfe, 0xf0, 0xfe, 0xfc,
+                              0xfe, 0xfc, 0xfe, 0xfe,
+                              0xfc, 0xfe, 0xfc, 0xfe, 0xf8 };
 
 /*
  * What is the next day with a relevant bit set?
diff --git a/agent/mibgroup/disman/schedule/schedTable.c b/agent/mibgroup/disman/schedule/schedTable.c
index b8e36d7..d8863fd 100644
--- a/agent/mibgroup/disman/schedule/schedTable.c
+++ b/agent/mibgroup/disman/schedule/schedTable.c
@@ -165,7 +165,7 @@
                  * Convert 'schedLastFailed' timestamp
                  *   into DateAndTime string
                  */
-                cp = date_n_time( &entry->schedLastFailed, &len );
+                cp = (char *) date_n_time( &entry->schedLastFailed, &len );
                 snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
                                          cp, len);
                 break;
diff --git a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
index 5c70e0d..46fe97d 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
@@ -1606,6 +1606,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1707,7 +1708,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1789,6 +1790,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1873,6 +1875,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1960,6 +1963,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2049,6 +2053,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2128,7 +2133,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2215,6 +2220,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2296,6 +2302,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2377,6 +2384,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2473,7 +2481,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2557,6 +2565,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2654,7 +2663,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2738,6 +2747,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2823,6 +2833,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2909,6 +2920,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2990,6 +3002,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3083,6 +3096,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3199,6 +3213,7 @@
                 modify_trResultsOper(StorageTmp, 2);
             }
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3298,7 +3313,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3383,6 +3398,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3480,7 +3496,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3562,6 +3578,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3655,7 +3672,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
-        tmpvar = NULL;
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -4020,6 +4037,7 @@
             }
 
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
index b110950..ef83450 100644
--- a/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+++ b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
@@ -487,7 +487,7 @@
  *      non-0 if value available
  */
 static int
-getulongfromsysclassnetstatistics(const char *ifname, char *ctrname, u_long *valuep)
+getulongfromsysclassnetstatistics(const char *ifname, const char *ctrname, u_long *valuep)
 {
     char path[256];
     FILE *fp;
@@ -904,7 +904,7 @@
         fd = ourfd = socket(AF_INET, SOCK_DGRAM, 0);
         if(ourfd < 0) {
             DEBUGMSGTL(("access:dot3StatsTable:ioctl",
-                        "dot3Stats_ioctl_get couldn't create a socket\n", name));
+                        "dot3Stats_ioctl_get couldn't create a socket\n"));
             snmp_log (LOG_ERR, "access:dot3StatsTable:ioctl, _dot3Stats_ioctl_get error on interface '%s'\n", name);
 
             return -2;
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
index d992ab9..5414001 100644
--- a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
@@ -355,7 +355,7 @@
 #endif
 
     DEBUGMSGT(("verbose:dot3StatsTable:dot3StatsTable_container_load",
-               "inserted %d records\n", count));
+               "inserted %" NETSNMP_PRIz "d records\n", count));
 
     return MFD_SUCCESS;
 }                               /* dot3StatsTable_container_load */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
index f2685cc..743424a 100644
--- a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
@@ -145,7 +145,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = DOT3STATSTABLE_MIN_COL;
     tbl_info->max_column = DOT3STATSTABLE_MAX_COL;
diff --git a/agent/mibgroup/examples/delayed_instance.c b/agent/mibgroup/examples/delayed_instance.c
index 4895390..833a4f7 100644
--- a/agent/mibgroup/examples/delayed_instance.c
+++ b/agent/mibgroup/examples/delayed_instance.c
@@ -223,7 +223,7 @@
          * update current value 
          */
         delay_time = *(requests->requestvb->val.integer);
-        DEBUGMSGTL(("testhandler", "updated delay_time -> %d\n",
+        DEBUGMSGTL(("testhandler", "updated delay_time -> %ld\n",
                     delay_time));
         break;
 
diff --git a/agent/mibgroup/examples/example.c b/agent/mibgroup/examples/example.c
index 5869d37..dd97daf 100644
--- a/agent/mibgroup/examples/example.c
+++ b/agent/mibgroup/examples/example.c
@@ -719,7 +719,7 @@
         var_obj.name = example_string_oid;
         var_obj.name_length = sizeof(example_string_oid) / sizeof(oid); /* number of sub-ids */
         var_obj.type = ASN_OCTET_STR;   /* type of variable */
-        var_obj.val.string = example_str;       /* value */
+        var_obj.val.string = (unsigned char *) example_str;       /* value */
         var_obj.val_len = strlen(example_str);
         DEBUGMSGTL(("example", "write_exampletrap2 sending the v2 trap\n"));
         send_v2trap(&var_trap);
diff --git a/agent/mibgroup/examples/netSnmpHostsTable.c b/agent/mibgroup/examples/netSnmpHostsTable.c
index 7f1edae..b691a7f 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable.c
@@ -71,7 +71,7 @@
                                      0);
 
     /** Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     table_info->min_column = 2;
     table_info->max_column = 5;
 
diff --git a/agent/mibgroup/examples/netSnmpHostsTable_access.c b/agent/mibgroup/examples/netSnmpHostsTable_access.c
index e56cd1d..3d2e5fb 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable_access.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable_access.c
@@ -167,7 +167,7 @@
 
 /** Create a data_context for non-existent rows that SETs are performed on.
  *  return a void * pointer which will be passed to subsequent get_XXX
- *  and set_XXX functions for data retrival and modification during
+ *  and set_XXX functions for data retrieval and modification during
  *  this SET request.
  *
  *  The indexs are encoded (in order) into the index_data pointer if it
diff --git a/agent/mibgroup/examples/scalar_int.c b/agent/mibgroup/examples/scalar_int.c
index 503bdd4..4380fce 100644
--- a/agent/mibgroup/examples/scalar_int.c
+++ b/agent/mibgroup/examples/scalar_int.c
@@ -29,7 +29,7 @@
 /*
  * 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/examples/ucdDemoPublic.c b/agent/mibgroup/examples/ucdDemoPublic.c
index ea90ab6..8e9e66a 100644
--- a/agent/mibgroup/examples/ucdDemoPublic.c
+++ b/agent/mibgroup/examples/ucdDemoPublic.c
@@ -13,11 +13,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -27,10 +23,6 @@
 # endif
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/tools.h>
@@ -133,7 +125,7 @@
 
     case UCDDEMOPUBLICSTRING:
         *write_method = write_ucdDemoPublicString;
-        *var_len = strlen(publicString);
+        *var_len = strlen((const char*)publicString);
         return (unsigned char *) publicString;
 
     case UCDDEMOUSERLIST:
diff --git a/agent/mibgroup/hardware/cpu.h b/agent/mibgroup/hardware/cpu.h
index 5e42e96..3956679 100644
--- a/agent/mibgroup/hardware/cpu.h
+++ b/agent/mibgroup/hardware/cpu.h
@@ -21,7 +21,7 @@
 #elif (defined(freebsd2) || defined(freebsd3))
 config_require(hardware/cpu/cpu_nlist)
 
-#elif (defined(aix4) || defined(aix5) || defined(aix6))
+#elif (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 config_require(hardware/cpu/cpu_perfstat)
 
 #elif (defined(solaris2))
diff --git a/agent/mibgroup/hardware/cpu/cpu.c b/agent/mibgroup/hardware/cpu/cpu.c
index 4b29dbc..2b6868e 100644
--- a/agent/mibgroup/hardware/cpu/cpu.c
+++ b/agent/mibgroup/hardware/cpu/cpu.c
@@ -84,8 +84,8 @@
          */
     cpu = SNMP_MALLOC_TYPEDEF( netsnmp_cpu_info );
     if (!cpu) {
-        return NULL;
         DEBUGMSG(("cpu", "(failed)\n"));
+        return NULL;
     }
     DEBUGMSG(("cpu", "(created)\n"));
     cpu->idx = idx;
@@ -181,7 +181,7 @@
              * First time through, we need to create buffers
              * for the historical stats
              */
-            cpu->history  = calloc( _cpuHistoryLen, sizeof(struct netsnmp_cpu_history));
+            cpu->history  = (struct netsnmp_cpu_history *)calloc( _cpuHistoryLen, sizeof(struct netsnmp_cpu_history));
         } else {
             /*
              * Otherwise, rotate these values - in descending order
diff --git a/agent/mibgroup/hardware/cpu/cpu_kstat.c b/agent/mibgroup/hardware/cpu/cpu_kstat.c
index 2e8db25..33f188e 100644
--- a/agent/mibgroup/hardware/cpu/cpu_kstat.c
+++ b/agent/mibgroup/hardware/cpu/cpu_kstat.c
@@ -23,7 +23,7 @@
      *   (including descriptions)
      */
 void init_cpu_kstat( void ) {
-    int               i, n=0, clock, state_begin;
+    int               i = 0, n = 0, clock, state_begin;
     char              ctype[15], ftype[15], state[10];
     kstat_t          *ksp;
     kstat_named_t    *ks_data;
diff --git a/agent/mibgroup/hardware/cpu/cpu_linux.c b/agent/mibgroup/hardware/cpu/cpu_linux.c
index 21cb1aa..5d6eaf1 100644
--- a/agent/mibgroup/hardware/cpu/cpu_linux.c
+++ b/agent/mibgroup/hardware/cpu/cpu_linux.c
@@ -112,11 +112,11 @@
     }
     if (bsize == 0) {
         bsize = getpagesize()-1;
-        buff = malloc(bsize+1);
+        buff = (char*)malloc(bsize+1);
     }
     while ((bytes_read = read(statfd, buff, bsize)) == bsize) {
         bsize += BUFSIZ;
-        buff = realloc(buff, bsize+1);
+        buff = (char*)realloc(buff, bsize+1);
         DEBUGMSGTL(("cpu", "/proc/stat buffer increased to %d\n", bsize));
         close(statfd);
         statfd = open(STAT_FILE, O_RDONLY, 0);
@@ -219,11 +219,11 @@
       } else {
         if (vmbsize == 0) {
 	    vmbsize = getpagesize()-1;
-	    vmbuff = malloc(vmbsize+1);
+	    vmbuff = (char*)malloc(vmbsize+1);
         }
         while ((bytes_read = read(vmstatfd, vmbuff, vmbsize)) == vmbsize) {
 	    vmbsize += BUFSIZ;
-	    vmbuff = realloc(vmbuff, vmbsize+1);
+	    vmbuff = (char*)realloc(vmbuff, vmbsize+1);
 	    close(vmstatfd);
 	    vmstatfd = open(VMSTAT_FILE, O_RDONLY, 0);
 	    if (vmstatfd == -1) {
diff --git a/agent/mibgroup/hardware/cpu/cpu_perfstat.c b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
index f44f295..f0ff2d2 100644
--- a/agent/mibgroup/hardware/cpu/cpu_perfstat.c
+++ b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
@@ -11,6 +11,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 
+#include <sys/protosw.h>
 #include <libperfstat.h>
 
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
@@ -27,7 +28,7 @@
     strcpy(cpu->name, "Overall CPU statistics");
 
     cpu_num = perfstat_cpu( NULL, NULL, sizeof(perfstat_cpu_t), 0 );
-    cs2 = malloc( cpu_num*sizeof(perfstat_cpu_t));
+    cs2 = (perfstat_cpu_t*)malloc( cpu_num*sizeof(perfstat_cpu_t));
  
     strcpy( name.name, "");
     if (perfstat_cpu(&name, cs2, sizeof(perfstat_cpu_t), cpu_num) > 0) {
@@ -83,7 +84,7 @@
      * Per-CPU statistics
      */
     n   = cs.ncpus;   /* XXX - Compare against cpu_num */
-    cs2 = malloc( n*sizeof(perfstat_cpu_t));
+    cs2 = (perfstat_cpu_t*)malloc( n*sizeof(perfstat_cpu_t));
     strcpy( name.name, "");
     if (perfstat_cpu(&name, cs2, sizeof(perfstat_cpu_t), n) > 0) {
         for ( i = 0; i < n; i++ ) {
diff --git a/agent/mibgroup/hardware/cpu/cpu_sysctl.c b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
index 58328a9..29282f8 100644
--- a/agent/mibgroup/hardware/cpu/cpu_sysctl.c
+++ b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
@@ -75,13 +75,23 @@
 
 #if defined(__NetBSD__)
 #define NETSNMP_KERN_CPU  KERN_CP_TIME
+#define NETSNMP_KERN_MCPU
+#define NETSNMP_KERN_MCPU_TYPE NETSNMP_CPU_STATS
 #elif defined(KERN_CPUSTATS)              /* BSDi */
 #define NETSNMP_KERN_CPU  KERN_CPUSTATS
+#elif defined(KERN_CPTIME2)                /* OpenBSD */
+#define NETSNMP_KERN_CPU  KERN_CPTIME
+#define NETSNMP_KERN_MCPU
+#define NETSNMP_KERN_MCPU_TYPE u_int64_t
 #elif defined(KERN_CPTIME)                /* OpenBSD */
 #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"
@@ -149,7 +159,9 @@
      * 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
@@ -159,11 +171,15 @@
      * Don't fight it, Dave - go with the flow....
      */
     NETSNMP_CPU_STATS cpu_stats[CPUSTATES];
+#if !defined(__FreeBSD__) && !defined(__NetBSD__)
     int            cpu_mib[] = { CTL_KERN, NETSNMP_KERN_CPU };
+#endif
+#ifdef KERN_CPTIME2
+    int            mcpu_mib[] = { CTL_KERN, KERN_CPTIME2, 0 };
+#endif
     size_t         cpu_size  = sizeof(cpu_stats);
 #ifdef NETSNMP_KERN_MCPU 
     NETSNMP_KERN_MCPU_TYPE *mcpu_stats;
-    int            mcpu_mib[] = { CTL_KERN, NETSNMP_KERN_MCPU };
     size_t         mcpu_size;
 #endif
     NETSNMP_VM_STATS_TYPE mem_stats;
@@ -176,12 +192,12 @@
 #else
     sysctl(cpu_mib, 2,  cpu_stats, &cpu_size, NULL, 0);
 #endif
-    cpu->user_ticks = (unsigned long long)cpu_stats[CP_USER];
-    cpu->nice_ticks = (unsigned long long)cpu_stats[CP_NICE];
-    cpu->sys2_ticks = (unsigned long long)cpu_stats[CP_SYS]+cpu_stats[CP_INTR];
-    cpu->kern_ticks = (unsigned long long)cpu_stats[CP_SYS];
-    cpu->idle_ticks = (unsigned long long)cpu_stats[CP_IDLE];
-    cpu->intrpt_ticks = (unsigned long long)cpu_stats[CP_INTR];
+    cpu->user_ticks = cpu_stats[CP_USER];
+    cpu->nice_ticks = cpu_stats[CP_NICE];
+    cpu->sys2_ticks = cpu_stats[CP_SYS]+cpu_stats[CP_INTR];
+    cpu->kern_ticks = cpu_stats[CP_SYS];
+    cpu->idle_ticks = cpu_stats[CP_IDLE];
+    cpu->intrpt_ticks = cpu_stats[CP_INTR];
         /* wait_ticks, sirq_ticks unused */
     
         /*
@@ -189,24 +205,65 @@
          *   XXX - Do these really belong here ?
          */
     sysctl(mem_mib, 2, &mem_stats, &mem_size, NULL, 0);
-    cpu->nInterrupts  = (unsigned long long)mem_stats.NS_VM_INTR;
-    cpu->nCtxSwitches = (unsigned long long)mem_stats.NS_VM_SWTCH;
-    cpu->swapIn       = (unsigned long long)mem_stats.NS_VM_SWAPIN;
-    cpu->swapOut      = (unsigned long long)mem_stats.NS_VM_SWAPOUT;
+    cpu->nInterrupts  = mem_stats.NS_VM_INTR;
+    cpu->nCtxSwitches = mem_stats.NS_VM_SWTCH;
+    cpu->swapIn       = mem_stats.NS_VM_SWAPIN;
+    cpu->swapOut      = mem_stats.NS_VM_SWAPOUT;
 #ifdef NS_VM_PAGEIN
-    cpu->pageIn       = (unsigned long long)mem_stats.NS_VM_PAGEIN;
+    cpu->pageIn       = mem_stats.NS_VM_PAGEIN;
 #endif
 #ifdef NS_VM_PAGEOUT
-    cpu->pageOut      = (unsigned long long)mem_stats.NS_VM_PAGEOUT;
+    cpu->pageOut      = mem_stats.NS_VM_PAGEOUT;
 #endif
 
 #ifdef NETSNMP_KERN_MCPU
-    mcpu_size  = cpu_num*sizeof(NETSNMP_KERN_MCPU_TYPE);
+#if defined(HAVE_KERN_CP_TIMES)
+    sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
     mcpu_stats = malloc(mcpu_size);
-    sysctl(mcpu_mib, 2, mcpu_stats, &mcpu_size, NULL, 0);
+    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
+    mcpu_size  = cpu_num*sizeof(cpu_stats);
+    mcpu_stats = malloc(mcpu_size);
+    sysctlbyname("kern.cp_time", mcpu_stats, &mcpu_size, NULL, 0);
+#endif
     for ( i = 0; i < cpu_num; 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);
+#endif
+	/* Almost copy & paste of previous cpu stats stuff :) */
+	cpu->user_ticks = mcpu_stats[(i*CPUSTATES)+CP_USER];
+	cpu->nice_ticks = mcpu_stats[(i*CPUSTATES)+CP_NICE];
+	cpu->sys2_ticks = mcpu_stats[(i*CPUSTATES)+CP_SYS]+mcpu_stats[(i*CPUSTATES)+CP_INTR];
+	cpu->kern_ticks = mcpu_stats[(i*CPUSTATES)+CP_SYS];
+	cpu->idle_ticks = mcpu_stats[(i*CPUSTATES)+CP_IDLE];
+	cpu->intrpt_ticks = mcpu_stats[(i*CPUSTATES)+CP_INTR];
+	    /* wait_ticks, sirq_ticks unused */
+
+	    /*
+	     * Interrupt/Context Switch statistics
+	     *   XXX - Do these really belong here ?
+	     */
+
+	/* There's no really need to execute another sysctl()
+	 *
+	 * sysctl(mem_mib, 2, &mem_stats, &mem_size, NULL, 0);
+	 */
+	cpu->nInterrupts  = mem_stats.NS_VM_INTR;
+	cpu->nCtxSwitches = mem_stats.NS_VM_SWTCH;
+	cpu->swapIn       = mem_stats.NS_VM_SWAPIN;
+	cpu->swapOut      = mem_stats.NS_VM_SWAPOUT;
+#ifdef NS_VM_PAGEIN
+	cpu->pageIn       = mem_stats.NS_VM_PAGEIN;
+#endif
+#ifdef NS_VM_PAGEOUT
+	cpu->pageOut      = mem_stats.NS_VM_PAGEOUT;
+#endif
     }
     free(mcpu_stats);
 #else
diff --git a/agent/mibgroup/hardware/fsys.h b/agent/mibgroup/hardware/fsys.h
index 81022ff..e30a5a6 100644
--- a/agent/mibgroup/hardware/fsys.h
+++ b/agent/mibgroup/hardware/fsys.h
@@ -1,5 +1,5 @@
 config_require(hardware/fsys/hw_fsys)
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 config_require(hardware/fsys/fsys_mntctl)
 #elif defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)
 config_require(hardware/fsys/fsys_getfsstats)
diff --git a/agent/mibgroup/hardware/fsys/fsys_getfsstats.c b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
index ac00e03..addb32a 100644
--- a/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
+++ b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
@@ -65,6 +65,10 @@
        return NETSNMP_FS_TYPE_EXT2;
     else if ( !strcmp(typename, MOUNT_NTFS) )
        return NETSNMP_FS_TYPE_NTFS;
+    else if ( !strcmp(typename, MOUNT_ZFS) )
+       return NETSNMP_FS_TYPE_OTHER;
+    else if ( !strcmp(typename, MOUNT_ACFS) )
+       return NETSNMP_FS_TYPE_OTHER;
 
        /*
         * NetBSD also recognises the following filesystem types:
@@ -115,7 +119,7 @@
     n = NSFS_GETFSSTAT( NULL, 0, 0 );
     if ( n==0 )
         return;
-    stats = malloc( n * sizeof( struct NSFS_STATFS ));
+    stats = (struct NSFS_STATFS *)malloc( n * sizeof( struct NSFS_STATFS ));
     n = NSFS_GETFSSTAT( stats, n * sizeof( struct NSFS_STATFS ), MNT_NOWAIT );
 
     /*
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
index da91557..8eb43ce 100644
--- a/agent/mibgroup/hardware/fsys/fsys_mntctl.c
+++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
@@ -29,21 +29,21 @@
 }
 
 int
-_fsys_type( int type )
+_fsys_type( int type)
 {
     DEBUGMSGTL(("fsys:type", "Classifying %d\n", type));
 
     switch ( type ) {
-        case MNT_AIX:
-        case MNT_JFS:
+        case  MNT_AIX:
+        case  MNT_JFS:
             return NETSNMP_FS_TYPE_BERKELEY;
 
-        case MNT_CDROM:
+        case  MNT_CDROM:
             return NETSNMP_FS_TYPE_ISO9660;
 
-        case MNT_NFS:
-        case MNT_NFS3:
-        case MNT_AUTOFS:
+        case  MNT_NFS:
+        case  MNT_NFS3:
+        case  MNT_AUTOFS:
             return NETSNMP_FS_TYPE_NFS;
 
     /*
@@ -59,6 +59,9 @@
 #ifdef MNT_PROCFS
         case MNT_PROCFS:
 #endif
+#ifdef MNT_ACFS
+        case MNT_ACFS:
+#endif
         case MNT_SFS:
         case MNT_CACHEFS:
             return NETSNMP_FS_TYPE_OTHER;
@@ -69,7 +72,7 @@
         default:
             return NETSNMP_FS_TYPE_IGNORE;
     }
-    return NETSNMP_FS_TYPE_IGNORE;    /* Not reached */
+    return NETSNMP_FS_TYPE_IGNORE;  /* Not reached */
 }
 
 void
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntent.c b/agent/mibgroup/hardware/fsys/fsys_mntent.c
index 2a45af5..63a8538 100644
--- a/agent/mibgroup/hardware/fsys/fsys_mntent.c
+++ b/agent/mibgroup/hardware/fsys/fsys_mntent.c
@@ -140,6 +140,9 @@
               !strcmp(typename, MNTTYPE_OCFS2) ||
               !strcmp(typename, MNTTYPE_CVFS) ||
               !strcmp(typename, MNTTYPE_SIMFS) ||
+              !strcmp(typename, MNTTYPE_BTRFS) ||
+              !strcmp(typename, MNTTYPE_ZFS) ||
+              !strcmp(typename, MNTTYPE_ACFS) ||
               !strcmp(typename, MNTTYPE_LOFS))
        return NETSNMP_FS_TYPE_OTHER;
 
diff --git a/agent/mibgroup/hardware/fsys/hw_fsys.c b/agent/mibgroup/hardware/fsys/hw_fsys.c
index 4a5a230..048ee66 100644
--- a/agent/mibgroup/hardware/fsys/hw_fsys.c
+++ b/agent/mibgroup/hardware/fsys/hw_fsys.c
@@ -86,6 +86,7 @@
 int
 netsnmp_fsys_load( netsnmp_cache *cache, void *data )
 {
+    /* XXX - check cache timeliness */
     return _fsys_load();
 }
 
@@ -106,6 +107,7 @@
 _fsys_load( void )
 {
     netsnmp_fsys_arch_load();
+    /* XXX - update cache timestamp */
     return 0;
 }
 
@@ -244,7 +246,7 @@
  *  Convert fsys size information to 1K units
  *    (attempting to avoid 32-bit overflow!)
  */
-unsigned int
+unsigned long long
 _fsys_to_K( int size, int units )
 {
     int factor = 1;
@@ -257,33 +259,53 @@
         return size/2;
     } else if ( units < 1024 ) {
         factor = 1024 / units;   /* Assuming power of two */
-        return (size * factor);
+        return (size / factor);
     } else {
         factor = units / 1024;   /* Assuming multiple of 1K */
-        return (size / factor);
+        return (size * factor);
     }
 }
 
-unsigned int
-netsnmp_fsys_size( netsnmp_fsys_info *f) {
+unsigned long long
+netsnmp_fsys_size_ull( netsnmp_fsys_info *f) {
     if ( !f ) {
         return 0;
     }
     return _fsys_to_K( f->size, f->units );
 }
 
-unsigned int
-netsnmp_fsys_used( netsnmp_fsys_info *f) {
+unsigned long long
+netsnmp_fsys_used_ull( netsnmp_fsys_info *f) {
     if ( !f ) {
         return 0;
     }
     return _fsys_to_K( f->used, f->units );
 }
 
-unsigned int
-netsnmp_fsys_avail( netsnmp_fsys_info *f) {
+unsigned long long
+netsnmp_fsys_avail_ull( netsnmp_fsys_info *f) {
     if ( !f ) {
         return 0;
     }
     return _fsys_to_K( f->avail, f->units );
 }
+
+
+int
+netsnmp_fsys_size( netsnmp_fsys_info *f) {
+    unsigned long long v = netsnmp_fsys_size_ull(f);
+    return (int)v;
+}
+
+int
+netsnmp_fsys_used( netsnmp_fsys_info *f) {
+    unsigned long long v = netsnmp_fsys_used_ull(f);
+    return (int)v;
+}
+
+int
+netsnmp_fsys_avail( netsnmp_fsys_info *f) {
+    unsigned long long v = netsnmp_fsys_avail_ull(f);
+    return (int)v;
+}
+
diff --git a/agent/mibgroup/hardware/fsys/mnttypes.h b/agent/mibgroup/hardware/fsys/mnttypes.h
index fac935e..37ed4fb 100644
--- a/agent/mibgroup/hardware/fsys/mnttypes.h
+++ b/agent/mibgroup/hardware/fsys/mnttypes.h
@@ -145,6 +145,15 @@
 #ifndef MNTTYPE_SIMFS
 #define MNTTYPE_SIMFS     "simfs"
 #endif
+#ifndef MNTTYPE_BTRFS
+#define MNTTYPE_BTRFS     "btrfs"
+#endif
+#ifndef MNTTYPE_ZFS
+#define MNTTYPE_ZFS       "zfs"
+#endif
+#ifndef MNTTYPE_ACFS
+#define MNTTYPE_ACFS      "acfs"
+#endif
 
 /*
  *  File systems to skip
diff --git a/agent/mibgroup/hardware/fsys/mounts.h b/agent/mibgroup/hardware/fsys/mounts.h
index 2148888..eab65da 100644
--- a/agent/mibgroup/hardware/fsys/mounts.h
+++ b/agent/mibgroup/hardware/fsys/mounts.h
@@ -56,6 +56,12 @@
 #ifndef MOUNT_UFS
 #define MOUNT_UFS    "ufs"
 #endif
+#ifndef MOUNT_ZFS
+#define MOUNT_ZFS    "zfs"
+#endif
+#ifndef MOUNT_ACFS
+#define MOUNT_ACFS   "acfs"
+#endif
 
 /*
 #ifndef MNTTYPE_AFS
diff --git a/agent/mibgroup/hardware/memory.h b/agent/mibgroup/hardware/memory.h
index c0670e4..c33450a 100644
--- a/agent/mibgroup/hardware/memory.h
+++ b/agent/mibgroup/hardware/memory.h
@@ -12,7 +12,7 @@
 #elif (defined(netbsd) || defined(netbsd1) || defined(netbsdelf) || defined(netbsdelf2)|| defined(netbsdelf3) || defined(openbsd))
 config_require(hardware/memory/memory_netbsd)
 
-#elif (defined(aix4) || defined(aix5) || defined(aix6))
+#elif (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 config_require(hardware/memory/memory_aix)
 
 #elif (defined(solaris2))
diff --git a/agent/mibgroup/hardware/memory/memory_aix.c b/agent/mibgroup/hardware/memory/memory_aix.c
index 2519dd9..ad24526 100644
--- a/agent/mibgroup/hardware/memory/memory_aix.c
+++ b/agent/mibgroup/hardware/memory/memory_aix.c
@@ -4,6 +4,7 @@
 #include <net-snmp/agent/hardware/memory.h>
 
 #include <unistd.h>
+#include <sys/protosw.h>
 #include <libperfstat.h>
 #include <sys/stat.h>
 
diff --git a/agent/mibgroup/hardware/memory/memory_freebsd.c b/agent/mibgroup/hardware/memory/memory_freebsd.c
index 02e8be2..8d18698 100644
--- a/agent/mibgroup/hardware/memory/memory_freebsd.c
+++ b/agent/mibgroup/hardware/memory/memory_freebsd.c
@@ -24,7 +24,7 @@
 quad_t    swapUsed;
 quad_t    swapFree;
 
-int swapmode(long);
+static int swapmode(long);
 
 
     /*
@@ -36,10 +36,15 @@
     long           pagesize;
     int            nswap;
 
-    struct vmmeter vmem;
+#if !defined(VM_TOTAL)
+    unsigned int   free_mem;
+    size_t         free_size = sizeof(free_mem);
+    unsigned int   mem_pages;
+#else
     struct vmtotal total;
     size_t         total_size  = sizeof(total);
-    int            total_mib[] = { CTL_VM, VM_METER };
+    int            total_mib[] = { CTL_VM, VM_TOTAL };
+#endif
 
     u_long         phys_mem;
     u_long         user_mem;
@@ -58,7 +63,12 @@
     /*
      * Retrieve the memory information from the underlying O/S...
      */
+#if !defined(VM_TOTAL)
+    sysctlbyname("vm.stats.vm.v_free_count", &free_mem,    &free_size,    NULL, 0);
+    sysctlbyname("vm.stats.vm.v_page_count", &mem_pages,    &free_size,    NULL, 0);
+#else
     sysctl(total_mib,    2, &total,    &total_size,    NULL, 0);
+#endif
     sysctl(phys_mem_mib, 2, &phys_mem, &mem_size,      NULL, 0);
     sysctl(user_mem_mib, 2, &user_mem, &mem_size,      NULL, 0);
     sysctlbyname("vm.stats.vm.v_cache_count",    &cache_count, &cache_size, NULL, 0);
@@ -83,7 +93,11 @@
              mem->descr = strdup("Physical memory");
         mem->units = pagesize;
         mem->size  = phys_mem/pagesize;
+#if !defined(VM_TOTAL)
+	mem->free  = free_mem;
+#else
         mem->free  = total.t_free;
+#endif
     }
 
     mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_USERMEM, 1 );
@@ -93,8 +107,13 @@
         if (!mem->descr)
              mem->descr = strdup("Real memory");
         mem->units = pagesize;
+#if !defined(VM_TOTAL)
+	mem->size  = user_mem/pagesize;
+	mem->free  = free_mem;
+#else
         mem->size  = total.t_rm;
-        mem->free  = total.t_arm;
+        mem->free  = total.t_rm - total.t_arm;
+#endif
     }
 
     mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_VIRTMEM, 1 );
@@ -104,10 +123,16 @@
         if (!mem->descr)
              mem->descr = strdup("Virtual memory");
         mem->units = pagesize;
+#if !defined(VM_TOTAL)
+	mem->size  = mem_pages+swapTotal;
+	mem->free  = free_mem+swapFree;
+#else
         mem->size  = total.t_vm;
-        mem->free  = total.t_avm;
+        mem->free  = total.t_vm - total.t_avm;
+#endif
     }
 
+#if defined(VM_TOTAL)
     mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_SHARED, 1 );
     if (!mem) {
         snmp_log_perror("No Shared Memory info entry");
@@ -116,7 +141,7 @@
              mem->descr = strdup("Shared virtual memory");
         mem->units = pagesize;
         mem->size  = total.t_vmshr;
-        mem->free  = total.t_avmshr;
+        mem->free  = total.t_vmshr - total.t_avmshr;
     }
 
     mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_SHARED2, 1 );
@@ -127,8 +152,9 @@
              mem->descr = strdup("Shared real memory");
         mem->units = pagesize;
         mem->size  = total.t_rmshr;
-        mem->free  = total.t_armshr;
+        mem->free  = total.t_rmshr - total.t_armshr;
     }
+#endif
 
     mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_CACHED, 1 );
     if (!mem) {
@@ -137,8 +163,8 @@
         if (!mem->descr)
              mem->descr = strdup("Cached memory");
         mem->units = pagesize;
-        mem->size  = cache_max + inact_count;
-        mem->free  = cache_max - cache_count;
+        mem->size  = cache_count;
+        mem->free  = 0;
     }
 
     nswap = swapmode(pagesize);
@@ -181,7 +207,7 @@
  * This is just way too ugly ;) 
  */
 
-int
+static int
 swapmode(long pagesize)
 {
     struct extensible ext;
@@ -212,22 +238,21 @@
 
 #include <sys/conf.h>
 
-int
+extern kvm_t *kd;
+
+static int
 swapmode(long pagesize)
 {
     int             i, n;
-    static kvm_t   *kd = NULL;
     struct kvm_swap kswap[16];
     netsnmp_memory_info *mem;
     char buf[1024];
 
-    if (kd == NULL)
-        kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, NULL);
     n = kvm_getswapinfo(kd, kswap, sizeof(kswap) / sizeof(kswap[0]), 0);
 
     swapUsed = swapTotal = swapFree = 0;
 
-    if ( n > 1 ) {
+    if ( n > 0 ) {
         /*
          * If there are multiple swap devices, then record
          *   the statistics for each one separately...
diff --git a/agent/mibgroup/hardware/memory/memory_linux.c b/agent/mibgroup/hardware/memory/memory_linux.c
index 36d431e..8c189c5 100644
--- a/agent/mibgroup/hardware/memory/memory_linux.c
+++ b/agent/mibgroup/hardware/memory/memory_linux.c
@@ -43,7 +43,7 @@
     }
     if (bsize == 0) {
         bsize = MEMINFO_INIT_SIZE;
-        buff = malloc(bsize+1);
+        buff = (char*)malloc(bsize+1);
         if (NULL == buff) {
             snmp_log(LOG_ERR, "malloc failed\n");
             close(statfd);
@@ -51,7 +51,7 @@
         }
     }
     while ((bytes_read = read(statfd, buff, bsize)) == bsize) {
-        b = realloc(buff, bsize + MEMINFO_STEP_SIZE + 1);
+        b = (char*)realloc(buff, bsize + MEMINFO_STEP_SIZE + 1);
         if (NULL == b) {
             snmp_log(LOG_ERR, "malloc failed\n");
             close(statfd);
diff --git a/agent/mibgroup/hardware/memory/memory_solaris.c b/agent/mibgroup/hardware/memory/memory_solaris.c
index 3dfff8b..42f203e 100644
--- a/agent/mibgroup/hardware/memory/memory_solaris.c
+++ b/agent/mibgroup/hardware/memory/memory_solaris.c
@@ -129,7 +129,7 @@
     char buf[1024];
 
     num = swapctl(SC_GETNSWP, 0);
-    s = malloc(num * sizeof(swapent_t) + sizeof(struct swaptable));
+    s = (swaptbl_t*)malloc(num * sizeof(swapent_t) + sizeof(struct swaptable));
     if (!s)
         return;
 
diff --git a/agent/mibgroup/hardware/sensors.h b/agent/mibgroup/hardware/sensors.h
index 00af302..b88d915 100644
--- a/agent/mibgroup/hardware/sensors.h
+++ b/agent/mibgroup/hardware/sensors.h
@@ -1,6 +1,6 @@
 config_require(hardware/sensors/hw_sensors)
 
-#if defined(solaris)
+#if defined(solaris2)
 # if defined(HAVE_PICL_H)
 config_require(hardware/sensors/picld_sensors)
 # else
diff --git a/agent/mibgroup/hardware/sensors/hw_sensors.c b/agent/mibgroup/hardware/sensors/hw_sensors.c
index c466eac..1a01645 100644
--- a/agent/mibgroup/hardware/sensors/hw_sensors.c
+++ b/agent/mibgroup/hardware/sensors/hw_sensors.c
@@ -132,7 +132,7 @@
  *  or (optionally) insert a new one into the container
  */
 netsnmp_sensor_info *
-sensor_by_name( char *name, int create_type )
+sensor_by_name( const char *name, int create_type )
 {
     netsnmp_sensor_info *sp;
 
diff --git a/agent/mibgroup/hardware/sensors/hw_sensors.h b/agent/mibgroup/hardware/sensors/hw_sensors.h
index 7ac26cf..17eccf5 100644
--- a/agent/mibgroup/hardware/sensors/hw_sensors.h
+++ b/agent/mibgroup/hardware/sensors/hw_sensors.h
@@ -1 +1,2 @@
 void init_hw_sensors( void );
+void shutdown_hw_sensors( void );
diff --git a/agent/mibgroup/hardware/sensors/kstat_sensors.c b/agent/mibgroup/hardware/sensors/kstat_sensors.c
index d503c43..62bbb10 100644
--- a/agent/mibgroup/hardware/sensors/kstat_sensors.c
+++ b/agent/mibgroup/hardware/sensors/kstat_sensors.c
@@ -156,5 +156,6 @@
         }
     }
 
+    kstat_close(kc);
     return 0;
 }
diff --git a/agent/mibgroup/hardware/sensors/picld_sensors.c b/agent/mibgroup/hardware/sensors/picld_sensors.c
index a4c7006..a4617b2 100644
--- a/agent/mibgroup/hardware/sensors/picld_sensors.c
+++ b/agent/mibgroup/hardware/sensors/picld_sensors.c
@@ -6,7 +6,6 @@
 #include <time.h>
 
 #include <picl.h>
-#include </usr/platform/sun4u/include/sys/envctrl.h>
 
 void netsnmp_sensor_arch_init( void ) {
     DEBUGMSGTL(("sensors:arch", "Initialise PICLd Sensors module\n"));
@@ -18,7 +17,7 @@
  * Handle a numeric-valued sensor
  */
 static int
-read_num_sensor( picl_nodehdl_t childh, char *propval, float *value )
+read_num_sensor( picl_nodehdl_t childh, const char *propval, float *value )
 {
     picl_nodehdl_t  sensorh;
     picl_propinfo_t sensor_info;
@@ -87,7 +86,7 @@
 }
 
 static int
-process_num_sensor( picl_nodehdl_t childh, char *propname, char *propval, int typ )
+process_num_sensor( picl_nodehdl_t childh, const char *propname, const char *propval, int typ )
 {
     netsnmp_sensor_info        *sp;
     float                       value;
@@ -115,16 +114,16 @@
 /*
  *    Handle an enumeration-valued sensor
  */
-char *switch_settings[] = { "OFF","ON","NORMAL","LOCKED",
-                            "UNKNOWN","DIAG","SECURE",
-                            NULL };
-char *led_settings[]    = { "OFF","ON","BLINK",
-                            NULL };
-char *i2c_settings[]    = { "OK",
-                            NULL };
+const char *switch_settings[] = { "OFF","ON","NORMAL","LOCKED",
+				  "UNKNOWN","DIAG","SECURE",
+                                  NULL };
+const char *led_settings[]    = { "OFF","ON","BLINK",
+                                  NULL };
+const char *i2c_settings[]    = { "OK",
+                                  NULL };
 
 static int
-read_enum_sensor( picl_nodehdl_t childh, float *value, char **options )
+read_enum_sensor( picl_nodehdl_t childh, float *value, const char **options )
 {
     picl_nodehdl_t  sensorh;
     picl_propinfo_t sensor_info;
@@ -169,7 +168,7 @@
 }
 
 static int
-process_enum_sensor( picl_nodehdl_t childh, char *propname, int typ, char **options )
+process_enum_sensor( picl_nodehdl_t childh, const char *propname, int typ, const char **options )
 {
     netsnmp_sensor_info        *sp;
     float                       value;
@@ -191,11 +190,6 @@
     }
     return 0;
 }
-static int
-process_enum_sensor( picl_nodehdl_t childh, char *propname, int typ, char **options )
-{
-    return 0;
-}
 
 
 
@@ -213,7 +207,7 @@
     DEBUGMSGTL(("sensors:arch:detail", "process_sensors - level %d\n", level));
 
     /* Look up the first child node at this level */
-    error_code = pick_get_propval_by_name( nodeh, PICL_PROP_CHILD,
+    error_code = picl_get_propval_by_name( nodeh, PICL_PROP_CHILD,
                                            &childh, sizeof(childh));
     if ( error_code != PICL_SUCCESS ) {
         DEBUGMSGTL(("sensors:arch:detail", "Failed to get first child node (%d)\n",
@@ -223,7 +217,7 @@
 
     /* Step through the child nodes, retrieving the name and class of each one */
     while ( error_code == PICL_SUCCESS ) {
-        error_code = pick_get_propval_by_name( childh, PICL_PROP_NAME,
+        error_code = picl_get_propval_by_name( childh, PICL_PROP_NAME,
                                                propname, sizeof(propname)-1);
         if ( error_code != PICL_SUCCESS ) {
             /* The Node With No Name */
@@ -232,7 +226,7 @@
             return( error_code );
         }
 
-        error_code = pick_get_propval_by_name( childh, PICL_PROP_CLASSNAME,
+        error_code = picl_get_propval_by_name( childh, PICL_PROP_CLASSNAME,
                                                propclass, sizeof(propclass)-1);
         if ( error_code != PICL_SUCCESS ) {
             /* The Classless Society */
@@ -298,7 +292,7 @@
         /*
          *  Move on to the next child node at the current level (if any)
          */
-        error_code = pick_get_propval_by_name( childh, PICL_PROP_PEER,
+        error_code = picl_get_propval_by_name( childh, PICL_PROP_PEER,
                                                &nexth, sizeof(nexth));
         if ( error_code != PICL_SUCCESS ) {
             /* That's All Folks! */
diff --git a/agent/mibgroup/header_complex.c b/agent/mibgroup/header_complex.c
index 9561ecd..ee42544 100644
--- a/agent/mibgroup/header_complex.c
+++ b/agent/mibgroup/header_complex.c
@@ -5,9 +5,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
diff --git a/agent/mibgroup/host/data_access/swinst.c b/agent/mibgroup/host/data_access/swinst.c
index 9ab8573..bb55181 100644
--- a/agent/mibgroup/host/data_access/swinst.c
+++ b/agent/mibgroup/host/data_access/swinst.c
@@ -163,7 +163,8 @@
 void
 netsnmp_swinst_entry_free(netsnmp_swinst_entry *entry)
 {
-    DEBUGMSGTL(("swinst:entry:free", "index %lu\n", entry->swIndex));
+    DEBUGMSGTL(("swinst:entry:free", "index %" NETSNMP_PRIo "u\n",
+                entry->swIndex));
 
     free(entry);
 }
diff --git a/agent/mibgroup/host/data_access/swinst.h b/agent/mibgroup/host/data_access/swinst.h
index 704a318..0c80561 100644
--- a/agent/mibgroup/host/data_access/swinst.h
+++ b/agent/mibgroup/host/data_access/swinst.h
@@ -22,6 +22,8 @@
  */
 #if   defined( darwin )
     config_require(host/data_access/swinst_darwin)
+#elif defined( HAVE_DPKG_QUERY )
+    config_require(host/data_access/swinst_apt)
 #elif defined( HAVE_LIBRPM ) && defined( linux )
     config_require(host/data_access/swinst_rpm)
 #elif defined( HAVE_PKGLOCS_H ) || defined( hpux9 ) || defined( hpux10 ) || defined( hpux11 ) || defined( freebsd2 ) || defined( linux ) || defined( openbsd )
@@ -31,4 +33,7 @@
     config_require(host/data_access/swinst_null)
 #endif
 
+void init_swinst( void );
+void shutdown_swinst( void );
+
 #endif /* NETSNMP_ACCESS_SWINST_CONFIG_H */
diff --git a/agent/mibgroup/host/data_access/swinst_apt.c b/agent/mibgroup/host/data_access/swinst_apt.c
new file mode 100644
index 0000000..c7606d2
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_apt.c
@@ -0,0 +1,101 @@
+/*
+ * swinst_rpm.c:
+ *     hrSWInstalledTable data access:
+ */
+#include <net-snmp/net-snmp-config.h>
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.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>
+
+char pkg_directory[SNMP_MAXBUF];
+static char apt_fmt[SNMP_MAXBUF];
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_swinst_arch_init(void)
+{
+    strlcpy(pkg_directory, "/var/lib/dpkg/info", sizeof(pkg_directory));
+    snprintf(apt_fmt, SNMP_MAXBUF, "%%%d[^#]#%%%d[^#]#%%%d[^#]#%%%d[^#]#%%%d[^#]#%%%ds",
+	SNMP_MAXBUF-1, SNMP_MAXBUF-1, SNMP_MAXBUF-1,
+	SNMP_MAXBUF-1, SNMP_MAXBUF-1, SNMP_MAXBUF-1);
+}
+
+void
+netsnmp_swinst_arch_shutdown(void)
+{
+     /* Nothing to do */
+     return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags)
+{
+    FILE *p = popen("dpkg-query --show --showformat '${Package}#${Version}#${Section}#${Priority}#${Essential}#${Status}\n'", "r");
+    char package[SNMP_MAXBUF];
+    char version[SNMP_MAXBUF];
+    char section[SNMP_MAXBUF];
+    char priority[SNMP_MAXBUF];
+    char essential[SNMP_MAXBUF];
+    char status[SNMP_MAXBUF];
+    char buf[BUFSIZ];
+    netsnmp_swinst_entry *entry;
+    int i = 0;
+
+    if (p == NULL) {
+	snmp_perror("dpkg-list");
+	return 1;
+    }
+
+    while (fgets(buf, BUFSIZ, p)) {
+	DEBUGMSG(("swinst_apt", "entry: %s\n", buf));
+        entry = netsnmp_swinst_entry_create( i++ );
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        CONTAINER_INSERT(container, entry);
+
+	sscanf(buf, apt_fmt, package, version, section, priority, essential, status);
+	if (strstr(status, "not-installed"))
+	    continue;
+
+        entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+                                      "%s-%s", package, version);
+	if (entry->swName_len >= sizeof(entry->swName))
+	    entry->swName_len = sizeof(entry->swName)-1;
+        entry->swType = (strcmp(essential, "yes") == 0)
+                        ? 2      /* operatingSystem */
+                        : 4;     /*  application    */
+
+        entry->swDate_len = 8;
+	memcpy(entry->swDate, "\0\0\1\1\0\0\0\0", 8);
+    }
+    pclose(p);
+    DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
+                (int) CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swinst_darwin.c b/agent/mibgroup/host/data_access/swinst_darwin.c
index 02c8b43..bbf5a2f 100644
--- a/agent/mibgroup/host/data_access/swinst_darwin.c
+++ b/agent/mibgroup/host/data_access/swinst_darwin.c
@@ -258,6 +258,8 @@
             snprintf(entry->swName, sizeof(entry->swName),
                      "%s %s", CFStringGetCStringPtr(prodName,0),
                      CFStringGetCStringPtr(version,0));
+	if (entry->swName_len >= sizeof(entry->swName))
+	    entry->swName_len = sizeof(entry->swName)-1;
 
         DEBUGMSGTL(("swinst:arch:darwin", "\t%s %s\n", file, entry->swName));
 
diff --git a/agent/mibgroup/host/data_access/swinst_null.c b/agent/mibgroup/host/data_access/swinst_null.c
index 48adcd7..e4f9158 100644
--- a/agent/mibgroup/host/data_access/swinst_null.c
+++ b/agent/mibgroup/host/data_access/swinst_null.c
@@ -44,7 +44,7 @@
 netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags)
 {
     /* Nothing to do */
-    DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
+    DEBUGMSGTL(("swinst:load:arch"," loaded %" NETSNMP_PRIz "d entries\n",
                 CONTAINER_SIZE(container)));
 
     return 0;
diff --git a/agent/mibgroup/host/data_access/swinst_pkginfo.c b/agent/mibgroup/host/data_access/swinst_pkginfo.c
index 3e617f6..bc8ee2e 100644
--- a/agent/mibgroup/host/data_access/swinst_pkginfo.c
+++ b/agent/mibgroup/host/data_access/swinst_pkginfo.c
@@ -88,10 +88,11 @@
 #ifdef HAVE_PKGINFO
     char                 *v, *c;
 #endif
-    char                  buf[ BUFSIZ ], *cp;
+    char                  buf[ BUFSIZ ];
+    unsigned char        *cp;
     time_t                install_time;
     size_t                date_len;
-    int                   rc, i = 1;
+    int                   i = 1;
     netsnmp_swinst_entry *entry;
 
     if ( !pkg_directory[0] ) {
@@ -107,7 +108,7 @@
         entry = netsnmp_swinst_entry_create( i++ );
         if (NULL == entry)
             continue;   /* error already logged by function */
-        rc = CONTAINER_INSERT(container, entry);
+        CONTAINER_INSERT(container, entry);
 
 #ifdef HAVE_PKGINFO
         v = pkgparam( dp->d_name, "VERSION" );
@@ -115,6 +116,8 @@
 
         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    */
@@ -123,6 +126,8 @@
 #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;
 
         /* no information about O/S vs application packages ??? */
 #endif
@@ -137,7 +142,7 @@
     closedir( d );
 
     DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
-                CONTAINER_SIZE(container)));
+                (int)CONTAINER_SIZE(container)));
 
     return 0;
 }
diff --git a/agent/mibgroup/host/data_access/swinst_rpm.c b/agent/mibgroup/host/data_access/swinst_rpm.c
index a53aaea..dae8f6a 100644
--- a/agent/mibgroup/host/data_access/swinst_rpm.c
+++ b/agent/mibgroup/host/data_access/swinst_rpm.c
@@ -124,6 +124,8 @@
 
         entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
                                       "%s-%s-%s", n, v, r);
+        if (entry->swName_len > sizeof(entry->swName))
+            entry->swName_len = sizeof(entry->swName);
         entry->swType = (NULL != strstr( g, "System Environment"))
                         ? 2      /* operatingSystem */
                         : 4;     /*  application    */
diff --git a/agent/mibgroup/host/data_access/swrun.c b/agent/mibgroup/host/data_access/swrun.c
index a24669f..812030f 100644
--- a/agent/mibgroup/host/data_access/swrun.c
+++ b/agent/mibgroup/host/data_access/swrun.c
@@ -94,7 +94,7 @@
         return 0;    /* or -1 */
 
     it = CONTAINER_ITERATOR( swrun_container );
-    while ( entry = ITERATOR_NEXT( it )) {
+    while ((entry = (netsnmp_swrun_entry*)ITERATOR_NEXT( it )) != NULL) {
         if (0 == strcmp( entry->hrSWRunName, name ))
             i++;
     }
@@ -153,8 +153,6 @@
 netsnmp_container *
 netsnmp_swrun_container(void)
 {
-    netsnmp_container *container;
-
     DEBUGMSGTL(("swrun:container", "init\n"));
 
     /*
diff --git a/agent/mibgroup/host/data_access/swrun.h b/agent/mibgroup/host/data_access/swrun.h
index 4ff1598..2ae53f5 100644
--- a/agent/mibgroup/host/data_access/swrun.h
+++ b/agent/mibgroup/host/data_access/swrun.h
@@ -32,7 +32,7 @@
 # else
     config_require(host/data_access/swrun_kvm_proc)
 # endif
-#elif defined( aix4 ) || defined( aix5 ) || defined( aix6 )
+#elif defined( aix4 ) || defined( aix5 ) || defined( aix6 ) || defined( aix7 )
     config_require(host/data_access/swrun_procinfo)
 #elif HAVE_KVM_GETPROCS
     config_require(host/data_access/swrun_kinfo)
@@ -45,6 +45,9 @@
     config_require(host/data_access/swrun_null)
 #endif
 
+void init_swrun(void);
+void shutdown_swrun(void);
+
 netsnmp_cache     *netsnmp_swrun_cache(void);
 netsnmp_container *netsnmp_swrun_container(void);
 
diff --git a/agent/mibgroup/host/data_access/swrun_kinfo.c b/agent/mibgroup/host/data_access/swrun_kinfo.c
index 15f3d00..7cce6e7 100644
--- a/agent/mibgroup/host/data_access/swrun_kinfo.c
+++ b/agent/mibgroup/host/data_access/swrun_kinfo.c
@@ -275,7 +275,28 @@
 #endif
                              ;
 
+#ifdef netbsd5
         switch (proc_table[i].SWRUN_K_STAT) {
+	case LSONPROC:
+        case LSRUN:   entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case LSSLEEP: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case LSIDL:
+	case LSSUSPENDED:
+        case LSSTOP:  entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+	case LSDEAD:
+        case LSZOMB:  entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+		      break;
+        default:   
+		      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+		      snmp_log(LOG_ERR, "Bad process status %c (0x%x)\n", proc_table[i].SWRUN_K_STAT, proc_table[i].SWRUN_K_STAT);
+                      break;
+        }
+#else
+        switch (proc_table[i].SWRUN_K_STAT & 0xFF) {
+        case SONPROC:
         case SRUN:    entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
                       break;
         case SSLEEP:
@@ -286,10 +307,16 @@
         case SSTOP:
         case SLOCK:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
                       break;
-        case SZOMB:
-        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;   /* i.e. "not loaded" */
+
+        case SDEAD:
+        case SZOMB:   entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;   /* i.e. "not loaded" */
+                      break;
+
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;   /* Actually invalid  */
+		      snmp_log(LOG_ERR, "Bad process status %c (0x%x)\n", proc_table[i].SWRUN_K_STAT, proc_table[i].SWRUN_K_STAT);
                       break;
         }
+#endif
         
 #if defined(freebsd5) && __FreeBSD_version >= 500014
          entry->hrSWRunPerfCPU  = (proc_table[i].ki_rusage.ru_utime.tv_sec*1000000 + proc_table[i].ki_rusage.ru_utime.tv_usec) / 10000;
diff --git a/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c b/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c
index c8124d4..ed961ee 100644
--- a/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c
+++ b/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c
@@ -141,7 +141,7 @@
     closedir( procdir );
 
     DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
-                CONTAINER_SIZE(container)));
+                (int)CONTAINER_SIZE(container)));
 
     return 0;
 }
diff --git a/agent/mibgroup/host/data_access/swrun_procfs_status.c b/agent/mibgroup/host/data_access/swrun_procfs_status.c
index 622f590..ef9e269 100644
--- a/agent/mibgroup/host/data_access/swrun_procfs_status.c
+++ b/agent/mibgroup/host/data_access/swrun_procfs_status.c
@@ -55,7 +55,7 @@
     DIR                 *procdir = NULL;
     struct dirent       *procentry_p;
     FILE                *fp;
-    int                  pid, rc, i;
+    int                  pid, i;
     unsigned long long   cpu;
     char                 buf[BUFSIZ], buf2[BUFSIZ], *cp, *cp1;
     netsnmp_swrun_entry *entry;
@@ -77,7 +77,6 @@
         entry = netsnmp_swrun_entry_create(pid);
         if (NULL == entry)
             continue;   /* error already logged by function */
-        rc = CONTAINER_INSERT(container, entry);
 
         /*
          * Now extract the interesting information
@@ -89,8 +88,16 @@
          */
         snprintf( buf2, BUFSIZ, "/proc/%d/status", pid );
         fp = fopen( buf2, "r" );
+        if (!fp) {
+            netsnmp_swrun_entry_free(entry);
+            continue; /* file (process) probably went away */
+	}
         memset(buf, 0, sizeof(buf));
-        fgets( buf, BUFSIZ-1, fp );
+        if (fgets( buf, BUFSIZ-1, fp ) == NULL) {
+            fclose(fp);
+            netsnmp_swrun_entry_free(entry);
+            continue;
+        }
         fclose(fp);
 
         for ( cp = buf; *cp != ':'; cp++ )
@@ -110,11 +117,15 @@
          */
         snprintf( buf2, BUFSIZ, "/proc/%d/cmdline", pid );
         fp = fopen( buf2, "r" );
+        if (!fp) {
+            netsnmp_swrun_entry_free(entry);
+            continue; /* file (process) probably went away */
+        }
+        entry->hrSWRunType = HRSWRUNTYPE_APPLICATION;
         memset(buf, 0, sizeof(buf));
         cp = fgets( buf, BUFSIZ-1, fp );
         fclose(fp);
-
-        if ( cp ) {
+        if (cp != NULL) {
             /*
              *     argv[0]   is hrSWRunPath
              */ 
@@ -136,23 +147,26 @@
                           (int)sizeof(entry->hrSWRunParameters) - 1,
                           buf + entry->hrSWRunPath_len + 1);
         } else {
-            memcpy(entry->hrSWRunPath, entry->hrSWRunName, entry->hrSWRunName_len);
-            entry->hrSWRunPath_len       = entry->hrSWRunName_len;
+            /* empty /proc/PID/cmdline, it's probably a kernel thread */
+            entry->hrSWRunPath_len = 0;
             entry->hrSWRunParameters_len = 0;
             entry->hrSWRunType = HRSWRUNTYPE_OPERATINGSYSTEM;
         }
- 
-        /*
-         * XXX - No information regarding system processes vs applications
-         */
-        entry->hrSWRunType = HRSWRUNTYPE_APPLICATION;
 
         /*
          *   {xxx} {xxx} STATUS  {xxx}*10  UTIME STIME  {xxx}*8 RSS
          */
         snprintf( buf, BUFSIZ, "/proc/%d/stat", pid );
         fp = fopen( buf, "r" );
-        fgets( buf, BUFSIZ-1, fp );
+        if (!fp) {
+            netsnmp_swrun_entry_free(entry);
+            continue; /* file (process) probably went away */
+	}
+        if (fgets( buf, BUFSIZ-1, fp ) == NULL) {
+            fclose(fp);
+            netsnmp_swrun_entry_free(entry);
+            continue;
+        }
         fclose(fp);
 
         cp = buf;
@@ -195,10 +209,11 @@
         }
         entry->hrSWRunPerfMem  = atol( cp );       /* rss   */
         entry->hrSWRunPerfMem *= (pagesize/1024);  /* in kB */
+        CONTAINER_INSERT(container, entry);
     }
     closedir( procdir );
 
-    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+    DEBUGMSGTL(("swrun:load:arch"," loaded %" NETSNMP_PRIz "d entries\n",
                 CONTAINER_SIZE(container)));
 
     return 0;
diff --git a/agent/mibgroup/host/hrSWInstalledTable.c b/agent/mibgroup/host/hrSWInstalledTable.c
index 2f44702..6f940bf 100644
--- a/agent/mibgroup/host/hrSWInstalledTable.c
+++ b/agent/mibgroup/host/hrSWInstalledTable.c
@@ -45,10 +45,10 @@
     size_t          hrSWInstalledTable_oid_len =
         OID_LENGTH(hrSWInstalledTable_oid);
     netsnmp_handler_registration *reg;
-    netsnmp_mib_handler *handler;
-    netsnmp_container *container;
-    netsnmp_cache *cache;
-    netsnmp_table_registration_info *table_info;
+    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/hrSWRunPerfTable.c b/agent/mibgroup/host/hrSWRunPerfTable.c
index 5067bb2..0bf471b 100644
--- a/agent/mibgroup/host/hrSWRunPerfTable.c
+++ b/agent/mibgroup/host/hrSWRunPerfTable.c
@@ -44,8 +44,8 @@
     size_t          hrSWRunPerfTable_oid_len =
         OID_LENGTH(hrSWRunPerfTable_oid);
     netsnmp_handler_registration *reg;
-    netsnmp_mib_handler *handler;
-    netsnmp_table_registration_info *table_info;
+    netsnmp_mib_handler *handler = NULL;
+    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("hrSWRunPerfTable",
diff --git a/agent/mibgroup/host/hrSWRunTable.c b/agent/mibgroup/host/hrSWRunTable.c
index c09f58f..9d92841 100644
--- a/agent/mibgroup/host/hrSWRunTable.c
+++ b/agent/mibgroup/host/hrSWRunTable.c
@@ -19,8 +19,8 @@
 #include <net-snmp/agent/table_container.h>
 #include <net-snmp/data_access/swrun.h>
 #include <net-snmp/agent/cache_handler.h>
-#include "hrSWRunTable.h"
 #include "data_access/swrun.h"
+#include "hrSWRunTable.h"
 
 #include <signal.h>
 
diff --git a/agent/mibgroup/host/hr_disk.c b/agent/mibgroup/host/hr_disk.c
index 7725fa8..679264b 100644
--- a/agent/mibgroup/host/hr_disk.c
+++ b/agent/mibgroup/host/hr_disk.c
@@ -192,8 +192,10 @@
 static void     parse_disk_config(const char *, char *);
 static void     free_disk_config(void);
 
+#ifdef linux
 static void     Add_LVM_Disks(void);
 static void     Remove_LVM_Disks(void);
+#endif
 
         /*********************
 	 *
@@ -287,7 +289,9 @@
 void
 shutdown_hr_disk(void)
 {
+#ifdef linux
     Remove_LVM_Disks();
+#endif
 }
 
 #define ITEM_STRING	1
@@ -1335,6 +1339,7 @@
 #endif
 
 
+#ifdef linux
 #if defined(HAVE_REGEX_H) && defined(HAVE_REGCOMP)
 static char    *lvm_device_names[MAX_NUMBER_DISK_TYPES];
 static int      lvm_device_count;
@@ -1376,7 +1381,7 @@
     while ((d = readdir(dir)) != NULL) {
         res = regexec(&lvol, d->d_name, 0, NULL, 0);
         if (res == 0) {
-            char           *path = malloc(PATH_MAX + 1);
+            char *path = (char*)malloc(PATH_MAX + 1);
             if (path == NULL) {
                 DEBUGMSGTL(("host/hr_disk",
                             "Add_LVM_Disks: cannot allocate memory for device %s",
@@ -1418,4 +1423,4 @@
     lvm_device_count = 0;
 #endif
 }
-
+#endif
diff --git a/agent/mibgroup/host/hr_filesys.c b/agent/mibgroup/host/hr_filesys.c
index e85bfec..60a1629 100644
--- a/agent/mibgroup/host/hr_filesys.c
+++ b/agent/mibgroup/host/hr_filesys.c
@@ -53,7 +53,11 @@
 #include <stdlib.h>
 #endif
 
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #include <sys/mntctl.h>
 #include <sys/vmount.h>
 #include <sys/statfs.h>
@@ -120,6 +124,16 @@
 #define	HRFS_name	f_mntfromname
 #define HRFS_statfs	statvfs
 #define	HRFS_type	f_fstypename
+#elif defined(HAVE_GETFSSTAT) && !defined(HAVE_STATFS) && defined(HAVE_STATVFS)
+
+static struct statfs	*fsstats = NULL;
+struct statfs		*HRFS_entry;
+static int		fscount;
+#define HRFS_mount	f_mntonname
+#define HRFS_name	f_mntfromname
+#define HRFS_statfs	statvfs
+#define HRFS_type	f_fstypename
+
 #elif defined(HAVE_GETFSSTAT)
 static struct statfs *fsstats = 0;
 static int      fscount;
@@ -148,7 +162,7 @@
 #define HRFS_statfs	win_statfs
 #define	HRFS_type	f_type
 
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 
 struct vmount *aixmnt, *aixcurr;
 struct HRFS_entry {
@@ -232,7 +246,7 @@
 {
     REGISTER_MIB("host/hr_filesys", hrfsys_variables, variable4,
                  hrfsys_variables_oid);
-#if defined(aix4) || defined(aix5) || defined(aix6) 
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     /* something leaks, make it idiot-safe */
     aixmnt = NULL;
     aixcurr = NULL;
@@ -346,9 +360,9 @@
         *var_len = strlen(string);
         return (u_char *) string;
     case HRFSYS_RMOUNT:
-        if (Check_HR_FileSys_NFS()) {
+        if (Check_HR_FileSys_NFS())
             strlcpy(string, HRFS_entry->HRFS_name, sizeof(string));
-        } else
+        else
             string[0] = '\0';
         *var_len = strlen(string);
         return (u_char *) string;
@@ -425,7 +439,7 @@
             break;
 #endif
         }
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         switch (HRFS_entry->HRFS_type) {
         case MNT_AIX:
         case MNT_JFS:
@@ -546,10 +560,14 @@
 #if defined(HAVE_STATVFS) && defined(__NetBSD__)
 	long_return = HRFS_entry->f_flag & MNT_RDONLY ? 2 : 1;
 #elif defined(HAVE_GETFSSTAT)
+#if HAVE_STRUCT_STATFS_F_FLAGS
         long_return = HRFS_entry->f_flags & MNT_RDONLY ? 2 : 1;
+#else
+        long_return = HRFS_entry->f_flag & MNT_RDONLY ? 2 : 1;
+#endif
 #elif defined(cygwin)
         long_return = 1;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (HRFS_entry->HRFS_flags & MNT_READONLY) == 0 ? 1 : 2;
 #else
 #if HAVE_HASMNTOPT
@@ -612,7 +630,7 @@
     getfsstat(fsstats, fscount * sizeof(*fsstats), MNT_NOWAIT);
 #endif
     HRFS_index = 0;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     int ret;
     uint size;
     ret = 0;
@@ -707,7 +725,7 @@
         return -1;
     HRFS_entry = fsstats + HRFS_index;
     return ++HRFS_index;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     if(aixcurr == NULL) {
         if(aixmnt != NULL) free(aixmnt);
         aixmnt = NULL;
@@ -779,7 +797,7 @@
 #if HAVE_GETFSSTAT && !defined(MFSNAMELEN)
     if ((HRFS_entry->HRFS_type == MOUNT_NFS) ||
         (HRFS_entry->HRFS_type == MOUNT_AFS))
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     if(HRFS_entry->HRFS_type == MNT_NFS || HRFS_entry->HRFS_type == MNT_NFS3)
 #else /* HAVE_GETFSSTAT */
     if ( HRFS_entry->HRFS_type != NULL && (
@@ -823,7 +841,7 @@
     if (fsstats)
         free((char *) fsstats);
     fsstats = NULL;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     if(aixmnt != NULL) {
         free(aixmnt);
         aixmnt = NULL;
@@ -880,13 +898,13 @@
                 continue;
 
             ++cp2;
-            while (isspace(*cp2))
+            while (isspace(*cp2 & 0xFF))
                 ++cp2;          /* Now find the dump level */
 
             if (level == FULL_DUMP) {
                 if (*(cp2++) != '0')
                     continue;   /* Not interested in partial dumps */
-                while (isspace(*cp2))
+                while (isspace(*cp2 & 0xFF))
                     ++cp2;
 
                 dumpdate = ctime_to_timet(cp2);
@@ -895,7 +913,7 @@
             } else {            /* Partial Dump */
                 if (*(cp2++) == '0')
                     continue;   /* Not interested in full dumps */
-                while (isspace(*cp2))
+                while (isspace(*cp2 & 0xFF))
                     ++cp2;
 
                 tmp = ctime_to_timet(cp2);
diff --git a/agent/mibgroup/host/hr_print.h b/agent/mibgroup/host/hr_print.h
index 23ca143..7acee8d 100644
--- a/agent/mibgroup/host/hr_print.h
+++ b/agent/mibgroup/host/hr_print.h
@@ -6,6 +6,7 @@
 #define _MIBGROUP_HRPRINT_H
 
 config_require(host/hr_device)
+config_require(util_funcs)
 
 extern void     init_hr_print(void);
 extern FindVarMethod var_hrprint;
diff --git a/agent/mibgroup/host/hr_storage.c b/agent/mibgroup/host/hr_storage.c
index 754884c..264fecc 100644
--- a/agent/mibgroup/host/hr_storage.c
+++ b/agent/mibgroup/host/hr_storage.c
@@ -19,13 +19,7 @@
 #include <unistd.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <windows.h>
-#  include <errno.h>
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -112,7 +106,10 @@
 #endif                          /* if HAVE_SYS_SYSCTL_H */
 #endif                          /* ifndef dynix */
 
-#if (defined(aix4) || defined(aix5) || defined(aix6)) && HAVE_LIBPERFSTAT_H
+#if (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && HAVE_LIBPERFSTAT_H
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #endif
 
@@ -160,6 +157,9 @@
 #else
 #include <strings.h>
 #endif
+#if HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
 
 #include <net-snmp/utilities.h>
 #include <net-snmp/output_api.h>
@@ -215,6 +215,14 @@
 #define HRFS_mount	mnt_dir
 #define HRFS_HAS_FRSIZE HAVE_STRUCT_STATVFS_F_FRSIZE
 
+#elif defined(HAVE_GETFSSTAT) && !defined(HAVE_STATFS) && defined(HAVE_STATVFS)
+
+extern struct statfs *HRFS_entry;
+extern int      fscount;
+#define HRFS_statfs	statvfs
+#define HRFS_mount	f_mntonname
+#define HRFS_HAS_FRSIZE STRUCT_STATVFS_HAS_F_FRSIZE
+
 #elif defined(HAVE_GETFSSTAT)
 
 extern struct statfs *HRFS_entry;
@@ -559,7 +567,7 @@
         if (store_idx > NETSNMP_MEM_TYPE_MAX)
             if (storageUseNFS && Check_HR_FileSys_NFS())
                 storage_type_id[storage_type_len - 1] = 10;     /* Network Disk */
-#if HAVE_HASMNTOPT && !(defined(aix4) || defined(aix5) || defined(aix6))
+#if HAVE_HASMNTOPT && !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
             /* 
              * hasmntopt takes "const struct mntent*", but HRFS_entry has been
              * defined differently for AIX, so skip this for AIX
diff --git a/agent/mibgroup/host/hr_swinst.c b/agent/mibgroup/host/hr_swinst.c
index fe969af..c03ae44 100644
--- a/agent/mibgroup/host/hr_swinst.c
+++ b/agent/mibgroup/host/hr_swinst.c
@@ -131,7 +131,7 @@
 int             header_hrswInstEntry(struct variable *, oid *, size_t *,
                                      int, size_t *, WriteMethod **);
 
-extern struct timeval starttime;
+#define starttime (*(const struct timeval*)netsnmp_get_agent_starttime())
 
         /*********************
 	 *
@@ -252,7 +252,6 @@
                  hrswinst_variables_oid);
 }
 
-
 /*
  * header_hrswinst(...
  * Arguments:
@@ -440,7 +439,7 @@
 #ifdef HAVE_PKGINFO
             pver = pkgparam(swi->swi_name, "VERSION");
             /* 1 spot for the terminating null and one for the dash */
-            if (pver &&
+            if (pver && 
                (strlen(pver) + 2 + strlen(string) <= sizeof(string))) {
                 strcat(string, "-");
                 strcat(string, pver);
diff --git a/agent/mibgroup/host/hr_swrun.c b/agent/mibgroup/host/hr_swrun.c
index b1727cb..dda1d3f 100644
--- a/agent/mibgroup/host/hr_swrun.c
+++ b/agent/mibgroup/host/hr_swrun.c
@@ -91,7 +91,7 @@
 
 #include "kernel_sunos5.h"
 #endif
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #include <procinfo.h>
 #include <sys/types.h>
 #endif
@@ -128,7 +128,7 @@
 struct kinfo_proc *proc_table;
 #elif defined(solaris2)
 int            *proc_table;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 struct procsinfo *proc_table;
 #else
 struct proc    *proc_table;
@@ -679,7 +679,7 @@
 #else
         strlcpy(string, proc_buf->p_user.u_comm, sizeof(string));
 #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         strlcpy(string, proc_table[LowProcIndex].pi_comm, sizeof(string));
         cp = strchr(string, ' ');
         if (cp != NULL)
@@ -802,7 +802,7 @@
             *cp1++ = *cp++;
         *cp1 = 0;
 #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         strlcpy(string, proc_table[LowProcIndex].pi_comm, sizeof(string));
         cp = strchr(string, ' ');
         if (cp != NULL)
@@ -907,7 +907,7 @@
             cp++;
         strcpy(string, cp);
 #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         cp = strchr(proc_table[LowProcIndex].pi_comm, ' ');
         if (cp != NULL) {
             cp++;
@@ -987,7 +987,7 @@
             long_return = 2;    /* operatingSystem */
         else
             long_return = 4;    /* application */
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 		if (proc_table[LowProcIndex].pi_flags & SKPROC) {
 			long_return = 2;	/* kernel process */
 		} else
@@ -1074,7 +1074,7 @@
 #else
         switch (proc_buf->p_stat) {
 #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         switch (proc_table[LowProcIndex].pi_state) {
 #else
         switch (proc_table[LowProcIndex].p_stat) {
@@ -1217,7 +1217,7 @@
                 long_return = 0;
             }
         }
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = proc_table[LowProcIndex].pi_ru.ru_utime.tv_sec * 100 +
             proc_table[LowProcIndex].pi_ru.ru_utime.tv_usec / 10000000 + /* nanoseconds */
             proc_table[LowProcIndex].pi_ru.ru_stime.tv_sec * 100 +
@@ -1269,7 +1269,7 @@
 #else
         long_return = proc_buf->p_swrss;
 #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = proc_table[LowProcIndex].pi_size * getpagesize() / 1024;
 #elif HAVE_KVM_GETPROC2
         long_return = proc_table[LowProcIndex].p_vm_tsize +
@@ -1519,7 +1519,7 @@
             nproc = current_proc_entry;
         closedir(f);
     }
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     {
 		pid_t proc_index = 0;
 		int avail = 1024;
@@ -1631,7 +1631,7 @@
         if (proc_table[current_proc_entry].kp_proc.p_stat != 0)
             return proc_table[current_proc_entry++].kp_proc.p_pid;
     #endif
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         if (proc_table[current_proc_entry].pi_state != 0)
             return proc_table[current_proc_entry++].pi_pid;
         else
@@ -1666,7 +1666,7 @@
 #if defined(hpux10) || defined(hpux11) || HAVE_KVM_GETPROCS || HAVE_KVM_GETPROC2 || defined(solaris2)
     total = nproc;
 #else
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     for (i = 0; i < nproc; ++i) {
         if (proc_table[i].pi_state != 0)
 #elif !defined(linux) && !defined(cygwin) && !defined(dynix)
diff --git a/agent/mibgroup/host/hrh_filesys.c b/agent/mibgroup/host/hrh_filesys.c
index 6c75b1a..ec343ed 100644
--- a/agent/mibgroup/host/hrh_filesys.c
+++ b/agent/mibgroup/host/hrh_filesys.c
@@ -54,7 +54,7 @@
 #include <stdlib.h>
 #endif
 
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #include <sys/mntctl.h>
 #include <sys/vmount.h>
 #include <sys/statfs.h>
@@ -229,13 +229,13 @@
         long_return = fsys_idx;
         return (u_char *) & long_return;
     case HRFSYS_MOUNT:
-        snprintf(string, sizeof(string), HRFS_entry->path);
+        snprintf(string, sizeof(string), "%s", HRFS_entry->path);
         string[ sizeof(string)-1 ] = 0;
         *var_len = strlen(string);
         return (u_char *) string;
     case HRFSYS_RMOUNT:
         if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) {
-            snprintf(string, sizeof(string), HRFS_entry->device);
+            snprintf(string, sizeof(string), "%s", HRFS_entry->device);
             string[ sizeof(string)-1 ] = 0;
         } else
             string[0] = '\0';
@@ -284,6 +284,7 @@
     netsnmp_cache_check_and_reload( c );
 
     HRFS_entry = NULL;
+    HRFS_index = 0;
 }
 
 int
@@ -298,7 +299,8 @@
     while ( HRFS_entry && !(HRFS_entry->flags & NETSNMP_FS_FLAG_ACTIVE))
         HRFS_entry = netsnmp_fsys_get_next( HRFS_entry );
 
-    return (HRFS_entry ? HRFS_entry->idx.oids[0] : -1 );
+    HRFS_index = (HRFS_entry ? HRFS_entry->idx.oids[0] : -1 );
+    return HRFS_index;
 }
 
 
@@ -345,13 +347,13 @@
                 continue;
 
             ++cp2;
-            while (isspace(*cp2))
+            while (isspace(0xFF & *cp2))
                 ++cp2;          /* Now find the dump level */
 
             if (level == FULL_DUMP) {
                 if (*(cp2++) != '0')
                     continue;   /* Not interested in partial dumps */
-                while (isspace(*cp2))
+                while (isspace(0xFF & *cp2))
                     ++cp2;
 
                 dumpdate = ctime_to_timet(cp2);
@@ -360,7 +362,7 @@
             } else {            /* Partial Dump */
                 if (*(cp2++) == '0')
                     continue;   /* Not interested in full dumps */
-                while (isspace(*cp2))
+                while (isspace(0xFF & *cp2))
                     ++cp2;
 
                 tmp = ctime_to_timet(cp2);
diff --git a/agent/mibgroup/host_res.h b/agent/mibgroup/host_res.h
index d9f54b9..1dba388 100644
--- a/agent/mibgroup/host_res.h
+++ b/agent/mibgroup/host_res.h
@@ -21,12 +21,12 @@
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
-#if defined (WIN32) && !defined (cygwin)
-#include <winsock.h>
-#else /* WIN32 */
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
+#if HAVE_NET_IF_H
 #include <net/if.h>
-#endif /* WIN32 */
+#endif
 #ifdef _I_DEFINED_KERNEL
 #undef _KERNEL
 #endif
diff --git a/agent/mibgroup/if-mib/data_access/interface.c b/agent/mibgroup/if-mib/data_access/interface.c
index 629c99a..5f5c7ff 100644
--- a/agent/mibgroup/if-mib/data_access/interface.c
+++ b/agent/mibgroup/if-mib/data_access/interface.c
@@ -250,8 +250,8 @@
         return NULL;
     }
 
-    tmp.name = (char *)name;
-    return CONTAINER_FIND(container->next, &tmp);
+    tmp.name = NETSNMP_REMOVE_CONST(char *, name);
+    return (netsnmp_interface_entry*)CONTAINER_FIND(container->next, &tmp);
 }
 
 /**
@@ -372,7 +372,7 @@
     }
    
     if (NULL != it)
-        e = ITERATOR_FIRST(it);
+        e = (netsnmp_interface_entry*)ITERATOR_FIRST(it);
 }
 
 int
@@ -406,7 +406,7 @@
     if (entry)
         *entry = e;
 
-    e = ITERATOR_NEXT(it);
+    e = (netsnmp_interface_entry*)ITERATOR_NEXT(it);
 
     return 1;
 }
@@ -469,7 +469,7 @@
 static void
 _access_interface_entry_save_name(const char *name, oid index)
 {
-    oid tmp;
+    int tmp;
 
     if(NULL == name)
         return;
@@ -477,19 +477,17 @@
     tmp = se_find_value_in_slist("interfaces", name);
     if (tmp == SE_DNE) {
         se_add_pair_to_slist("interfaces", strdup(name), index);
-        DEBUGMSGTL(("access:interface:ifIndex", "saved ifIndex %lu for %s\n",
+        DEBUGMSGTL(("access:interface:ifIndex",
+                    "saved ifIndex %" NETSNMP_PRIo "u for %s\n",
                     index, name));
     }
     else
-        if (index != tmp) {
-            static int logged = 0;
-            if (!logged) {
-                snmp_log(LOG_ERR, "IfIndex of an interface changed. Such " \
-                         "interfaces will appear multiple times in IF-MIB.\n");
-                logged = 1;
-            }
-            DEBUGMSGTL(("access:interface:ifIndex", "index %lu != tmp for %s\n",
-                         index, name));
+        if (index != (oid)tmp) {
+            NETSNMP_LOGONCE((LOG_ERR, "IfIndex of an interface changed. Such " \
+                         "interfaces will appear multiple times in IF-MIB.\n"));
+            DEBUGMSGTL(("access:interface:ifIndex",
+                        "index %" NETSNMP_PRIo "u != tmp for %s\n",
+                        index, name));
         }
 }
 
@@ -532,48 +530,78 @@
         memcpy(prev_vals->old_stats, &prev_vals->stats, sizeof(prev_vals->stats));
     }
 
-        netsnmp_c64_check32_and_update(&prev_vals->stats.ibytes,
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.ibytes,
                                        &new_vals->stats.ibytes,
                                        &prev_vals->old_stats->ibytes,
-                                       &need_wrap_check);
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCInOctets to 64bits\n"));
 
-	if (new_vals->ns_flags & NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST) {
-            netsnmp_c64_check32_and_update(&prev_vals->stats.iall,
+        if (new_vals->ns_flags & NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST) {
+            if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.iall,
                                            &new_vals->stats.iall,
                                            &prev_vals->old_stats->iall,
-                                           &need_wrap_check);
+                                           &need_wrap_check))
+                DEBUGMSGTL(("access:interface",
+                        "Error expanding packet count to 64bits\n"));
         } else {
-            netsnmp_c64_check32_and_update(&prev_vals->stats.iucast,
+            if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.iucast,
                                            &new_vals->stats.iucast,
                                            &prev_vals->old_stats->iucast,
-                                           &need_wrap_check);
+                                           &need_wrap_check))
+                DEBUGMSGTL(("access:interface",
+                        "Error expanding ifHCInUcastPkts to 64bits\n"));
         }
 
-        netsnmp_c64_check32_and_update(&prev_vals->stats.imcast,
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.iucast,
+                                       &new_vals->stats.iucast,
+                                       &prev_vals->old_stats->iucast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCInUcastPkts to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.imcast,
                                        &new_vals->stats.imcast,
                                        &prev_vals->old_stats->imcast,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.ibcast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCInMulticastPkts to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.ibcast,
                                        &new_vals->stats.ibcast,
                                        &prev_vals->old_stats->ibcast,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.obytes,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCInBroadcastPkts to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.obytes,
                                        &new_vals->stats.obytes,
                                        &prev_vals->old_stats->obytes,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.oucast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCOutOctets to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.oucast,
                                        &new_vals->stats.oucast,
                                        &prev_vals->old_stats->oucast,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.omcast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCOutUcastPkts to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.omcast,
                                        &new_vals->stats.omcast,
                                        &prev_vals->old_stats->omcast,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.obcast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCOutMulticastPkts to 64bits\n"));
+
+        if (0 != netsnmp_c64_check32_and_update(&prev_vals->stats.obcast,
                                        &new_vals->stats.obcast,
                                        &prev_vals->old_stats->obcast,
-                                       &need_wrap_check);
-    
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCOutBroadcastPkts to 64bits\n"));
+
     /*
      * Copy 32 bit counters
      */
@@ -685,7 +713,7 @@
         if (NULL != lhs->paddr)
             SNMP_FREE(lhs->paddr);
         if (rhs->paddr) {
-            lhs->paddr = malloc(rhs->paddr_len);
+            lhs->paddr = (char*)malloc(rhs->paddr_len);
             if(NULL == lhs->paddr)
                 return -2;
             memcpy(lhs->paddr,rhs->paddr,rhs->paddr_len);
@@ -823,7 +851,7 @@
     netsnmp_conf_if_list   *if_ptr = conf_list, *if_next;
     while (if_ptr) {
         if_next = if_ptr->next;
-        free(if_ptr->name);
+        free(NETSNMP_REMOVE_CONST(char *, if_ptr->name));
         free(if_ptr);
         if_ptr = if_next;
     }
diff --git a/agent/mibgroup/if-mib/data_access/interface.h b/agent/mibgroup/if-mib/data_access/interface.h
index f4c0e5e..353b254 100644
--- a/agent/mibgroup/if-mib/data_access/interface.h
+++ b/agent/mibgroup/if-mib/data_access/interface.h
@@ -32,6 +32,7 @@
 
 #   if defined( linux )
 
+    config_require(util_funcs)
     config_require(if-mib/data_access/interface_linux)
     config_require(if-mib/data_access/interface_ioctl)
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_ioctl.c b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
index aeab0ce..5bfbf9a 100644
--- a/agent/mibgroup/if-mib/data_access/interface_ioctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
@@ -107,7 +107,7 @@
         SNMP_FREE(ifentry->paddr);
     }
     if(NULL == ifentry->paddr) 
-        ifentry->paddr = malloc(IFHWADDRLEN);
+        ifentry->paddr = (char*)malloc(IFHWADDRLEN);
 
     if(NULL == ifentry->paddr) {
             rc = -4;
@@ -408,7 +408,7 @@
     rc = _ioctl_get(fd, SIOCGIFINDEX, &ifrq, name);
     if (rc < 0) {
         DEBUGMSGTL(("access:interface:ioctl",
-                   "ifindex_get error on interface '%s'\n", name));
+                   "ifindex_get error on inerface '%s'\n", name));
         return 0;
     }
 
@@ -479,8 +479,7 @@
             if (NULL != ptr)
                 *ptr = 0;
             
-            if (if_index !=
-                netsnmp_access_interface_ioctl_ifindex_get(sd, ifrp->ifr_name))
+            if (if_index != (int)netsnmp_access_interface_ioctl_ifindex_get(sd, ifrp->ifr_name))
                 continue;
         }
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
index 0ed9303..df09737 100644
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
@@ -492,7 +492,7 @@
     if (!(devin = fopen("/proc/net/dev", "r"))) {
         DEBUGMSGTL(("access:interface",
                     "Failed to load Interface Table (linux1)\n"));
-        snmp_log(LOG_ERR, "cannot open /proc/net/dev ...\n");
+        NETSNMP_LOGONCE((LOG_ERR, "cannot open /proc/net/dev ...\n"));
         return -2;
     }
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_openbsd.c b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
index 5da2fdc..204568b 100644
--- a/agent/mibgroup/if-mib/data_access/interface_openbsd.c
+++ b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
@@ -27,7 +27,7 @@
 #include <net/if_types.h>
 #include <net/if_media.h>
 
-extern struct timeval starttime;
+#define starttime (*(const struct timeval*)netsnmp_get_agent_starttime())
 
 int
 netsnmp_openbsd_interface_get_if_speed(char *name, u_int *speed, u_int *speed_high);
@@ -92,7 +92,7 @@
         return -2;
     }
 
-    if_list = malloc(if_list_size);
+    if_list = (u_char*)malloc(if_list_size);
     if (if_list == NULL) {
         snmp_log(LOG_ERR, "could not allocate memory for interface info (%u bytes)\n", if_list_size);
         return -3;
@@ -148,7 +148,7 @@
         /* get physical address */
         if (adl != NULL && adl->sdl_alen > 0) {
             entry->paddr_len = adl->sdl_alen;
-            entry->paddr = malloc(entry->paddr_len);
+            entry->paddr = (char*)malloc(entry->paddr_len);
             memcpy(entry->paddr, adl->sdl_data + adl->sdl_nlen, adl->sdl_alen);
             DEBUGMSGTL(("access:interface:container:arch",
                         "%s: paddr_len=%d, entry->paddr=%x:%x:%x:%x:%x:%x\n",
@@ -156,7 +156,7 @@
                         entry->paddr[0], entry->paddr[1], entry->paddr[2],
                         entry->paddr[3], entry->paddr[4], entry->paddr[5]));
         } else {
-            entry->paddr = malloc(6);
+            entry->paddr = (char*)malloc(6);
             entry->paddr_len = 6;
             memset(entry->paddr, 0, 6);
         }
diff --git a/agent/mibgroup/if-mib/data_access/interface_solaris2.c b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
index 0bc0afa..2b0fc4c 100644
--- a/agent/mibgroup/if-mib/data_access/interface_solaris2.c
+++ b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
@@ -104,7 +104,7 @@
         /*
          * collect the information needed by IF-MIB
          */
-        entry->paddr = malloc(ife.ifPhysAddress.o_length);
+        entry->paddr = (char*)malloc(ife.ifPhysAddress.o_length);
         if (entry->paddr == NULL) {
             netsnmp_access_interface_entry_free(entry);
             error = 1;
diff --git a/agent/mibgroup/if-mib/data_access/interface_sysctl.c b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
index 06cfefe..cce3881 100644
--- a/agent/mibgroup/if-mib/data_access/interface_sysctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
@@ -49,7 +49,7 @@
 #   define ARCH_PROMISC_FLAG IFF_PROMISC
 #endif
 
-extern struct timeval starttime;
+#define starttime (*(const struct timeval*)netsnmp_get_agent_starttime())
 
 /* sa_len roundup macro. */
 #define ROUNDUP(a) \
@@ -281,7 +281,7 @@
                 netsnmp_sysctl_ifmedia_to_speed(media_list[i], &t_speed,
                                                 &t_speed_high);
                 if (t_speed_high > m_speed_high ||
-                    (t_speed_high == m_speed_high && t_speed > t_speed)) {
+                    (t_speed_high == m_speed_high && t_speed > m_speed)) {
                     m_speed_high = t_speed_high;
                     m_speed = t_speed;
                 }
@@ -349,7 +349,7 @@
         return -2;
     }
 
-    if_list = malloc(if_list_size);
+    if_list = (u_char*)malloc(if_list_size);
     if (if_list == NULL) {
         snmp_log(LOG_ERR, "could not allocate memory for interface info "
                  "(%u bytes)\n", (unsigned) if_list_size);
@@ -414,7 +414,7 @@
         /* get physical address */
         if (adl != NULL && adl->sdl_alen > 0) {
             entry->paddr_len = adl->sdl_alen;
-            entry->paddr = malloc(entry->paddr_len);
+            entry->paddr = (char*)malloc(entry->paddr_len);
             memcpy(entry->paddr, adl->sdl_data + adl->sdl_nlen, adl->sdl_alen);
             DEBUGMSGTL(("access:interface:container:sysctl",
                         "%s: paddr_len=%d, entry->paddr=%x:%x:%x:%x:%x:%x\n",
@@ -422,7 +422,7 @@
                         entry->paddr[0], entry->paddr[1], entry->paddr[2],
                         entry->paddr[3], entry->paddr[4], entry->paddr[5]));
         } else {
-            entry->paddr = malloc(6);
+            entry->paddr = (char*)malloc(6);
             entry->paddr_len = 6;
             memset(entry->paddr, 0, 6);
         }
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.c b/agent/mibgroup/if-mib/ifTable/ifTable.c
index c212981..80829cc 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.c
@@ -31,7 +31,7 @@
 #   include "ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h"
 #endif
 #ifdef USING_IP_MIB_IPV6INTERFACETABLE_IPV6INTERFACETABLE_MODULE
-#   include "ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h"
+#   include "ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h"
 #endif
 #ifdef USING_IF_MIB_IFXTABLE_IFXTABLE_MODULE
 #   include "if-mib/ifXTable/ifXTable.h"
@@ -278,9 +278,9 @@
          */
         if (MFD_SUCCESS == rc) {
             /*
-             * save changed rows, if you haven't already
+             * notify library to save changed rows
              */
-            snmp_store(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+            snmp_store_needed(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                              NETSNMP_DS_LIB_APPTYPE));
         }
 
@@ -473,7 +473,7 @@
          * allocate space for ifDescr data
          */
         (*ifDescr_val_ptr_ptr) =
-            malloc(tmp_len * sizeof(rowreq_ctx->data.ifDescr[0]));
+            (char*)malloc(tmp_len * sizeof(rowreq_ctx->data.ifDescr[0]));
         if (NULL == (*ifDescr_val_ptr_ptr)) {
             snmp_log(LOG_ERR, "could not allocate memory\n");
             return MFD_ERROR;
@@ -751,7 +751,7 @@
          * allocate space for ifPhysAddress data
          */
         (*ifPhysAddress_val_ptr_ptr) =
-            malloc(rowreq_ctx->data.ifPhysAddress_len *
+            (char*)malloc(rowreq_ctx->data.ifPhysAddress_len *
                    sizeof(rowreq_ctx->data.ifPhysAddress[0]));
         if (NULL == (*ifPhysAddress_val_ptr_ptr)) {
             snmp_log(LOG_ERR, "could not allocate memory\n");
@@ -1772,9 +1772,9 @@
     /*
      * hard coded
      */
-    netsnmp_assert((*ifSpecific_val_ptr_len_ptr) > nullOidLen);
-    (*ifSpecific_val_ptr_len_ptr) = nullOidLen;
-    memcpy(*ifSpecific_val_ptr_ptr, &nullOid, nullOidLen);
+    netsnmp_assert((*ifSpecific_val_ptr_len_ptr) > (size_t)nullOidLen);
+    (*ifSpecific_val_ptr_len_ptr) = (size_t)nullOidLen;
+    memcpy(*ifSpecific_val_ptr_ptr, &nullOid, (size_t)nullOidLen);
 #endif
 
     return MFD_SUCCESS;
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.h b/agent/mibgroup/if-mib/ifTable/ifTable.h
index 2f96292..452b863 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.h
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.h
@@ -343,6 +343,9 @@
      *********************************************************************
      * function prototypes
      */
+    	
+    int             _mfd_ifTable_undo_setup_allocate(ifTable_rowreq_ctx *rowreq_ctx);
+    void            _mfd_ifTable_undo_setup_release(ifTable_rowreq_ctx *rowreq_ctx);
     int             ifTable_pre_request(ifTable_registration *
                                         user_context);
     int             ifTable_post_request(ifTable_registration *
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
index b5bc3b7..faf37d6 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
@@ -23,6 +23,10 @@
 #   include "mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h"
 #endif
 
+#ifdef USING_IP_MIB_IPV6INTERFACETABLE_IPV6INTERFACETABLE_MODULE
+#   include "mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h"
+#endif
+
 typedef struct cd_container_s {
     netsnmp_container *current;
     netsnmp_container *deleted;
@@ -315,7 +319,7 @@
      * both containers use the same index.
      */
     netsnmp_interface_entry *ifentry =
-        CONTAINER_FIND(ifcontainer, rowreq_ctx);
+        (netsnmp_interface_entry*)CONTAINER_FIND(ifcontainer, rowreq_ctx);
 
 #ifdef USING_IP_MIB_IPV4INTERFACETABLE_IPV4INTERFACETABLE_MODULE
     /*
@@ -372,12 +376,8 @@
             int rc = strcmp(rowreq_ctx->data.ifName,
                             ifentry->name);
             if (rc != 0) {
-                static int logged = 0;
-                if (!logged) {
-                    snmp_log(LOG_ERR, "Name of an interface changed. Such " \
-                        "interfaces will keep its old name in IF-MIB.\n");
-                    logged = 1;
-                }
+                NETSNMP_LOGONCE((LOG_ERR, "Name of an interface changed. Such " \
+                        "interfaces will keep its old name in IF-MIB.\n"));
                 DEBUGMSGTL(("ifTable:access", "interface %s changed name to %s, ignoring\n",
                     rowreq_ctx->data.ifName, ifentry->name));
             }
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
index 14e35cd..445929b 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
@@ -46,7 +46,7 @@
      * A 10 Mbps stream can wrap if*Octets in ~57 minutes.
      * At 100 Mbps it is ~5 minutes, and at 1 Gbps, ~34 seconds.
      */
-#define IFTABLE_CACHE_TIMEOUT   15
+#define IFTABLE_CACHE_TIMEOUT   3
 
 #define IFTABLE_REMOVE_MISSING_AFTER     (5 * 60) /* seconds */
 
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
index e362fda..49de356 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
@@ -222,7 +222,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IFTABLE_MIN_COL;
     tbl_info->max_column = IFTABLE_MAX_COL;
@@ -656,7 +656,7 @@
                           netsnmp_agent_request_info *agtreq_info,
                           netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -710,7 +710,7 @@
                            netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_object_lookup",
@@ -970,7 +970,7 @@
                         netsnmp_agent_request_info *agtreq_info,
                         netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1265,7 +1265,7 @@
                            netsnmp_agent_request_info *agtreq_info,
                            netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1312,7 +1312,7 @@
                                 netsnmp_request_info *requests)
 {
     int             rc;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_check_dependencies",
                 "called\n"));
@@ -1423,7 +1423,7 @@
                         netsnmp_request_info *requests)
 {
     int             rc;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_undo_setup", "called\n"));
@@ -1497,7 +1497,7 @@
                           netsnmp_agent_request_info *agtreq_info,
                           netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1576,7 +1576,7 @@
                         netsnmp_agent_request_info *agtreq_info,
                         netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1623,7 +1623,7 @@
                     netsnmp_request_info *requests)
 {
     int             rc;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_commit", "called\n"));
@@ -1665,7 +1665,7 @@
                          netsnmp_request_info *requests)
 {
     int             rc;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_undo_commit", "called\n"));
@@ -1743,7 +1743,7 @@
                          netsnmp_request_info *requests)
 {
     int             rc;
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1796,7 +1796,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ifTable_rowreq_ctx *rowreq_ctx =
+    ifTable_rowreq_ctx *rowreq_ctx = (ifTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifTable:_mfd_ifTable_irreversible:commit",
@@ -1985,7 +1985,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx = CONTAINER_FIND(ifTable_if_ctx.container, &oid_idx);
+    rowreq_ctx = (ifTable_rowreq_ctx*)CONTAINER_FIND(ifTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.c b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
index 1a24275..23f7137 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
@@ -235,9 +235,9 @@
          */
         if (MFD_SUCCESS == rc) {
             /*
-             * save changed rows, if you haven't already
+             * notify library to save changed rows
              */
-            snmp_store(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+            snmp_store_needed(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                              NETSNMP_DS_LIB_APPTYPE));
         }
 
@@ -399,7 +399,7 @@
 ifName_get(ifXTable_rowreq_ctx * rowreq_ctx, char **ifName_val_ptr_ptr,
            size_t * ifName_val_ptr_len_ptr)
 {
-    int             tmp_len;
+    size_t tmp_len;
 
    /** we should have a non-NULL pointer and enough storage */
     netsnmp_assert((NULL != ifName_val_ptr_ptr)
@@ -424,7 +424,7 @@
         /*
          * allocate space for ifName data
          */
-        (*ifName_val_ptr_ptr) = malloc(tmp_len);
+        (*ifName_val_ptr_ptr) = (char*)malloc(tmp_len);
         if (NULL == (*ifName_val_ptr_ptr)) {
             snmp_log(LOG_ERR, "could not allocate memory\n");
             return MFD_ERROR;
@@ -1492,7 +1492,7 @@
         /*
          * allocate space for ifAlias data
          */
-        (*ifAlias_val_ptr_ptr) =
+        (*ifAlias_val_ptr_ptr) = (char*)
             malloc(rowreq_ctx->data.ifAlias_len *
                    sizeof(rowreq_ctx->data.ifAlias[0]));
         if (NULL == (*ifAlias_val_ptr_ptr)) {
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
index 9f064cf..15074ea 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
@@ -188,7 +188,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IFXTABLE_MIN_COL;
     tbl_info->max_column = IFXTABLE_MAX_COL;
@@ -552,7 +552,7 @@
                            netsnmp_agent_request_info *agtreq_info,
                            netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -607,7 +607,7 @@
                             netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_object_lookup",
@@ -845,7 +845,7 @@
                          netsnmp_agent_request_info *agtreq_info,
                          netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1162,7 +1162,7 @@
                             netsnmp_agent_request_info *agtreq_info,
                             netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1210,7 +1210,7 @@
                                  netsnmp_request_info *requests)
 {
     int             rc;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_check_dependencies",
                 "called\n"));
@@ -1294,7 +1294,7 @@
                          netsnmp_request_info *requests)
 {
     int             rc;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_undo_setup", "called\n"));
@@ -1357,7 +1357,7 @@
                            netsnmp_agent_request_info *agtreq_info,
                            netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1459,7 +1459,7 @@
                          netsnmp_agent_request_info *agtreq_info,
                          netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1506,7 +1506,7 @@
                      netsnmp_request_info *requests)
 {
     int             rc;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_commit", "called\n"));
@@ -1539,7 +1539,7 @@
                           netsnmp_request_info *requests)
 {
     int             rc;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_undo_commit",
@@ -1632,7 +1632,7 @@
                           netsnmp_request_info *requests)
 {
     int             rc;
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1687,7 +1687,7 @@
                                   netsnmp_agent_request_info *agtreq_info,
                                   netsnmp_request_info *requests)
 {
-    ifXTable_rowreq_ctx *rowreq_ctx =
+    ifXTable_rowreq_ctx *rowreq_ctx = (ifXTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ifXTable:_mfd_ifXTable_irreversible:commit",
@@ -1870,7 +1870,7 @@
      * be treated a little differently. Specifically, you will need
      * (4 * len) + 4 [3 ASCII chars per byte + 1 for ., + 4 for len].
      *
-     * 3) Also, remeber to add space for the identifier and seperator
+     * 3) Also, remember to add space for the identifier and separator
      * characters (for example, each column is prefixed by the
      * column number and a semicolon. To allow for the maximum
      * column values, 12 bytes [11 for oid + 1 for ':'] per
@@ -1991,7 +1991,7 @@
                  "_ifXTable_container_row_restore\n");
         return;
     }
-    rowreq_ctx = CONTAINER_FIND(container, &index);
+    rowreq_ctx = (ifXTable_rowreq_ctx*)CONTAINER_FIND(container, &index);
     if (NULL == rowreq_ctx) {
         snmp_log(LOG_DEBUG, "error finding row index in "
                  "_ifXTable_container_row_restore\n");
@@ -2002,7 +2002,7 @@
      * loop through and get each column
      */
     buf = skip_white(buf);
-    while ((NULL != buf) && isdigit(*buf)) {
+    while ((NULL != buf) && isdigit(*buf & 0xFF)) {
         /*
          * extract column, skip ':'
          */
@@ -2081,7 +2081,8 @@
         break;
 
     case COLUMN_IFALIAS:   /** DisplayString = ASN_OCTET_STR */
-        buf = read_config_save_octet_string(buf, rowreq_ctx->data.ifAlias,
+        buf = read_config_save_octet_string(buf,
+                                            (u_char *) rowreq_ctx->data.ifAlias,
                                             rowreq_ctx->data.ifAlias_len);
         break;
 
@@ -2164,7 +2165,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx = CONTAINER_FIND(ifXTable_if_ctx.container, &oid_idx);
+    rowreq_ctx = (ifXTable_rowreq_ctx*)CONTAINER_FIND(ifXTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
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 974de55..e2901f9 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_common.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_common.c
@@ -47,13 +47,16 @@
 
     DEBUGMSGTL(("access:route:container", "load\n"));
 
-    if (NULL == container)
-        container = netsnmp_container_find("access:_route:table_container");
     if (NULL == container) {
-        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
-        return NULL;
+        container = netsnmp_container_find("access:_route:fifo");
+        if (NULL == container) {
+            snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+            return NULL;
+        }
     }
 
+    container->container_name = strdup("_route");
+
     rc =  netsnmp_access_route_container_arch_load(container, load_flags);
     if (0 != rc) {
         netsnmp_access_route_container_free(container, NETSNMP_ACCESS_ROUTE_FREE_NOFLAGS);
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 c20e0af..815c415 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
@@ -54,10 +54,6 @@
 #include <stdlib.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/data_access/route.h>
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 c5d7633..f8d78a9 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
@@ -53,7 +53,7 @@
      * fetch routes from the proc file-system:
      */
     if (!(in = fopen("/proc/net/route", "r"))) {
-        snmp_log(LOG_ERR, "cannot open /proc/net/route\n");
+        NETSNMP_LOGONCE((LOG_ERR, "cannot open /proc/net/route\n"));
         return -2;
     }
 
@@ -71,9 +71,9 @@
 
     while (fgets(line, sizeof(line), in)) {
         char            rtent_name[32];
-        int             refcnt, flags, rc;
-        uint32_t        dest, nexthop, mask;
-        unsigned        use;
+        int             refcnt, rc;
+        uint32_t        dest, nexthop, mask, tmp_mask;
+        unsigned        flags, use;
 
         entry = netsnmp_access_route_entry_create();
 
@@ -83,13 +83,13 @@
          * BE eth0  00000000 C0A80101 0003  0      0   0   FFFFFFFF 1500 0   0 
          * LE eth0  00000000 0101A8C0 0003  0      0   0   00FFFFFF    0 0   0  
          */
-        rc = sscanf(line, "%s %x %x %x %u %d %d %x %*d %*d %*d\n",
+        rc = sscanf(line, "%s %x %x %x %d %u %d %x %*d %*d %*d\n",
                     rtent_name, &dest, &nexthop,
                     /*
                      * XXX: fix type of the args 
                      */
                     &flags, &refcnt, &use, &entry->rt_metric1,
-                    &mask);
+                    &tmp_mask);
         DEBUGMSGTL(("9:access:route:container", "line |%s|\n", line));
         if (8 != rc) {
             snmp_log(LOG_ERR,
@@ -121,8 +121,10 @@
          */
         entry->ns_rt_index = ++(*index);
 
+        mask = htonl(tmp_mask);
+
 #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
-        memcpy(&entry->rt_mask, &mask, 4);
+        entry->rt_mask = mask;
         /** entry->rt_tos = XXX; */
         /** rt info ?? */
 #endif
@@ -161,12 +163,12 @@
          * as the policy, to distinguise between them. Hopefully this is
          * unique.
          * xxx-rks: It should really only be for the duplicate case, but that
-         *     would be more complicated thanI want to get into now. Fix later.
+         *     would be more complicated than I want to get into now. Fix later.
          */
         if (0 == nexthop) {
-            entry->rt_policy = &entry->if_index;
-            entry->rt_policy_len = 1;
-            entry->flags |= NETSNMP_ACCESS_ROUTE_POLICY_STATIC;
+            entry->rt_policy = calloc(3, sizeof(oid));
+            entry->rt_policy[2] = entry->if_index;
+            entry->rt_policy_len = sizeof(oid)*3;
         }
 #endif
 
@@ -311,11 +313,11 @@
         /*
          * on linux, default routes all look alike, and would have the same
          * indexed based on dest and next hop. So we use our arbitrary index
-         * as the policy, to distinguise between them.
+         * as the policy, to distinguish between them.
          */
-        entry->rt_policy = &entry->ns_rt_index;
-        entry->rt_policy_len = 1;
-        entry->flags |= NETSNMP_ACCESS_ROUTE_POLICY_STATIC;
+        entry->rt_policy = calloc(3, sizeof(oid));
+        entry->rt_policy[2] = entry->ns_rt_index;
+        entry->rt_policy_len = sizeof(oid)*3;
 #endif
 
         /*
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
index b46080a..8def1d9 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
@@ -410,25 +410,27 @@
     /*
      * inetCidrRoutePolicy(4)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/a/w/e/r/d/h 
      */
-    tbl_idx->inetCidrRoutePolicy_len = sizeof(tbl_idx->inetCidrRoutePolicy) / sizeof(tbl_idx->inetCidrRoutePolicy[0]);  /* max length */
+    tbl_idx->inetCidrRoutePolicy_len = sizeof(tbl_idx->inetCidrRoutePolicy) / sizeof(tbl_idx->inetCidrRoutePolicy[0]);
     /** WARNING: this code might not work for netsnmp_route_entry */
     /*
      * make sure there is enough space for inetCidrRoutePolicy data
      */
     if ((NULL == tbl_idx->inetCidrRoutePolicy) ||
         (tbl_idx->inetCidrRoutePolicy_len <
-         (inetCidrRoutePolicy_val_ptr_len))) {
-        snmp_log(LOG_ERR, "not enough space for value\n");
+         (inetCidrRoutePolicy_val_ptr_len / sizeof(inetCidrRoutePolicy_val_ptr[0])))) {
+        snmp_log(LOG_ERR,
+	    "inetCidrRoutePolicy: Not enough space for value (%d < %d)\n",
+	    (int)tbl_idx->inetCidrRoutePolicy_len,
+	    (int)(inetCidrRoutePolicy_val_ptr_len / sizeof(inetCidrRoutePolicy_val_ptr[0])));
         return MFD_ERROR;
     }
     if (0 == inetCidrRoutePolicy_val_ptr_len) {
-        inetCidrRoutePolicy_val_ptr_len = nullOidLen / sizeof(oid);
+        inetCidrRoutePolicy_val_ptr_len = nullOidLen;
         inetCidrRoutePolicy_val_ptr = nullOid;
     }
-    tbl_idx->inetCidrRoutePolicy_len = inetCidrRoutePolicy_val_ptr_len;
+    tbl_idx->inetCidrRoutePolicy_len = inetCidrRoutePolicy_val_ptr_len / sizeof(oid);
     memcpy(tbl_idx->inetCidrRoutePolicy, inetCidrRoutePolicy_val_ptr,
-           inetCidrRoutePolicy_val_ptr_len *
-           sizeof(inetCidrRoutePolicy_val_ptr[0]));
+           inetCidrRoutePolicy_val_ptr_len);
 
     /*
      * inetCidrRouteNextHopType(5)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
@@ -446,11 +448,14 @@
      */
     if ((NULL == tbl_idx->inetCidrRouteNextHop) ||
         (tbl_idx->inetCidrRouteNextHop_len <
-         (inetCidrRouteNextHop_val_ptr_len))) {
-        snmp_log(LOG_ERR, "not enough space for value\n");
+         (inetCidrRouteNextHop_val_ptr_len / sizeof(inetCidrRouteNextHop_val_ptr[0])))) {
+        snmp_log(LOG_ERR,
+	    "inetCidrRouteNexthop: Not enough space for value (%d < %d)\n",
+	    (int)tbl_idx->inetCidrRouteNextHop_len,
+	    (int)(inetCidrRouteNextHop_val_ptr_len / sizeof(inetCidrRouteNextHop_val_ptr[0])));
         return MFD_ERROR;
     }
-    tbl_idx->inetCidrRouteNextHop_len = inetCidrRouteNextHop_val_ptr_len;
+    tbl_idx->inetCidrRouteNextHop_len = inetCidrRouteNextHop_val_ptr_len / sizeof(inetCidrRouteNextHop_val_ptr[0]);
     memcpy(tbl_idx->inetCidrRouteNextHop, inetCidrRouteNextHop_val_ptr,
            inetCidrRouteNextHop_val_ptr_len *
            sizeof(inetCidrRouteNextHop_val_ptr[0]));
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
index ffedb08..559c0ca 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
@@ -197,7 +197,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = INETCIDRROUTETABLE_MIN_COL;
     tbl_info->max_column = INETCIDRROUTETABLE_MAX_COL;
@@ -791,7 +791,7 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -909,7 +909,7 @@
                                       netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_object_lookup", "called\n"));
@@ -1103,7 +1103,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1613,7 +1613,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1661,7 +1661,7 @@
                                            netsnmp_request_info *requests)
 {
     int             rc;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_check_dependencies", "called\n"));
 
@@ -1783,7 +1783,7 @@
                                    netsnmp_request_info *requests)
 {
     int             rc;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_undo_setup", "called\n"));
@@ -1848,7 +1848,7 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -2003,7 +2003,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -2051,7 +2051,7 @@
                                netsnmp_request_info *requests)
 {
     int             rc;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_commit", "called\n"));
@@ -2085,7 +2085,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_undo_commit", "called\n"));
@@ -2131,7 +2131,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc;
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_undo_values", "called\n"));
@@ -2165,7 +2165,7 @@
                                             *agtreq_info,
                                             netsnmp_request_info *requests)
 {
-    inetCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    inetCidrRouteTable_rowreq_ctx *rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetCidrRouteTable:_mfd_inetCidrRouteTable_irreversible:commit", "called\n"));
@@ -2303,7 +2303,7 @@
     /*
      * cache init
      */
-    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+    if_ctx->cache = netsnmp_cache_create(INETCIDRROUTETABLE_CACHE_TIMEOUT,
                                          _cache_load, _cache_free,
                                          inetCidrRouteTable_oid,
                                          inetCidrRouteTable_oid_size);
@@ -2316,15 +2316,22 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     inetCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find("inetCidrRouteTable:table_container");
-    if (NULL == if_ctx->container) {
-        snmp_log(LOG_ERR, "error creating container in "
-                 "inetCidrRouteTable_container_init\n");
-        return;
+        if (NULL == if_ctx->container) {
+            snmp_log(LOG_ERR, "error creating container in "
+                     "inetCidrRouteTable_container_init\n");
+            return;
+        }
     }
 
+    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);
+
     if (NULL != if_ctx->cache)
         if_ctx->cache->magic = (void *) if_ctx->container;
 }                               /* _inetCidrRouteTable_container_init */
@@ -2368,7 +2375,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         CONTAINER_FIND(inetCidrRouteTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
index ae7b71d..0ff00c1 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
@@ -706,13 +706,13 @@
      * copy (* ipCidrRouteInfo_val_ptr_ptr ) data and (* ipCidrRouteInfo_val_ptr_len_ptr ) from rowreq_ctx->data
      */
     /** nullOidLen is in bytes, so not sizeof(oid) needed */
-    if ((*ipCidrRouteInfo_val_ptr_len_ptr) < nullOidLen) {
-        (*ipCidrRouteInfo_val_ptr_ptr) = malloc(nullOidLen);
+    if ((*ipCidrRouteInfo_val_ptr_len_ptr) < (size_t)nullOidLen) {
+        (*ipCidrRouteInfo_val_ptr_ptr) = (oid*)malloc(nullOidLen);
         if (NULL == (*ipCidrRouteInfo_val_ptr_ptr))
             return MFD_ERROR;
     }
-    (*ipCidrRouteInfo_val_ptr_len_ptr) = nullOidLen;
-    memcpy((*ipCidrRouteInfo_val_ptr_ptr), nullOid, nullOidLen);
+    (*ipCidrRouteInfo_val_ptr_len_ptr) = (size_t)nullOidLen;
+    memcpy((*ipCidrRouteInfo_val_ptr_ptr), nullOid, (size_t)nullOidLen);
 
     return MFD_SUCCESS;
 }                               /* ipCidrRouteInfo_get */
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
index 37c4a01..a31f4cc 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
@@ -188,7 +188,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPCIDRROUTETABLE_MIN_COL;
     tbl_info->max_column = IPCIDRROUTETABLE_MAX_COL;
@@ -672,7 +672,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -791,7 +791,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipCidrRouteTable:_mfd_ipCidrRouteTable_object_lookup", "called\n"));
@@ -1022,7 +1022,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1456,7 +1456,7 @@
                                     *agtreq_info,
                                     netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1611,7 +1611,7 @@
                                  netsnmp_request_info *requests)
 {
     int             rc;
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipCidrRouteTable:_mfd_ipCidrRouteTable_undo_setup", "called\n"));
@@ -1675,7 +1675,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1840,7 +1840,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1888,7 +1888,7 @@
                              netsnmp_request_info *requests)
 {
     int             rc;
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipCidrRouteTable:_mfd_ipCidrRouteTable_commit",
@@ -1922,7 +1922,7 @@
                                   netsnmp_request_info *requests)
 {
     int             rc;
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipCidrRouteTable:_mfd_ipCidrRouteTable_undo_commit", "called\n"));
@@ -2064,7 +2064,7 @@
                                   netsnmp_request_info *requests)
 {
     int             rc;
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -2118,7 +2118,7 @@
                                           *agtreq_info,
                                           netsnmp_request_info *requests)
 {
-    ipCidrRouteTable_rowreq_ctx *rowreq_ctx =
+    ipCidrRouteTable_rowreq_ctx *rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipCidrRouteTable:_mfd_ipCidrRouteTable_irreversible:commit", "called\n"));
@@ -2254,7 +2254,7 @@
     /*
      * cache init
      */
-    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+    if_ctx->cache = netsnmp_cache_create(IPCIDRROUTETABLE_CACHE_TIMEOUT,
                                          _cache_load, _cache_free,
                                          ipCidrRouteTable_oid,
                                          ipCidrRouteTable_oid_size);
@@ -2267,15 +2267,22 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     ipCidrRouteTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find("ipCidrRouteTable:table_container");
-    if (NULL == if_ctx->container) {
-        snmp_log(LOG_ERR, "error creating container in "
-                 "ipCidrRouteTable_container_init\n");
-        return;
+        if (NULL == if_ctx->container) {
+            snmp_log(LOG_ERR, "error creating container in "
+                     "ipCidrRouteTable_container_init\n");
+            return;
+        }
     }
 
+    if_ctx->container->container_name = strdup("ipCidrRouteTable");
+
+    /* 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;
 }                               /* _ipCidrRouteTable_container_init */
@@ -2319,7 +2326,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         CONTAINER_FIND(ipCidrRouteTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/ip-mib.h b/agent/mibgroup/ip-mib.h
index 83752e5..4e8317f 100644
--- a/agent/mibgroup/ip-mib.h
+++ b/agent/mibgroup/ip-mib.h
@@ -3,6 +3,8 @@
  */
 
 config_require(ip-mib/ipAddressTable);
+config_require(ip-mib/ipAddressPrefixTable);
+config_require(ip-mib/ipDefaultRouterTable);
 config_require(ip-mib/inetNetToMediaTable);
 config_require(ip-mib/ipSystemStatsTable);
 config_require(ip-mib/ip_scalars);
diff --git a/agent/mibgroup/ip-mib/data_access/arp_common.c b/agent/mibgroup/ip-mib/data_access/arp_common.c
index c794c3a..5c7d6d5 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_common.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_common.c
@@ -62,8 +62,11 @@
 
     DEBUGMSGTL(("access:arp:container", "load\n"));
 
-    if (NULL == container)
+    if (NULL == container) {
         container = netsnmp_container_find("access:arp:table_container");
+        if (container)
+            container->container_name = strdup("arp");
+    }
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_arp\n");
         return NULL;
diff --git a/agent/mibgroup/ip-mib/data_access/arp_linux.c b/agent/mibgroup/ip-mib/data_access/arp_linux.c
index 2069ef1..4ddaffd 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_linux.c
@@ -14,9 +14,10 @@
 #include <arpa/inet.h>
 #include <linux/types.h>
 #include <asm/types.h>
-#ifdef NETSNMP_ENABLE_IPV6
 #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]), \
@@ -28,10 +29,11 @@
         ntohs((addr).s6_addr16[7])
 #define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
 #endif
-#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);
@@ -103,7 +105,7 @@
     while (fgets(line, sizeof(line), in)) {
         
         int             za, zb, zc, zd;
-        int             tmp_flags;
+        unsigned int    tmp_flags;
         char            ifname[21];
 
         rc = sscanf(line,
@@ -258,7 +260,7 @@
          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"));
+                        " 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));
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
index ac62c40..b9f3c67 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
@@ -211,7 +211,8 @@
      * make sure interface and ifIndex match up
      */
     if (NULL == netsnmp_access_interface_name_find(entry->if_index)) {
-        DEBUGMSGT(("access:ipaddress:set", "cant find name for index %ld\n",
+        DEBUGMSGT(("access:ipaddress:set",
+                   "cant find name for index %" NETSNMP_PRIo "d\n",
                   entry->if_index));
         return -1;
     }
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
index 57fb9bb..f281bb6 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
@@ -35,7 +35,7 @@
     if ((NULL == entry) || (NULL == entry->arch_data))
         return NULL;
 
-    return netsnmp_get_list_data(entry->arch_data, LIST_TOKEN);
+    return (_ioctl_extras*)netsnmp_get_list_data(entry->arch_data, LIST_TOKEN);
 }
 
 /**
@@ -159,14 +159,6 @@
 
         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();
@@ -191,6 +183,7 @@
         /*
          * 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;
@@ -314,7 +307,7 @@
 
         DEBUGIF("access:ipaddress:container") {
             DEBUGMSGT_NC(("access:ipaddress:container",
-                          " if %d: addr len %d, index 0x%lx\n",
+                          " if %d: addr len %d, index 0x%" NETSNMP_PRIo "x\n",
                           i, entry->ia_address_len, entry->if_index));
             if (4 == entry->ia_address_len)
                 DEBUGMSGT_NC(("access:ipaddress:container", " address %p\n",
@@ -340,6 +333,7 @@
 
         if (CONTAINER_INSERT(container, entry) < 0) {
             DEBUGMSGTL(("access:ipaddress:container","error with ipaddress_entry: insert into container failed.\n"));
+            NETSNMP_LOGONCE((LOG_ERR, "Duplicate IPv4 address detected, some interfaces may not be visible in IP-MIB\n"));
             netsnmp_access_ipaddress_entry_free(entry);
             continue;
         }
@@ -390,7 +384,7 @@
     netsnmp_assert(NULL != ifc.ifc_buf);
     DEBUGMSGTL(("access:ipaddress:container", "processing %d interfaces\n", interfaces));
 
-    alias_list = malloc(interfaces * sizeof(int));
+    alias_list = (int*)malloc(interfaces * sizeof(int));
     if (NULL == alias_list) {
         close(sd);
         return -2;
@@ -473,7 +467,8 @@
         int   alias_idx;
 
         if (NULL == name) {
-            DEBUGMSGT(("access:ipaddress:set", "cant find name for index %ld\n",
+            DEBUGMSGT(("access:ipaddress:set",
+                       "cant find name for index %" NETSNMP_PRIo "d\n",
                        entry->if_index));
             close(fd);
             return -1;
@@ -576,7 +571,7 @@
      */
 
     for (i = 8;; i *= 2) {
-        ifc->ifc_buf = calloc(i, sizeof(struct ifreq));
+        ifc->ifc_buf = (caddr_t)calloc(i, sizeof(struct ifreq));
         if (NULL == ifc->ifc_buf) {
             snmp_log(LOG_ERR, "could not allocate memory for %d interfaces\n",
                      i);
@@ -641,7 +636,7 @@
         { IFF_AUTOMEDIA,   "auto media select active"},
     };
     short unknown = flags;
-    int i;
+    size_t i;
 
     for(i = 0; i < sizeof(map)/sizeof(map[0]); ++i)
         if(flags & map[i].flag) {
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.h b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.h
index 1cae279..600ceaf 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.h
@@ -17,6 +17,5 @@
  *    HPUX11 had different reuirements than other HPUX, that should
  *    be handled in the *_hpux.h header file.
  */
-config_require(ip-mib/data_access/ipaddress_linux)
 config_require(ip-mib/data_access/ipaddress_ioctl)
-
+config_require(util_funcs)
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
index f2d8e0b..3979037 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
@@ -157,7 +157,7 @@
             netsnmp_access_interface_index_find(ipae.ipAdEntIfIndex.o_bytes);
         if (entry->if_index == 0) {
             DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n",
-                        ipae.ipAdEntIfIndex));
+                        ipae.ipAdEntIfIndex.o_bytes));
             netsnmp_access_ipaddress_entry_free(entry);
             return (-2);    
         }
diff --git a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
index fdf712b..7462ebe 100644
--- a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
@@ -63,8 +63,11 @@
 
     DEBUGMSGTL(("access:scopezone:container", "load\n"));
 
-    if (NULL == container)
+    if (NULL == container) {
         container = netsnmp_access_scopezone_container_init(load_flags);
+        if (container)
+            container->container_name = strdup("scopezone");
+    }
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_scopezone\n");
         return NULL;
diff --git a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
index b814f60..7d60641 100644
--- a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
@@ -25,8 +25,9 @@
 netsnmp_access_scopezone_container_arch_load(netsnmp_container* container,
                                              u_int load_flags)
 {
-    int rc1 = 0, idx_offset = 0;
+    int rc1 = 0;
 #if defined (NETSNMP_ENABLE_IPV6)
+    int idx_offset = 0;
 
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_scopezone_\n");
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_linux.c b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
index 02c416a..6ba356b 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
@@ -28,7 +28,7 @@
         return -2;
     }
 
-    rc = fscanf(filep, "%ld", value);
+    rc = fscanf(filep, "%lu", value);
     fclose(filep);
     if (1 != rc) {
         DEBUGMSGTL(("access:ipForwarding", "could not read %s\n",
@@ -96,7 +96,7 @@
         return -2;
     }
 
-    rc = fscanf(filep, "%ld", value);
+    rc = fscanf(filep, "%lu", value);
     fclose(filep);
     if (1 != rc) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "could not read %s\n",
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_common.c b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
index f7c0212..29109bd 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats_common.c
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
@@ -96,8 +96,11 @@
 
     DEBUGMSGTL(("access:systemstats:container", "load\n"));
 
-    if (NULL == container)
+    if (NULL == container) {
         container = netsnmp_access_systemstats_container_init(load_flags);
+        if (NULL != container)
+            container->container_name = strdup("systemstats_autocreate");
+    }
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_systemstats\n");
         return NULL;
@@ -163,7 +166,8 @@
 /**
  */
 netsnmp_systemstats_entry *
-netsnmp_access_systemstats_entry_create(int version, int if_index)
+netsnmp_access_systemstats_entry_create(int version, int if_index,
+        const char *tableName)
 {
     netsnmp_systemstats_entry *entry =
         SNMP_MALLOC_TYPEDEF(netsnmp_systemstats_entry);
@@ -177,7 +181,7 @@
     entry->oid_index.oids = entry->index;
     entry->index[0] = version;
     entry->index[1] = if_index;
-
+    entry->tableName = tableName;
     return entry;
 }
 
@@ -329,90 +333,215 @@
         /*
          * update 64bit counters
          */
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInNoRoutes,
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInNoRoutes,
                                        &new_vals->stats.HCInNoRoutes,
                                        &prev_vals->old_stats->HCInNoRoutes,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutNoRoutes,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInNoRoutes to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutNoRoutes,
                                        &new_vals->stats.HCOutNoRoutes,
                                        &prev_vals->old_stats->HCOutNoRoutes,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutDiscards,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutNoRoutes to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutDiscards,
                                        &new_vals->stats.HCOutDiscards,
                                        &prev_vals->old_stats->HCOutDiscards,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragReqds,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutDiscards to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutFragReqds,
                                        &new_vals->stats.HCOutFragReqds,
                                        &prev_vals->old_stats->HCOutFragReqds,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragOKs,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutFragReqds to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutFragOKs,
                                        &new_vals->stats.HCOutFragOKs,
                                        &prev_vals->old_stats->HCOutFragOKs,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragFails,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutFragOKs to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutFragFails,
                                        &new_vals->stats.HCOutFragFails,
                                        &prev_vals->old_stats->HCOutFragFails,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutFragCreates,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutFragFails to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutFragCreates,
                                        &new_vals->stats.HCOutFragCreates,
                                        &prev_vals->old_stats->HCOutFragCreates,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInReceives,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutFragCreates to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInReceives,
                                        &new_vals->stats.HCInReceives,
                                        &prev_vals->old_stats->HCInReceives,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInOctets,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInReceives to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInOctets,
                                        &new_vals->stats.HCInOctets,
                                        &prev_vals->old_stats->HCInOctets,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInForwDatagrams,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInOctets to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInForwDatagrams,
                                        &new_vals->stats.HCInForwDatagrams,
                                        &prev_vals->old_stats->HCInForwDatagrams,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInDelivers,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInForwDatagrams to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInDelivers,
                                        &new_vals->stats.HCInDelivers,
                                        &prev_vals->old_stats->HCInDelivers,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutRequests,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInDelivers to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutRequests,
                                        &new_vals->stats.HCOutRequests,
                                        &prev_vals->old_stats->HCOutRequests,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutForwDatagrams,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutRequests to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutForwDatagrams,
                                        &new_vals->stats.HCOutForwDatagrams,
                                        &prev_vals->old_stats->HCOutForwDatagrams,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutTransmits,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutForwDatagrams to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutTransmits,
                                        &new_vals->stats.HCOutTransmits,
                                        &prev_vals->old_stats->HCOutTransmits,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutOctets,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutTransmits to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutOctets,
                                        &new_vals->stats.HCOutOctets,
                                        &prev_vals->old_stats->HCOutOctets,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInMcastPkts,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutOctets to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInMcastPkts,
                                        &new_vals->stats.HCInMcastPkts,
                                        &prev_vals->old_stats->HCInMcastPkts,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInMcastOctets,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInMcastPkts to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInMcastOctets,
                                        &new_vals->stats.HCInMcastOctets,
                                        &prev_vals->old_stats->HCInMcastOctets,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutMcastPkts,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInMcastOctets to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutMcastPkts,
                                        &new_vals->stats.HCOutMcastPkts,
                                        &prev_vals->old_stats->HCOutMcastPkts,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutMcastOctets,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutMcastPkts to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutMcastOctets,
                                        &new_vals->stats.HCOutMcastOctets,
                                        &prev_vals->old_stats->HCOutMcastOctets,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInBcastPkts,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutMcastOctets to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCInBcastPkts,
                                        &new_vals->stats.HCInBcastPkts,
                                        &prev_vals->old_stats->HCInBcastPkts,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCOutBcastPkts,
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCInBcastPkts to 64bits in %s\n",
+                        prev_vals->tableName));
+
+        if (new_vals->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS])
+            if (0 != netsnmp_c64_check32_and_update(
+                                       &prev_vals->stats.HCOutBcastPkts,
                                        &new_vals->stats.HCOutBcastPkts,
                                        &prev_vals->old_stats->HCOutBcastPkts,
-                                       &need_wrap_check);
+                                       &need_wrap_check))
+                NETSNMP_LOGONCE((LOG_ERR,
+                        "Error expanding HCOutBcastPkts to 64bits in %s\n",
+                        prev_vals->tableName));
     }
 
     /*
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
index 3ba8646..4a26e41 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
@@ -116,7 +116,7 @@
     if (!(devin = fopen("/proc/net/snmp", "r"))) {
         DEBUGMSGTL(("access:systemstats",
                     "Failed to load Systemstats Table (linux1)\n"));
-        snmp_log(LOG_ERR, "cannot open /proc/net/snmp ...\n");
+        NETSNMP_LOGONCE((LOG_ERR, "cannot open /proc/net/snmp ...\n"));
         return -2;
     }
 
@@ -160,7 +160,8 @@
         while (*stats == ' ') /* skip spaces before stats */
             stats++;
 
-        entry = netsnmp_access_systemstats_entry_create(1, 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);
@@ -280,6 +281,7 @@
     if (!(devin = fopen("/proc/net/netstat", "r"))) {
         DEBUGMSGTL(("access:systemstats",
                     "cannot open /proc/net/netstat\n"));
+        NETSNMP_LOGONCE((LOG_ERR,"cannot open /proc/net/netstat\n"));
         return -2;
     }
 
@@ -551,7 +553,8 @@
     const char     *filename = "/proc/net/snmp6";
     int rc = 0;
     
-    entry = netsnmp_access_systemstats_entry_create(2, 0);
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+            "ipSystemStatsTable.ipv6");
     if(NULL == entry)
         return -3;
     
@@ -661,7 +664,8 @@
             scan_val = strtoull(scan_str, NULL, 0);
         }
         
-        entry = netsnmp_access_systemstats_entry_create(2, scan_val);
+        entry = netsnmp_access_systemstats_entry_create(2, scan_val,
+                "ipIfStatsTable.ipv6");
         if(NULL == entry) {
             fclose(devin);
             closedir(dev_snmp6_dir);
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c b/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
index 202ab1a..f2ec497 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
@@ -129,7 +129,8 @@
     int i;
     
     netsnmp_systemstats_entry *ep =
-        netsnmp_access_systemstats_entry_create(ipe->ipIfStatsIPVersion, 0); 
+        netsnmp_access_systemstats_entry_create(ipe->ipIfStatsIPVersion, 0,
+                "ipSystemStatsTable"); 
 
     DEBUGMSGTL(("access:systemstats:arch", "insert entry for v%d\n",
                 ipe->ipIfStatsIPVersion)); 
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
index 632854b..85a8738 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
@@ -253,12 +253,19 @@
                                             * rowreq_ctx,
                                             u_long *
                                             inetNetToMediaState_val_ptr);
+
     int
         inetNetToMediaRowStatus_get(inetNetToMediaTable_rowreq_ctx *
                                     rowreq_ctx,
                                     u_long *
                                     inetNetToMediaRowStatus_val_ptr);
 
+    int
+        inetNetToMediaRowStatus_set(inetNetToMediaTable_rowreq_ctx *
+                                    rowreq_ctx,
+                                    u_long
+                                    inetNetToMediaRowStatus_val);
+
 
     int
         inetNetToMediaTable_indexes_set_tbl_idx
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
index e18f98a..8fddb70 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
@@ -194,7 +194,7 @@
           rowreq_ctx->data->arp_ipaddress_len))) {
 
         /* try to find old entry */
-        old = CONTAINER_FIND(container, rowreq_ctx);
+        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);
@@ -316,7 +316,7 @@
                        (netsnmp_container_obj_func *) _collect_invalid_arp_ctx,
                        to_delete);
     while (CONTAINER_SIZE(to_delete)) {
-        inetNetToMediaTable_rowreq_ctx *ctx = CONTAINER_FIRST(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);
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
index 18cc33a..62e364f 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
@@ -192,7 +192,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = INETNETTOMEDIATABLE_MIN_COL;
     tbl_info->max_column = INETNETTOMEDIATABLE_MAX_COL;
@@ -690,7 +690,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -809,7 +809,7 @@
                                        netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_object_lookup", "called\n"));
@@ -947,7 +947,7 @@
                                     *agtreq_info,
                                     netsnmp_request_info *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1258,7 +1258,7 @@
                                        *agtreq_info,
                                        netsnmp_request_info *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1306,7 +1306,7 @@
                                             netsnmp_request_info *requests)
 {
     int             rc;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_check_dependencies", "called\n"));
 
@@ -1392,7 +1392,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_undo_setup", "called\n"));
@@ -1457,7 +1457,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1563,7 +1563,7 @@
                                     *agtreq_info,
                                     netsnmp_request_info *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1611,7 +1611,7 @@
                                 netsnmp_request_info *requests)
 {
     int             rc;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_commit", "called\n"));
@@ -1645,7 +1645,7 @@
                                      netsnmp_request_info *requests)
 {
     int             rc;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_undo_commit", "called\n"));
@@ -1739,7 +1739,7 @@
                                      netsnmp_request_info *requests)
 {
     int             rc;
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1794,7 +1794,7 @@
                                              *agtreq_info, netsnmp_request_info
                                              *requests)
 {
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx =
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:inetNetToMediaTable:_mfd_inetNetToMediaTable_irreversible:commit", "called\n"));
@@ -1947,9 +1947,12 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     inetNetToMediaTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find("inetNetToMediaTable:table_container");
+        if (if_ctx->container)
+            if_ctx->container->container_name = strdup("inetNetToMediaTable");
+    }
     if (NULL == if_ctx->container) {
         snmp_log(LOG_ERR, "error creating container in "
                  "inetNetToMediaTable_container_init\n");
@@ -1999,7 +2002,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         CONTAINER_FIND(inetNetToMediaTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
index 16db509..f4bb085 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
@@ -255,7 +255,7 @@
                                          tbl_idx,
                                          long ipAddressPrefixIfIndex_val,
                                          u_long ipAddressPrefixType_val,
-                                         char
+                                         u_char
                                          *ipAddressPrefixPrefix_val_ptr,
                                          size_t
                                          ipAddressPrefixPrefix_val_ptr_len,
@@ -318,7 +318,7 @@
                                  rowreq_ctx,
                                  long ipAddressPrefixIfIndex_val,
                                  u_long ipAddressPrefixType_val,
-                                 char *ipAddressPrefixPrefix_val_ptr,
+                                 u_char *ipAddressPrefixPrefix_val_ptr,
                                  size_t ipAddressPrefixPrefix_val_ptr_len,
                                  u_long ipAddressPrefixLength_val)
 {
@@ -593,7 +593,7 @@
      * copy (* ipAddressPrefixAdvPreferredLifetime_val_ptr ) from rowreq_ctx->data
      */
     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType)
-        (*ipAddressPrefixAdvPreferredLifetime_val_ptr) = 4294967295;    /* per MIB */
+        (*ipAddressPrefixAdvPreferredLifetime_val_ptr) = 4294967295U;    /* per MIB */
     else
         (*ipAddressPrefixAdvPreferredLifetime_val_ptr) =
             rowreq_ctx->data.ipAddressPrefixAdvPreferredLifetime;
@@ -660,7 +660,7 @@
      * copy (* ipAddressPrefixAdvValidLifetime_val_ptr ) from rowreq_ctx->data
      */
     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType)
-        (*ipAddressPrefixAdvValidLifetime_val_ptr) = 4294967295;        /* per MIB */
+        (*ipAddressPrefixAdvValidLifetime_val_ptr) = 4294967295U;        /* per MIB */
     else
         (*ipAddressPrefixAdvValidLifetime_val_ptr) =
             rowreq_ctx->data.ipAddressPrefixAdvValidLifetime;
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
index 201e557..24b22a2 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
@@ -271,7 +271,7 @@
         ipAddressPrefixTable_indexes_set_tbl_idx
         (ipAddressPrefixTable_mib_index * tbl_idx,
          long ipAddressPrefixIfIndex_val, u_long ipAddressPrefixType_val,
-         char *ipAddressPrefixPrefix_val_ptr,
+         u_char *ipAddressPrefixPrefix_val_ptr,
          size_t ipAddressPrefixPrefix_val_ptr_len,
          u_long ipAddressPrefixLength_val);
     int
@@ -279,7 +279,7 @@
                                          rowreq_ctx,
                                          long ipAddressPrefixIfIndex_val,
                                          u_long ipAddressPrefixType_val,
-                                         char
+                                         u_char
                                          *ipAddressPrefixPrefix_val_ptr,
                                          size_t
                                          ipAddressPrefixPrefix_val_ptr_len,
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
index 9159e12..4fb6905 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
@@ -202,7 +202,7 @@
     ipAddressTable_rowreq_ctx *addr_rowreq_ctx;
     netsnmp_container *addr_container;
     netsnmp_iterator *addr_it;
-    size_t          count = 0;
+    int             count = 0;
     u_char          tmp_pfx[NETSNMP_ACCESS_IPADDRESS_BUF_SIZE];
 
     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_container_load", "called\n"));
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
index 1909a4b..942425d 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
@@ -155,7 +155,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPADDRESSPREFIXTABLE_MIN_COL;
     tbl_info->max_column = IPADDRESSPREFIXTABLE_MAX_COL;
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
index c1fad74..ec48fca 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
@@ -333,8 +333,8 @@
  *  Otherwise, just do a direct copy.
  */
 int
-ipAddressAddrType_map(u_long * mib_ipAddressAddrType_val_ptr,
-                      u_long raw_ipAddressAddrType_val)
+ipAddressAddrType_map(long * mib_ipAddressAddrType_val_ptr,
+                      long raw_ipAddressAddrType_val)
 {
     netsnmp_assert(NULL != mib_ipAddressAddrType_val_ptr);
 
@@ -382,8 +382,8 @@
  */
 int
 ipAddressTable_indexes_set_tbl_idx(ipAddressTable_mib_index * tbl_idx,
-                                   u_long ipAddressAddrType_val,
-                                   char *ipAddressAddr_val_ptr,
+                                   long ipAddressAddrType_val,
+                                   u_char *ipAddressAddr_val_ptr,
                                    size_t ipAddressAddr_val_ptr_len)
 {
     DEBUGMSGTL(("verbose:ipAddressTable:ipAddressTable_indexes_set_tbl_idx", "called\n"));
@@ -431,7 +431,7 @@
 int
 ipAddressTable_indexes_set(ipAddressTable_rowreq_ctx * rowreq_ctx,
                            u_long ipAddressAddrType_val,
-                           char *ipAddressAddr_val_ptr,
+                           u_char *ipAddressAddr_val_ptr,
                            size_t ipAddressAddr_val_ptr_len)
 {
     DEBUGMSGTL(("verbose:ipAddressTable:ipAddressTable_indexes_set",
@@ -626,7 +626,7 @@
     oid            *dst, tmp_oid[MAX_OID_LEN] =
         { 1, 3, 6, 1, 2, 1, 4, 32, 1, 5 };
     u_char          tmp_buf[NETSNMP_ACCESS_IPADDRESS_BUF_SIZE];
-    int             len;
+    size_t          len;
 
    /** we should have a non-NULL pointer and enough storage */
     netsnmp_assert((NULL != ipAddressPrefix_val_ptr_ptr)
@@ -657,7 +657,7 @@
 
     len *= sizeof((*ipAddressPrefix_val_ptr_ptr)[0]);
     if ((*ipAddressPrefix_val_ptr_len_ptr) < len) {
-        (*ipAddressPrefix_val_ptr_ptr) = malloc(len);
+        (*ipAddressPrefix_val_ptr_ptr) = (oid*)malloc(len);
         if (NULL == (*ipAddressPrefix_val_ptr_ptr)) {
             snmp_log(LOG_ERR, "could not allocate memory\n");
             return MFD_ERROR;
@@ -1472,7 +1472,7 @@
     /*
      * if the new value is the same as the old, accept it.
      */
-    if (ipAddressIfIndex_val == rowreq_ctx->data->if_index)
+    if (ipAddressIfIndex_val == (long)rowreq_ctx->data->if_index)
         return MFD_SUCCESS;
 
     /*
@@ -1559,8 +1559,8 @@
      * TODO:461:M: |-> Set ipAddressIfIndex value.
      * set ipAddressIfIndex value in rowreq_ctx->data
      */
-    if (rowreq_ctx->data->if_index != ipAddressIfIndex_val)
-        rowreq_ctx->data->if_index = ipAddressIfIndex_val;
+    if (rowreq_ctx->data->if_index != (oid)ipAddressIfIndex_val)
+        rowreq_ctx->data->if_index  = (oid)ipAddressIfIndex_val;
     else
         rowreq_ctx->column_set_flags &= ~COLUMN_IPADDRESSIFINDEX_FLAG;
 
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
index 740f4fa..fe8f04a 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
@@ -96,13 +96,13 @@
         /*
          * ipAddressAddrType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
          */
-        u_long          ipAddressAddrType;
+        long            ipAddressAddrType;
 
         /*
          * ipAddressAddr(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
          */
         /** 128 - 1(other indexes) - oid length(10) = 116 */
-        char            ipAddressAddr[116];
+        u_char          ipAddressAddr[116];
         size_t          ipAddressAddr_len;
 
 
@@ -227,9 +227,9 @@
     /*
      * indexes
      */
-    int             ipAddressAddrType_map(u_long *
+    int             ipAddressAddrType_map(long *
                                           mib_ipAddressAddrType_val_ptr,
-                                          u_long
+                                          long
                                           raw_ipAddressAddrType_val);
 
     int             ipAddressIfIndex_get(ipAddressTable_rowreq_ctx *
@@ -270,15 +270,15 @@
     int
         ipAddressTable_indexes_set_tbl_idx(ipAddressTable_mib_index *
                                            tbl_idx,
-                                           u_long ipAddressAddrType_val,
-                                           char *ipAddressAddr_val_ptr,
+                                           long ipAddressAddrType_val,
+                                           u_char *ipAddressAddr_val_ptr,
                                            size_t
                                            ipAddressAddr_val_ptr_len);
     int             ipAddressTable_indexes_set(ipAddressTable_rowreq_ctx *
                                                rowreq_ctx,
                                                u_long
                                                ipAddressAddrType_val,
-                                               char *ipAddressAddr_val_ptr,
+                                               u_char *ipAddressAddr_val_ptr,
                                                size_t
                                                ipAddressAddr_val_ptr_len);
 
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
index 7a4a23d..ca1ae47 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
@@ -134,6 +134,7 @@
     *container_ptr_ptr =
         netsnmp_container_find("ipAddressTable:table_container");
     if (NULL != *container_ptr_ptr) {
+        (*container_ptr_ptr)->container_name = strdup("ipAddressTable");
         ipAddressTable_container_load(*container_ptr_ptr);
         CONTAINER_FOR_EACH(*container_ptr_ptr,
                            (netsnmp_container_obj_func *) _clear_times,
@@ -201,13 +202,13 @@
 _check_entry_for_updates(ipAddressTable_rowreq_ctx * rowreq_ctx,
                          void **magic)
 {
-    netsnmp_container *ipaddress_container = magic[0];
-    netsnmp_container *to_delete = (netsnmp_container *) magic[1];
+    netsnmp_container *ipaddress_container = (netsnmp_container*)magic[0];
+    netsnmp_container *to_delete           = (netsnmp_container*)magic[1];
 
     /*
      * check for matching entry using secondary index.
      */
-    netsnmp_ipaddress_entry *ipaddress_entry =
+    netsnmp_ipaddress_entry *ipaddress_entry = (netsnmp_ipaddress_entry*)
         CONTAINER_FIND(ipaddress_container, rowreq_ctx->data);
     if (NULL == ipaddress_entry) {
         DEBUGMSGTL(("ipAddressTable:access", "removing missing entry\n"));
@@ -259,7 +260,7 @@
         (MFD_SUCCESS ==
          ipAddressTable_indexes_set(rowreq_ctx,
                                     ipaddress_entry->ia_address_len,
-                                    (char *) ipaddress_entry->ia_address,
+                                    ipaddress_entry->ia_address,
                                     ipaddress_entry->ia_address_len))) {
         if (CONTAINER_INSERT(container, rowreq_ctx) < 0) {
             DEBUGMSGTL (("ipAddressTable:access","container insert failed for new entry\n"));
@@ -379,7 +380,7 @@
             /*
              * get from delete list
              */
-            tmp_ctx = CONTAINER_FIRST(tmp_container);
+            tmp_ctx = (ipAddressTable_rowreq_ctx*)CONTAINER_FIRST(tmp_container);
 
             /*
              * release context, delete from table container
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
index e24e46f..98c3ad0 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
@@ -184,7 +184,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPADDRESSTABLE_MIN_COL;
     tbl_info->max_column = IPADDRESSTABLE_MAX_COL;
@@ -640,7 +640,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -759,7 +759,7 @@
                                   netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_object_lookup", "called\n"));
@@ -934,7 +934,7 @@
                                netsnmp_agent_request_info *agtreq_info,
                                netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1292,7 +1292,7 @@
                                   netsnmp_agent_request_info *agtreq_info,
                                   netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1339,7 +1339,7 @@
                                        netsnmp_request_info *requests)
 {
     int             rc;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_check_dependencies", "called\n"));
 
@@ -1438,7 +1438,7 @@
                                netsnmp_request_info *requests)
 {
     int             rc;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_undo_setup",
@@ -1503,7 +1503,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1622,7 +1622,7 @@
                                netsnmp_agent_request_info *agtreq_info,
                                netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1670,7 +1670,7 @@
                            netsnmp_request_info *requests)
 {
     int             rc;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_commit",
@@ -1704,7 +1704,7 @@
                                 netsnmp_request_info *requests)
 {
     int             rc;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_undo_commit",
@@ -1812,7 +1812,7 @@
                                 netsnmp_request_info *requests)
 {
     int             rc;
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1867,7 +1867,7 @@
                                         *agtreq_info,
                                         netsnmp_request_info *requests)
 {
-    ipAddressTable_rowreq_ctx *rowreq_ctx =
+    ipAddressTable_rowreq_ctx *rowreq_ctx = (ipAddressTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipAddressTable:_mfd_ipAddressTable_irreversible:commit", "called\n"));
@@ -2063,7 +2063,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx = CONTAINER_FIND(ipAddressTable_if_ctx.container, &oid_idx);
+    rowreq_ctx = (ipAddressTable_rowreq_ctx*)CONTAINER_FIND(ipAddressTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
index 7da7ba0..52ca44f 100644
--- a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
@@ -153,7 +153,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPDEFAULTROUTERTABLE_MIN_COL;
     tbl_info->max_column = IPDEFAULTROUTERTABLE_MAX_COL;
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
index 50a6af8..7919dea 100644
--- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
@@ -124,8 +124,10 @@
      */
     *container_ptr_ptr =
         netsnmp_container_find("ipIfStatsTable:table_container");
-    if (NULL != *container_ptr_ptr)
+    if (NULL != *container_ptr_ptr) {
+        (*container_ptr_ptr)->container_name = strdup("ipIfStatsTable");
         ipIfStatsTable_container_load(*container_ptr_ptr);
+    }
     if (NULL == cache) {
         snmp_log(LOG_ERR,
                  "bad cache param to ipIfStatsTable_container_init\n");
@@ -160,7 +162,7 @@
     /*
      * check for matching entry. works because indexes are the same.
      */
-    ifstats_entry = CONTAINER_FIND(stats, rowreq_ctx->data);
+    ifstats_entry = (netsnmp_systemstats_entry*)CONTAINER_FIND(stats, rowreq_ctx->data);
     if (NULL == ifstats_entry) {
         DEBUGMSGTL(("ipIfStatsTable:access",
                     "updating missing entry\n"));
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
index d415a83..3fd1d09 100644
--- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
@@ -163,7 +163,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPIFSTATSTABLE_MIN_COL;
     tbl_info->max_column = IPIFSTATSTABLE_MAX_COL;
@@ -592,7 +592,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    ipIfStatsTable_rowreq_ctx *rowreq_ctx =
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -639,7 +639,7 @@
                                   netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ipIfStatsTable_rowreq_ctx *rowreq_ctx =
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_object_lookup", "called\n"));
@@ -1143,7 +1143,7 @@
                                netsnmp_agent_request_info *agtreq_info,
                                netsnmp_request_info *requests)
 {
-    ipIfStatsTable_rowreq_ctx *rowreq_ctx =
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1389,7 +1389,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx = CONTAINER_FIND(ipIfStatsTable_if_ctx.container, &oid_idx);
+    rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)CONTAINER_FIND(ipIfStatsTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
index a9027ae..300ed7a 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
@@ -119,6 +119,8 @@
 
 
     *container_ptr_ptr = netsnmp_container_find("ipSystemStatsTable:table_container");
+    if (NULL != *container_ptr_ptr)
+        (*container_ptr_ptr)->container_name = strdup("ipSystemStatsTable");
 
     if (NULL == cache) {
         snmp_log(LOG_ERR,
@@ -156,7 +158,7 @@
     /*
      * check for matching entry. works because indexes are the same.
      */
-    netsnmp_systemstats_entry *systemstats_entry =
+    netsnmp_systemstats_entry *systemstats_entry = (netsnmp_systemstats_entry*)
         CONTAINER_FIND(stats, rowreq_ctx->data);
     if (NULL == systemstats_entry) {
         DEBUGMSGTL(("ipSystemStatsTable:access",
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
index 089812c..097cebb 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
@@ -149,7 +149,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPSYSTEMSTATSTABLE_MIN_COL;
     tbl_info->max_column = IPSYSTEMSTATSTABLE_MAX_COL;
@@ -548,7 +548,7 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    ipSystemStatsTable_rowreq_ctx *rowreq_ctx =
+    ipSystemStatsTable_rowreq_ctx *rowreq_ctx = (ipSystemStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -594,7 +594,7 @@
                                       netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ipSystemStatsTable_rowreq_ctx *rowreq_ctx =
+    ipSystemStatsTable_rowreq_ctx *rowreq_ctx = (ipSystemStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipSystemStatsTable:_mfd_ipSystemStatsTable_object_lookup", "called\n"));
@@ -1106,7 +1106,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    ipSystemStatsTable_rowreq_ctx *rowreq_ctx =
+    ipSystemStatsTable_rowreq_ctx *rowreq_ctx = (ipSystemStatsTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1361,7 +1361,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (ipSystemStatsTable_rowreq_ctx*)
         CONTAINER_FIND(ipSystemStatsTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/ip-mib/ip_scalars.c b/agent/mibgroup/ip-mib/ip_scalars.c
index d9ab529..78021a9 100644
--- a/agent/mibgroup/ip-mib/ip_scalars.c
+++ b/agent/mibgroup/ip-mib/ip_scalars.c
@@ -300,7 +300,7 @@
                           netsnmp_agent_request_info   *reqinfo,
                           netsnmp_request_info         *requests)
 {
-    u_long   value;
+    long   value;
 
     /* We are never called for a GETNEXT if it's registered as a
        "instance", as it's "magically" handled for us.  */
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
index 41e791f..8123908 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
@@ -39,6 +39,7 @@
      *********************************************************************
      * function declarations
      */
+    void            initialize_table_ipv4InterfaceTable(void);
     void            init_ipv4InterfaceTable(void);
     void            shutdown_ipv4InterfaceTable(void);
 
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c
index 84a98ff..c9e14ff 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c
@@ -138,7 +138,7 @@
              * yes.
              */
             DEBUGMSGTL(("ipv4InterfaceTable:check_entry_for_updates",
-                        "inserted row for %d\n", entry->index));
+                        "inserted row for %" NETSNMP_PRIo "d\n", entry->index));
             CONTAINER_INSERT(c, ift_rrc);
             changed = 1;
         }
@@ -152,7 +152,7 @@
              * no
              */
             DEBUGMSGTL(("ipv4InterfaceTable:check_entry_for_updates",
-                        "removed  row for %d\n",
+                        "removed  row for %" NETSNMP_PRIo "d\n",
                         ift_rrc->data.ifentry->index));
             CONTAINER_REMOVE(c, ift_rrc);
             changed = 1;
@@ -164,7 +164,7 @@
                  ift_rrc->data.ifentry->retransmit_v4) ||
                 (entry->reasm_max_v4 != ift_rrc->data.ifentry->reasm_max_v4)) {
                 DEBUGMSGTL(("ipv4InterfaceTable:check_entry_for_updates",
-                            "row changed for %d\n",
+                            "row changed for %" NETSNMP_PRIo "d\n",
                             ift_rrc->data.ifentry->index));
                 changed = 1;
             }
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
index 6f1aa49..f1e7844 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
@@ -44,6 +44,8 @@
 
 #include "ipv4InterfaceTable_interface.h"
 
+#include "if-mib/ifTable/ifTable.h"
+
 #include <ctype.h>
 
 /**********************************************************************
@@ -194,7 +196,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPV4INTERFACETABLE_MIN_COL;
     tbl_info->max_column = IPV4INTERFACETABLE_MAX_COL;
@@ -447,8 +449,6 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    ipv4InterfaceTable_rowreq_ctx *rowreq_ctx =
-        netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
     DEBUGMSGTL(("internal:ipv4InterfaceTable:_mfd_ipv4InterfaceTable_post_request", "called\n"));
@@ -1270,6 +1270,7 @@
                  "ipv4InterfaceTable_container_init\n");
         return;
     }
+    if_ctx->container->container_name = strdup("ipv4InterfaceTable");
 
 }                               /* _ipv4InterfaceTable_container_init */
 
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
index a260732..e2a87a1 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
@@ -39,6 +39,7 @@
      *********************************************************************
      * function declarations
      */
+    void            initialize_table_ipv6InterfaceTable(void);
     void            init_ipv6InterfaceTable(void);
     void            shutdown_ipv6InterfaceTable(void);
 
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.c b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.c
index b1408fd..33c65a9 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.c
@@ -138,7 +138,7 @@
              * yes.
              */
             DEBUGMSGTL(("ipv6InterfaceTable:check_entry_for_updates",
-                        "inserted row for index %d\n", entry->index));
+                        "inserted row for index %" NETSNMP_PRIo "d\n", entry->index));
             CONTAINER_INSERT(c, ift_rrc);
             changed = 1;
         }
@@ -152,7 +152,7 @@
              * no
              */
             DEBUGMSGTL(("ipv6InterfaceTable:check_entry_for_updates",
-                        "removed  row for index %d\n",
+                        "removed  row for index %" NETSNMP_PRIo "d\n",
                         ift_rrc->data.ifentry->index));
             CONTAINER_REMOVE(c, ift_rrc);
             changed = 1;
@@ -190,7 +190,7 @@
                     && (entry->forwarding_v6 !=
                         ift_rrc->data.ifentry->forwarding_v6))) {
                 DEBUGMSGTL(("ipv6InterfaceTable:check_entry_for_updates",
-                            "row changed for index %d\n",
+                            "row changed for index %" NETSNMP_PRIo "d\n",
                             ift_rrc->data.ifentry->index));
                 changed = 1;
             }
@@ -329,7 +329,7 @@
         ++count;
     }
 
-    DEBUGMSGT(("verbose:ipv6InterfaceTable:ipv6InterfaceTable_container_load", "inserted %d records\n", count));
+    DEBUGMSGT(("verbose:ipv6InterfaceTable:ipv6InterfaceTable_container_load", "inserted %d records\n", (int)count));
 
     return MFD_SUCCESS;
 }                               /* ipv6InterfaceTable_container_load */
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.h b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.h
index 41d7157..664c3d7 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.h
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access.h
@@ -35,26 +35,14 @@
      */
 
 
-    int
-     
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        ipv6InterfaceTable_init_data(ipv6InterfaceTable_registration *
-                                     ipv6InterfaceTable_reg);
+    int             ipv6InterfaceTable_init_data(ipv6InterfaceTable_registration *
+                                                 ipv6InterfaceTable_reg);
 
 
+    void            ipv6InterfaceTable_check_entry_for_updates(
+                            const ifTable_rowreq_ctx * ift_rrc,
+			    netsnmp_interface_entry *entry);
+
     void            ipv6InterfaceTable_container_init(netsnmp_container
                                                       **container_ptr_ptr);
     void            ipv6InterfaceTable_container_shutdown(netsnmp_container
@@ -65,24 +53,8 @@
     void            ipv6InterfaceTable_container_free(netsnmp_container
                                                       *container);
 
-    int
-     
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        ipv6InterfaceTable_row_prep(ipv6InterfaceTable_rowreq_ctx *
-                                    rowreq_ctx);
+    int             ipv6InterfaceTable_row_prep(ipv6InterfaceTable_rowreq_ctx *
+                                                rowreq_ctx);
 
 
 
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
index 4202616..aa8fc3f 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
@@ -194,7 +194,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPV6INTERFACETABLE_MIN_COL;
     tbl_info->max_column = IPV6INTERFACETABLE_MAX_COL;
@@ -1352,7 +1352,7 @@
                  "ipv6InterfaceTable_container_init\n");
         return;
     }
-
+    if_ctx->container->container_name = strdup("ipv6InterfaceTable");
 }                               /* _ipv6InterfaceTable_container_init */
 
 /**
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
index 40769ad..a6e952e 100644
--- a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
@@ -153,7 +153,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = IPV6SCOPEZONEINDEXTABLE_MIN_COL;
     tbl_info->max_column = IPV6SCOPEZONEINDEXTABLE_MAX_COL;
@@ -552,7 +552,7 @@
                                           *agtreq_info,
                                           netsnmp_request_info *requests)
 {
-    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx =
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -651,7 +651,7 @@
                                            netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx =
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_object_lookup", "called\n"));
@@ -869,7 +869,7 @@
                                         *agtreq_info,
                                         netsnmp_request_info *requests)
 {
-    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx =
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1021,10 +1021,14 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     ipv6ScopeZoneIndexTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find
             ("ipv6ScopeZoneIndexTable:table_container");
+        if (if_ctx->container)
+            if_ctx->container->container_name =
+                 strdup("ipv6ScopeZoneIndexTable");
+    }
     if (NULL == if_ctx->container) {
         snmp_log(LOG_ERR, "error creating container in "
                  "ipv6ScopeZoneIndexTable_container_init\n");
@@ -1075,7 +1079,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
         CONTAINER_FIND(ipv6ScopeZoneIndexTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/kernel_sunos5.c b/agent/mibgroup/kernel_sunos5.c
index 3b915c6..ca3c809 100644
--- a/agent/mibgroup/kernel_sunos5.c
+++ b/agent/mibgroup/kernel_sunos5.c
@@ -240,7 +240,7 @@
 
     for (i = 0; i < MIBCACHE_SIZE; i++) {
 	DEBUGMSGTL(("kernel_sunos5", "cache[%d] time %ld ttl %d\n", i,
-		    Mibcache[i].cache_time, Mibcache[i].cache_ttl));
+		    Mibcache[i].cache_time, (int)Mibcache[i].cache_ttl));
 	if (Mibcache[i].cache_time < period) {
 	    Mibcache[i].cache_time = 0;
 	} else {
@@ -375,7 +375,7 @@
     kstat_t        *ks, *kstat_data;
     kstat_named_t  *d;
     uint_t          i;
-    int             instance;
+    int             instance = 0;
     char            module_name[64];
     int             ret;
     u_longlong_t    val;    /* The largest value */
@@ -482,11 +482,11 @@
 		break;
 	    case KSTAT_DATA_INT64:
 		*(int64_t *)v = d->value.i64;
-		DEBUGMSGTL(("kernel_sunos5", "value: %ld\n", d->value.i64));
+		DEBUGMSGTL(("kernel_sunos5", "value: %ld\n", (long)d->value.i64));
 		break;
 	    case KSTAT_DATA_UINT64:
 		*(uint64_t *)v = d->value.ui64;
-		DEBUGMSGTL(("kernel_sunos5", "value: %lu\n", d->value.ui64));
+		DEBUGMSGTL(("kernel_sunos5", "value: %lu\n", (unsigned long)d->value.ui64));
 		break;
 #else
 	    case KSTAT_DATA_LONG:
@@ -539,7 +539,7 @@
     kstat_ctl_t    *ksc;
     kstat_t        *ks, *kstat_data;
     kstat_named_t  *d;
-    size_t          i, instance;
+    size_t          i, instance = 0;
     char            module_name[64];
     int             ret;
 
@@ -664,7 +664,7 @@
      */
 
     DEBUGMSGTL(("kernel_sunos5", "getMibstat (%d, *, %d, %d, *, *)\n",
-		grid, entrysize, req_type));
+		grid, (int)entrysize, req_type));
     cachep = &Mibcache[grid];
     mibgr = Mibmap[grid].group;
     mibtb = Mibmap[grid].table;
@@ -682,7 +682,7 @@
     cache_valid = (cachep->cache_time > 0);
 
     DEBUGMSGTL(("kernel_sunos5","... cache_valid %d time %ld ttl %d now %ld\n",
-		cache_valid, cachep->cache_time, cachep->cache_ttl,
+		cache_valid, cachep->cache_time, (int)cachep->cache_ttl,
 		time(NULL)));
     if (cache_valid) {
 	/*
@@ -789,7 +789,7 @@
          */
         DEBUGMSGTL(("kernel_sunos5", 
             "bad cache length %d - not multiple of entry size %d\n", 
-            len, entrysize));
+            (int)len, (int)entrysize));
         return NOT_FOUND;
     }
 
@@ -1043,7 +1043,7 @@
 	    }
 	} while (rc == MOREDATA && result != FOUND);
 
-	DEBUGMSGTL(("kernel_sunos5", "...... getmib buffer size is %d\n", *size));
+	DEBUGMSGTL(("kernel_sunos5", "...... getmib buffer size is %d\n", (int)*size));
 
 	if (result == FOUND) {      /* Search is successful */
 	    if (rc != MOREDATA) {
@@ -1184,7 +1184,7 @@
         return (errp->dl_errno);
     }
     default:
-        DEBUGMSGTL(("kernel_sunos5:dlpi", "got type: %x\n", dlp->dl_primitive));
+        DEBUGMSGTL(("kernel_sunos5:dlpi", "got type: %x\n", (unsigned)dlp->dl_primitive));
         return (-1);
     }
 }
@@ -1230,7 +1230,7 @@
             return (-1); 
 
         DEBUGMSGTL(("kernel_sunos5:dlpi", "dl_mac_type: %x\n",
-	           info->dl_mac_type));
+	           (unsigned)info->dl_mac_type));
 	switch (info->dl_mac_type) {
 	case DL_CSMACD:
 	case DL_ETHER:
@@ -1295,15 +1295,15 @@
         dl_error_ack_t *errp = (dl_error_ack_t *)buf;
 
         DEBUGMSGTL(("kernel_sunos5:dlpi",
-                    "got DL_ERROR_ACK: dlpi %d, error %d\n", errp->dl_errno,
-                    errp->dl_unix_errno));
+                    "got DL_ERROR_ACK: dlpi %ld, error %ld\n",
+		    (long)errp->dl_errno, (long)errp->dl_unix_errno));
 
         if (ctlbuf.len < DL_ERROR_ACK_SIZE)
             return (-1);
         return (errp->dl_errno);
     }
     default:
-        DEBUGMSGTL(("kernel_sunos5:dlpi", "got type %x\n", dlp->dl_primitive));
+        DEBUGMSGTL(("kernel_sunos5:dlpi", "got type %x\n", (unsigned)dlp->dl_primitive));
         return (-1);
     }
 }
@@ -1346,7 +1346,7 @@
     int m = 1;
     int i = strlen(devname) - 1;
 
-    while (i >= 0 && isdigit(devname[i])) {
+    while (i >= 0 && isdigit(devname[i] & 0xFF)) {
         ppa += m * (devname[i] - '0'); 
         m *= 10;
         i--;
diff --git a/agent/mibgroup/mibII.h b/agent/mibgroup/mibII.h
index 1b21057..1b94a59 100644
--- a/agent/mibgroup/mibII.h
+++ b/agent/mibgroup/mibII.h
@@ -15,7 +15,7 @@
 config_require(mibII/setSerialNo)
 
 /* mibII/ipv6 is activated via --enable-ipv6 and only builds on Linux+*BSD */
-#if defined(NETSNMP_ENABLE_IPV6) && (defined(linux) || defined(freebsd3) || defined(netbsd1) || defined(openbsd))
+#if defined(NETSNMP_ENABLE_IPV6) && (defined(linux) || defined(freebsd3) || defined(netbsd1) || defined(openbsd4)) 
 config_require(mibII/ipv6)
 #endif
 
@@ -29,6 +29,14 @@
  */
 #if defined( linux )
 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)
+config_require(tcp-mib udp-mib)
+#elif defined(netbsd1)
+config_require(tcp-mib udp-mib)
 #endif
 
 /*
diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c
index ebe4a03..e968074 100644
--- a/agent/mibgroup/mibII/at.c
+++ b/agent/mibgroup/mibII/at.c
@@ -31,11 +31,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# if defined (WIN32) || defined (cygwin)
-#  include <sys/timeb.h>
-# else
 # include <sys/time.h>
-# endif
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -89,9 +85,6 @@
 #ifdef solaris2
 #include "kernel_sunos5.h"
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #ifdef hpux11
 #include <sys/mib.h>
@@ -360,7 +353,8 @@
                                     mp->ipNetToMediaIfIndex.o_length);
 #endif
     DEBUGMSGTL(("mibII/at", "......... AT_Cmp %lx<>%lx %d<>%d (%.5s)\n",
-                mp->ipNetToMediaNetAddress, ((if_ip_t *) addr)->ipAddr,
+                (unsigned long)mp->ipNetToMediaNetAddress,
+                (unsigned long)((if_ip_t *) addr)->ipAddr,
                 ((if_ip_t *) addr)->ifIdx, index,
                 mp->ipNetToMediaIfIndex.o_bytes));
     if (mp->ipNetToMediaNetAddress != ((if_ip_t *) addr)->ipAddr)
@@ -396,7 +390,7 @@
     static mib2_ipNetToMediaEntry_t Lowentry;
     int             Found = 0;
     req_e           req_type;
-    int             offset, olength;
+    int             offset, olength = 0;
     static in_addr_t      addr_ret;
 
     /*
@@ -638,7 +632,7 @@
     i = 0;
     while (fgets(line, sizeof(line), in)) {
         u_long          tmp_a;
-        int             tmp_flags;
+        unsigned int    tmp_flags;
         if (i >= arptab_curr_max_size) {
             struct arptab  *newtab = (struct arptab *)
                 realloc(at, (sizeof(struct arptab) *
@@ -862,7 +856,7 @@
 }
 #endif                          /* solaris2 */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
 extern WriteMethod write_arp;
@@ -896,6 +890,7 @@
     DWORD           status = NO_ERROR;
     DWORD           dwActualSize = 0;
     UINT            i;
+    int             j;
     u_char          dest_addr[4];
     void           *result = NULL;
     static in_addr_t	addr_ret;
@@ -919,6 +914,7 @@
             status = GetIpNetTable(pIpNetTable, &dwActualSize, TRUE);
     }
 
+    i = -1;
 
     if (status == NO_ERROR) {
         for (i = 0; i < pIpNetTable->dwNumEntries; ++i) {
@@ -973,16 +969,16 @@
             arp_row->dwIndex = name[10];
 
             if (*length == 15) {        /* ipNetToMediaTable */
-                i = 11;
+                j = 11;
             } else {            /* at Table */
 
-                i = 12;
+                j = 12;
             }
 
-            dest_addr[0] = (u_char) name[i];
-            dest_addr[1] = (u_char) name[i + 1];
-            dest_addr[2] = (u_char) name[i + 2];
-            dest_addr[3] = (u_char) name[i + 3];
+            dest_addr[0] = (u_char) name[j];
+            dest_addr[1] = (u_char) name[j + 1];
+            dest_addr[2] = (u_char) name[j + 2];
+            dest_addr[3] = (u_char) name[j + 3];
             arp_row->dwAddr = *((DWORD *) dest_addr);
 
             arp_row->dwType = 4;        /* Static */
@@ -995,6 +991,7 @@
     memcpy((char *) name, (char *) lowest, oid_length * sizeof(oid));
     *length = oid_length;
     *write_method = write_arp;
+    netsnmp_assert(0 <= i && i < pIpNetTable->dwNumEntries);
     *arp_row = pIpNetTable->table[i];
 
     switch (vp->magic) {
diff --git a/agent/mibgroup/mibII/icmp.c b/agent/mibgroup/mibII/icmp.c
index e43380a..760b1a4 100644
--- a/agent/mibgroup/mibII/icmp.c
+++ b/agent/mibgroup/mibII/icmp.c
@@ -38,14 +38,17 @@
 #endif
 
 /* redefine ICMP6 message types from glibc < 2.4 to newer names */
-#ifdef ICMP6_MEMBERSHIP_QUERY
+#ifndef MLD_LISTENER_QUERY
 #define MLD_LISTENER_QUERY ICMP6_MEMBERSHIP_QUERY
 #define MLD_LISTENER_REPORT ICMP6_MEMBERSHIP_REPORT
 #define MLD_LISTENER_REDUCTION ICMP6_MEMBERSHIP_REDUCTION
 #endif /* ICMP6_MEMBERSHIP_QUERY */
 
 
-#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
+#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && !defined(FIRST_PROTOCOL)
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #ifdef FIRST_PROTOCOL
 perfstat_protocol_t ps_proto;
@@ -170,8 +173,10 @@
 {
     struct icmp_mib 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;
 
     memset(&icmp_msg_stats_table, 0, sizeof(icmp_msg_stats_table));
@@ -382,7 +387,7 @@
                      netsnmp_variable_list *index,
                      netsnmp_iterator_info *data)
 {
-	int i = (int)(*loop_context);
+	int i = (int)(intptr_t)(*loop_context);
 	netsnmp_variable_list *idx = index;
 
 	if(i > 1)
@@ -398,7 +403,7 @@
 
 	*data_context = &icmp_stats_table[i];
 
-	*loop_context = (void *)(++i);
+	*loop_context = (void *)(intptr_t)(++i);
 	
 	return index;
 }
@@ -422,7 +427,7 @@
                           netsnmp_variable_list *index,
                           netsnmp_iterator_info *data)
 {
-    int i = (int)(*loop_context);
+    int i = (int)(intptr_t)(*loop_context);
     netsnmp_variable_list *idx = index;
 
     if(i >= ICMP_MSG_STATS_IPV4_COUNT + ICMP_MSG_STATS_IPV6_COUNT)
@@ -440,7 +445,7 @@
             sizeof(uint32_t));
 
     *data_context = &icmp_msg_stats_table[i];
-    *loop_context = (void *)(++i);
+    *loop_context = (void *)(intptr_t)(++i);
 
     return index;
 }
@@ -452,7 +457,7 @@
                            netsnmp_variable_list *index,
                            netsnmp_iterator_info *data)
 {
-    *loop_context = 0;
+    *loop_context = NULL;
     *data_context = NULL;
     return icmp_msg_stats_next_entry(loop_context, data_context, index, data);
 }
@@ -629,7 +634,7 @@
 #undef ICMP_NSTATS
 #endif
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define ICMP_STAT_STRUCTURE MIB_ICMP
 #endif
diff --git a/agent/mibgroup/mibII/interfaces.c b/agent/mibgroup/mibII/interfaces.c
index 32883f3..467657a 100644
--- a/agent/mibgroup/mibII/interfaces.c
+++ b/agent/mibgroup/mibII/interfaces.c
@@ -37,9 +37,6 @@
 #include <sys/param.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && defined(NETSNMP_IFNET_NEEDS_KERNEL_LATE)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
@@ -57,11 +54,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-# if defined (WIN32) || defined (cygwin)
-#  include <sys/timeb.h>
-# else
 # include <sys/time.h>
-# endif
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -204,13 +197,13 @@
 #include "struct.h"
 #include "util_funcs/header_generic.h"
 
-/* if you want caching enabled for speed retrival purposes, set this to 5?*/
+/* if you want caching enabled for speed retrieval purposes, set this to 5?*/
 #define MINLOADFREQ 0                     /* min reload frequency in seconds */
 #ifdef linux
 static unsigned long LastLoad = 0;        /* ET in secs at last table load */
 #endif
 
-extern struct timeval starttime;
+#define starttime (*(const struct timeval*)netsnmp_get_agent_starttime())
 
 struct variable3 interfaces_variables[] = {
     {NETSNMP_IFNUMBER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
@@ -840,7 +833,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFPHYSADDRESS:
         Interface_Get_Ether_By_Index(interface, return_buf);
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 	*var_len = 0;
 #else
         if ((return_buf[0] == 0) && (return_buf[1] == 0) &&
@@ -889,7 +882,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFINOCTETS:
 #ifdef HAVE_STRUCT_IFNET_IF_IBYTES
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_ibytes & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_ibytes;
@@ -903,13 +896,13 @@
         return (u_char *) & long_return;
     case NETSNMP_IFINUCASTPKTS:
         {
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
             long_return = (u_long) ifnet.if_ipackets & 0xffffffff;
 #else
             long_return = (u_long) ifnet.if_ipackets;
 #endif
 #if HAVE_STRUCT_IFNET_IF_IMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
             long_return -= (u_long) ifnet.if_imcasts & 0xffffffff;
 #else
             long_return -= (u_long) ifnet.if_imcasts;
@@ -919,7 +912,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFINNUCASTPKTS:
 #if HAVE_STRUCT_IFNET_IF_IMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_imcasts & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_imcasts;
@@ -933,7 +926,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFINDISCARDS:
 #if HAVE_STRUCT_IFNET_IF_IQDROPS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_iqdrops & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_iqdrops;
@@ -946,7 +939,7 @@
 #endif
         return (u_char *) & long_return;
     case NETSNMP_IFINERRORS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_ierrors & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_ierrors;
@@ -954,7 +947,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFINUNKNOWNPROTOS:
 #if HAVE_STRUCT_IFNET_IF_NOPROTO
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_noproto & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_noproto;
@@ -968,7 +961,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFOUTOCTETS:
 #ifdef HAVE_STRUCT_IFNET_IF_OBYTES
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_obytes & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_obytes;
@@ -982,13 +975,13 @@
         return (u_char *) & long_return;
     case NETSNMP_IFOUTUCASTPKTS:
         {
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
             long_return = (u_long) ifnet.if_opackets & 0xffffffff;
 #else
             long_return = (u_long) ifnet.if_opackets;
 #endif
 #if HAVE_STRUCT_IFNET_IF_OMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
             long_return -= (u_long) ifnet.if_omcasts & 0xffffffff;
 #else
             long_return -= (u_long) ifnet.if_omcasts;
@@ -998,7 +991,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFOUTNUCASTPKTS:
 #if HAVE_STRUCT_IFNET_IF_OMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = (u_long) ifnet.if_omcasts & 0xffffffff;
 #else
         long_return = (u_long) ifnet.if_omcasts;
@@ -1011,21 +1004,21 @@
 #endif
         return (u_char *) & long_return;
     case NETSNMP_IFOUTDISCARDS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = ifnet.if_snd.ifq_drops & 0xffffffff;
 #else
         long_return = ifnet.if_snd.ifq_drops;
 #endif
         return (u_char *) & long_return;
     case NETSNMP_IFOUTERRORS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = ifnet.if_oerrors & 0xffffffff;
 #else
         long_return = ifnet.if_oerrors;
 #endif
         return (u_char *) & long_return;
     case NETSNMP_IFOUTQLEN:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
         long_return = ifnet.if_snd.ifq_len & 0xffffffff;
 #else
         long_return = ifnet.if_snd.ifq_len;
@@ -1562,7 +1555,7 @@
      */
     if (!(devin = fopen("/proc/net/dev", "r"))) {
         close(fd);
-        snmp_log(LOG_ERR, "cannot open /proc/net/dev - continuing...\n");
+        NETSNMP_LOGONCE((LOG_ERR, "cannot open /proc/net/dev.\n"));
         return; /** exit (1); **/
     }
 
@@ -2657,7 +2650,7 @@
 #endif                          /* HAVE_NET_IF_MIB_H */
 #endif                          /* !USE_SYSCTL_IFLIST */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
 WriteMethod     writeIfEntry;
@@ -2794,7 +2787,7 @@
         return (u_char *) & long_return;
     case NETSNMP_IFSPEED:
         if (if_ptr)
-            long_return = if_ptr->speed;
+            long_return = (long) if_ptr->speed;
         else
         long_return = (long) ifRow.dwSpeed;
         return (u_char *) & long_return;
diff --git a/agent/mibgroup/mibII/ip.c b/agent/mibgroup/mibII/ip.c
index 1401bd1..2482a91 100644
--- a/agent/mibgroup/mibII/ip.c
+++ b/agent/mibgroup/mibII/ip.c
@@ -33,7 +33,10 @@
 #define IP_STATS_CACHE_TIMEOUT	MIB_STATS_CACHE_TIMEOUT
 #endif
 
-#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
+#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && !defined(FIRST_PROTOCOL)
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #ifdef FIRST_PROTOCOL
 perfstat_protocol_t ps_proto;
@@ -234,7 +237,7 @@
 #undef IP_NSTATS
 #endif
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define IP_STAT_STRUCTURE MIB_IPSTATS
 long            ipForwarding;
diff --git a/agent/mibgroup/mibII/ipAddr.c b/agent/mibgroup/mibII/ipAddr.c
index 4199392..3326626 100644
--- a/agent/mibgroup/mibII/ipAddr.c
+++ b/agent/mibgroup/mibII/ipAddr.c
@@ -39,9 +39,6 @@
 #include <strings.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SYSCTL_H
 #ifdef _I_DEFINED_KERNEL
 #undef _KERNEL
@@ -959,7 +956,7 @@
 
 #endif                          /* NETSNMP_CAN_USE_SYSCTL && IPCTL_STATS */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 u_char         *
 var_ipAddrEntry(struct variable *vp,
diff --git a/agent/mibgroup/mibII/ipCidrRouteTable.c b/agent/mibgroup/mibII/ipCidrRouteTable.c
index 81e6259..099e39f 100644
--- a/agent/mibgroup/mibII/ipCidrRouteTable.c
+++ b/agent/mibgroup/mibII/ipCidrRouteTable.c
@@ -73,7 +73,7 @@
                                      0);
 
     /** Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     table_info->min_column = 1;
     table_info->max_column = 16;
 
diff --git a/agent/mibgroup/mibII/ipv6.c b/agent/mibgroup/mibII/ipv6.c
index 5941cb0..33a3db7 100644
--- a/agent/mibgroup/mibII/ipv6.c
+++ b/agent/mibgroup/mibII/ipv6.c
@@ -2082,7 +2082,7 @@
         p = if_getname(interface);
         if (p) {
             *var_len = strlen(p);
-            return p;
+            return (u_char *) p;
         }
         break;
     case IPV6IFLOWLAYER:
diff --git a/agent/mibgroup/mibII/mibII_common.h b/agent/mibgroup/mibII/mibII_common.h
index c7499d3..160ab82 100644
--- a/agent/mibgroup/mibII/mibII_common.h
+++ b/agent/mibgroup/mibII/mibII_common.h
@@ -11,9 +11,6 @@
 #include <strings.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
diff --git a/agent/mibgroup/mibII/route_headers.h b/agent/mibgroup/mibII/route_headers.h
index bf7e806..eace2e2 100644
--- a/agent/mibgroup/mibII/route_headers.h
+++ b/agent/mibgroup/mibII/route_headers.h
@@ -40,11 +40,7 @@
 #include <sys/socket.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# if defined (WIN32) || defined (cygwin)
-#  include <sys/timeb.h>
-# else
 # include <sys/time.h>
-# endif
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -149,10 +145,6 @@
 #endif
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #if HAVE_NLIST_H
 #include <nlist.h>
 #endif
diff --git a/agent/mibgroup/mibII/route_write.c b/agent/mibgroup/mibII/route_write.c
index 3e2799e..5820ee1 100644
--- a/agent/mibgroup/mibII/route_write.c
+++ b/agent/mibgroup/mibII/route_write.c
@@ -60,10 +60,6 @@
 #include <stdlib.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -597,7 +593,7 @@
     return SNMP_ERR_NOERROR;
 }
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
 extern PMIB_IPFORWARDROW route_row;
diff --git a/agent/mibgroup/mibII/snmp_mib_5_5.c b/agent/mibgroup/mibII/snmp_mib_5_5.c
index 161e65d..2efffeb 100644
--- a/agent/mibgroup/mibII/snmp_mib_5_5.c
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.c
@@ -3,7 +3,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
 
-#include <utilities/snmp_get_statistic.h>
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 #include "snmp_mib_5_5.h"
 #include "updates.h"
diff --git a/agent/mibgroup/mibII/snmp_mib_5_5.h b/agent/mibgroup/mibII/snmp_mib_5_5.h
index b3e452b..2e56103 100644
--- a/agent/mibgroup/mibII/snmp_mib_5_5.h
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.h
@@ -1,5 +1,4 @@
 config_require(mibII/updates)
-config_require(utilities/snmp_get_statistic)
 config_exclude(mibII/snmp_mib)
 
 void            init_snmp_mib_5_5(void);
diff --git a/agent/mibgroup/mibII/sysORTable.c b/agent/mibgroup/mibII/sysORTable.c
index 941d53d..567478a 100644
--- a/agent/mibgroup/mibII/sysORTable.c
+++ b/agent/mibgroup/mibII/sysORTable.c
@@ -52,9 +52,9 @@
 	    else
 		++sysORNextIndex;
 
-	    for (value = it->curr(it);
+	    for (value = (sysORTable_entry*)it->curr(it);
 		 value && value->sysORIndex < cur;
-		 value = ITERATOR_NEXT(it)) {
+		 value = (sysORTable_entry*)ITERATOR_NEXT(it)) {
 	    }
 
 	    if (value && value->sysORIndex == cur) {
@@ -101,7 +101,7 @@
                 "unregister_cb(%d, %d, %p, %p)\n", major, minor, serv, client));
     sysORLastChange = ((struct sysORTable*)(serv))->OR_uptime;
 
-    while ((value = ITERATOR_NEXT(it)) && value->data != serv);
+    while ((value = (sysORTable_entry*)ITERATOR_NEXT(it)) && value->data != serv);
     ITERATOR_RELEASE(it);
     if(value) {
 	CONTAINER_REMOVE(table, value);
@@ -215,6 +215,7 @@
         CONTAINER_FREE(table);
         return;
     }
+    table->container_name = strdup("sysORTable");
 
     netsnmp_table_helper_add_indexes(sysORTable_table_info,
                                      ASN_INTEGER, /** index: sysORIndex */
diff --git a/agent/mibgroup/mibII/system_mib.c b/agent/mibgroup/mibII/system_mib.c
index 532ea22..9b5bf56 100644
--- a/agent/mibgroup/mibII/system_mib.c
+++ b/agent/mibgroup/mibII/system_mib.c
@@ -27,9 +27,6 @@
 #include <strings.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_UTSNAME_H
 #include <utsname.h>
diff --git a/agent/mibgroup/mibII/tcp.c b/agent/mibgroup/mibII/tcp.c
index d95cb94..2be9481 100644
--- a/agent/mibgroup/mibII/tcp.c
+++ b/agent/mibgroup/mibII/tcp.c
@@ -62,7 +62,10 @@
 #define TCP_STATS_CACHE_TIMEOUT	MIB_STATS_CACHE_TIMEOUT
 #endif
 
-#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
+#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && !defined(FIRST_PROTOCOL)
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #ifdef FIRST_PROTOCOL
 perfstat_protocol_t ps_proto;
@@ -176,7 +179,7 @@
 #undef TCP_NSTATS
 #endif
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define TCP_STAT_STRUCTURE     MIB_TCPSTATS
 #endif
diff --git a/agent/mibgroup/mibII/tcpTable.c b/agent/mibgroup/mibII/tcpTable.c
index 9368c89..c9c9dd8 100644
--- a/agent/mibgroup/mibII/tcpTable.c
+++ b/agent/mibgroup/mibII/tcpTable.c
@@ -67,7 +67,7 @@
 #define	TCPTABLE_IS_LINKED_LIST
 #else
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define	TCPTABLE_ENTRY_TYPE	MIB_TCPROW
 #define	TCPTABLE_STATE		dwState 
@@ -95,6 +95,7 @@
     int             state;
     netsnmp_inpcb  *inp_next;
 };
+#undef INP_NEXT_SYMBOL
 #define INP_NEXT_SYMBOL		inp_next
 #define	TCPTABLE_ENTRY_TYPE	netsnmp_inpcb 
 #define	TCPTABLE_STATE		state 
@@ -558,11 +559,35 @@
 const static int linux_states[12] = { 1, 5, 3, 4, 6, 7, 11, 1, 8, 9, 2, 10 };
 
 #if HAVE_NETLINK_NETLINK_H
+
+#if !defined(HAVE_LIBNL3)
+/* libnl3 API implemented on top of the libnl1 API */
+
+#define nl_sock nl_handle
+
+static const char *nl_geterror_compat(int e)
+{
+    return nl_geterror();
+}
+
+#define nl_geterror(e) nl_geterror_compat(e)
+
+static struct nl_handle *nl_socket_alloc(void)
+{
+    return nl_handle_alloc();
+}
+
+static void nl_socket_free(struct nl_handle *ns)
+{
+    nl_handle_destroy(ns);
+}
+#endif /* HAVE_LIBNL3 */
+
 static int
 tcpTable_load_netlink(void)
 {
-	/*  TODO: perhaps use permanent nl handle? */
-	struct nl_handle *nl = nl_handle_alloc();
+	/* TODO: perhaps use permanent nl socket ? */
+	struct nl_sock *nl = nl_socket_alloc();
 	struct inet_diag_req req = {
 		.idiag_family = AF_INET,
 		.idiag_states = TCP_ALL,
@@ -572,7 +597,7 @@
 
 	struct sockaddr_nl peer;
 	unsigned char *buf = NULL;
-	int running = 1, len;
+	int running = 1, len, err;
 
 	if (nl == NULL) {
 		DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n"));
@@ -580,20 +605,22 @@
 		return -1;
 	}
 
-	if (nl_connect(nl, NETLINK_INET_DIAG) < 0) {
-		DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror()));
-		snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror());
-		nl_handle_destroy(nl);
+	err = nl_connect(nl, NETLINK_INET_DIAG);
+	if (err < 0) {
+		DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err)));
+		snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err));
+		nl_socket_free(nl);
 		return -1;
 	}
 
 	nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST);
 	nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0);
 
-	if (nl_send_auto_complete(nl, nm) < 0) {
-		DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror()));
-		snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror());
-		nl_handle_destroy(nl);
+	err = nl_send_auto_complete(nl, nm);
+	if (err < 0) {
+		DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err)));
+		snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err));
+		nl_socket_free(nl);
 		return -1;
 	}
 	nlmsg_free(nm);
@@ -601,9 +628,9 @@
 	while (running) {
 		struct nlmsghdr *h;
 		if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) {
-			DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror()));
-			snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror());
-			nl_handle_destroy(nl);
+			DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len)));
+			snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len));
+			nl_socket_free(nl);
 			return -1;
 		}
 
@@ -652,7 +679,7 @@
 		free(buf);
 	}
 
-	nl_handle_destroy(nl);
+	nl_socket_free(nl);
 
 	if (tcp_head) {
 		DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n"));
@@ -679,7 +706,7 @@
 
     if (!(in = fopen("/proc/net/tcp", "r"))) {
         DEBUGMSGTL(("mibII/tcpTable", "Failed to load TCP Table (linux1)\n"));
-        snmp_log(LOG_ERR, "snmpd: cannot open /proc/net/tcp ...\n");
+        NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc/net/tcp ...\n"));
         return -1;
     }
 
@@ -690,7 +717,8 @@
      */
     while (line == fgets(line, sizeof(line), in)) {
         struct inpcb    pcb, *nnew;
-        int             state, lp, fp, uid;
+        unsigned int    lp, fp;
+        int             state, uid;
 
         if (6 != sscanf(line,
                         "%*d: %x:%x %x:%x %x %*X:%*X %*X:%*X %*X %d",
diff --git a/agent/mibgroup/mibII/udp.c b/agent/mibgroup/mibII/udp.c
index 832d32f..c9f8a4f 100644
--- a/agent/mibgroup/mibII/udp.c
+++ b/agent/mibgroup/mibII/udp.c
@@ -37,7 +37,10 @@
 #define UDP_STATS_CACHE_TIMEOUT	MIB_STATS_CACHE_TIMEOUT
 #endif
 
-#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
+#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) && !defined(FIRST_PROTOCOL)
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #ifdef FIRST_PROTOCOL
 perfstat_protocol_t ps_proto;
@@ -138,7 +141,7 @@
 #undef UDP_NSTATS
 #endif
 
-#ifdef WIN32
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define UDP_STAT_STRUCTURE MIB_UDPSTATS
 #endif
diff --git a/agent/mibgroup/mibII/udpTable.c b/agent/mibgroup/mibII/udpTable.c
index 87d1c55..f461f02 100644
--- a/agent/mibgroup/mibII/udpTable.c
+++ b/agent/mibgroup/mibII/udpTable.c
@@ -53,7 +53,7 @@
 #define	UDPTABLE_IS_LINKED_LIST
 #else
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define	UDPTABLE_ENTRY_TYPE	MIB_UDPROW		/* ??? */
 #define	UDPTABLE_LOCALADDRESS	dwLocalAddr
@@ -478,7 +478,7 @@
 
     if (!(in = fopen("/proc/net/udp", "r"))) {
         DEBUGMSGTL(("mibII/udpTable", "Failed to load UDP Table (linux)\n"));
-        snmp_log(LOG_ERR, "snmpd: cannot open /proc/net/udp ...\n");
+        NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc/net/udp ...\n"));
         return -1;
     }
 
diff --git a/agent/mibgroup/mibII/updates.c b/agent/mibgroup/mibII/updates.c
index 3dd5836..87bed89 100644
--- a/agent/mibgroup/mibII/updates.c
+++ b/agent/mibgroup/mibII/updates.c
@@ -12,8 +12,10 @@
 
     if (reqinfo->mode == MODE_SET_RESERVE1 && *set < 0)
         netsnmp_request_set_error(requests, SNMP_ERR_NOTWRITABLE);
-    else if (reqinfo->mode == MODE_SET_COMMIT)
+    else if (reqinfo->mode == MODE_SET_COMMIT) {
         *set = 1;
+        snmp_store_needed(reginfo->handlerName);
+    }
     return SNMP_ERR_NOERROR;
 }
 
diff --git a/agent/mibgroup/mibII/vacm_conf.c b/agent/mibgroup/mibII/vacm_conf.c
index 8b2ae77..337a5fc 100644
--- a/agent/mibgroup/mibII/vacm_conf.c
+++ b/agent/mibgroup/mibII/vacm_conf.c
@@ -40,9 +40,6 @@
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -69,14 +66,17 @@
                                   "name context model level prefix viewname viewval");
     snmpd_register_config_handler("view", vacm_parse_view, vacm_free_view,
                                   "name type subtree [mask]");
-    snmpd_register_config_handler("vacmView", vacm_parse_config_view, NULL,
-                                  NULL);
-    snmpd_register_config_handler("vacmGroup", vacm_parse_config_group,
-                                  NULL, NULL);
-    snmpd_register_config_handler("vacmAccess", vacm_parse_config_access,
-                                  NULL, NULL);
-    snmpd_register_config_handler("vacmAuthAccess", vacm_parse_config_auth_access,
-                                  NULL, NULL);
+    snmpd_register_const_config_handler("vacmView",
+                                        vacm_parse_config_view, NULL, NULL);
+    snmpd_register_const_config_handler("vacmGroup",
+                                        vacm_parse_config_group,
+                                        NULL, NULL);
+    snmpd_register_const_config_handler("vacmAccess",
+                                        vacm_parse_config_access,
+                                        NULL, NULL);
+    snmpd_register_const_config_handler("vacmAuthAccess",
+                                        vacm_parse_config_auth_access,
+                                        NULL, NULL);
 
     /* easy community auth handler */
     snmpd_register_config_handler("authcommunity",
@@ -624,7 +624,7 @@
     size_t          suboid_len = 0;
     size_t          mask_len = 0;
     u_char          viewMask[VACMSTRINGLEN];
-    int             i;
+    size_t          i;
     char            *st;
 
     name = strtok_r(param, " \t\n", &st);
@@ -661,7 +661,7 @@
         return;
     }
     if (mask) {
-        int             val;
+        unsigned int val;
         i = 0;
         for (mask = strtok_r(mask, " .:", &st); mask; mask = strtok_r(NULL, " .:", &st)) {
             if (i >= sizeof(viewMask)) {
@@ -943,6 +943,7 @@
     commcount++;
 
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+#ifdef NETSNMP_TRANSPORT_UDP_DOMAIN
     if (parsetype == VACM_CREATE_SIMPLE_COMIPV4 ||
         parsetype == VACM_CREATE_SIMPLE_COM) {
         vacm_gen_com2sec(commcount, community, addressname,
@@ -950,13 +951,14 @@
                          secname, sizeof(secname),
                          view_ptr, sizeof(viewname), commversion, context);
     }
-    
+#endif
+
 #ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
     if (parsetype == VACM_CREATE_SIMPLE_COMUNIX ||
         parsetype == VACM_CREATE_SIMPLE_COM) {
-        if (context && *context)
-            snprintf(line, sizeof(line), "-Cn %s %s %s '%s'",
-                 context, secname, addressname, community);
+        if ( *context )
+           snprintf(line, sizeof(line), "-Cn %s %s %s '%s'",
+             context, secname, addressname, community);
         else
             snprintf(line, sizeof(line), "%s %s '%s'",
                  secname, addressname, community);
@@ -995,7 +997,7 @@
              */
             snprintf(grpname, sizeof(grpname), "grp%.28s", secname);
             for (tmp=grpname; *tmp; tmp++)
-                if (!isalnum(*tmp))
+                if (!isalnum((unsigned char)(*tmp)))
                     *tmp = '_';
             snprintf(line, sizeof(line),
                      "%s %s \"%s\"", grpname, model, secname);
@@ -1006,7 +1008,7 @@
     } else {
         snprintf(grpname, sizeof(grpname), "grp%.28s", secname);
         for (tmp=grpname; *tmp; tmp++)
-            if (!isalnum(*tmp))
+            if (!isalnum((unsigned char)(*tmp)))
                 *tmp = '_';
     }
 
@@ -1255,8 +1257,8 @@
     struct vacm_groupEntry *gp;
     struct vacm_viewEntry *vp;
     char            vacm_default_context[1] = "";
-    char           *contextName = vacm_default_context;
-    char           *sn = NULL;
+    const char     *contextName = vacm_default_context;
+    const char     *sn = NULL;
     char           *vn;
     const char     *pdu_community;
 
@@ -1303,7 +1305,9 @@
          * community string to a security name for us.  
          */
 
-        if (pdu->tDomain == netsnmpUDPDomain
+        if (0) {
+#ifdef NETSNMP_TRANSPORT_UDP_DOMAIN
+        } else if (pdu->tDomain == netsnmpUDPDomain
 #ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
             || pdu->tDomain == netsnmp_snmpTCPDomain
 #endif
@@ -1322,6 +1326,7 @@
             SNMP_FREE(pdu->contextName);
             pdu->contextName = strdup(contextName);
             pdu->contextNameLen = strlen(contextName);
+#endif
 #ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
         } else if (pdu->tDomain == netsnmp_UDPIPv6Domain
 #ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
diff --git a/agent/mibgroup/mibII/vacm_vars.c b/agent/mibgroup/mibII/vacm_vars.c
index 6b73a95..3ad51d4 100644
--- a/agent/mibgroup/mibII/vacm_vars.c
+++ b/agent/mibgroup/mibII/vacm_vars.c
@@ -40,9 +40,6 @@
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -53,11 +50,7 @@
 #include "util_funcs/header_generic.h"
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -151,7 +144,7 @@
 {
     struct vacm_groupEntry *gp;
     oid            *groupSubtree;
-    int             groupSubtreeLen;
+    ssize_t         groupSubtreeLen;
     int             secmodel;
     char            secname[VACMSTRINGLEN], *cp;
 
diff --git a/agent/mibgroup/mibII/var_route.c b/agent/mibgroup/mibII/var_route.c
index dfc1e8d..e6286dc 100644
--- a/agent/mibgroup/mibII/var_route.c
+++ b/agent/mibgroup/mibII/var_route.c
@@ -431,7 +431,8 @@
      * IPADDR starts at offset 10.
      */
     register int    Save_Valid, result, RtIndex;
-    static int      saveNameLen = 0, saveExact = 0, saveRtIndex = 0;
+    static size_t   saveNameLen = 0;
+    static int      saveExact = 0, saveRtIndex = 0;
     static oid      saveName[MAX_OID_LEN], Current[MAX_OID_LEN];
     u_char         *cp;
     oid            *op;
@@ -1316,15 +1317,15 @@
     rtsize = 0;
 
     if (!(in = fopen("/proc/net/route", "r"))) {
-        snmp_log(LOG_ERR, "cannot open /proc/net/route - burps\n");
+        NETSNMP_LOGONCE((LOG_ERR, "cannot open /proc/net/route - burps\n"));
         return;
     }
 
     while (fgets(line, sizeof(line), in)) {
         struct rtentry  rtent;
         char            rtent_name[32];
-        int             refcnt, flags, metric;
-        unsigned        use;
+        int             refcnt, metric;
+        unsigned        flags, use;
 
         rt = &rtent;
         memset((char *) rt, (0), sizeof(*rt));
@@ -1335,18 +1336,15 @@
          * Iface Dest GW Flags RefCnt Use Metric Mask MTU Win IRTT
          * eth0 0A0A0A0A 00000000 05 0 0 0 FFFFFFFF 1500 0 0 
          */
-        if (8 != sscanf(line, "%s %x %x %x %u %d %d %x %*d %*d %*d\n",
+        if (8 != sscanf(line, "%s %x %x %x %d %u %d %x %*d %*d %*d\n",
                         rt->rt_dev,
-                        &(((struct sockaddr_in *) &(rtent.rt_dst))->
-                          sin_addr.s_addr),
-                        &(((struct sockaddr_in *) &(rtent.rt_gateway))->
-                          sin_addr.s_addr),
+                        &(((struct sockaddr_in *) &(rtent.rt_dst))->sin_addr.s_addr),
+                        &(((struct sockaddr_in *) &(rtent.rt_gateway))->sin_addr.s_addr),
                         /*
                          * XXX: fix type of the args 
                          */
                         &flags, &refcnt, &use, &metric,
-                        &(((struct sockaddr_in *) &(rtent.rt_genmask))->
-                          sin_addr.s_addr)))
+                        &(((struct sockaddr_in *) &(rtent.rt_genmask))->sin_addr.s_addr)))
             continue;
 
         strlcpy(name, rt->rt_dev, sizeof(name));
@@ -1445,7 +1443,7 @@
 
 #endif                          /* solaris2 */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 #ifndef MIB_IPPROTO_NETMGMT
 #define MIB_IPPROTO_NETMGMT 3
diff --git a/agent/mibgroup/mibincl.h b/agent/mibgroup/mibincl.h
index 28ed599..3d48768 100644
--- a/agent/mibgroup/mibincl.h
+++ b/agent/mibgroup/mibincl.h
@@ -12,11 +12,7 @@
 #include <malloc.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/agent/mibgroup/notification-log-mib/notification_log.c b/agent/mibgroup/notification-log-mib/notification_log.c
index d6a1ee4..bd6a821 100644
--- a/agent/mibgroup/notification-log-mib/notification_log.c
+++ b/agent/mibgroup/notification-log-mib/notification_log.c
@@ -165,7 +165,7 @@
         data = (netsnmp_table_data_set_storage *) row->data;
         data = netsnmp_table_data_set_find_column(data, COLUMN_NLMLOGTIME);
 
-        if (uptime < ((long)(*(data->data.integer) + max_age * 100 * 60)))
+        if (uptime < ((u_long)(*(data->data.integer) + max_age * 100 * 60)))
             break;
         ++count;
     }
diff --git a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
index 20a955c..c3fc363 100644
--- a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
+++ b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
@@ -10,9 +10,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -402,7 +399,7 @@
          */
         tmpvar = StorageTmp->snmpNotifyFilterProfileName;
         tmplen = StorageTmp->snmpNotifyFilterProfileNameLen;
-        StorageTmp->snmpNotifyFilterProfileName = calloc(1, var_val_len + 1);
+        StorageTmp->snmpNotifyFilterProfileName = (char*)calloc(1, var_val_len + 1);
         if (NULL == StorageTmp->snmpNotifyFilterProfileName)
             return SNMP_ERR_RESOURCEUNAVAILABLE;
         break;
@@ -442,6 +439,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -534,7 +532,7 @@
          * Things are working well, so it's now safe to make the change
          * permanently.  Make sure that anything done here can't fail! 
          */
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -787,6 +785,7 @@
                 StorageTmp->snmpNotifyFilterProfileRowStatus = RS_NOTINSERVICE;
             StorageNew = NULL;
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/notification/snmpNotifyTable.c b/agent/mibgroup/notification/snmpNotifyTable.c
index f1abeab..f627ed6 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.c
+++ b/agent/mibgroup/notification/snmpNotifyTable.c
@@ -10,9 +10,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -112,8 +109,8 @@
     size_t                 profileNameLen;
     struct vacm_viewEntry *vp, *head;
     int                    vb_oid_excluded = 0;
-    extern oid             snmptrap_oid[];
-    extern size_t          snmptrap_oid_len;
+    extern const oid       snmptrap_oid[];
+    extern const size_t    snmptrap_oid_len;
 
     netsnmp_assert(NULL != paramName);
     netsnmp_assert(NULL != pdu);
@@ -571,12 +568,14 @@
     line =
         read_config_read_data(ASN_INTEGER, line,
                               &StorageTmp->snmpNotifyStorageType, &tmpint);
+    if (!StorageTmp->snmpNotifyStorageType)
+        StorageTmp->snmpNotifyStorageType = ST_READONLY;
 
     line =
         read_config_read_data(ASN_INTEGER, line,
                               &StorageTmp->snmpNotifyRowStatus, &tmpint);
-
-
+    if (!StorageTmp->snmpNotifyRowStatus)
+        StorageTmp->snmpNotifyRowStatus = RS_ACTIVE;
 
 
     snmpNotifyTable_add(StorageTmp);
@@ -782,10 +781,10 @@
         if (var_val_type != ASN_OCTET_STR) {
             return SNMP_ERR_WRONGTYPE;
         }
-        if (var_val_len < 0 || var_val_len > 255) {
+        if (var_val_len > 255) {
             return SNMP_ERR_WRONGLENGTH;
         }
-        if (!snmpTagValid(var_val, var_val_len)) {
+        if (!snmpTagValid((char *) var_val, var_val_len)) {
             return SNMP_ERR_WRONGVALUE;
         }
         break;
@@ -797,7 +796,7 @@
          */
         tmpvar = StorageTmp->snmpNotifyTag;
         tmplen = StorageTmp->snmpNotifyTagLen;
-        StorageTmp->snmpNotifyTag = calloc(1, var_val_len + 1);
+        StorageTmp->snmpNotifyTag = (char*)calloc(1, var_val_len + 1);
         if (NULL == StorageTmp->snmpNotifyTag)
             return SNMP_ERR_RESOURCEUNAVAILABLE;
         break;
@@ -833,6 +832,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
 
@@ -1053,7 +1053,7 @@
             if (StorageNew == NULL) {
                 return SNMP_ERR_RESOURCEUNAVAILABLE;
             }
-            StorageNew->snmpNotifyName = calloc( 1, vp->val_len + 1 );
+            StorageNew->snmpNotifyName = (char*)calloc( 1, vp->val_len + 1 );
             if (StorageNew->snmpNotifyName == NULL) {
                 return SNMP_ERR_RESOURCEUNAVAILABLE;
             }
@@ -1168,6 +1168,7 @@
             StorageTmp->snmpNotifyRowStatus = RS_NOTINSERVICE;
             StorageNew = NULL;
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
index eb646fd..d4b6e69 100644
--- a/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+++ b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
@@ -292,7 +292,7 @@
         fd = ourfd = socket(AF_INET, SOCK_DGRAM, 0);
         if(ourfd < 0) {
             DEBUGMSGTL(("access:etherStatsTable:ioctl",
-                        "_etherStats_ioctl_get couldn't create a socket\n", name));
+                        "_etherStats_ioctl_get couldn't create a socket\n"));
             snmp_log (LOG_ERR, "access:etherStatsTable:ioctl, _etherStats_ioctl_get error on inerface '%s'\n", name);
 
             return -2;
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
index 0f671d0..974636a 100644
--- a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
@@ -332,7 +332,7 @@
 #endif
     
     DEBUGMSGT(("verbose:etherStatsTable:etherStatsTable_container_load",
-               "inserted %d records\n", count));
+               "inserted %" NETSNMP_PRIz "d records\n", count));
 
     return MFD_SUCCESS;
 }
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
index 910362a..38e92af 100644
--- a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
@@ -181,7 +181,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = ETHERSTATSTABLE_MIN_COL;
     tbl_info->max_column = ETHERSTATSTABLE_MAX_COL;
diff --git a/agent/mibgroup/sctp-mib/sctpScalars_common.c b/agent/mibgroup/sctp-mib/sctpScalars_common.c
index 5a9ee34..2a895a8 100644
--- a/agent/mibgroup/sctp-mib/sctpScalars_common.c
+++ b/agent/mibgroup/sctp-mib/sctpScalars_common.c
@@ -8,7 +8,6 @@
 static netsnmp_sctp_stats prev_sctp_stats;
 
 netsnmp_sctp_params sctp_params;
-static netsnmp_sctp_params prev_sctp_params;
 
 static int      need_wrap_check = 1;
 
@@ -55,46 +54,75 @@
     /*
      * Update 64 bit counters
      */
-    netsnmp_c64_check32_and_update(&sctp_stats.out_ctrl_chunks,
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.out_ctrl_chunks,
                                    &new_stats.out_ctrl_chunks,
                                    &prev_sctp_stats.out_ctrl_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.out_order_chunks,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpOutCtrlChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.out_order_chunks,
                                    &new_stats.out_order_chunks,
                                    &prev_sctp_stats.out_order_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.out_unorder_chunks,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpOutOrderChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.out_unorder_chunks,
                                    &new_stats.out_unorder_chunks,
                                    &prev_sctp_stats.out_unorder_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.in_ctrl_chunks,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpOutUnorderChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.in_ctrl_chunks,
                                    &new_stats.in_ctrl_chunks,
                                    &prev_sctp_stats.in_ctrl_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.in_order_chunks,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpInCtrlChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.in_order_chunks,
                                    &new_stats.in_order_chunks,
                                    &prev_sctp_stats.in_order_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.in_unorder_chunks,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpInOrderChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.in_unorder_chunks,
                                    &new_stats.in_unorder_chunks,
                                    &prev_sctp_stats.in_unorder_chunks,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.frag_usr_msgs,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpInUnorderChunks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.frag_usr_msgs,
                                    &new_stats.frag_usr_msgs,
                                    &prev_sctp_stats.frag_usr_msgs,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.reasm_usr_msgs,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpFragUsrMsgs to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.reasm_usr_msgs,
                                    &new_stats.reasm_usr_msgs,
                                    &prev_sctp_stats.reasm_usr_msgs,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.out_sctp_packs,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpReasmUsrMsgs to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.out_sctp_packs,
                                    &new_stats.out_sctp_packs,
                                    &prev_sctp_stats.out_sctp_packs,
-                                   &need_wrap_check);
-    netsnmp_c64_check32_and_update(&sctp_stats.in_sctp_packs,
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpOutSCTPPacks to 64bits\n"));
+
+    if (0 != netsnmp_c64_check32_and_update(&sctp_stats.in_sctp_packs,
                                    &new_stats.in_sctp_packs,
                                    &prev_sctp_stats.in_sctp_packs,
-                                   &need_wrap_check);
+                                   &need_wrap_check))
+        NETSNMP_LOGONCE((LOG_ERR,
+                "SCTP: Error expanding sctpInSCTPPacks to 64bits\n"));
 
     /*
      * Update prev_stats for next computation.
diff --git a/agent/mibgroup/smux/smux.c b/agent/mibgroup/smux/smux.c
index cd3385a..698717c 100644
--- a/agent/mibgroup/smux/smux.c
+++ b/agent/mibgroup/smux/smux.c
@@ -26,11 +26,7 @@
 #include <err.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -47,8 +43,6 @@
 #include <sys/stat.h>
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-#elif HAVE_WINSOCK_H
-#include <winsock.h>
 #endif
 #if HAVE_SYS_FILIO_H
 #include <sys/filio.h>
@@ -350,7 +344,8 @@
     u_char          buf[SMUXMAXPKTSIZE], *ptr, sout[3], type;
     int             reterr;
     size_t          var_len, datalen, name_length, packet_len;
-    ssize_t         len, tmp_len;
+    size_t          len;
+    ssize_t         tmp_len;
     long            reqid, errsts, erridx;
     u_char          *dataptr;
 
@@ -574,9 +569,10 @@
     u_char          data[SMUXMAXPKTSIZE], *ptr, type;
     struct sockaddr_in in_socket;
     struct timeval  tv;
-    int             fail, fd, alen;
+    int             fail, fd;
+    socklen_t       alen;
     int             length;
-    ssize_t         len;
+    size_t          len;
 
     alen = sizeof(struct sockaddr_in);
     /*
@@ -1366,7 +1362,7 @@
                   size_t * return_len, u_char * return_type, int sd)
 {
     u_char          packet[SMUXMAXPKTSIZE], *ptr, result[SMUXMAXPKTSIZE];
-    int             length = SMUXMAXPKTSIZE;
+    ssize_t         length = SMUXMAXPKTSIZE;
     int             tmp_length;
     u_char          type;
     size_t          packet_len;
@@ -1395,7 +1391,7 @@
     }
 
     DEBUGMSGTL(("smux",
-                "[smux_snmp_process] Sent %d request to peer; %d bytes\n",
+                "[smux_snmp_process] Sent %d request to peer; %" NETSNMP_PRIz "d bytes\n",
                 (int) type, length));
 
     while (1) {
@@ -1418,7 +1414,7 @@
             }
         }
 
-        DEBUGMSGTL(("smux", "[smux_snmp_process] Peeked at %d bytes\n",
+        DEBUGMSGTL(("smux", "[smux_snmp_process] Peeked at %" NETSNMP_PRIz "d bytes\n",
                     length));
         DEBUGDUMPSETUP("smux_snmp_process", result, length);
 
@@ -1453,7 +1449,7 @@
            return NULL;
         }
 
-        DEBUGMSGTL(("smux", "[smux_snmp_process] Received %d bytes\n",
+        DEBUGMSGTL(("smux", "[smux_snmp_process] Received %" NETSNMP_PRIz "d bytes\n",
                     length));
 
         if (result[0] == SMUX_TRAP) {
@@ -1992,7 +1988,7 @@
             /*
              * XXX 
              */
-            if (len == 0)
+            if (len == NULL)
                 return NULL;
             var_val_len = SMUXMAXSTRLEN;
             asn_parse_string(var_val, &maxlen, &vartype,
@@ -2016,7 +2012,7 @@
             /*
              * XXX 
              */
-            if (len == 0)
+            if (len == NULL)
                 return NULL;
             var_val_len = SMUXMAXSTRLEN;
             asn_parse_bitstring(var_val, &maxlen, &vartype,
diff --git a/agent/mibgroup/smux/smux.h b/agent/mibgroup/smux/smux.h
index d151f7d..88b8a3d 100644
--- a/agent/mibgroup/smux/smux.h
+++ b/agent/mibgroup/smux/smux.h
@@ -2,6 +2,11 @@
  * Smux module authored by Rohit Dube.
  * Rewritten by Nick Amato <naamato@merit.net>.
  */
+
+#ifndef NETSNMP_TRANSPORT_IPV4BASE_DOMAIN
+config_error(smux/smux depends on the IPv4Base transport domain)
+#endif
+
 config_belongs_in(agent_module)
 
 #define SMUXPORT 199
@@ -65,8 +70,6 @@
 extern int      smux_process(int);
 extern void     smux_parse_peer_auth(const char *, char *);
 extern void     smux_free_peer_auth(void);
-extern void     send_enterprise_trap_vars(int, int, oid *, int,
-                                          netsnmp_variable_list *);
 
 /* Add socket-fd to list */
 int smux_snmp_select_list_add(int sd);
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
index c85125d..5b56f1f 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
@@ -267,9 +267,9 @@
          */
         if (MFD_SUCCESS == rc) {
             /*
-             * save changed rows, if you haven't already
+             * notify library to save changed rows
              */
-            snmp_store(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+            snmp_store_needed(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                              NETSNMP_DS_LIB_APPTYPE));
         }
 
@@ -544,7 +544,7 @@
         /*
          * allocate space for snmpNotifyFilterMask data
          */
-        (*snmpNotifyFilterMask_val_ptr_ptr) =
+        (*snmpNotifyFilterMask_val_ptr_ptr) = (char*)
             malloc(rowreq_ctx->data.snmpNotifyFilterMask_len *
                    sizeof(rowreq_ctx->data.snmpNotifyFilterMask[0]));
         if (NULL == (*snmpNotifyFilterMask_val_ptr_ptr)) {
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 3c6bcc5..94d8687 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
@@ -496,7 +496,7 @@
 {
     oid             tmp_oid[MAX_OID_LEN];
     netsnmp_index   tmp_idx;
-    int             i, j;
+    size_t          i, j;
     netsnmp_void_array *s;
     struct vacm_viewEntry *tmp;
     snmpNotifyFilterTable_rowreq_ctx *rowreq;
@@ -526,7 +526,7 @@
     /*
      * allocate temporary storage
      */
-    tmp = calloc(sizeof(struct vacm_viewEntry), s->size + 1);
+    tmp = (struct vacm_viewEntry*)calloc(sizeof(struct vacm_viewEntry), s->size + 1);
     if (NULL == tmp) {
         free(s->array);
         free(s);
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
index 9f64b46..af4ad37 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
@@ -220,7 +220,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = SNMPNOTIFYFILTERTABLE_MIN_COL;
     tbl_info->max_column = SNMPNOTIFYFILTERTABLE_MAX_COL;
@@ -729,7 +729,7 @@
                                         *agtreq_info,
                                         netsnmp_request_info *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -848,7 +848,7 @@
                                          netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_object_lookup", "called\n"));
@@ -975,7 +975,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1254,7 +1254,7 @@
                                          *agtreq_info,
                                          netsnmp_request_info *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1302,7 +1302,7 @@
                                               *requests)
 {
     int             rc;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_check_dependencies", "called\n"));
 
@@ -1395,7 +1395,7 @@
                                       netsnmp_request_info *requests)
 {
     int             rc;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_undo_setup", "called\n"));
@@ -1460,7 +1460,7 @@
                                         *agtreq_info,
                                         netsnmp_request_info *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1574,7 +1574,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1622,7 +1622,7 @@
                                   netsnmp_request_info *requests)
 {
     int             rc;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_commit", "called\n"));
@@ -1655,7 +1655,7 @@
                                        netsnmp_request_info *requests)
 {
     int             rc;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_undo_commit", "called\n"));
@@ -1755,7 +1755,7 @@
                                        netsnmp_request_info *requests)
 {
     int             rc;
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1811,7 +1811,7 @@
                                                *agtreq_info, netsnmp_request_info
                                                *requests)
 {
-    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx =
+    snmpNotifyFilterTable_rowreq_ctx *rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:snmpNotifyFilterTable:_mfd_snmpNotifyFilterTable_irreversible:commit", "called\n"));
@@ -2095,7 +2095,7 @@
      * be treated a little differently. Specifically, you will need
      * (4 * len) + 4 [3 ASCII chars per byte + 1 for ., + 4 for len].
      *
-     * 3) Also, remeber to add space for the identifier and seperator
+     * 3) Also, remember to add space for the identifier and separator
      * characters (for example, each column is prefixed by the
      * column number and a semicolon. To allow for the maximum
      * column values, 12 bytes [11 for oid + 1 for ':'] per
@@ -2223,7 +2223,7 @@
      * loop through and get each column
      */
     buf = skip_white(buf);
-    while ((NULL != buf) && isdigit(*buf)) {
+    while ((NULL != buf) && isdigit((unsigned char)(*buf))) {
         /*
          * extract column, skip ':'
          */
@@ -2428,7 +2428,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         CONTAINER_FIND(snmpNotifyFilterTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
index 351cbd3..a139c9f 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
@@ -265,7 +265,7 @@
         ++count;
     }
 
-    DEBUGMSGT(("verbose:usmDHUserKeyTable:usmDHUserKeyTable_container_load", "inserted %d records\n", count));
+    DEBUGMSGT(("verbose:usmDHUserKeyTable:usmDHUserKeyTable_container_load", "inserted %d records\n", (int)count));
 
     return MFD_SUCCESS;
 }                               /* usmDHUserKeyTable_container_load */
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c
index d609ce6..427d26f 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c
@@ -18,6 +18,7 @@
  */
 #define NEED_USMDH_FUNCTIONS
 #include "usmDHUserKeyTable.h"
+#include "snmp-usm-dh-objects-mib/usmDHParameters/usmDHParameters.h"
 
 DH             *
 usmDHGetUserDHptr(struct usmUser *user, int for_auth_key)
@@ -57,7 +58,7 @@
 
 int
 usmDHGetUserKeyChange(struct usmUser *user, int for_auth_key,
-                      char **keyobj, size_t *keyobj_len)
+                      u_char **keyobj, size_t *keyobj_len)
 {
     DH             *dh;
 
@@ -183,7 +184,7 @@
 int
 usmDHUserKeyTable_indexes_set_tbl_idx(usmDHUserKeyTable_mib_index *
                                       tbl_idx,
-                                      char *usmUserEngineID_val_ptr,
+                                      u_char *usmUserEngineID_val_ptr,
                                       size_t usmUserEngineID_val_ptr_len,
                                       char *usmUserName_val_ptr,
                                       size_t usmUserName_val_ptr_len)
@@ -245,7 +246,7 @@
  */
 int
 usmDHUserKeyTable_indexes_set(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                              char *usmUserEngineID_val_ptr,
+                              u_char *usmUserEngineID_val_ptr,
                               size_t usmUserEngineID_val_ptr_len,
                               char *usmUserName_val_ptr,
                               size_t usmUserName_val_ptr_len)
@@ -328,7 +329,7 @@
  */
 int
 usmDHUserAuthKeyChange_get(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                           char **usmDHUserAuthKeyChange_val_ptr_ptr,
+                           u_char **usmDHUserAuthKeyChange_val_ptr_ptr,
                            size_t *usmDHUserAuthKeyChange_val_ptr_len_ptr)
 {
    /** we should have a non-NULL pointer and enough storage */
@@ -411,7 +412,7 @@
  */
 int
 usmDHUserOwnAuthKeyChange_get(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                              char **usmDHUserOwnAuthKeyChange_val_ptr_ptr,
+                              u_char **usmDHUserOwnAuthKeyChange_val_ptr_ptr,
                               size_t
                               *usmDHUserOwnAuthKeyChange_val_ptr_len_ptr)
 {
@@ -495,7 +496,7 @@
  */
 int
 usmDHUserPrivKeyChange_get(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                           char **usmDHUserPrivKeyChange_val_ptr_ptr,
+                           u_char **usmDHUserPrivKeyChange_val_ptr_ptr,
                            size_t *usmDHUserPrivKeyChange_val_ptr_len_ptr)
 {
    /** we should have a non-NULL pointer and enough storage */
@@ -578,7 +579,7 @@
  */
 int
 usmDHUserOwnPrivKeyChange_get(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                              char **usmDHUserOwnPrivKeyChange_val_ptr_ptr,
+                              u_char **usmDHUserOwnPrivKeyChange_val_ptr_ptr,
                               size_t
                               *usmDHUserOwnPrivKeyChange_val_ptr_len_ptr)
 {
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.h b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.h
index b725e11..83c028e 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.h
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.h
@@ -26,7 +26,8 @@
 
 #ifdef NEED_USMDH_FUNCTIONS
     int             usmDHGetUserKeyChange(struct usmUser *user,
-                                          int for_auth_key, char **keyobj,
+                                          int for_auth_key,
+                                          u_char **keyobj,
                                           size_t *keyobj_len);
     DH             *usmDHGetUserDHptr(struct usmUser *user,
                                       int for_auth_key);
@@ -54,29 +55,38 @@
      */
 
     int             usmDHUserAuthKeyChange_get(usmDHUserKeyTable_rowreq_ctx
-                                               * rowreq_ctx, char
-                                               **usmDHUserAuthKeyChange_val_ptr_ptr, size_t
+                                               * rowreq_ctx,
+                                               u_char
+                                               **usmDHUserAuthKeyChange_val_ptr_ptr,
+                                               size_t
                                                *usmDHUserAuthKeyChange_val_ptr_len_ptr);
     int            
         usmDHUserOwnAuthKeyChange_get(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      **usmDHUserOwnAuthKeyChange_val_ptr_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char
+                                      **usmDHUserOwnAuthKeyChange_val_ptr_ptr,
+                                      size_t
                                       *usmDHUserOwnAuthKeyChange_val_ptr_len_ptr);
     int             usmDHUserPrivKeyChange_get(usmDHUserKeyTable_rowreq_ctx
-                                               * rowreq_ctx, char
-                                               **usmDHUserPrivKeyChange_val_ptr_ptr, size_t
+                                               * rowreq_ctx,
+                                               u_char
+                                               **usmDHUserPrivKeyChange_val_ptr_ptr,
+                                               size_t
                                                *usmDHUserPrivKeyChange_val_ptr_len_ptr);
     int            
         usmDHUserOwnPrivKeyChange_get(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      **usmDHUserOwnPrivKeyChange_val_ptr_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char
+                                      **usmDHUserOwnPrivKeyChange_val_ptr_ptr,
+                                      size_t
                                       *usmDHUserOwnPrivKeyChange_val_ptr_len_ptr);
 
 
     int            
         usmDHUserKeyTable_indexes_set_tbl_idx(usmDHUserKeyTable_mib_index *
-                                              tbl_idx, char
-                                              *usmUserEngineID_val_ptr, size_t
+                                              tbl_idx,
+                                              u_char *usmUserEngineID_val_ptr,
+                                              size_t
                                               usmUserEngineID_val_ptr_len,
                                               char *usmUserName_val_ptr,
                                               size_t
@@ -84,7 +94,7 @@
     int            
         usmDHUserKeyTable_indexes_set(usmDHUserKeyTable_rowreq_ctx *
                                       rowreq_ctx,
-                                      char *usmUserEngineID_val_ptr,
+                                      u_char *usmUserEngineID_val_ptr,
                                       size_t usmUserEngineID_val_ptr_len,
                                       char *usmUserName_val_ptr,
                                       size_t usmUserName_val_ptr_len);
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
index ea08c10..567d20e 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
@@ -22,13 +22,13 @@
 
 int
 usmDHUserCheckValue(struct usmUser *user, int for_auth_key,
-                    char *val, size_t val_len)
+                    u_char *val, size_t val_len)
 {
     /*
      * The set value must be composed of 2 parts, the first being the
      * current value 
      */
-    char           *current_value;
+    u_char         *current_value;
     size_t          current_value_len;
 
     DEBUGMSGTL(("verbose:usmDHUserKeyTable:usmDHUserCheckValue",
@@ -50,11 +50,11 @@
 
 int
 usmDHSetKey(struct usmUser *user, int for_auth_key,
-            char *val, size_t val_len)
+            u_char *val, size_t val_len)
 {
     DH             *dh;
     BIGNUM         *other_pub;
-    char           *key;
+    u_char         *key;
     size_t          key_len;
 
     DEBUGMSGTL(("verbose:usmDHUserKeyTable:usmDHSetKey", "called\n"));
@@ -336,7 +336,6 @@
 usmDHUserKeyTable_commit(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx)
 {
     int             rc = MFD_SUCCESS;
-    int             save_flags;
 
     DEBUGMSGTL(("verbose:usmDHUserKeyTable:usmDHUserKeyTable_commit",
                 "called\n"));
@@ -528,7 +527,7 @@
 int
 usmDHUserAuthKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
                                    rowreq_ctx,
-                                   char *usmDHUserAuthKeyChange_val_ptr,
+                                   u_char *usmDHUserAuthKeyChange_val_ptr,
                                    size_t
                                    usmDHUserAuthKeyChange_val_ptr_len)
 {
@@ -605,7 +604,7 @@
  */
 int
 usmDHUserAuthKeyChange_set(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                           char *usmDHUserAuthKeyChange_val_ptr,
+                           u_char *usmDHUserAuthKeyChange_val_ptr,
                            size_t usmDHUserAuthKeyChange_val_ptr_len)
 {
 
@@ -728,8 +727,9 @@
  */
 int
 usmDHUserOwnAuthKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      *usmDHUserOwnAuthKeyChange_val_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char *usmDHUserOwnAuthKeyChange_val_ptr,
+                                      size_t
                                       usmDHUserOwnAuthKeyChange_val_ptr_len)
 {
     DEBUGMSGTL(("verbose:usmDHUserKeyTable:usmDHUserOwnAuthKeyChange_check_value", "called\n"));
@@ -798,7 +798,7 @@
  */
 int
 usmDHUserOwnAuthKeyChange_set(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                              char *usmDHUserOwnAuthKeyChange_val_ptr,
+                              u_char *usmDHUserOwnAuthKeyChange_val_ptr,
                               size_t usmDHUserOwnAuthKeyChange_val_ptr_len)
 {
 
@@ -912,7 +912,7 @@
 int
 usmDHUserPrivKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
                                    rowreq_ctx,
-                                   char *usmDHUserPrivKeyChange_val_ptr,
+                                   u_char *usmDHUserPrivKeyChange_val_ptr,
                                    size_t
                                    usmDHUserPrivKeyChange_val_ptr_len)
 {
@@ -989,7 +989,7 @@
  */
 int
 usmDHUserPrivKeyChange_set(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                           char *usmDHUserPrivKeyChange_val_ptr,
+                           u_char *usmDHUserPrivKeyChange_val_ptr,
                            size_t usmDHUserPrivKeyChange_val_ptr_len)
 {
 
@@ -1113,8 +1113,9 @@
  */
 int
 usmDHUserOwnPrivKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      *usmDHUserOwnPrivKeyChange_val_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char *usmDHUserOwnPrivKeyChange_val_ptr,
+                                      size_t
                                       usmDHUserOwnPrivKeyChange_val_ptr_len)
 {
     DEBUGMSGTL(("verbose:usmDHUserKeyTable:usmDHUserOwnPrivKeyChange_check_value", "called\n"));
@@ -1183,7 +1184,7 @@
  */
 int
 usmDHUserOwnPrivKeyChange_set(usmDHUserKeyTable_rowreq_ctx * rowreq_ctx,
-                              char *usmDHUserOwnPrivKeyChange_val_ptr,
+                              u_char *usmDHUserOwnPrivKeyChange_val_ptr,
                               size_t usmDHUserOwnPrivKeyChange_val_ptr_len)
 {
 
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.h b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.h
index 04f4ebe..e7c7059 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.h
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.h
@@ -54,15 +54,19 @@
 
     int            
         usmDHUserAuthKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
-                                           rowreq_ctx, char
-                                           *usmDHUserAuthKeyChange_val_ptr, size_t
+                                           rowreq_ctx,
+                                           u_char
+                                           *usmDHUserAuthKeyChange_val_ptr,
+                                           size_t
                                            usmDHUserAuthKeyChange_val_ptr_len);
     int            
         usmDHUserAuthKeyChange_undo_setup(usmDHUserKeyTable_rowreq_ctx *
                                           rowreq_ctx);
     int             usmDHUserAuthKeyChange_set(usmDHUserKeyTable_rowreq_ctx
-                                               * rowreq_ctx, char
-                                               *usmDHUserAuthKeyChange_val_ptr, size_t
+                                               * rowreq_ctx,
+                                               u_char
+                                               *usmDHUserAuthKeyChange_val_ptr,
+                                               size_t
                                                usmDHUserAuthKeyChange_val_ptr_len);
     int            
         usmDHUserAuthKeyChange_undo(usmDHUserKeyTable_rowreq_ctx *
@@ -70,16 +74,20 @@
 
     int            
         usmDHUserOwnAuthKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx
-                                              * rowreq_ctx, char
-                                              *usmDHUserOwnAuthKeyChange_val_ptr, size_t
+                                              * rowreq_ctx,
+                                              u_char
+                                              *usmDHUserOwnAuthKeyChange_val_ptr,
+                                              size_t
                                               usmDHUserOwnAuthKeyChange_val_ptr_len);
     int            
         usmDHUserOwnAuthKeyChange_undo_setup(usmDHUserKeyTable_rowreq_ctx *
                                              rowreq_ctx);
     int            
         usmDHUserOwnAuthKeyChange_set(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      *usmDHUserOwnAuthKeyChange_val_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char
+                                      *usmDHUserOwnAuthKeyChange_val_ptr,
+                                      size_t
                                       usmDHUserOwnAuthKeyChange_val_ptr_len);
     int            
         usmDHUserOwnAuthKeyChange_undo(usmDHUserKeyTable_rowreq_ctx *
@@ -87,15 +95,19 @@
 
     int            
         usmDHUserPrivKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx *
-                                           rowreq_ctx, char
-                                           *usmDHUserPrivKeyChange_val_ptr, size_t
+                                           rowreq_ctx,
+                                           u_char
+                                           *usmDHUserPrivKeyChange_val_ptr,
+                                           size_t
                                            usmDHUserPrivKeyChange_val_ptr_len);
     int            
         usmDHUserPrivKeyChange_undo_setup(usmDHUserKeyTable_rowreq_ctx *
                                           rowreq_ctx);
     int             usmDHUserPrivKeyChange_set(usmDHUserKeyTable_rowreq_ctx
-                                               * rowreq_ctx, char
-                                               *usmDHUserPrivKeyChange_val_ptr, size_t
+                                               * rowreq_ctx,
+                                               u_char
+                                               *usmDHUserPrivKeyChange_val_ptr,
+                                               size_t
                                                usmDHUserPrivKeyChange_val_ptr_len);
     int            
         usmDHUserPrivKeyChange_undo(usmDHUserKeyTable_rowreq_ctx *
@@ -103,16 +115,20 @@
 
     int            
         usmDHUserOwnPrivKeyChange_check_value(usmDHUserKeyTable_rowreq_ctx
-                                              * rowreq_ctx, char
-                                              *usmDHUserOwnPrivKeyChange_val_ptr, size_t
+                                              * rowreq_ctx,
+                                              u_char
+                                              *usmDHUserOwnPrivKeyChange_val_ptr,
+                                              size_t
                                               usmDHUserOwnPrivKeyChange_val_ptr_len);
     int            
         usmDHUserOwnPrivKeyChange_undo_setup(usmDHUserKeyTable_rowreq_ctx *
                                              rowreq_ctx);
     int            
         usmDHUserOwnPrivKeyChange_set(usmDHUserKeyTable_rowreq_ctx *
-                                      rowreq_ctx, char
-                                      *usmDHUserOwnPrivKeyChange_val_ptr, size_t
+                                      rowreq_ctx,
+                                      u_char
+                                      *usmDHUserOwnPrivKeyChange_val_ptr,
+                                      size_t
                                       usmDHUserOwnPrivKeyChange_val_ptr_len);
     int            
         usmDHUserOwnPrivKeyChange_undo(usmDHUserKeyTable_rowreq_ctx *
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 9abaf9c..bea67ed 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
@@ -184,7 +184,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = USMDHUSERKEYTABLE_MIN_COL;
     tbl_info->max_column = USMDHUSERKEYTABLE_MAX_COL;
@@ -764,7 +764,7 @@
     case COLUMN_USMDHUSERAUTHKEYCHANGE:
         var->type = ASN_OCTET_STR;
         rc = usmDHUserAuthKeyChange_get(rowreq_ctx,
-                                        (char **) &var->val.string,
+                                        &var->val.string,
                                         &var->val_len);
         break;
 
@@ -774,7 +774,7 @@
     case COLUMN_USMDHUSEROWNAUTHKEYCHANGE:
         var->type = ASN_OCTET_STR;
         rc = usmDHUserOwnAuthKeyChange_get(rowreq_ctx,
-                                           (char **) &var->val.string,
+                                           &var->val.string,
                                            &var->val_len);
         break;
 
@@ -784,7 +784,7 @@
     case COLUMN_USMDHUSERPRIVKEYCHANGE:
         var->type = ASN_OCTET_STR;
         rc = usmDHUserPrivKeyChange_get(rowreq_ctx,
-                                        (char **) &var->val.string,
+                                        &var->val.string,
                                         &var->val_len);
         break;
 
@@ -794,7 +794,7 @@
     case COLUMN_USMDHUSEROWNPRIVKEYCHANGE:
         var->type = ASN_OCTET_STR;
         rc = usmDHUserOwnPrivKeyChange_get(rowreq_ctx,
-                                           (char **) &var->val.string,
+                                           &var->val.string,
                                            &var->val_len);
         break;
 
@@ -919,7 +919,7 @@
             DEBUGMSGTL(("usmDHUserKeyTable:_usmDHUserKeyTable_check_column:usmDHUserAuthKeyChange", "varbind validation failed (eg bad type or size)\n"));
         } else {
             rc = usmDHUserAuthKeyChange_check_value(rowreq_ctx,
-                                                    (char *) var->val.
+                                                    var->val.
                                                     string, var->val_len);
             if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
                 && (MFD_NOT_VALID_NOW != rc)) {
@@ -940,7 +940,7 @@
             DEBUGMSGTL(("usmDHUserKeyTable:_usmDHUserKeyTable_check_column:usmDHUserOwnAuthKeyChange", "varbind validation failed (eg bad type or size)\n"));
         } else {
             rc = usmDHUserOwnAuthKeyChange_check_value(rowreq_ctx,
-                                                       (char *) var->val.
+                                                       var->val.
                                                        string,
                                                        var->val_len);
             if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
@@ -962,7 +962,7 @@
             DEBUGMSGTL(("usmDHUserKeyTable:_usmDHUserKeyTable_check_column:usmDHUserPrivKeyChange", "varbind validation failed (eg bad type or size)\n"));
         } else {
             rc = usmDHUserPrivKeyChange_check_value(rowreq_ctx,
-                                                    (char *) var->val.
+                                                    var->val.
                                                     string, var->val_len);
             if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
                 && (MFD_NOT_VALID_NOW != rc)) {
@@ -983,7 +983,7 @@
             DEBUGMSGTL(("usmDHUserKeyTable:_usmDHUserKeyTable_check_column:usmDHUserOwnPrivKeyChange", "varbind validation failed (eg bad type or size)\n"));
         } else {
             rc = usmDHUserOwnPrivKeyChange_check_value(rowreq_ctx,
-                                                       (char *) var->val.
+                                                       var->val.
                                                        string,
                                                        var->val_len);
             if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
@@ -1283,7 +1283,7 @@
     case COLUMN_USMDHUSERAUTHKEYCHANGE:
         rowreq_ctx->column_set_flags |= COLUMN_USMDHUSERAUTHKEYCHANGE_FLAG;
         rc = usmDHUserAuthKeyChange_set(rowreq_ctx,
-                                        (char *) var->val.string,
+                                        var->val.string,
                                         var->val_len);
         break;
 
@@ -1294,7 +1294,7 @@
         rowreq_ctx->column_set_flags |=
             COLUMN_USMDHUSEROWNAUTHKEYCHANGE_FLAG;
         rc = usmDHUserOwnAuthKeyChange_set(rowreq_ctx,
-                                           (char *) var->val.string,
+                                           var->val.string,
                                            var->val_len);
         break;
 
@@ -1304,7 +1304,7 @@
     case COLUMN_USMDHUSERPRIVKEYCHANGE:
         rowreq_ctx->column_set_flags |= COLUMN_USMDHUSERPRIVKEYCHANGE_FLAG;
         rc = usmDHUserPrivKeyChange_set(rowreq_ctx,
-                                        (char *) var->val.string,
+                                        var->val.string,
                                         var->val_len);
         break;
 
@@ -1315,7 +1315,7 @@
         rowreq_ctx->column_set_flags |=
             COLUMN_USMDHUSEROWNPRIVKEYCHANGE_FLAG;
         rc = usmDHUserOwnPrivKeyChange_set(rowreq_ctx,
-                                           (char *) var->val.string,
+                                           var->val.string,
                                            var->val_len);
         break;
 
diff --git a/agent/mibgroup/snmpv3/snmpEngine.c b/agent/mibgroup/snmpv3/snmpEngine.c
index d5998f0..87f4d91 100644
--- a/agent/mibgroup/snmpv3/snmpEngine.c
+++ b/agent/mibgroup/snmpv3/snmpEngine.c
@@ -3,11 +3,6 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
@@ -67,8 +62,6 @@
     register_snmpEngine_scalars();
 }
 
-extern struct timeval starttime;
-
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 int             write_engineBoots(int, u_char *, u_char, size_t, u_char *,
                                   oid *, size_t);
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats.c b/agent/mibgroup/snmpv3/snmpMPDStats.c
index 3734acd..ae792df 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats.c
+++ b/agent/mibgroup/snmpv3/snmpMPDStats.c
@@ -3,11 +3,6 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
index 9a2a937..fa23dd5 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
@@ -10,7 +10,7 @@
 
 #include "snmpMPDStats_5_5.h"
 
-#include <utilities/snmp_get_statistic.h>
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 #define snmpMPDMIB 1, 3, 6, 1, 6, 3, 11
 #define snmpMPDMIBObjects snmpMPDMIB, 2
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
index c4da03a..78f3dff 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
@@ -1,7 +1,6 @@
 #ifndef _MIBGROUP_SNMPMPDSTATS_H
 #define _MIBGROUP_SNMPMPDSTATS_H
 
-config_require(utilities/snmp_get_statistic)
 config_exclude(snmpv3/snmpMPDStats)
 config_add_mib(SNMP-MPD-MIB)
 
diff --git a/agent/mibgroup/snmpv3/usmStats.c b/agent/mibgroup/snmpv3/usmStats.c
index 7451fe6..1aa4105 100644
--- a/agent/mibgroup/snmpv3/usmStats.c
+++ b/agent/mibgroup/snmpv3/usmStats.c
@@ -4,11 +4,6 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/sysORTable.h>
diff --git a/agent/mibgroup/snmpv3/usmStats_5_5.c b/agent/mibgroup/snmpv3/usmStats_5_5.c
index ec48ae7..b56f19b 100644
--- a/agent/mibgroup/snmpv3/usmStats_5_5.c
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.c
@@ -10,7 +10,7 @@
 
 #include "usmStats_5_5.h"
 
-#include <utilities/snmp_get_statistic.h>
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 #define snmpUsmMIB 1, 3, 6, 1, 6, 3, 15
 #define usmMIBCompliances snmpUsmMIB, 2, 1
diff --git a/agent/mibgroup/snmpv3/usmStats_5_5.h b/agent/mibgroup/snmpv3/usmStats_5_5.h
index afc9f76..d30719e 100644
--- a/agent/mibgroup/snmpv3/usmStats_5_5.h
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.h
@@ -1,7 +1,6 @@
 #ifndef _MIBGROUP_USMSTATS_H
 #define _MIBGROUP_USMSTATS_H
 
-config_require(utilities/snmp_get_statistic)
 config_exclude(snmpv3/usmStats)
 config_add_mib(SNMP-USER-BASED-SM-MIB)
 
diff --git a/agent/mibgroup/snmpv3/usmUser.c b/agent/mibgroup/snmpv3/usmUser.c
index 266a63b..891f9fc 100644
--- a/agent/mibgroup/snmpv3/usmUser.c
+++ b/agent/mibgroup/snmpv3/usmUser.c
@@ -11,10 +11,6 @@
 #include <strings.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -1170,7 +1166,7 @@
                     "write to usmUserPublic not ASN_OCTET_STR\n"));
         return SNMP_ERR_WRONGTYPE;
     }
-    if (var_val_len < 0 || var_val_len > 32) {
+    if (var_val_len > 32) {
         DEBUGMSGTL(("usmUser", "write to usmUserPublic: bad length\n"));
         return SNMP_ERR_WRONGLENGTH;
     }
diff --git a/agent/mibgroup/snmpv3mibs.h b/agent/mibgroup/snmpv3mibs.h
index 8e5a015..a5621e5 100644
--- a/agent/mibgroup/snmpv3mibs.h
+++ b/agent/mibgroup/snmpv3mibs.h
@@ -11,4 +11,4 @@
 config_version_require((snmpv3/usmStats, 5.5, snmpv3/usmStats_5_5))
 config_require(snmpv3/usmConf)
 config_require(snmpv3/usmUser)
-#endif                          /* NSMPV3MIBS_H */
+#endif                          /* SNMPV3MIBS_H */
diff --git a/agent/mibgroup/struct.h b/agent/mibgroup/struct.h
index c33c96b..08780cc 100644
--- a/agent/mibgroup/struct.h
+++ b/agent/mibgroup/struct.h
@@ -16,10 +16,10 @@
     int             result;
     char            output[STRMAX];
     struct extensible *next;
-    unsigned long   miboid[MIBMAX];
+    oid             miboid[MIBMAX];
     size_t          miblen;
     int             pid;
-#if defined(WIN32) && !defined (mingw32)
+#if defined(WIN32)
     HANDLE          tid;                /* WIN32 thread */
 #endif
 };
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.c b/agent/mibgroup/target/snmpTargetAddrEntry.c
index 52f77b4..7dc1b2a 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.c
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.c
@@ -15,9 +15,6 @@
 #endif
 #include <stdlib.h>
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -125,7 +122,7 @@
     /*
      * if the list is empty, add the new entry to the top 
      */
-    if ((prev_struct = curr_struct = *listPtr) == 0) {
+    if ((prev_struct = curr_struct = *listPtr) == NULL) {
         *listPtr = newEntry;
         return;
     } else {
@@ -140,7 +137,7 @@
         /*
          * search through the list for an equal or greater OID value 
          */
-        while (curr_struct != 0) {
+        while (curr_struct != NULL) {
             currOIDLen = strlen(curr_struct->name);
             for (i = 0; i < (int) currOIDLen; i++) {
                 currOID[i] = curr_struct->name[i];
@@ -424,7 +421,7 @@
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetParamsEntry: no Timeout in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargeParamsEntry: Timeout is not a digit in config string\n"));
         return (0);
@@ -449,7 +446,7 @@
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetParamsEntry: no Retry Count in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargeParamsEntry: Retry Count is not a digit in config string\n"));
         return (0);
@@ -472,17 +469,16 @@
 int
 snmpTargetAddr_addTagList(struct targetAddrTable_struct *entry, char *cptr)
 {
-    size_t          len;
     if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no tag list in config string\n"));
         return (0);
     } else {
-        len = strlen(cptr);
+        size_t len = strlen(cptr);
         /*
          * spec check for string 0-255 
          */
-        if (len < 0 || len > 255) {
+        if (len > 255) {
             DEBUGMSGTL(("snmpTargetAddrEntry",
                         "ERROR snmpTargetAddrEntry: tag list out of range in config string\n"));
             return (0);
@@ -527,7 +523,7 @@
                     "ERROR snmpTargetAddrEntry: no storage type in config "
                     "string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: storage type is not a digit "
                     "in config string\n"));
@@ -564,7 +560,7 @@
                     "ERROR snmpTargetAddrEntry: no Row Status in config "
                     "string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: Row Status is not a digit in "
                     "config string\n"));
@@ -1606,6 +1602,7 @@
                 }
             }
         }
+        snmp_store_needed(NULL);
     } else if (action == UNDO || action == FREE) {
         snmpTargetAddrOID[snmpTargetAddrOIDLen - 1] =
             SNMPTARGETADDRROWSTATUSCOLUMN;
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.c b/agent/mibgroup/target/snmpTargetParamsEntry.c
index 3967b82..e515379 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.c
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.c
@@ -15,9 +15,6 @@
 #endif
 #include <stdlib.h>
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -98,7 +95,7 @@
     /*
      * if the list is empty, add the new entry to the top 
      */
-    if ((prev_struct = curr_struct = *listPtr) == 0) {
+    if ((prev_struct = curr_struct = *listPtr) == NULL) {
         *listPtr = newEntry;
         return;
     } else {
@@ -329,7 +326,7 @@
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no mp model in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargeParamsEntry: mp model is not digit in config string\n"));
         return (0);
@@ -354,7 +351,7 @@
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no sec model in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargeParamsEntry: security model is not digit in config string\n"));
         return (0);
@@ -395,7 +392,7 @@
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no security level in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargeParamsEntry: security level is not digit in config string\n"));
         return (0);
@@ -421,7 +418,7 @@
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no storage type in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargeParamsEntry: storage type is not digit in config string\n"));
         return (0);
@@ -459,7 +456,7 @@
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no row status in config string\n"));
         return (0);
-    } else if (!(isdigit(*cptr))) {
+    } else if (!(isdigit((unsigned char)(*cptr)))) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargeParamsEntry: row status is not digit in config string\n"));
         return (0);
@@ -1114,7 +1111,7 @@
                         "write to snmpTargetParamsSecName: not ASN_OCTET_STR\n"));
             return SNMP_ERR_WRONGTYPE;
         }
-        if (var_val_len > 255 || var_val_len < 0) {
+        if (var_val_len > 255) {
             DEBUGMSGTL(("snmpTargetParamsEntry",
                         "write to snmpTargetParamsSecName: bad length\n"));
             return SNMP_ERR_WRONGLENGTH;
@@ -1364,6 +1361,7 @@
                 update_timestamp(params);
             }
         }
+        snmp_store_needed(NULL);
     } else if (action == UNDO || action == FREE) {
         snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
             SNMPTARGETPARAMSROWSTATUSCOLUMN;
diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c
index 88ee770..58783ad 100644
--- a/agent/mibgroup/target/target.c
+++ b/agent/mibgroup/target/target.c
@@ -1,8 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -12,6 +9,18 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+#if defined(NETSNMP_TRANSPORT_DTLSUDP_DOMAIN) || defined(NETSNMP_TRANSPORT_TLSTCP_DOMAIN)
+#include <openssl/ssl.h>
+#include <openssl/x509v3.h>
+#include <net-snmp/library/cert_util.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+#include <net-snmp/library/snmpTLSTCPDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+#endif
+
 #include "snmpTargetAddrEntry.h"
 #include "snmpTargetParamsEntry.h"
 #include "target.h"
@@ -27,6 +36,9 @@
     char            buf[SPRINT_MAX_LEN];
     char            tags[MAX_TAGS][SPRINT_MAX_LEN], *cp;
     int             numtags = 0, i;
+#if defined(NETSNMP_TRANSPORT_DTLSUDP_DOMAIN) || defined(NETSNMP_TRANSPORT_TLSTCP_DOMAIN)
+    int             tls = 0;
+#endif
     static struct targetParamTable_struct *param;
 
     DEBUGMSGTL(("target_sessions", "looking for: %s\n", taglist));
@@ -159,6 +171,67 @@
                                     free(dst_str);
                                 }
                             }
+                            /*
+                             * if tDomain is tls related, check for tls config
+                             */
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+                            tls = snmp_oid_compare(targaddrs->tDomain,
+                                                   targaddrs->tDomainLen,
+                                                   netsnmpDTLSUDPDomain,
+                                                   netsnmpDTLSUDPDomain_len);
+
+#endif
+#ifdef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+                            if (tls)
+                                tls = snmp_oid_compare(targaddrs->tDomain,
+                                                       targaddrs->tDomainLen,
+                                                       netsnmpTLSTCPDomain,
+                                                       netsnmpTLSTCPDomain_len);
+#endif
+#if defined(NETSNMP_TRANSPORT_DTLSUDP_DOMAIN) || defined(NETSNMP_TRANSPORT_TLSTCP_DOMAIN)
+                            if (!tls) {
+                                netsnmp_cert *cert;
+                                char         *server_id;
+
+                                DEBUGMSGTL(("target_sessions",
+                                            "  looking up our id: %s\n",
+                                            targaddrs->params));
+                                cert =
+                                    netsnmp_cert_find(NS_CERT_IDENTITY,
+                                                      NS_CERTKEY_TARGET_PARAM,
+                                                      targaddrs->params);
+                                netsnmp_assert(t->f_config);
+                                if (cert) {
+                                    DEBUGMSGTL(("target_sessions",
+                                            "  found fingerprint: %s\n", 
+                                                cert->fingerprint));
+                                    t->f_config(t, "our_identity",
+                                                cert->fingerprint);
+                                }
+                                DEBUGMSGTL(("target_sessions",
+                                            "  looking up their id: %s\n",
+                                            targaddrs->name));
+                                cert =
+                                    netsnmp_cert_find(NS_CERT_REMOTE_PEER,
+                                                      NS_CERTKEY_TARGET_ADDR,
+                                                      targaddrs->name);
+                                if (cert) {
+                                    DEBUGMSGTL(("target_sessions",
+                                            "  found fingerprint: %s\n", 
+                                                cert->fingerprint));
+                                    t->f_config(t, "their_identity",
+                                                cert->fingerprint);
+                                }
+                                server_id = netsnmp_tlstmAddr_get_serverId(
+                                    targaddrs->name);
+                                if (server_id) {
+                                    DEBUGMSGTL(("target_sessions",
+                                            "  found serverId: %s\n", 
+                                                server_id));
+                                    t->f_config(t, "their_hostname", server_id);
+                                }
+                            }
+#endif
                             memset(&thissess, 0, sizeof(thissess));
                             thissess.timeout = (targaddrs->timeout) * 10000;
                             thissess.retries = targaddrs->retryCount;
@@ -168,9 +241,11 @@
                                         thissess.timeout));
 
                             if (param->mpModel == SNMP_VERSION_3 &&
-                                param->secModel != 3) {
+                                param->secModel != SNMP_SEC_MODEL_USM &&
+                                param->secModel != SNMP_SEC_MODEL_TSM) {
                                 snmp_log(LOG_ERR,
-                                         "unsupported model/secmodel combo for target %s\n",
+                                         "unsupported mpModel/secModel combo %d/%d for target %s\n",
+                                         param->mpModel, param->secModel,
                                          targaddrs->name);
                                 /*
                                  * XXX: memleak 
diff --git a/agent/mibgroup/target/target_counters_5_5.c b/agent/mibgroup/target/target_counters_5_5.c
index 6e8b25b..7be7de3 100644
--- a/agent/mibgroup/target/target_counters_5_5.c
+++ b/agent/mibgroup/target/target_counters_5_5.c
@@ -11,7 +11,7 @@
 
 #include "target_counters_5_5.h"
 
-#include <utilities/snmp_get_statistic.h>
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 void
 init_target_counters_5_5(void)
diff --git a/agent/mibgroup/target/target_counters_5_5.h b/agent/mibgroup/target/target_counters_5_5.h
index cb812fb..4960bf1 100644
--- a/agent/mibgroup/target/target_counters_5_5.h
+++ b/agent/mibgroup/target/target_counters_5_5.h
@@ -1,4 +1,3 @@
-config_require(utilities/snmp_get_statistic)
 config_exclude(target/target_counters)
 
 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 1ec3588..0f39a7f 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn.h
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
@@ -23,6 +23,12 @@
 config_require(util_funcs/get_pid_from_inode)
 #elif defined( solaris2 )
 config_require(tcp-mib/data_access/tcpConn_solaris2)
+#elif defined(freebsd4) || defined(dragonfly)
+config_require(tcp-mib/data_access/tcpConn_freebsd4)
+#elif defined(openbsd4)
+config_require(tcp-mib/data_access/tcpConn_openbsd)
+#elif defined(netbsd1)
+config_require(tcp-mib/data_access/tcpConn_netbsd)
 #else
 config_require(tcp-mib/data_access/tcpConn_unsup)
 #endif
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
index 9b0cb78..e9f2b8f 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
@@ -189,7 +189,7 @@
     if (! (entry->flags & NETSNMP_ACCESS_TCPCONN_DELETE))
         return -1;
     
-    rc = netsnmp_arch_tcpconn_delete(entry);
+    rc = netsnmp_arch_tcpconn_entry_delete(entry);
     
     return rc;
 }
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c
new file mode 100644
index 0000000..fed1e84
--- /dev/null
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c
@@ -0,0 +1,223 @@
+/*
+ *  tcpConnTable MIB architecture support for FreeBSD/DragonFlyBSD
+ */
+#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/tcpConn.h>
+
+#include "tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h"
+#include "tcp-mib/data_access/tcpConn_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#if HAVE_NETINET_TCPIP_H
+#include <netinet/tcpip.h>
+#endif
+#if HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_tcpconn_entry_init(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_tcpconn_entry_cleanup(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_tcpconn_entry_copy(netsnmp_tcpconn_entry *lhs,
+                                  netsnmp_tcpconn_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 tcpConn delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_tcpconn_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:tcpconn:container",
+                "tcpconn_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags);
+
+    return rc;
+}
+
+#if defined(freebsd4) || defined(darwin)
+    #define NS_ELEM struct xtcpcb
+#else
+    #define NS_ELEM struct xinpcb
+#endif
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags)
+{
+    size_t   len;
+    int      sname[] = { CTL_NET, PF_INET, IPPROTO_TCP, TCPCTL_PCBLIST };
+    char     *tcpcb_buf = NULL;
+#if defined(dragonfly)
+    struct xinpcb  *xig = NULL;
+    int      StateMap[] = { 1, 1, 2, 3, 4, 5, 8, 6, 10, 9, 7, 11 };
+#else
+    struct xinpgen *xig = NULL;
+    int      StateMap[] = { 1, 2, 3, 4, 5, 8, 6, 10, 9, 7, 11 };
+#endif
+    netsnmp_tcpconn_entry  *entry;
+    int      state;
+    int      rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    len = 0;
+    if (sysctl(sname, 4, 0, &len, 0, 0) < 0 ||
+       (tcpcb_buf = malloc(len)) == NULL)
+        return -1;
+    if (sysctl(sname, 4, tcpcb_buf, &len, 0, 0) < 0) {
+        free(tcpcb_buf);
+        return -1;
+    }
+
+    /*
+     *  Unpick this into the constituent 'xinpgen' structures, and extract
+     *     the 'inpcb' elements into a linked list (built in reverse)
+     */
+#if defined(dragonfly)
+    xig = (struct xinpcb  *) tcpcb_buf;
+#else
+    xig = (struct xinpgen *) tcpcb_buf;
+    xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
+#endif
+
+#if defined(dragonfly)
+    while (xig && (xig->xi_len > sizeof(struct xinpcb)))
+#else
+    while (xig && (xig->xig_len > sizeof(struct xinpgen)))
+#endif
+    {
+	NS_ELEM pcb = *((NS_ELEM *) xig);
+#if defined(dragonfly)
+	xig = (struct xinpcb  *) ((char *) xig + xig->xi_len);
+#else
+	xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
+#endif
+	state = StateMap[pcb.xt_tp.t_state];
+
+	if (load_flags) {
+	    if (state == TCPCONNECTIONSTATE_LISTEN) {
+		if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_NOLISTEN) {
+		    DEBUGMSGT(("verbose:access:tcpconn:container",
+			       " skipping listen\n"));
+		    continue;
+		}
+	    }
+	    else if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_ONLYLISTEN) {
+		DEBUGMSGT(("verbose:access:tcpconn:container",
+			    " skipping non-listen\n"));
+		continue;
+	    }
+	}
+
+#if !defined(NETSNMP_ENABLE_IPV6)
+	if (pcb.xt_inp.inp_vflag & INP_IPV6)
+	    continue;
+#endif
+
+        entry = netsnmp_access_tcpconn_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        /** oddly enough, these appear to already be in network order */
+        entry->loc_port = htons(pcb.xt_inp.inp_lport);
+        entry->rmt_port = htons(pcb.xt_inp.inp_fport);
+        entry->tcpConnState = state;
+        entry->pid = 0;
+        
+        /** the addr string may need work */
+	if (pcb.xt_inp.inp_vflag & INP_IPV6) {
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &pcb.xt_inp.in6p_laddr, 16);
+	    memcpy(entry->rmt_addr, &pcb.xt_inp.in6p_faddr, 16);
+	}
+	else {
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &pcb.xt_inp.inp_laddr, 4);
+	    memcpy(entry->rmt_addr, &pcb.xt_inp.inp_faddr, 4);
+	}
+
+        /*
+         * add entry to container
+         */
+        entry->arbitrary_index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+    }
+
+    if(rc<0)
+        return rc;
+
+    return 0;
+}
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
index 376cf5c..2bf588a 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
@@ -60,7 +60,7 @@
  * delete an entry
  */
 int
-netsnmp_arch_tcpconn_delete(netsnmp_tcpconn_entry *entry)
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *entry)
 {
     if (NULL == entry)
         return -1;
@@ -134,7 +134,7 @@
      */
     while (fgets(line, sizeof(line), in)) {
         netsnmp_tcpconn_entry *entry;
-        int             state, rc, local_port, remote_port, tmp_state;
+        unsigned int    state, local_port, remote_port, tmp_state;
         unsigned long long inode;
         size_t          buf_len, offset;
         char            local_addr[10], remote_addr[10];
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c
new file mode 100644
index 0000000..b4229ff
--- /dev/null
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c
@@ -0,0 +1,229 @@
+/*
+ *  tcpConnTable MIB architecture support for NetBSD
+ */
+#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/tcpConn.h>
+
+#include "tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h"
+#include "tcp-mib/data_access/tcpConn_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#if HAVE_NETINET_TCPIP_H
+#include <netinet/tcpip.h>
+#endif
+#if HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags, int var);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_tcpconn_entry_init(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_tcpconn_entry_cleanup(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_tcpconn_entry_copy(netsnmp_tcpconn_entry *lhs,
+                                  netsnmp_tcpconn_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 tcpConn delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_tcpconn_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:tcpconn:container",
+                "tcpconn_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags, 4);
+#if defined(NETSNMP_ENABLE_IPV6)
+    rc = _load(container, load_flags, 6);
+#endif
+
+    return rc;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags, int ver)
+{
+    const char *mibname;
+    int      mib[8];
+    size_t   mib_len;
+    struct kinfo_pcb *pcblist;
+    size_t   pcb_len;
+    int      StateMap[] = { 1, 2, 3, 4, 5, 8, 6, 10, 9, 7, 11 };
+    netsnmp_tcpconn_entry  *entry;
+    int      state;
+    int      i, rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    switch (ver) {
+    case 4:
+    	mibname = "net.inet.tcp.pcblist";
+    	break;
+    case 6:
+    	mibname = "net.inet6.tcp6.pcblist";
+	break;
+    default:
+    	snmp_log(LOG_ERR, "tcp-mib:data_access:_load: bad version %d\n", ver);
+	return -1;
+    }
+
+    if (sysctlnametomib(mibname, mib, &mib_len) == -1) {
+    	snmp_log(LOG_ERR, "tcp-mib:data_access:_load: cant resolve mib %s\n", mibname);
+	return -1;
+    }
+
+    if (sysctl(mib, sizeof(mib) / sizeof(*mib), NULL, &pcb_len, NULL, 0) == -1) {
+    	snmp_log(LOG_ERR, "tcp-mib:data_access:_load: cant size mib %s\n", mibname);
+	return -1;
+    }
+
+    if ((pcblist = malloc(pcb_len)) == NULL) {
+    	snmp_log(LOG_ERR, "tcp-mib:data_access:_load: cant allocate mib %s\n", mibname);
+	return -1;
+    }
+    memset(pcblist, 0, pcb_len);
+
+    mib[6] = sizeof(*pcblist);
+    mib[7] = pcb_len / sizeof(*pcblist);
+
+    if (sysctl(mib, sizeof(mib) / sizeof(*mib),
+		    pcblist, &pcb_len, NULL, 0) == -1) {
+    	snmp_log(LOG_ERR, "tcp-mib:data_access:_load: cant size mib %s\n", mibname);
+	return -1;
+    }
+
+    /*
+     *  Unpick this into the constituent structures, and extract
+     *     the 'inpcb' elements into a linked list (built in reverse)
+     */
+    for (i = 0; i < pcb_len / sizeof(*pcblist); i++) {
+	struct kinfo_pcb *pcb = pcblist+i;
+	state = StateMap[pcb->ki_tstate];
+
+	if (load_flags) {
+	    if (state == TCPCONNECTIONSTATE_LISTEN) {
+		if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_NOLISTEN) {
+		    DEBUGMSGT(("verbose:access:tcpconn:container",
+			       " skipping listen\n"));
+		    continue;
+		}
+	    }
+	    else if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_ONLYLISTEN) {
+		DEBUGMSGT(("verbose:access:tcpconn:container",
+			    " skipping non-listen\n"));
+		continue;
+	    }
+	}
+
+        entry = netsnmp_access_tcpconn_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        entry->tcpConnState = state;
+        entry->pid = 0;
+        
+	if (ver == 6) {
+	    struct sockaddr_in6 src, dst;
+	    memcpy(&src, &pcb->ki_s, sizeof(src));
+	    memcpy(&dst, &pcb->ki_d, sizeof(dst));
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &src.sin6_addr, 16);
+	    memcpy(entry->rmt_addr, &dst.sin6_addr, 16);
+	    entry->loc_port = ntohs(src.sin6_port);
+	    entry->rmt_port = ntohs(dst.sin6_port);
+	}
+	else {
+	    struct sockaddr_in src, dst;
+	    memcpy(&src, &pcb->ki_s, sizeof(src));
+	    memcpy(&dst, &pcb->ki_d, sizeof(dst));
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &src.sin_addr, 4);
+	    memcpy(entry->rmt_addr, &dst.sin_addr, 4);
+	    entry->loc_port = ntohs(src.sin_port);
+	    entry->rmt_port = ntohs(dst.sin_port);
+	}
+
+        /*
+         * add entry to container
+         */
+        entry->arbitrary_index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+    }
+
+    if(rc<0)
+        return rc;
+
+    return 0;
+}
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c
new file mode 100644
index 0000000..001064f
--- /dev/null
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c
@@ -0,0 +1,211 @@
+/*
+ *  tcpConnTable MIB architecture support for OpenBSD
+ */
+#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/tcpConn.h>
+#include <net-snmp/agent/auto_nlist.h>
+
+#include "tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h"
+#include "tcp-mib/data_access/tcpConn_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#if HAVE_NETINET_TCPIP_H
+#include <netinet/tcpip.h>
+#endif
+#if HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_tcpconn_entry_init(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_tcpconn_entry_cleanup(netsnmp_tcpconn_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_tcpconn_entry_copy(netsnmp_tcpconn_entry *lhs,
+                                  netsnmp_tcpconn_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 tcpConn delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_tcpconn_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:tcpconn:container",
+                "tcpconn_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags);
+
+    return rc;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags)
+{
+    struct inpcbtable table;
+    struct inpcb   *head, *next, *prev;
+    struct inpcb   inpcb;
+    struct tcpcb   tcpcb;
+    int      StateMap[] = { 1, 2, 3, 4, 5, 8, 6, 10, 9, 7, 11 };
+    netsnmp_tcpconn_entry  *entry;
+    int      state;
+    int      rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    if (!auto_nlist(TCP_SYMBOL, (char *)&table, sizeof(table))) {
+	DEBUGMSGTL(("tcp-mib/tcpConn_openbsd", "Failed to read tcp_symbol\n"));
+	return -1;
+    }
+
+    prev = (struct inpcb *)&CIRCLEQ_FIRST(&table.inpt_queue);
+    prev = NULL;
+    head = next = CIRCLEQ_FIRST(&table.inpt_queue);
+
+    while (next) {
+	if (!NETSNMP_KLOOKUP(next, (char *)&inpcb, sizeof(inpcb))) {
+	    DEBUGMSGTL(("tcp-mib/data_access/tcpConn", "klookup inpcb failed\n"));
+	    break;
+	}
+	if (prev && CIRCLEQ_PREV(&inpcb, inp_queue) != prev) {
+	    snmp_log(LOG_ERR,"tcbtable link error\n");
+	    break;
+	}
+	prev = next;
+	next = CIRCLEQ_NEXT(&inpcb, inp_queue);
+	if (!NETSNMP_KLOOKUP(inpcb.inp_ppcb, (char *)&tcpcb, sizeof(tcpcb))) {
+	    DEBUGMSGTL(("tcp-mib/data_access/tcpConn", "klookup tcpcb failed\n"));
+	    break;
+	}
+	state = StateMap[tcpcb.t_state];
+
+	if (load_flags) {
+	    if (state == TCPCONNECTIONSTATE_LISTEN) {
+		if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_NOLISTEN) {
+		    DEBUGMSGT(("verbose:access:tcpconn:container",
+			       " skipping listen\n"));
+		    goto skip;
+		}
+	    }
+	    else if (load_flags & NETSNMP_ACCESS_TCPCONN_LOAD_ONLYLISTEN) {
+		DEBUGMSGT(("verbose:access:tcpconn:container",
+			    " skipping non-listen\n"));
+		goto skip;
+	    }
+	}
+
+#if !defined(NETSNMP_ENABLE_IPV6)
+        if (inpcb.inp_flags & INP_IPV6)
+	    goto skip;
+#endif
+
+        entry = netsnmp_access_tcpconn_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        /** oddly enough, these appear to already be in network order */
+        entry->loc_port = ntohs(inpcb.inp_lport);
+        entry->rmt_port = ntohs(inpcb.inp_fport);
+        entry->tcpConnState = state;
+        entry->pid = 0;
+        
+        /** the addr string may need work */
+	if (inpcb.inp_flags & INP_IPV6) {
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &inpcb.inp_laddr6, 16);
+	    memcpy(entry->rmt_addr, &inpcb.inp_faddr6, 16);
+	}
+	else {
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &inpcb.inp_laddr, 4);
+	    memcpy(entry->rmt_addr, &inpcb.inp_faddr, 4);
+	}
+	DEBUGMSGTL(("tcp-mib/data_access", "tcp %d %d %d\n",
+	    entry->loc_addr_len, entry->loc_port, entry->rmt_port));
+
+        /*
+         * add entry to container
+         */
+        entry->arbitrary_index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+skip:
+	if (head == next)
+	    break;
+    }
+
+    if(rc<0)
+        return rc;
+
+    return 0;
+}
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c b/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
index 7c2c6ae..959d708 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
@@ -40,7 +40,7 @@
 }
 
 int 
-netsnmp_arch_tcpconn_delete(netsnmp_tcpconn_entry *ep)
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *ep)
 {
     /*
      * Not implemented 
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
index f5d054f..c999a0e 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
@@ -355,8 +355,7 @@
         tcpConnectionLocalAddress_val_ptr_len;
     memcpy(tbl_idx->tcpConnectionLocalAddress,
            tcpConnectionLocalAddress_val_ptr,
-           tcpConnectionLocalAddress_val_ptr_len *
-           sizeof(tcpConnectionLocalAddress_val_ptr[0]));
+           tcpConnectionLocalAddress_val_ptr_len);
 
     /*
      * tcpConnectionLocalPort(3)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H 
@@ -389,8 +388,7 @@
         tcpConnectionRemAddress_val_ptr_len;
     memcpy(tbl_idx->tcpConnectionRemAddress,
            tcpConnectionRemAddress_val_ptr,
-           tcpConnectionRemAddress_val_ptr_len *
-           sizeof(tcpConnectionRemAddress_val_ptr[0]));
+           tcpConnectionRemAddress_val_ptr_len);
 
     /*
      * tcpConnectionRemPort(6)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H 
@@ -406,7 +404,7 @@
  * @internal
  * set row context indexes
  *
- * @param reqreq_ctx the row context that needs updated indexes
+ * @param rowreq_ctx the row context that needs updated indexes
  *
  * @retval MFD_SUCCESS     : success.
  * @retval MFD_ERROR       : other error.
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
index a4f5bbe..dfb9649 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
@@ -190,7 +190,7 @@
         if (CONTAINER_INSERT(container, rowreq_ctx)) {
             NETSNMP_LOGONCE((LOG_DEBUG,
                     "Error inserting entry to tcpConnectionTable,"\
-                    " entry already exists."));
+                    " entry already exists.\n"));
             tcpConnectionTable_release_rowreq_ctx(rowreq_ctx);
         }
     } else {
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
index 5348614..d1c2fb3 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
@@ -193,7 +193,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = TCPCONNECTIONTABLE_MIN_COL;
     tbl_info->max_column = TCPCONNECTIONTABLE_MAX_COL;
@@ -784,7 +784,7 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -840,7 +840,7 @@
                                       netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_object_lookup", "called\n"));
@@ -921,7 +921,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1118,7 +1118,7 @@
                                       *agtreq_info,
                                       netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc;
@@ -1166,7 +1166,7 @@
                                            netsnmp_request_info *requests)
 {
     int             rc;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_check_dependencies", "called\n"));
 
@@ -1233,7 +1233,7 @@
                                    netsnmp_request_info *requests)
 {
     int             rc;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_undo_setup", "called\n"));
@@ -1298,7 +1298,7 @@
                                      *agtreq_info,
                                      netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc;
 
@@ -1381,7 +1381,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     int             rc = SNMP_ERR_NOERROR;
@@ -1429,7 +1429,7 @@
                                netsnmp_request_info *requests)
 {
     int             rc;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_commit", "called\n"));
@@ -1463,7 +1463,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_undo_commit", "called\n"));
@@ -1542,7 +1542,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc;
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
 
@@ -1597,7 +1597,7 @@
                                             *agtreq_info,
                                             netsnmp_request_info *requests)
 {
-    tcpConnectionTable_rowreq_ctx *rowreq_ctx =
+    tcpConnectionTable_rowreq_ctx *rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpConnectionTable:_mfd_tcpConnectionTable_irreversible:commit", "called\n"));
@@ -1742,9 +1742,12 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     tcpConnectionTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find("tcpConnectionTable:table_container");
+        if (if_ctx->container)
+        if_ctx->container->container_name = strdup("tcpConnectionTable");
+    }
     if (NULL == if_ctx->container) {
         snmp_log(LOG_ERR, "error creating container in "
                  "tcpConnectionTable_container_init\n");
@@ -1794,7 +1797,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         CONTAINER_FIND(tcpConnectionTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
index cfabdd1..a5c9510 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
@@ -150,7 +150,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = TCPLISTENERTABLE_MIN_COL;
     tbl_info->max_column = TCPLISTENERTABLE_MAX_COL;
@@ -609,7 +609,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    tcpListenerTable_rowreq_ctx *rowreq_ctx =
+    tcpListenerTable_rowreq_ctx *rowreq_ctx = (tcpListenerTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -656,7 +656,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    tcpListenerTable_rowreq_ctx *rowreq_ctx =
+    tcpListenerTable_rowreq_ctx *rowreq_ctx = (tcpListenerTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:tcpListenerTable:_mfd_tcpListenerTable_object_lookup", "called\n"));
@@ -727,7 +727,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    tcpListenerTable_rowreq_ctx *rowreq_ctx =
+    tcpListenerTable_rowreq_ctx *rowreq_ctx = (tcpListenerTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -924,9 +924,12 @@
     if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
 
     tcpListenerTable_container_init(&if_ctx->container, if_ctx->cache);
-    if (NULL == if_ctx->container)
+    if (NULL == if_ctx->container) {
         if_ctx->container =
             netsnmp_container_find("tcpListenerTable:table_container");
+        if (if_ctx->container)
+            if_ctx->container->container_name = strdup("tcpListenerTable");
+    }
     if (NULL == if_ctx->container) {
         snmp_log(LOG_ERR, "error creating container in "
                  "tcpListenerTable_container_init\n");
@@ -976,7 +979,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (tcpListenerTable_rowreq_ctx*)
         CONTAINER_FIND(tcpListenerTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/tlstm-mib.h b/agent/mibgroup/tlstm-mib.h
new file mode 100644
index 0000000..50e6985
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib.h
@@ -0,0 +1,11 @@
+/*
+ * module to include the modules
+ */
+config_require(tlstm-mib/snmpTlstmSession)
+config_require(tlstm-mib/snmpTlstmAddrTable)
+config_require(tlstm-mib/snmpTlstmCertToTSNTable)
+config_require(tlstm-mib/snmpTlstmParamsTable)
+config_add_mib(SNMP-TLS-TM-MIB)
+config_add_mib(SNMP-TSM-MIB)
+
+#define SNMP_TLS_TM_BASE     1, 3, 6, 1, 2, 1, 198
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h
new file mode 100644
index 0000000..7b10905
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable.h
@@ -0,0 +1,7 @@
+#ifndef SNMPTLSTMADDRTABLE_H
+#define SNMPTLSTMADDRTABLE_H
+
+config_require(tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable)
+
+
+#endif                          /* SNMPTLSTMADDRTABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
new file mode 100644
index 0000000..eda64f3
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
@@ -0,0 +1,1426 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+#include "snmpTlstmAddrTable.h"
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#define FATE_DELETE_ME        -1
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+    /*
+     * structure for undo storage and other vars for set processing 
+     */
+typedef struct tlstmAddrTable_undo_s {
+    char            fate;
+    char            copied;
+    char            is_consistent;
+    netsnmp_request_info *req[TLSTMADDRTABLE_MAX_COLUMN + 1];
+    /*
+     * undo Column space 
+     */
+    char       tlstmAddrServerFingerprint[TLSTMADDRSERVERFINGERPRINT_MAX_SIZE];
+    size_t          tlstmAddrServerFingerprint_len;
+    char            tlstmAddrServerIdentity[TLSTMADDRSERVERIDENTITY_MAX_SIZE];
+    size_t          tlstmAddrServerIdentity_len;
+    char            tlstmAddrStorageType;
+    char            tlstmAddrRowStatus;
+    char            hashType;
+} tlstmAddrTable_undo;
+
+    /*
+     * Typical data structure for a row entry 
+     */
+typedef struct tlstmAddrTable_entry_s {
+    /*
+     * Index values 
+     */
+    char            snmpTargetAddrName[SNMPTARGETADDRNAME_MAX_SIZE];
+    size_t          snmpTargetAddrName_len;
+
+    /*
+     * Column values 
+     */
+    char        tlstmAddrServerFingerprint[TLSTMADDRSERVERFINGERPRINT_MAX_SIZE];
+    size_t          tlstmAddrServerFingerprint_len;
+    char            tlstmAddrServerIdentity[TLSTMADDRSERVERIDENTITY_MAX_SIZE];
+    size_t          tlstmAddrServerIdentity_len;
+    char            tlstmAddrStorageType;
+    char            tlstmAddrRowStatus;
+    char            hashType;
+
+    /*
+     * used during set processing 
+     */
+    tlstmAddrTable_undo *undo;
+
+    /*
+     * user data
+     */
+    struct netsnmp_cert_s   *cert;
+    char                     addr_flags;
+
+} tlstmAddrTable_entry;
+
+netsnmp_tdata_row *tlstmAddrTable_createEntry(netsnmp_tdata * table_data,
+                                              char *snmpTargetAddrName,
+                                              size_t snmpTargetAddrName_len);
+void tlstmAddrTable_removeEntry(netsnmp_tdata * table_data,
+                                netsnmp_tdata_row * row);
+
+static Netsnmp_Node_Handler tlstmAddrTable_handler;
+static int _cache_load(netsnmp_cache *cache, netsnmp_tdata *table);
+static void _cache_free(netsnmp_cache *cache, netsnmp_tdata *table);
+static uint32_t _last_changed = 0;
+static int _count_handler(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info *reqinfo,
+                          netsnmp_request_info *requests);
+
+static void _tlstmAddr_init_persistence(void);
+static void _addrs_add(tlstmAddrTable_entry *entry);
+static void _addrs_remove(tlstmAddrTable_entry *entry);
+static void _addr_tweak_storage(tlstmAddrTable_entry *entry);
+static netsnmp_tdata  *_table_data = NULL;
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+/** Initializes the tlstmAddrTable module */
+void
+init_snmpTlstmAddrTable(void)
+{
+    oid             reg_oid[] = { SNMP_TLS_TM_ADDR_TABLE };
+    const size_t    reg_oid_len = OID_LENGTH(reg_oid);
+    netsnmp_handler_registration *reg;
+    netsnmp_table_registration_info *table_info;
+    netsnmp_cache                   *cache;
+    netsnmp_watcher_info            *watcher;
+
+    DEBUGMSGTL(("tlstmAddrTable:init",
+                "initializing table tlstmAddrTable\n"));
+
+    reg =
+        netsnmp_create_handler_registration("tlstmAddrTable",
+                                            tlstmAddrTable_handler,
+                                            reg_oid, reg_oid_len,
+                                            HANDLER_CAN_RWRITE);
+
+    _table_data = netsnmp_tdata_create_table("tlstmAddrTable", 0);
+    if (NULL == _table_data) {
+        snmp_log(LOG_ERR, "error creating tdata table for tlstmAddrTable\n");
+        return;
+    }
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR, "error creating table info for tlstmAddrTable\n");
+        netsnmp_tdata_delete_table(_table_data);
+        _table_data = NULL;
+        return;
+    }
+
+    /*
+     * cache init
+     */
+    cache = netsnmp_cache_create(30, (NetsnmpCacheLoad*)_cache_load,
+                                 (NetsnmpCacheFree*)_cache_free,
+                                 reg_oid, reg_oid_len);
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,"error creating cache for tlstmCertToTSNTable\n");
+        netsnmp_tdata_delete_table(_table_data);
+        _table_data = NULL;
+        return;
+    }
+    cache->magic = (void *)_table_data;
+    cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    /*
+     * populate index types
+     */
+    netsnmp_table_helper_add_indexes(table_info,
+                                     /* index: snmpTargetAddrName */
+                                     ASN_PRIV_IMPLIED_OCTET_STR, 
+                                     0);
+
+    table_info->min_column = TLSTMADDRTABLE_MIN_COLUMN;
+    table_info->max_column = TLSTMADDRTABLE_MAX_COLUMN;
+
+    netsnmp_tdata_register(reg, _table_data, table_info);
+
+    if (cache) 
+        netsnmp_inject_handler_before( reg, netsnmp_cache_handler_get(cache),
+                                       "table_container");
+
+    /*
+     * register scalars
+     */
+    reg_oid[10] = 7;
+    reg = netsnmp_create_handler_registration("snmpTlstmAddrCount",
+                                              _count_handler, reg_oid,
+                                              OID_LENGTH(reg_oid),
+                                              HANDLER_CAN_RONLY);
+    if (NULL == reg)
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmAddrCount\n");
+    else {
+        netsnmp_register_scalar(reg);
+        if (cache) 
+            netsnmp_inject_handler_before(reg,
+                                          netsnmp_cache_handler_get(cache),
+                                          "snmpTlstmAddrCount");
+    }
+    
+    reg_oid[10] = 8;
+    reg = netsnmp_create_handler_registration(
+        "snmpTlstmAddrTableLastChanged", NULL, reg_oid,
+        OID_LENGTH(reg_oid), HANDLER_CAN_RONLY);
+    watcher = netsnmp_create_watcher_info((void*)&_last_changed,
+                                          sizeof(_last_changed),
+                                          ASN_TIMETICKS,
+                                          WATCHER_FIXED_SIZE);
+    if ((NULL == reg) || (NULL == watcher))
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmAddrTableLastChanged\n");
+    else
+        netsnmp_register_watched_scalar(reg, watcher);
+
+    /*
+     * Initialise the contents of the table here 
+     */
+    _tlstmAddr_init_persistence();
+}
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+/*
+ * create a new row in the table 
+ */
+netsnmp_tdata_row *
+tlstmAddrTable_createEntry(netsnmp_tdata * table_data,
+                           char *snmpTargetAddrName,
+                           size_t snmpTargetAddrName_len)
+{
+    tlstmAddrTable_entry *entry;
+    netsnmp_tdata_row *row;
+
+    if (snmpTargetAddrName_len > sizeof(entry->snmpTargetAddrName))
+        return NULL;
+
+    entry = SNMP_MALLOC_TYPEDEF(tlstmAddrTable_entry);
+    if (!entry)
+        return NULL;
+
+    row = netsnmp_tdata_create_row();
+    if (!row) {
+        SNMP_FREE(entry);
+        return NULL;
+    }
+    row->data = entry;
+
+    DEBUGIF("tlstmAddrTable:entry:create") {
+        char name[sizeof(entry->snmpTargetAddrName)+1];
+        snprintf(name, sizeof(name), "%s", snmpTargetAddrName);
+        DEBUGMSGT(("tlstmAddrTable:entry:create", "entry %s %p / row %p\n",
+                   name, entry, row));
+    }
+
+    /*
+     * populate index
+     */
+    memcpy(entry->snmpTargetAddrName, snmpTargetAddrName,
+           snmpTargetAddrName_len);
+    entry->snmpTargetAddrName_len = snmpTargetAddrName_len;
+    netsnmp_tdata_row_add_index(row, ASN_PRIV_IMPLIED_OCTET_STR,
+                                entry->snmpTargetAddrName,
+                                snmpTargetAddrName_len);
+
+    /*
+     * defaults
+     */
+    entry->tlstmAddrServerFingerprint[0] = '\0';
+    entry->tlstmAddrServerFingerprint_len = 0;
+    entry->hashType = 0;
+    entry->tlstmAddrServerIdentity[0] = '\0';
+    entry->tlstmAddrServerIdentity_len = 0;
+    entry->tlstmAddrStorageType = ST_NONVOLATILE;
+    entry->tlstmAddrRowStatus = RS_NOTREADY;
+
+    if (table_data) {
+        DEBUGMSGTL(("tlstmAddrTable:row:insert", "row %p\n",row));
+        netsnmp_tdata_add_row(table_data, row);
+    }
+    return row;
+}
+
+/*
+ * allocate undo resources 
+ */
+static tlstmAddrTable_undo *
+_allocUndo(tlstmAddrTable_entry * entry)
+{
+    if (!entry)
+        return NULL;
+
+    entry->undo = SNMP_MALLOC_TYPEDEF(tlstmAddrTable_undo);
+    if (!entry->undo)
+        return NULL;
+
+    entry->undo->is_consistent = -1;    /* don't know */
+
+    return entry->undo;
+}
+
+/*
+ * free undo resources 
+ */
+static void
+_freeUndo(tlstmAddrTable_entry * entry)
+{
+    if (!entry || !entry->undo)
+        return;
+
+    SNMP_FREE(entry->undo);
+}
+
+/*
+ * remove a row from the table 
+ */
+void
+tlstmAddrTable_removeEntry(netsnmp_tdata * table_data,
+                           netsnmp_tdata_row * row)
+{
+    tlstmAddrTable_entry *entry;
+
+    if (!row)
+        return;                 /* Nothing to remove */
+
+    entry = (tlstmAddrTable_entry *) row->data;
+
+    if (table_data) {
+        DEBUGMSGTL(("tlstmAddrTable:row:remove", "row %p\n",row));
+        netsnmp_tdata_remove_and_delete_row(table_data, row);
+    }
+    else
+        netsnmp_tdata_delete_row(row);
+
+    DEBUGIF("tlstmAddrTable:entry:delete") {
+        char name[sizeof(entry->snmpTargetAddrName)+1];
+        snprintf(name, sizeof(name), "%s", entry->snmpTargetAddrName);
+        DEBUGMSGT(("tlstmAddrTable:entry:delete", "entry %s %p / row %p\n",
+                   name, entry, row));
+    }
+    if (entry && entry->undo)
+        _freeUndo(entry);
+    SNMP_FREE(entry);
+}
+
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+/** handles requests for the tlstmAddrTable table */
+static int
+tlstmAddrTable_handler(netsnmp_mib_handler *handler,
+                       netsnmp_handler_registration *reginfo,
+                       netsnmp_agent_request_info *reqinfo,
+                       netsnmp_request_info *requests)
+{
+
+    netsnmp_request_info *request = NULL;
+    netsnmp_table_request_info *table_info;
+    netsnmp_tdata  *table_data;
+    netsnmp_tdata_row *table_row;
+    tlstmAddrTable_entry *table_entry;
+    int             ret = SNMP_ERR_NOERROR;
+
+    DEBUGMSGTL(("tlstmAddrTable:handler", "Processing mode %s (%d) request\n",
+                se_find_label_in_slist("agent_mode", reqinfo->mode),
+                reqinfo->mode));
+
+    switch (reqinfo->mode) {
+    /** ######################################################### GET #####
+     *
+     *   Read-support (also covers GetNext requests)
+     */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+                continue;
+
+            table_entry = (tlstmAddrTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT:
+            {
+                u_char bin[42], *ptr = bin;
+                size_t len = sizeof(bin), offset = 1;
+                int    rc;
+
+                if ((table_entry->hashType == 0) ||
+                    (table_entry->tlstmAddrServerFingerprint_len ==0))
+                    offset = 0;
+                else {
+                    bin[0] = table_entry->hashType;
+                    rc = netsnmp_hex_to_binary(
+                        &ptr, &len, &offset, 0,
+                        table_entry->tlstmAddrServerFingerprint, NULL);
+                    if (1 != rc)
+                        ret = SNMP_ERR_GENERR;
+                }
+                if (ret == SNMP_ERR_NOERROR)
+                    snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                             bin, offset);
+            }
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT */
+            case COLUMN_SNMPTLSTMADDRSERVERIDENTITY:
+                snmp_set_var_typed_value
+                    (request->requestvb, ASN_OCTET_STR,
+                     (u_char *) table_entry->tlstmAddrServerIdentity,
+                     table_entry->tlstmAddrServerIdentity_len);
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERIDENTITY */
+            case COLUMN_SNMPTLSTMADDRSTORAGETYPE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->tlstmAddrStorageType);
+                break;          /* case COLUMN_SNMPTLSTMADDRSTORAGETYPE */
+            case COLUMN_SNMPTLSTMADDRROWSTATUS:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->tlstmAddrRowStatus);
+                break;          /* case COLUMN_SNMPTLSTMADDRROWSTATUS */
+            default:
+                netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
+                break;
+            }                   /* switch colnum */
+        }                       /* for requests */
+        break;                  /* case MODE_GET */
+
+        /*
+         * Write-support
+         */
+    /** #################################################### RESERVE1 #####
+     *
+     *   In RESERVE1 we are just checking basic ASN.1 size/type restrictions.
+     * You probably don't need to change any of this code. Don't change any
+     * of the column values here. Save that for the ACTION phase.
+     *
+     *   The next phase is RESERVE2 or FREE.
+     */
+    case MODE_SET_RESERVE1:
+        for (request = requests; request; request = request->next) {
+            table_entry = (tlstmAddrTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            if ((NULL != table_entry) &&
+                (ST_READONLY == table_entry->tlstmAddrStorageType)) {
+                ret = SNMP_ERR_NOTWRITABLE;
+                break;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT:
+                ret = netsnmp_check_vb_type_and_max_size
+                    (request->requestvb, ASN_OCTET_STR,
+                     sizeof(table_entry->tlstmAddrServerFingerprint));
+                /** check len/algorithm MIB requirements */
+                if (ret == SNMP_ERR_NOERROR)
+                    ret = netsnmp_cert_check_vb_fingerprint(request->requestvb);
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT */
+            case COLUMN_SNMPTLSTMADDRSERVERIDENTITY:
+                ret = netsnmp_check_vb_type_and_max_size
+                    (request->requestvb, ASN_OCTET_STR,
+                     sizeof(table_entry->tlstmAddrServerIdentity));
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERIDENTITY */
+            case COLUMN_SNMPTLSTMADDRSTORAGETYPE:
+                ret = netsnmp_check_vb_storagetype
+                    (request->requestvb,
+                     (table_entry ?
+                      table_entry->tlstmAddrStorageType : ST_NONE));
+                break;          /* case COLUMN_SNMPTLSTMADDRSTORAGETYPE */
+            case COLUMN_SNMPTLSTMADDRROWSTATUS:
+                ret = netsnmp_check_vb_rowstatus_with_storagetype
+                    (request->requestvb,
+                     (table_entry ?
+                      table_entry->tlstmAddrRowStatus : RS_NONEXISTENT),
+                     (table_entry ?
+                      table_entry->tlstmAddrStorageType : ST_NONE));
+                break;          /* case COLUMN_SNMPTLSTMADDRROWSTATUS */
+            default:
+                ret = SNMP_ERR_NOTWRITABLE;
+            }                   /* switch colnum */
+
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* for requests */
+        break;                  /* case MODE_SET_RESERVE1 */
+
+    /** #################################################### RESERVE2 #####
+     *
+     *   RESERVE2 is for checking additional restrictions from the MIB.
+     * Since these restrictions are often in the description of the object,
+     * mib2c can't generate code. It's possible that you need to add
+     * additional checks here. However, don't change any of the column
+     * values here. Save that for the ACTION phase.
+     *
+     *   The next phase is ACTION or FREE.
+     */
+    case MODE_SET_RESERVE2:
+        for (request = requests; request; request = request->next) {
+            table_entry = (tlstmAddrTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_data = netsnmp_tdata_extract_table(request);
+            table_info = netsnmp_extract_table_info(request);
+            /*
+             * if no table_row, create one
+             */
+            if (!table_entry) {
+                table_row = tlstmAddrTable_createEntry
+                    (table_data, (char*)table_info->indexes->val.string,
+                     table_info->indexes->val_len);
+                if (!table_row) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                table_entry = table_row->data;
+                _allocUndo(table_entry);
+                if (table_entry && !table_entry->undo) {
+                    tlstmAddrTable_removeEntry(table_data, table_row);
+                    table_row = NULL;
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                table_entry->undo->fate = FATE_NEWLY_CREATED;
+                /** associate row with requests */
+                netsnmp_insert_tdata_row(request, table_row);
+            }
+
+            /** allocate undo structure, if needed */
+            if (!table_entry->undo) {
+                _allocUndo(table_entry);
+                if (!table_entry->undo) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+            }
+
+            /** don't allow multiple sets of same column */
+            if (table_entry->undo->req[table_info->colnum]) {
+                DEBUGMSGT(("tlstmAddrTable:reserve2",
+                           "multiple sets to col %d in request\n",
+                           table_info->colnum));
+                ret = SNMP_ERR_INCONSISTENTNAME;
+                break;
+            }
+            table_entry->undo->req[table_info->colnum] = request;
+
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* for requests */
+
+        /** make sure rowstatus is used to create rows */
+        if (ret == SNMP_ERR_NOERROR) {
+            for (request = requests; request; request = request->next) {
+                if (request->processed)
+                    continue;
+
+                table_entry = (tlstmAddrTable_entry *)
+                    netsnmp_tdata_extract_entry(request);
+                if ((table_entry->undo->fate != FATE_NEWLY_CREATED) ||
+                    (table_entry->undo->req[COLUMN_SNMPTLSTMADDRROWSTATUS]))
+                    continue;
+                ret = SNMP_ERR_INCONSISTENTNAME;
+                break;
+            }                   /* for requests / creation */
+        }                       /* if no error */
+        break;                  /* case MODE_SET_RESERVE2 */
+
+    /** ######################################################## FREE #####
+     *
+     *   FREE is for cleaning up after a failed request (during either
+     * RESERVE1 or RESERVE2). So any allocated resources need to be
+     * released.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_FREE:
+        /*
+         * release undo resources,  remove any newly created rows
+         */
+        for (request = requests; request; request = request->next) {
+            table_row = netsnmp_tdata_extract_row(request);
+            table_data  =  netsnmp_tdata_extract_table(request);
+            table_entry =
+                (tlstmAddrTable_entry *) table_row ? table_row->
+                data : NULL;
+
+            if (!table_entry || !table_entry->undo)
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row(request, table_row);
+
+            if (FATE_NEWLY_CREATED == table_entry->undo->fate)
+                tlstmAddrTable_removeEntry(table_data, table_row);
+            else
+                _freeUndo(table_entry);
+        }
+        break;                  /* case MODE_SET_FREE */
+
+    /** ###################################################### ACTION #####
+     *
+     *   In the ACTION phase, we perform any sets that can be undone.
+     * (Save anything that can't be undone for the COMMIT phase.)
+     *
+     *   After individual columns have been done, you should check that the
+     * row as a whole is consistent.
+     *
+     * The next phase is UNDO or COMMIT.
+     */
+    case MODE_SET_ACTION:
+        for (request = requests; request; request = request->next) {
+            table_entry = (tlstmAddrTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT:
+            {
+                u_char *tmp = (u_char*)table_entry->tlstmAddrServerFingerprint;
+
+                memcpy(table_entry->undo->tlstmAddrServerFingerprint,
+                       table_entry->tlstmAddrServerFingerprint,
+                       sizeof(table_entry->tlstmAddrServerFingerprint));
+                table_entry->undo->tlstmAddrServerFingerprint_len =
+                    table_entry->tlstmAddrServerFingerprint_len;
+                table_entry->undo->hashType = table_entry->hashType;
+
+                table_entry->hashType = request->requestvb->val.string[0];
+                table_entry->tlstmAddrServerFingerprint_len =
+                    sizeof(table_entry->tlstmAddrServerFingerprint);
+                memset(table_entry->tlstmAddrServerFingerprint, 0,
+                       sizeof(table_entry->tlstmAddrServerFingerprint));
+                table_entry->tlstmAddrServerFingerprint_len =
+                    netsnmp_binary_to_hex(&tmp, &table_entry->tlstmAddrServerFingerprint_len,
+                                          0, &request->requestvb->val.string[1],
+                                          request->requestvb->val_len - 1);
+                if (0 == table_entry->tlstmAddrServerFingerprint_len)
+                    ret = SNMP_ERR_GENERR;
+            }
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT */
+            case COLUMN_SNMPTLSTMADDRSERVERIDENTITY:
+                memcpy(table_entry->undo->tlstmAddrServerIdentity,
+                       table_entry->tlstmAddrServerIdentity,
+                       sizeof(table_entry->tlstmAddrServerIdentity));
+                table_entry->undo->tlstmAddrServerIdentity_len =
+                    table_entry->tlstmAddrServerIdentity_len;
+                memset(table_entry->tlstmAddrServerIdentity, 0,
+                       sizeof(table_entry->tlstmAddrServerIdentity));
+                memcpy(table_entry->tlstmAddrServerIdentity,
+                       request->requestvb->val.string,
+                       request->requestvb->val_len);
+                table_entry->tlstmAddrServerIdentity_len =
+                    request->requestvb->val_len;
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERIDENTITY */
+            case COLUMN_SNMPTLSTMADDRSTORAGETYPE:
+                table_entry->undo->tlstmAddrStorageType =
+                    table_entry->tlstmAddrStorageType;
+                table_entry->tlstmAddrStorageType =
+                    *request->requestvb->val.integer;
+                break;          /* case COLUMN_SNMPTLSTMADDRSTORAGETYPE */
+            case COLUMN_SNMPTLSTMADDRROWSTATUS:
+                table_entry->undo->tlstmAddrRowStatus =
+                    table_entry->tlstmAddrRowStatus;
+                table_entry->tlstmAddrRowStatus =
+                    *request->requestvb->val.integer;
+                break;          /* case COLUMN_SNMPTLSTMADDRROWSTATUS */
+            }                   /* switch colnum */
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* set values for requests */
+
+        if (ret == SNMP_ERR_NOERROR) {
+
+            /*
+             * All columns now have their final values set. check the
+             * internal consistency of each row.
+             */
+            for (request = requests; request; request = request->next) {
+                table_entry = (tlstmAddrTable_entry *)
+                    netsnmp_tdata_extract_entry(request);
+                table_info = netsnmp_extract_table_info(request);
+
+                if (table_entry->undo->is_consistent != -1)
+                    continue;   /* already checked */
+
+                /** assume consistency */
+                table_entry->undo->is_consistent = 1;
+
+                /*
+                 * per mib, can't have empty fingerprint and wildcard id
+                 */
+                if ( (0 == table_entry->tlstmAddrServerFingerprint_len) &&
+                     (1 == table_entry->tlstmAddrServerIdentity_len) &&
+                     ('*' == table_entry->tlstmAddrServerIdentity[0]) ) {
+                    DEBUGMSGTL(("tlstmAddrTable", "fingerprint must not "
+                                "be empty for wildcard (*) identity\n"));
+                    table_entry->undo->is_consistent = 0;
+                }
+                
+                if ((RS_IS_ACTIVE(table_entry->tlstmAddrRowStatus)) &&
+                    ((!table_entry->undo->req[COLUMN_SNMPTLSTMADDRROWSTATUS]) ||
+                     (RS_IS_ACTIVE(table_entry->undo->tlstmAddrRowStatus)))) {
+                    /*
+                     * check mib restrictions on active rows.
+                     */
+                    if (table_entry->undo->req[COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT]) {
+                        table_entry->undo->is_consistent = 0;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT];
+                    }
+                    else if (table_entry->undo->req[COLUMN_SNMPTLSTMADDRSERVERIDENTITY]) {
+                        table_entry->undo->is_consistent = 0;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMADDRSERVERIDENTITY];
+                    }
+                    else if (table_entry->undo->req[COLUMN_SNMPTLSTMADDRSTORAGETYPE]) {
+                        table_entry->undo->is_consistent = 0;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMADDRSTORAGETYPE];
+                    }
+                    
+                    if (!table_entry->undo->is_consistent)
+                        ret = SNMP_ERR_INCONSISTENTVALUE; /* per mib */
+                } /* active row */
+                else if (RS_IS_GOING_ACTIVE
+                         (table_entry->tlstmAddrRowStatus)) {
+                    /** if going active, inconsistency is fatal */
+                    if (!table_entry->undo->is_consistent) {
+                        if (FATE_NEWLY_CREATED == table_entry->undo->fate)
+                            ret = SNMP_ERR_INCONSISTENTNAME;
+                        else
+                            ret = SNMP_ERR_INCONSISTENTVALUE;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMADDRROWSTATUS];
+                    }
+                } /* going active */
+                else if (RS_DESTROY == table_entry->tlstmAddrRowStatus) {
+                    /** can't delete active row */
+                    if (RS_IS_ACTIVE(table_entry->undo->tlstmAddrRowStatus)) {
+                        ret = SNMP_ERR_INCONSISTENTVALUE;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMADDRROWSTATUS];
+                    }
+                }               /* destroy */
+                if (ret != SNMP_ERR_NOERROR)
+                    break;
+            }                   /* consistency for requests */
+        }                       /* if no error */
+        break;                  /* case MODE_SET_ACTION */
+
+    /** ######################################################## UNDO #####
+     *
+     *   UNDO is for cleaning up any failed requests that went through the
+     * ACTION phase.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_UNDO:
+        for (request = requests; request; request = request->next) {
+            table_row = netsnmp_tdata_extract_row(request);
+            table_entry =
+                (tlstmAddrTable_entry *) table_row ? table_row->
+                data : NULL;
+            table_data = netsnmp_tdata_extract_table(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT:
+                /*
+                 * restore tlstmAddrServerFingerprint value 
+                 */
+                memcpy(table_entry->tlstmAddrServerFingerprint,
+                       table_entry->undo->tlstmAddrServerFingerprint,
+                       sizeof(table_entry->tlstmAddrServerFingerprint));
+                table_entry->tlstmAddrServerFingerprint_len =
+                    table_entry->undo->tlstmAddrServerFingerprint_len;
+                table_entry->hashType = table_entry->undo->hashType;
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT */
+            case COLUMN_SNMPTLSTMADDRSERVERIDENTITY:
+                /*
+                 * restore tlstmAddrServerIdentity value 
+                 */
+                memcpy(table_entry->tlstmAddrServerIdentity,
+                       table_entry->undo->tlstmAddrServerIdentity,
+                       sizeof(table_entry->tlstmAddrServerIdentity));
+                table_entry->tlstmAddrServerIdentity_len =
+                    table_entry->undo->tlstmAddrServerIdentity_len;
+                break;          /* case COLUMN_SNMPTLSTMADDRSERVERIDENTITY */
+            case COLUMN_SNMPTLSTMADDRSTORAGETYPE:
+                /*
+                 * restore tlstmAddrStorageType value 
+                 */
+                table_entry->tlstmAddrStorageType =
+                    table_entry->undo->tlstmAddrStorageType;
+                break;          /* case COLUMN_SNMPTLSTMADDRSTORAGETYPE */
+            case COLUMN_SNMPTLSTMADDRROWSTATUS:
+                /*
+                 * restore tlstmAddrRowStatus value 
+                 */
+                table_entry->tlstmAddrRowStatus =
+                    table_entry->undo->tlstmAddrRowStatus;
+                break;          /* case COLUMN_SNMPTLSTMADDRROWSTATUS */
+            }                   /* switch colnum */
+        }                       /* for requests */
+
+        /*
+         * release undo data
+         * or remove any newly created rows
+         */
+        for (request = requests; request; request = request->next) {
+            table_row = netsnmp_tdata_extract_row(request);
+            table_entry =
+                (tlstmAddrTable_entry *) table_row ? table_row->
+                data : NULL;
+
+            if (!table_entry || !table_entry->undo)
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row(request, table_row);
+
+            if (FATE_NEWLY_CREATED == table_entry->undo->fate)
+                tlstmAddrTable_removeEntry(table_data, table_row);
+            else
+                _freeUndo(table_entry);
+        }                       /* for requests */
+        break;                  /* case MODE_SET_UNDO */
+
+    /** ###################################################### COMMIT #####
+     *
+     *   COMMIT is the final success state, when all changes are finalized.
+     * There is not recovery state should something faile here.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_COMMIT:
+        for (request = requests; request; request = request->next) {
+            table_row = netsnmp_tdata_extract_row(request);
+            table_data = netsnmp_tdata_extract_table(request);
+            table_info = netsnmp_extract_table_info(request);
+            table_entry = (tlstmAddrTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+
+            if (!table_entry || !table_entry->undo)
+                continue;
+
+            if ((RS_NOTREADY == table_entry->tlstmAddrRowStatus) &&
+                table_entry->undo->is_consistent)
+                table_entry->tlstmAddrRowStatus = RS_NOTINSERVICE;
+            else if ((RS_NOTINSERVICE == table_entry->tlstmAddrRowStatus) &&
+                     (0 == table_entry->undo->is_consistent))
+                table_entry->tlstmAddrRowStatus = RS_NOTREADY;
+
+            /** release undo data for requests with no rowstatus */
+            if (table_entry->undo &&
+                !table_entry->undo->req[COLUMN_SNMPTLSTMADDRROWSTATUS] != 0) {
+
+                _freeUndo(table_entry);
+
+                /** update active addrs */
+                if ((0 == table_entry->addr_flags) &&
+                    (table_entry->tlstmAddrRowStatus == RS_ACTIVE))
+                    _addrs_add(table_entry);
+                else if ((0 != table_entry->addr_flags) &&
+                         (table_entry->tlstmAddrRowStatus == RS_DESTROY))
+                    _addrs_remove(table_entry);
+            }
+
+            switch (table_info->colnum) {
+                case COLUMN_SNMPTLSTMADDRROWSTATUS:
+                    switch (table_entry->tlstmAddrRowStatus) {
+                    case RS_CREATEANDGO:
+                    /** Fall-through */
+                    case RS_ACTIVE:
+                        table_entry->tlstmAddrRowStatus = RS_ACTIVE;
+                        if (0 == table_entry->addr_flags)
+                            _addrs_add(table_entry);
+                        break;
+
+                    case RS_CREATEANDWAIT:
+                        /** Fall-through */
+                    case RS_NOTINSERVICE:
+                        /** simply set status based on consistency */
+                        if (table_entry->undo->is_consistent)
+                            table_entry->tlstmAddrRowStatus =
+                                RS_NOTINSERVICE;
+                        else
+                            table_entry->tlstmAddrRowStatus = RS_NOTREADY;
+                        if (0 != table_entry->addr_flags)
+                            _addrs_remove(table_entry);
+                        break;
+
+                    case RS_DESTROY:
+                        if (0 != table_entry->addr_flags)
+                            _addrs_remove(table_entry);
+                        /** disassociate row with requests */
+                        netsnmp_remove_tdata_row(request, table_row);
+                        tlstmAddrTable_removeEntry(table_data, table_row);
+                        table_row = NULL;
+                        table_entry = NULL;
+                    }
+                    /** release undo data */
+                    _freeUndo(table_entry);
+                    break;      /* case COLUMN_SNMPTLSTMADDRROWSTATUS */
+
+                case COLUMN_SNMPTLSTMADDRSTORAGETYPE:
+                    if (RS_ACTIVE == table_entry->tlstmAddrRowStatus)
+                        _addr_tweak_storage(table_entry);
+                    break;
+
+                case COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT:
+                case COLUMN_SNMPTLSTMADDRSERVERIDENTITY:
+                    break;
+                }               /* switch colnum */
+        }                       /* for requests */
+
+        /** update last changed */
+        _last_changed = netsnmp_get_agent_uptime();
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
+        break;                  /* case MODE_SET_COMMIT */
+    }                           /* switch (reqinfo->mode) */
+
+    if (ret != SNMP_ERR_NOERROR)
+        netsnmp_set_request_error(reqinfo, request, ret);
+
+    return SNMP_ERR_NOERROR;
+}
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+static int
+_count_handler(netsnmp_mib_handler *handler,
+               netsnmp_handler_registration *reginfo,
+               netsnmp_agent_request_info *reqinfo,
+               netsnmp_request_info *requests)
+{
+    int                val;
+
+    if (MODE_GET != reqinfo->mode) {
+        snmp_log(LOG_ERR, "bad mode in RO handler");
+        return SNMP_ERR_GENERR;
+    }
+
+    if ((NULL == _table_data) || (NULL == _table_data->container))
+        val = 0;
+    else
+        val = CONTAINER_SIZE(_table_data->container);
+
+    snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE,
+                             (u_char *) &val, sizeof(val));
+   
+    if (handler->next && handler->next->access_method)
+        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
+                                         requests);
+    
+    return SNMP_ERR_NOERROR;
+}
+
+/** **************************************************************************
+ *
+ * handle cache / interactions with tlstmAddr container in snmplib
+ *
+ ** *************************************************************************/
+static void
+_addrs_add(tlstmAddrTable_entry *entry)
+{
+    netsnmp_container *addrs;
+    snmpTlstmAddr     *addr;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmAddrTable:addrs:add", "name %s, fp %s\n",
+                entry->snmpTargetAddrName, entry->tlstmAddrServerFingerprint));
+
+    /** get current active addrs */
+    addrs = netsnmp_tlstmAddr_container();
+    if (NULL == addrs)
+        return;
+
+    addr = netsnmp_tlstmAddr_create(entry->snmpTargetAddrName);
+    if (NULL == addr)
+        return;
+
+    if (entry->tlstmAddrServerFingerprint_len)
+        addr->fingerprint = strdup(entry->tlstmAddrServerFingerprint);
+    if (entry->tlstmAddrServerIdentity_len)
+        addr->identity = strdup(entry->tlstmAddrServerIdentity);
+    addr->hashType = entry->hashType;
+
+    addr->flags = TLSTM_ADDR_FROM_MIB;
+    if (entry->tlstmAddrStorageType == ST_NONVOLATILE)
+        addr->flags |= TLSTM_ADDR_NONVOLATILE;
+
+    if (CONTAINER_INSERT(addrs, addr) != 0) {
+        netsnmp_tlstmAddr_free(addr);
+        snmp_log(LOG_ERR, "could not insert new tlstm addr");
+    }
+}
+
+static void
+_addrs_remove(tlstmAddrTable_entry *entry)
+{
+    netsnmp_container *addrs;
+    snmpTlstmAddr      addr;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmAddrTable:addr:remove", "name %s, fp %s\n",
+                entry->snmpTargetAddrName, entry->tlstmAddrServerFingerprint));
+
+    /** get current active addrs */
+    addrs = netsnmp_tlstmAddr_container();
+    if (NULL == addrs)
+        return;
+
+    addr.name = entry->snmpTargetAddrName;
+    if (CONTAINER_REMOVE(addrs, &addr) != 0) {
+        snmp_log(LOG_ERR, "could not remove tlstm addr");
+    }
+    entry->addr_flags = 0;
+}
+
+static void
+_addr_tweak_storage(tlstmAddrTable_entry *entry)
+{
+    netsnmp_container *addrs;
+    snmpTlstmAddr     *addr, index;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmAddrTable:addr:tweak", "name %s, st %d\n",
+                entry->snmpTargetAddrName, entry->tlstmAddrStorageType));
+
+    /** get current active addrs */
+    addrs = netsnmp_tlstmAddr_container();
+    if (NULL == addrs)
+        return;
+
+    index.name = entry->snmpTargetAddrName;
+    addr = CONTAINER_FIND(addrs, &index);
+    if (NULL == addr) {
+        DEBUGMSGTL(("tlstmAddrTable:addr:tweak", "couldn't find addr!\n"));
+        return;
+    }
+
+    if (entry->tlstmAddrStorageType == ST_NONVOLATILE)
+        addr->flags |= TLSTM_ADDR_NONVOLATILE;
+    else
+        addr->flags &= ~TLSTM_ADDR_NONVOLATILE;
+}
+
+static netsnmp_tdata_row *
+_entry_from_addr(snmpTlstmAddr  *addr)
+{
+    netsnmp_tdata_row *row;
+    tlstmAddrTable_entry *entry;
+
+    row = tlstmAddrTable_createEntry(NULL, addr->name, strlen(addr->name));
+    if (NULL == row) {
+        snmp_log(LOG_ERR, "can create tlstmAddr row entry\n");
+        return NULL;
+    }
+    entry = row->data;
+
+    if (addr->flags & TLSTM_ADDR_FROM_CONFIG)
+        entry->tlstmAddrStorageType = ST_PERMANENT;
+    else if (! (addr->flags & TLSTM_ADDR_NONVOLATILE))
+        entry->tlstmAddrStorageType = ST_VOLATILE;
+
+    entry->tlstmAddrRowStatus = RS_ACTIVE;
+
+    if (addr->fingerprint) {
+        entry->tlstmAddrServerFingerprint_len = strlen(addr->fingerprint);
+        if (entry->tlstmAddrServerFingerprint_len >
+            sizeof(entry->tlstmAddrServerFingerprint))
+            entry->tlstmAddrServerFingerprint_len =
+                sizeof(entry->tlstmAddrServerFingerprint) - 1;
+        memcpy(entry->tlstmAddrServerFingerprint, addr->fingerprint,
+               entry->tlstmAddrServerFingerprint_len);
+        entry->tlstmAddrServerFingerprint[sizeof(entry->tlstmAddrServerFingerprint) - 1] = 0;
+    }
+
+    if (addr->identity) {
+        entry->tlstmAddrServerIdentity_len = strlen(addr->identity);
+        if (entry->tlstmAddrServerIdentity_len >
+            sizeof(entry->tlstmAddrServerIdentity))
+            entry->tlstmAddrServerIdentity_len =
+                sizeof(entry->tlstmAddrServerIdentity) - 1;
+        memcpy(entry->tlstmAddrServerIdentity, addr->identity,
+               entry->tlstmAddrServerIdentity_len);
+        entry->tlstmAddrServerIdentity[sizeof(entry->tlstmAddrServerIdentity) - 1] = 0;
+    }
+
+    entry->hashType = addr->hashType;
+    entry->addr_flags = addr->flags;
+
+    return row;
+}
+
+static int
+_cache_load(netsnmp_cache *cache, netsnmp_tdata *table)
+{
+    netsnmp_container *addrs;
+    netsnmp_iterator  *itr;
+    snmpTlstmAddr     *addr;
+    netsnmp_tdata_row *row;
+    int                rc = 0;
+
+    DEBUGMSGTL(("tlstmAddrTable:cache:load", "called, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    /** get current active rows */
+    addrs = netsnmp_tlstmAddr_container();
+    if (NULL == addrs)
+        return 0;
+
+    DEBUGMSGTL(("tlstmAddrTable:cache:load", "tlstmAddr %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(addrs)));
+    itr = CONTAINER_ITERATOR(addrs);
+    if (NULL == itr) {
+        DEBUGMSGTL(("tlstmAddrTable:cache:load",
+                    "cant get iterator\n"));
+        return -1;
+    }
+
+    /*
+     * insert rows for active addrs into tbl container
+     */
+    addr = ITERATOR_FIRST(itr);
+    for( ; addr; addr = ITERATOR_NEXT(itr)) {
+
+        row = _entry_from_addr(addr);
+        if (NULL == row) {
+            rc =-1;
+            break;
+        }
+
+        if (netsnmp_tdata_add_row(table, row) != SNMPERR_SUCCESS) {
+            tlstmAddrTable_removeEntry(NULL, row);
+            rc = -1;
+            break;
+        }
+    }
+    ITERATOR_RELEASE(itr);
+
+    DEBUGMSGTL(("tlstmAddrTable:cache:load", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    return rc;
+}
+
+static void
+_cache_free(netsnmp_cache *cache, netsnmp_tdata *table)
+{
+    netsnmp_tdata_row *row;
+    netsnmp_iterator   *tbl_itr;
+    tlstmAddrTable_entry   *entry;
+
+    DEBUGMSGTL(("tlstmAddrTable:cache:free", "called, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    tbl_itr = CONTAINER_ITERATOR(table->container);
+    if (NULL == tbl_itr) {
+        DEBUGMSGTL(("tlstmAddrTable:cache:free",
+                    "cant get entry iterator\n"));
+        return;
+    }
+
+    row = ITERATOR_FIRST(tbl_itr);
+    for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+        entry = row->data;
+
+        /*
+         * remove all active rows (they are in the addrs container kept
+         * by the library). Keep inactive ones for next time.
+         */
+        if (entry->tlstmAddrRowStatus == RS_ACTIVE) {
+            tlstmAddrTable_removeEntry(NULL, row);
+            ITERATOR_REMOVE(tbl_itr);
+            continue;
+        }
+    }
+    ITERATOR_RELEASE(tbl_itr);
+
+    DEBUGMSGTL(("tlstmAddrTable:cache:free", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+}
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+
+static int  _tlstmAddrTable_save_rows(int majorID, int minorID,
+                                                void *serverarg,
+                                                void *clientarg);
+static void _tlstmAddrTable_row_restore_mib(const char *token,
+                                                       char *buf);
+static const char mib_token[] = "snmpTlstmAddrEntry";
+
+/************************************************************
+ * *_init_persistence should be called from the main table
+ * init routine.
+ *
+ * If your table depends on rows in another table,
+ * you should register your callback after the other table,
+ * which should ensure the rows on which you depend are saved
+ * (and re-created) before the dependent rows.
+ */
+static void
+_tlstmAddr_init_persistence(void)
+{
+    int             rc;
+
+    if (NULL == _table_data) {
+        snmp_log(LOG_ERR, "no table data for tlstmAddr persistence!\n");
+        return;
+    }
+
+    register_config_handler(NULL, mib_token,
+                            _tlstmAddrTable_row_restore_mib, NULL,
+                            NULL);
+    rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+                                SNMP_CALLBACK_STORE_DATA,
+                                _tlstmAddrTable_save_rows,
+                                _table_data->container);
+
+    if (rc != SNMP_ERR_NOERROR)
+        snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
+                 "in _tlstmAddrTable_init_persistence\n");
+}
+
+static int
+_save_entry(tlstmAddrTable_entry *entry, void *type)
+{
+    char   buf[SNMP_MAXBUF_SMALL], *hashType;
+
+    hashType = se_find_label_in_slist("cert_hash_alg", entry->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 entry->hashType);
+        return SNMP_ERR_GENERR;
+    }
+
+    /*
+     * build the line
+     */
+    netsnmp_assert(0 == entry->snmpTargetAddrName[
+                       entry->snmpTargetAddrName_len]);
+    netsnmp_assert(0 == entry->tlstmAddrServerFingerprint[
+                       entry->tlstmAddrServerFingerprint_len]);
+    snprintf(buf, sizeof(buf), "%s %s --%s %s %s %d", mib_token,
+             entry->snmpTargetAddrName, hashType,
+             entry->tlstmAddrServerFingerprint,
+             entry->tlstmAddrServerIdentity,
+             entry->tlstmAddrRowStatus);
+    buf[sizeof(buf)-1] = 0;
+
+    read_config_store(type, buf);
+    DEBUGMSGTL(("tlstmAddrTable:row:save", "saving entry '%s'\n", buf));
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_save_addrs(snmpTlstmAddr *addrs, void *app_type)
+{
+    char buf[SNMP_MAXBUF_SMALL], *hashType;
+
+    if (NULL == addrs)
+        return SNMP_ERR_GENERR;
+
+    hashType = se_find_label_in_slist("cert_hash_alg", addrs->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 addrs->hashType);
+        return SNMP_ERR_GENERR;
+    }
+    snprintf(buf, sizeof(buf), "%s %s --%s %s %s %d", mib_token, addrs->name,
+             hashType, addrs->fingerprint, addrs->identity, RS_ACTIVE);
+
+    DEBUGMSGTL(("tlstmAddrTable:addrs:save", "saving addrs '%s'\n",
+                buf));
+    read_config_store(app_type, buf);
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_tlstmAddrTable_save_rows(int majorID, int minorID, void *serverarg,
+                      void *clientarg)
+{
+    char            sep[] =
+        "##############################################################";
+    char            buf[] = "#\n" "# tlstmAddr persistent data\n" "#";
+    char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                                 NETSNMP_DS_LIB_APPTYPE);
+
+    netsnmp_container *mib_addrs = (netsnmp_container *) clientarg;
+    netsnmp_container *active_addrs = netsnmp_tlstmAddr_container();
+    netsnmp_iterator  *tbl_itr, *addrs_itr = NULL;
+    netsnmp_tdata_row *row;
+    snmpTlstmAddr     *addr;
+    tlstmAddrTable_entry *entry;
+
+    if (((NULL == mib_addrs) || (CONTAINER_SIZE(mib_addrs) == 0)) &&
+        ((NULL == active_addrs) || (CONTAINER_SIZE(active_addrs) == 0)))
+        return SNMPERR_SUCCESS;
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, buf);
+
+    /*
+     * save active rows from addr container
+     */
+    if (NULL != active_addrs) {
+        addrs_itr = CONTAINER_ITERATOR(active_addrs);
+        if (NULL == addrs_itr) {
+            DEBUGMSGTL(("tlstmAddrTable:save", "cant get addrs iterator\n"));
+            addr = NULL;
+        }
+        else
+            addr = ITERATOR_FIRST(addrs_itr);
+
+        for( ; addr; addr = ITERATOR_NEXT(addrs_itr)) {
+            /** don't store config rows */
+            if ((addr->flags & TLSTM_ADDR_FROM_CONFIG) ||
+                ! (addr->flags & TLSTM_ADDR_NONVOLATILE))
+                continue;
+            _save_addrs(addr, type);
+        }
+    }
+    ITERATOR_RELEASE(addrs_itr);
+
+    /*
+     * save inactive rows from mib
+     */
+    tbl_itr = CONTAINER_ITERATOR(mib_addrs);
+    if (NULL == tbl_itr)
+        DEBUGMSGTL(("tlstmAddrTable:save", "cant get table iterator\n"));
+    else {
+        row = ITERATOR_FIRST(tbl_itr);
+        for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+            entry = row->data;
+
+            /*
+             * skip all active rows (should be in active_addrs and thus saved
+             * above) and volatile rows.
+             */
+            if ((entry->tlstmAddrRowStatus == RS_ACTIVE) ||
+                (entry->tlstmAddrStorageType != ST_NONVOLATILE))
+                continue;
+
+            _save_entry(entry, type);
+        }
+        ITERATOR_RELEASE(tbl_itr);
+    }
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, "\n");
+
+    /*
+     * never fails 
+     */
+    return SNMPERR_SUCCESS;
+}
+
+static void
+_tlstmAddrTable_row_restore_mib(const char *token, char *buf)
+{
+    char                   name[SNMPADMINLENGTH + 1], id[SNMPADMINLENGTH + 1],
+                           fingerprint[SNMPTLSFINGERPRINT_MAX_LEN + 1];
+    size_t                 name_len = sizeof(name), id_len = sizeof(id),
+                           fp_len = sizeof(fingerprint);
+    u_char                 hashType, rowStatus;
+    int                    rc;
+
+    /** need somewhere to save rows */
+    netsnmp_assert(_table_data && _table_data->container); 
+
+    rc = netsnmp_tlstmAddr_restore_common(&buf, name, &name_len, id, &id_len,
+                                          fingerprint, &fp_len, &hashType);
+    if (rc < 0)
+        return;
+
+    if (NULL == buf) {
+        config_perror("incomplete line");
+        return;
+    }
+    rowStatus = atoi(buf);
+
+    /*
+     * if row is active, add it to the addrs container so it is available
+     * for use. Do not add it to the table, since it will be added
+     * during cache_load.
+     */
+    if (RS_ACTIVE == rowStatus) {
+        snmpTlstmAddr *addr;
+
+        addr = netsnmp_tlstmAddr_create(name);
+        if (!addr)
+            return;
+
+        if (fp_len)
+            addr->fingerprint = strdup(fingerprint);
+        if (id_len)
+            addr->identity = strdup(id);
+        addr->hashType = hashType;
+        addr->flags = TLSTM_ADDR_FROM_MIB | TLSTM_ADDR_NONVOLATILE;
+
+        netsnmp_tlstmAddr_add(addr);
+    }
+    else {
+        netsnmp_tdata_row     *row;
+        tlstmAddrTable_entry  *entry;
+
+        row = tlstmAddrTable_createEntry(_table_data, name, name_len);
+        if (!row)
+            return;
+
+        entry = row->data;
+        
+        entry->hashType = hashType;
+        memcpy(entry->tlstmAddrServerFingerprint,fingerprint, fp_len);
+        entry->tlstmAddrServerFingerprint_len = fp_len;
+        memcpy(entry->tlstmAddrServerIdentity, id, id_len);
+        entry->tlstmAddrServerIdentity_len = id_len;
+        entry->tlstmAddrStorageType = ST_NONVOLATILE;
+        entry->tlstmAddrRowStatus = rowStatus;
+    }
+}
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
new file mode 100644
index 0000000..8c0b80a
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
@@ -0,0 +1,37 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.table_data.conf 15999 2007-03-25 22:32:02Z dts12 $
+ */
+#ifndef SNMPTLSTMADDRTABLE_H
+#define SNMPTLSTMADDRTABLE_H
+
+#define SNMP_TLS_TM_ADDR_COUNT    SNMP_TLS_TM_BASE, 2, 2, 1, 7
+#define SNMP_TLS_TM_ADDR_CHANGED  SNMP_TLS_TM_BASE, 2, 2, 1, 8
+#define SNMP_TLS_TM_ADDR_TABLE    SNMP_TLS_TM_BASE, 2, 2, 1, 9
+
+/*
+ * function declarations 
+ */
+void            init_snmpTlstmAddrTable(void);
+
+/*
+ * index definitions for table tlstmAddrTable 
+ */
+#define SNMPTARGETADDRNAME_MAX_SIZE  255
+
+/*
+ * column number definitions for table tlstmAddrTable 
+ */
+#define COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT       1
+#define COLUMN_SNMPTLSTMADDRSERVERIDENTITY          2
+#define COLUMN_SNMPTLSTMADDRSTORAGETYPE             3
+#define COLUMN_SNMPTLSTMADDRROWSTATUS               4
+
+#define TLSTMADDRTABLE_MIN_COLUMN         COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT
+#define TLSTMADDRTABLE_MAX_COLUMN         COLUMN_SNMPTLSTMADDRROWSTATUS
+
+#define TLSTMADDRSERVERFINGERPRINT_MAX_SIZE      255
+#define TLSTMADDRSERVERIDENTITY_MAX_SIZE         255
+
+
+#endif                          /* SNMPTLSTMADDRTABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h
new file mode 100644
index 0000000..ebfa0ec
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable.h
@@ -0,0 +1,6 @@
+#ifndef SNMPTLSTMCERTTOTSNTABLE_H
+#define SNMPTLSTMCERTTOTSNTABLE_H
+
+config_require(tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable)
+
+#endif                          /* SNMPTLSTMCERTTOTSNTABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
new file mode 100644
index 0000000..3f79197
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
@@ -0,0 +1,1363 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+#include "snmpTlstmCertToTSNTable.h"
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#define FATE_DELETE_ME        -1
+
+#define MAP_MIB_CONFIG_TOKEN "snmpTlstmCertToTSNEntry"
+
+extern netsnmp_cert_map *netsnmp_certToTSN_parse_common(char **line);
+
+
+    /*
+     * structure for undo storage and other vars for set processing 
+     */
+typedef struct certToTSN_undo_s {
+    char            fate;
+    char            copied;
+    char            is_consistent;
+    netsnmp_request_info *req[SNMPTLSTMCERTTOTSN_TABLE_MAX_COL+1];
+
+    /*
+     * undo Column space 
+     */
+    char            fingerprint[SNMPTLSTMCERTTOTSN_FINGERPRINT_MAX_SIZE];
+    size_t          fingerprint_len;
+    int             mapType;
+    char            data[SNMPTLSTMCERTTOTSN_DATA_MAX_SIZE];
+    size_t          data_len;
+    u_char          hashType;
+    char            storageType;
+    char            rowStatus;
+} certToTSN_undo;
+
+    /*
+     * Typical data structure for a row entry 
+     */
+typedef struct certToTSN_entry_s {
+    /*
+     * Index values 
+     */
+    u_long          tlstmCertToTSNID;
+
+    /*
+     * Column values 
+     */
+    char            fingerprint[SNMPTLSTMCERTTOTSN_FINGERPRINT_MAX_SIZE];
+    size_t          fingerprint_len;
+    int             mapType;
+    char            data[SNMPTLSTMCERTTOTSN_DATA_MAX_SIZE];
+    size_t          data_len;
+    char            storageType;
+    char            rowStatus;
+    u_char          hashType;
+    char            map_flags;
+
+    /*
+     * used during set processing 
+     */
+    certToTSN_undo *undo;
+} certToTSN_entry;
+
+static Netsnmp_Node_Handler tlstmCertToTSNTable_handler;
+static oid _oid2type(oid *val, int val_len);
+/** static int _type2oid(int type, oid *val, int *val_len); */
+static int _cache_load(netsnmp_cache *cache, netsnmp_tdata *table);
+static void _cache_free(netsnmp_cache *cache, netsnmp_tdata *table);
+static void _cert_map_add(certToTSN_entry *entry);
+static void _cert_map_remove(certToTSN_entry *entry);
+static int _count_handler(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info *reqinfo,
+                          netsnmp_request_info *requests);
+static void _parse_mib_maps(const char *token, char *line);
+static int _save_maps(int majorID, int minorID, void *server, void *client);
+static int _save_map(netsnmp_cert_map *map, int row_status, void *type);
+static void _cert_map_tweak_storage(certToTSN_entry *entry);
+
+static netsnmp_tdata *_table = NULL;
+static uint32_t _last_changed = 0;
+
+
+/** Initializes the tlstmCertToTSNTable module */
+void
+init_snmpTlstmCertToTSNTable(void)
+{
+    init_snmpTlstmCertToTSNTable_context(NULL);
+}
+
+void
+init_snmpTlstmCertToTSNTable_context(const char *contextName)
+{
+    oid             reg_oid[]   =  { SNMP_TLS_TM_CERT_TABLE };
+    const size_t    reg_oid_len =  OID_LENGTH(reg_oid);
+    netsnmp_handler_registration    *reg;
+    netsnmp_table_registration_info *info;
+    netsnmp_cache                   *cache;
+    netsnmp_watcher_info            *watcher;
+    const char *mib_map_help = 
+        MAP_MIB_CONFIG_TOKEN " table persistence (internal use)";
+
+    DEBUGMSGTL(("tlstmCertToSN:init",
+                "initializing table tlstmCertToTSNTable\n"));
+
+    reg = netsnmp_create_handler_registration
+        ("tlstmCertToTSNTable", tlstmCertToTSNTable_handler,
+         reg_oid, reg_oid_len,
+         HANDLER_CAN_RWRITE);
+    if (NULL == reg) {
+        snmp_log(LOG_ERR,
+                 "error creating handler registration for tlstmCertToSN\n");
+        return;
+    }
+
+    if (NULL != contextName)
+        reg->contextName = strdup(contextName);
+
+    _table = netsnmp_tdata_create_table("tlstmCertToTSNTable", 0);
+    if (NULL == _table) {
+        snmp_log(LOG_ERR,
+                 "error creating tdata table for tlstmCertToTSNTable\n");
+        return;
+    }
+    info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (NULL == info) {
+        snmp_log(LOG_ERR,
+                 "error creating table info for tlstmCertToTSNTable\n");
+        netsnmp_tdata_delete_table(_table);
+        _table = NULL;
+        return;
+    }
+    netsnmp_table_helper_add_indexes(info, 
+                                     /* index: tlstmCertToTSNID */
+                                     ASN_UNSIGNED,  0);
+
+    info->min_column = SNMPTLSTMCERTTOTSN_TABLE_MIN_COL;
+    info->max_column = SNMPTLSTMCERTTOTSN_TABLE_MAX_COL;
+
+    /*
+     * cache init
+     */
+    cache = netsnmp_cache_create(30, (NetsnmpCacheLoad*)_cache_load,
+                                 (NetsnmpCacheFree*)_cache_free,
+                                 reg_oid,
+                                 reg_oid_len);
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,"error creating cache for tlstmCertToTSNTable\n");
+        netsnmp_tdata_delete_table(_table);
+        _table = NULL;
+        return;
+    }
+    cache->magic = (void *)_table;
+    cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    netsnmp_tdata_register(reg, _table, info);
+
+    if (cache) 
+        netsnmp_inject_handler_before( reg, netsnmp_cache_handler_get(cache),
+                                       "table_container");
+
+    /*
+     * register scalars
+     */
+    reg_oid[10] = 1;
+    reg = netsnmp_create_handler_registration("snmpTlstmCertToTSNCount",
+                                              _count_handler, reg_oid,
+                                              OID_LENGTH(reg_oid),
+                                              HANDLER_CAN_RONLY);
+    if (NULL == reg)
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmCertToTSNCount\n");
+    else {
+        if (NULL != contextName)
+            reg->contextName = strdup(contextName);
+
+        netsnmp_register_scalar(reg);
+        if (cache) 
+            netsnmp_inject_handler_before(reg, netsnmp_cache_handler_get(cache),
+                                          "table_container");
+    }
+    
+    reg_oid[10] = 2;
+    reg = netsnmp_create_handler_registration(
+        "snmpTlstmCertToTSNTableLastChanged", NULL, reg_oid,
+        OID_LENGTH(reg_oid), HANDLER_CAN_RONLY);
+    watcher = netsnmp_create_watcher_info((void*)&_last_changed,
+                                          sizeof(_last_changed),
+                                          ASN_TIMETICKS,
+                                          WATCHER_FIXED_SIZE);
+    if ((NULL == reg) || (NULL == watcher))
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmCertToTSNCount\n");
+    else {
+        if (NULL != contextName)
+            reg->contextName = strdup(contextName);
+        netsnmp_register_watched_scalar(reg, watcher);
+    }
+
+    /*
+     * persistence
+     */
+    register_config_handler(NULL, MAP_MIB_CONFIG_TOKEN, _parse_mib_maps, NULL,
+                            mib_map_help);
+    if (snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                               _save_maps, NULL) != SNMP_ERR_NOERROR)
+        snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
+                 "for certToTSN\n");
+
+}
+
+/*
+ * create a new row in the table 
+ */
+netsnmp_tdata_row *
+tlstmCertToTSNTable_createEntry(netsnmp_tdata * table, u_long tlstmCertToTSNID)
+{
+    certToTSN_entry *entry;
+    netsnmp_tdata_row *row;
+
+    entry = SNMP_MALLOC_TYPEDEF(certToTSN_entry);
+    if (!entry)
+        return NULL;
+
+    row = netsnmp_tdata_create_row();
+    if (!row) {
+        SNMP_FREE(entry);
+        return NULL;
+    }
+    row->data = entry;
+
+    DEBUGMSGT(("tlstmCertToSN:entry:create", "entry %p / row %p\n",
+               entry, row));
+    /*
+     * populate index
+     */
+    entry->tlstmCertToTSNID = tlstmCertToTSNID;
+    netsnmp_tdata_row_add_index(row, ASN_UNSIGNED,
+                                &(entry->tlstmCertToTSNID),
+                                sizeof(entry->tlstmCertToTSNID));
+   /*
+    * assign default column values
+    */
+    entry->mapType = TSNM_tlstmCertSpecified;
+    entry->storageType = ST_NONVOLATILE;
+    entry->rowStatus = RS_NOTREADY;
+
+    if (table) {
+        DEBUGMSGTL(("tlstmCertToTSN:row:insert", "row %p\n", row));
+        netsnmp_tdata_add_row(table, row);
+    }
+    return row;
+}
+
+/*
+ * allocate undo resources 
+ */
+static certToTSN_undo *
+_allocUndo(certToTSN_entry * entry)
+{
+    if (!entry)
+        return NULL;
+
+    netsnmp_assert(!entry->undo);
+
+    entry->undo = SNMP_MALLOC_TYPEDEF(certToTSN_undo);
+    if (!entry->undo)
+        return NULL;
+
+    entry->undo->is_consistent = -1;   /* don't know */
+
+    return entry->undo;
+}
+
+/*
+ * free undo resources 
+ */
+static void
+_freeUndo(certToTSN_entry * entry)
+{
+    if (!entry || !entry->undo)
+        return;
+
+    /*
+     * TODO: release any allocated resources 
+     */
+    SNMP_FREE(entry->undo);
+}
+
+/*
+ * remove a row from the table 
+ */
+void
+tlstmCertToTSNTable_removeEntry(netsnmp_tdata * table,
+                                netsnmp_tdata_row * row)
+{
+    certToTSN_entry *entry;
+
+    if (!row)
+        return;                 /* Nothing to remove */
+
+    entry = (certToTSN_entry *) row->data;
+
+    DEBUGMSGT(("tlstmCertToSN:entry:delete", "entry %p / row %p\n",
+               entry, row));
+
+    if (entry && entry->undo)
+        _freeUndo(entry);
+    SNMP_FREE(entry);
+
+    if (table) {
+        DEBUGMSGTL(("tlstmCertToSN:row:remove", "row %p\n", row));
+        netsnmp_tdata_remove_and_delete_row(table, row);
+    }
+    else
+        netsnmp_tdata_delete_row(row);
+}
+
+
+/** handles requests for the tlstmCertToTSNTable table */
+static int
+tlstmCertToTSNTable_handler(netsnmp_mib_handler *handler,
+                            netsnmp_handler_registration *reginfo,
+                            netsnmp_agent_request_info *reqinfo,
+                            netsnmp_request_info *requests)
+{
+    oid tsnm[] = { SNMP_TLS_TM_BASE, 1, 1, 0 };
+    static const int tsnm_pos = OID_LENGTH(tsnm) - 1;
+    netsnmp_request_info *request = NULL;
+    netsnmp_table_request_info *info;
+    netsnmp_tdata  *table;
+    netsnmp_tdata_row *row;
+    certToTSN_entry *entry;
+    int             ret = SNMP_ERR_NOERROR;
+
+    DEBUGMSGTL(("tlstmCertToSN:handler", "Processing request (mode %s (%d))\n",
+                se_find_label_in_slist("agent_mode", reqinfo->mode),
+                reqinfo->mode));
+
+    switch (reqinfo->mode) {
+    /** ######################################################### GET #####
+     *
+     *   Read-support (also covers GetNext requests)
+     */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+                continue;
+
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            info = netsnmp_extract_table_info(request);
+            netsnmp_assert(entry && info);
+
+            switch (info->colnum) {
+            case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT:
+            {
+                /*
+                 * build SnmpTLSFingerprint
+                 */
+                u_char bin[42], *ptr = bin;
+                size_t len = sizeof(bin);
+                int    rc;
+                rc = netsnmp_tls_fingerprint_build(entry->hashType,
+                                                   entry->fingerprint,
+                                                   &ptr, &len, 0);
+                if (SNMPERR_SUCCESS != rc)
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_ERR_GENERR);
+                else
+                    snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                             bin, len);
+            }
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT */
+            case COL_SNMPTLSTMCERTTOTSN_MAPTYPE:
+                tsnm[tsnm_pos] = entry->mapType;
+                snmp_set_var_typed_value(request->requestvb, ASN_OBJECT_ID,
+                                         tsnm, sizeof(tsnm));
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_MAPTYPE */
+            case COL_SNMPTLSTMCERTTOTSN_DATA:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         entry->data, entry->data_len);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_DATA */
+            case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           entry->storageType);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE */
+            case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           entry->rowStatus);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS */
+            default:
+                netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
+                break;
+            }                   /* switch colnum */
+        }                       /* for requests */
+        break;                  /* case MODE_GET */
+
+        /*
+         * Write-support
+         */
+    /** #################################################### RESERVE1 #####
+     *
+     *   In RESERVE1 we are just checking basic ASN.1 size/type restrictions.
+     * You probably don't need to change any of this code. Don't change any
+     * of the column values here. Save that for the ACTION phase.
+     *
+     *   The next phase is RESERVE2 or FREE.
+     */
+    case MODE_SET_RESERVE1:
+        for (request = requests; request; request = request->next) {
+            netsnmp_assert(request->processed == 0);
+
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            info = netsnmp_extract_table_info(request);
+
+            if ((NULL != entry) && (ST_READONLY == entry->storageType)) {
+                ret = SNMP_ERR_NOTWRITABLE;
+                break;
+            }
+
+            switch (info->colnum) {
+            case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT:
+                ret = netsnmp_check_vb_type_and_max_size
+                    (request->requestvb, ASN_OCTET_STR,
+                     sizeof(entry->fingerprint));
+                /** check len/algorithm MIB requirements */
+                if (ret == SNMP_ERR_NOERROR)
+                    ret = netsnmp_cert_check_vb_fingerprint(request->requestvb);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT */
+            case COL_SNMPTLSTMCERTTOTSN_MAPTYPE:
+                ret = netsnmp_check_vb_type_and_max_size
+                    (request->requestvb, ASN_OBJECT_ID,
+                     SNMPTLSTMCERTTOTSN_MAPTYPE_MAX_SIZE);
+                if (ret == SNMP_ERR_NOERROR) {
+                    if (_oid2type(request->requestvb->val.objid,
+                                  request->requestvb->val_len) >
+                        TSNM_tlstmCert_MAX)
+                        ret = SNMP_ERR_WRONGVALUE;
+                }
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_MAPTYPE */
+            case COL_SNMPTLSTMCERTTOTSN_DATA:
+                ret = netsnmp_check_vb_type_and_max_size
+                    (request->requestvb, ASN_OCTET_STR, sizeof(entry->data));
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_DATA */
+            case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE:
+                ret = netsnmp_check_vb_storagetype
+                    (request->requestvb,(entry ? entry->storageType : ST_NONE));
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE */
+            case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS:
+                ret = netsnmp_check_vb_rowstatus_with_storagetype
+                    (request->requestvb,
+                     (entry ? entry->rowStatus :RS_NONEXISTENT),
+                     (entry ? entry->storageType :ST_NONE));
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS */
+            default:
+                ret = SNMP_ERR_NOTWRITABLE;
+            }                   /* switch colnum */
+
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* for requests */
+        break;                  /* case MODE_SET_RESERVE1 */
+
+    /** #################################################### RESERVE2 #####
+     *
+     *   RESERVE2 is for checking additional restrictions from the MIB.
+     * Since these restrictions are often in the description of the object,
+     * mib2c can't generate code. It's possible that you need to add
+     * additional checks here. However, don't change any of the column
+     * values here. Save that for the ACTION phase.
+     *
+     *   The next phase is ACTION or FREE.
+     */
+    case MODE_SET_RESERVE2:
+        for (request = requests; request; request = request->next) {
+            netsnmp_assert(request->processed == 0);
+
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            table = netsnmp_tdata_extract_table(request);
+            info = netsnmp_extract_table_info(request);
+            /*
+             * if no row, create one
+             */
+            if (!entry) {
+                row = tlstmCertToTSNTable_createEntry
+                    (table,*info->indexes->val.integer);
+                if (!row) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                entry = row->data;
+                _allocUndo(entry);
+                if (!entry->undo) {
+                    tlstmCertToTSNTable_removeEntry(table, row);
+                    row = NULL;
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                entry->undo->fate = FATE_NEWLY_CREATED;
+                /** associate row with requests */
+                netsnmp_insert_tdata_row(request, row);
+            }
+
+            /** allocate undo structure, if needed */
+            if (!entry->undo) {
+                _allocUndo(entry);
+                if (!entry->undo) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+            }
+
+            /*
+             * save request ptr for column. if we already
+             * have a value, bail.
+             */
+            if (entry->undo->req[info->colnum]) {
+                DEBUGMSGT(("tlstmCertToSN:reserve2",
+                           "multiple sets to col %d in request\n",
+                           info->colnum));
+                if (FATE_NEWLY_CREATED == entry->undo->fate)
+                    ret = SNMP_ERR_INCONSISTENTNAME;
+                else
+                    ret = SNMP_ERR_INCONSISTENTVALUE;
+                break;
+            }
+            entry->undo->req[info->colnum] = request;
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* for requests */
+
+        if (ret == SNMP_ERR_NOERROR) {
+            /** make sure rowstatus is used to create rows */
+            for (request = requests; request; request = request->next) {
+                if (request->processed)
+                    continue;
+
+                entry = (certToTSN_entry *)
+                    netsnmp_tdata_extract_entry(request);
+                if ((entry->undo->fate != FATE_NEWLY_CREATED) ||
+                    (entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS]))
+                    continue;
+                ret = SNMP_ERR_INCONSISTENTNAME;
+                break;
+            } /* creation for requests */
+        } /* no error */
+        break;                  /* case MODE_SET_RESERVE2 */
+
+    /** ######################################################## FREE #####
+     *
+     *   FREE is for cleaning up after a failed request (during either
+     * RESERVE1 or RESERVE2). So any allocated resources need to be
+     * released.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_FREE:
+        /*
+         * release undo resources
+         * remove any newly created rows
+         */
+        for (request = requests; request; request = request->next) {
+            table = netsnmp_tdata_extract_table(request);
+            row = netsnmp_tdata_extract_row(request);
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+
+            if (!entry || !entry->undo)
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row(request, row);
+
+            if (FATE_NEWLY_CREATED == entry->undo->fate)
+                tlstmCertToTSNTable_removeEntry(table, row);
+            else
+                _freeUndo(entry);
+        }
+        break;                  /* case MODE_SET_FREE */
+
+    /** ###################################################### ACTION #####
+     *
+     *   In the ACTION phase, we perform any sets that can be undone.
+     * (Save anything that can't be undone for the COMMIT phase.)
+     *
+     *   After individual columns have been done, you should check that the
+     * row as a whole is consistent.
+     *
+     * The next phase is UNDO or COMMIT.
+     */
+    case MODE_SET_ACTION:
+        for (request = requests; request; request = request->next) {
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            info = netsnmp_extract_table_info(request);
+
+            /** reserve2 should enforce this */
+            netsnmp_assert(request == entry->undo->req[info->colnum]);
+
+            /*
+             * for each col, save old value and the set new value
+             */
+            switch (info->colnum) {
+            case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT:
+            {
+                u_char *tmp = (u_char*)entry->fingerprint;
+                u_int size = sizeof(entry->fingerprint);
+                netsnmp_variable_list *vb = request->requestvb;
+
+                memcpy(entry->undo->fingerprint,
+                       entry->fingerprint, sizeof(entry->fingerprint));
+                entry->undo->fingerprint_len = entry->fingerprint_len;
+                entry->undo->hashType = entry->hashType;
+                memset(entry->fingerprint, 0, sizeof(entry->fingerprint));
+
+                (void)netsnmp_tls_fingerprint_parse(vb->val.string, vb->val_len,
+                                                    (char**)&tmp, &size, 0,
+                                                    &entry->hashType);
+                entry->fingerprint_len = size;
+                if (0 == entry->fingerprint_len)
+                    ret = SNMP_ERR_GENERR;
+            }
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT */
+            case COL_SNMPTLSTMCERTTOTSN_MAPTYPE:
+                entry->undo->mapType = entry->mapType;
+                entry->mapType = _oid2type(request->requestvb->val.objid,
+                                           request->requestvb->val_len);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_MAPTYPE */
+            case COL_SNMPTLSTMCERTTOTSN_DATA:
+                memcpy(entry->undo->data, entry->data, sizeof(entry->data));
+                entry->undo->data_len = entry->data_len;
+                memset(entry->data, 0, sizeof(entry->data));
+                memcpy(entry->data, request->requestvb->val.string,
+                       request->requestvb->val_len);
+                entry->data_len = request->requestvb->val_len;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_DATA */
+            case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE:
+                entry->undo->storageType = entry->storageType;
+                entry->storageType = *request->requestvb->val.integer;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE */
+            case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS:
+                entry->undo->rowStatus = entry->rowStatus;
+                entry->rowStatus = *request->requestvb->val.integer;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS */
+            }                   /* switch colnum */
+        }                       /* set values for requests */
+
+        if (ret != SNMP_ERR_NOERROR) 
+            break; /* skip consistency if we've already got error */
+
+        /*
+         * All columns now have their final values set. check the
+         * internal consistency of each row.
+         */
+        for (request = requests; request; request = request->next) {
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            info = netsnmp_extract_table_info(request);
+
+            if (entry->undo->is_consistent != -1)
+                continue;       /* already checked */
+
+            /** assume consistency */
+            entry->undo->is_consistent = 1;
+
+            /*
+             * per mib, can't have empty fingerprint and must
+             * have data if indicated by map type.
+             */
+            if (0 == entry->fingerprint_len) {
+                DEBUGMSGTL(("tlstmCertToTSNTable:inconsistent",
+                            "fingerprint must not be empty\n"));
+                entry->undo->is_consistent = 0;
+            }
+            else if ((TSNM_tlstmCertSpecified == entry->mapType) &&
+                     (0 == entry->data_len)) {
+                DEBUGMSGTL(("tlstmCertToTSNTable:inconsistent",
+                            "must specify Data for CertSpecified identity\n"));
+                entry->undo->is_consistent = 0;
+            }
+
+            if ((RS_IS_ACTIVE(entry->rowStatus)) &&
+                ((!entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS]) ||
+                 (RS_IS_ACTIVE(entry->undo->rowStatus)))) {
+                /*
+                 * per mib, can't modify these while row active
+                 */
+                char _cols[3] = { COL_SNMPTLSTMCERTTOTSN_FINGERPRINT,
+                                  COL_SNMPTLSTMCERTTOTSN_MAPTYPE, COL_SNMPTLSTMCERTTOTSN_DATA };
+                int i;
+                for (i=0; i < 3; ++i ) {
+                    if (!entry->undo->req[i])
+                        continue;
+                    DEBUGMSGTL(("tlstmCertToTSNTable:inconsistent",
+                                "can't modify row %d while active\n",
+                                _cols[i]));
+                    entry->undo->is_consistent = 0;
+                    ret = SNMP_ERR_NOTWRITABLE;
+                    request= entry->undo->req[i];
+                    break;
+                }
+            } else if (RS_IS_GOING_ACTIVE(entry->rowStatus)) {
+                /*
+                 * if going active, inconsistency is fatal
+                 */
+                if (!entry->undo->is_consistent) {
+                    netsnmp_assert(entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS]);
+                    if (FATE_NEWLY_CREATED == entry->undo->fate)
+                        ret = SNMP_ERR_INCONSISTENTNAME;
+                    else
+                        ret = SNMP_ERR_INCONSISTENTVALUE;
+                    request = entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS];
+                }
+            } else if (RS_DESTROY == entry->rowStatus) {
+                /*
+                 * can't destroy active row
+                 */
+                if (RS_IS_ACTIVE(entry->undo->rowStatus)) {
+                    DEBUGMSGTL(("tlstmCertToTSNTable:inconsistent",
+                                "can't destroy active row\n"));
+                    netsnmp_assert(entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS]);
+                    ret = SNMP_ERR_INCONSISTENTVALUE;
+                    request = entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS];
+                }
+            }
+            if (ret != SNMP_ERR_NOERROR)
+                break;
+        }                       /* consistency for requests */
+        break;                  /* case MODE_SET_ACTION */
+
+    /** ######################################################## UNDO #####
+     *
+     *   UNDO is for cleaning up any failed requests that went through the
+     * ACTION phase.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_UNDO:
+        for (request = requests; request; request = request->next) {
+            row = netsnmp_tdata_extract_row(request);
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+            info = netsnmp_extract_table_info(request);
+
+            /*
+             * skip newly created rows, as we're going to delete
+             * them below anyways
+             */
+            if (FATE_NEWLY_CREATED == entry->undo->fate)
+                continue;
+
+            /*
+             * restore values
+             */
+            switch (info->colnum) {
+            case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT:
+                memcpy(entry->fingerprint, entry->undo->fingerprint,
+                       sizeof(entry->fingerprint));
+                entry->fingerprint_len = entry->undo->fingerprint_len;
+                entry->hashType = entry->undo->hashType;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT */
+            case COL_SNMPTLSTMCERTTOTSN_MAPTYPE:
+                entry->mapType = entry->undo->mapType;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_MAPTYPE */
+            case COL_SNMPTLSTMCERTTOTSN_DATA:
+                memcpy(entry->data, entry->undo->data, sizeof(entry->data));
+                entry->data_len = entry->undo->data_len;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_DATA */
+            case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE:
+                entry->storageType = entry->undo->storageType;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE */
+            case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS:
+                entry->rowStatus = entry->undo->rowStatus;
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS */
+            }                   /* switch colnum */
+        }                       /* for requests */
+
+        /*
+         * release undo data
+         * or remove any newly created rows
+         */
+        for (request = requests; request; request = request->next) {
+            table = netsnmp_tdata_extract_table(request);
+            row = netsnmp_tdata_extract_row(request);
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+
+            if (!entry || !entry->undo)
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row(request, row);
+
+            if (FATE_NEWLY_CREATED == entry->undo->fate)
+                tlstmCertToTSNTable_removeEntry(table, row);
+            else
+                _freeUndo(entry);
+        }                       /* for requests */
+        break;                  /* case MODE_SET_UNDO */
+
+    /** ###################################################### COMMIT #####
+     *
+     *   COMMIT is the final success state, when all changes are finalized.
+     * There is not recovery state should something faile here.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_COMMIT:
+        for (request = requests; request; request = request->next) {
+            row = netsnmp_tdata_extract_row(request);
+            table = netsnmp_tdata_extract_table(request);
+            info = netsnmp_extract_table_info(request);
+            entry = (certToTSN_entry *) netsnmp_tdata_extract_entry(request);
+
+            if ((RS_NOTREADY == entry->rowStatus) && entry->undo->is_consistent)
+                entry->rowStatus = RS_NOTINSERVICE;
+            else if ((RS_NOTINSERVICE == entry->rowStatus) &&
+                     (0 == entry->undo->is_consistent))
+                entry->rowStatus = RS_NOTREADY;
+
+            /** release undo data for requests with no rowstatus */
+            if (entry->undo && !entry->undo->req[COL_SNMPTLSTMCERTTOTSN_ROWSTATUS]) {
+                _freeUndo(entry);
+                if ((0 == entry->map_flags) && (entry->rowStatus == RS_ACTIVE))
+                    _cert_map_add(entry);
+                else if ((0 != entry->map_flags) &&
+                         (entry->rowStatus == RS_DESTROY))
+                    _cert_map_remove(entry);
+            }
+
+            switch (info->colnum) {
+            case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS:
+                switch (entry->rowStatus) {
+                case RS_CREATEANDGO:
+                    /** Fall-through */
+                case RS_ACTIVE:
+                    netsnmp_assert(entry->undo->is_consistent);
+                    entry->rowStatus = RS_ACTIVE;
+                    if (0 == entry->map_flags)
+                        _cert_map_add(entry);
+                    break;
+
+                case RS_CREATEANDWAIT:
+                    /** Fall-through */
+                case RS_NOTINSERVICE:
+                    /** simply set status based on consistency */
+                    if (entry->undo->is_consistent)
+                        entry->rowStatus = RS_NOTINSERVICE;
+                    else
+                        entry->rowStatus = RS_NOTREADY;
+                    if (0 != entry->map_flags)
+                        _cert_map_remove(entry);
+                    break;
+
+                case RS_DESTROY:
+                    /** remove from cert map */
+                    if (0 != entry->map_flags)
+                        _cert_map_remove(entry);
+                    /** disassociate row with requests */
+                    netsnmp_remove_tdata_row(request, row);
+                    tlstmCertToTSNTable_removeEntry(table, row);
+                    row = NULL;
+                    entry = NULL;
+                }
+                /** release undo data */
+                _freeUndo(entry);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_ROWSTATUS */
+
+            case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE:
+                if (RS_ACTIVE == entry->rowStatus)
+                    _cert_map_tweak_storage(entry);
+                break;          /* case COL_SNMPTLSTMCERTTOTSN_STORAGETYPE */
+
+            case COL_SNMPTLSTMCERTTOTSN_FINGERPRINT:
+            case COL_SNMPTLSTMCERTTOTSN_MAPTYPE:
+            case COL_SNMPTLSTMCERTTOTSN_DATA:
+                break;
+            }                   /* switch colnum */
+
+        }                       /* for requests */
+
+        /** update last changed */
+        _last_changed = netsnmp_get_agent_uptime();
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
+        break;                  /* case MODE_SET_COMMIT */
+    }                           /* switch (reqinfo->mode) */
+
+    if (ret != SNMP_ERR_NOERROR)
+        netsnmp_set_request_error(reqinfo, request, ret);
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_count_handler(netsnmp_mib_handler *handler,
+               netsnmp_handler_registration *reginfo,
+               netsnmp_agent_request_info *reqinfo,
+               netsnmp_request_info *requests)
+{
+    int                val;
+
+    if (MODE_GET != reqinfo->mode) {
+        snmp_log(LOG_ERR, "bad mode in RO handler");
+        return SNMP_ERR_GENERR;
+    }
+
+    if (NULL == _table->container)
+        val = 0;
+    else
+        val = CONTAINER_SIZE(_table->container);
+
+    snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE,
+                             (u_char *) &val, sizeof(val));
+   
+    if (handler->next && handler->next->access_method)
+        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
+                                         requests);
+    
+    return SNMP_ERR_NOERROR;
+}
+
+static void
+_cert_map_add(certToTSN_entry *entry)
+{
+    netsnmp_cert_map *map;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:map:add", "pri %ld, fp %s\n",
+                entry->tlstmCertToTSNID, entry->fingerprint));
+
+    map = netsnmp_cert_map_alloc(entry->fingerprint, NULL);
+    if (NULL == map)
+        return;
+
+    map->priority = entry->tlstmCertToTSNID;
+    map->mapType = entry->mapType;
+    if (entry->data)
+        map->data = strdup(entry->data);
+    map->hashType = entry->hashType;
+
+    map->flags = NSCM_FROM_MIB;
+    if (entry->storageType == ST_NONVOLATILE)
+        map->flags |= NSCM_NONVOLATILE;
+
+    if (netsnmp_cert_map_add(map) != 0)
+        netsnmp_cert_map_free(map);
+}
+
+static void
+_cert_map_tweak_storage(certToTSN_entry *entry)
+{
+    netsnmp_container *maps;
+    netsnmp_cert_map *map, index;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:map:tweak", "pri %ld, st %d\n",
+                entry->tlstmCertToTSNID, entry->storageType));
+
+    /** get current active maps */
+    maps = netsnmp_cert_map_container();
+    if (NULL == maps)
+        return;
+
+    index.priority = entry->tlstmCertToTSNID;
+    map = CONTAINER_FIND(maps, &index);
+    if (NULL == map) {
+        DEBUGMSGTL(("tlstmCertToTSNTable:map:tweak", "couldn't find map!\n"));
+        return;
+    }
+
+    if (entry->storageType == ST_NONVOLATILE)
+        map->flags |= NSCM_NONVOLATILE;
+    else
+        map->flags &= ~NSCM_NONVOLATILE;
+}
+
+static void
+_cert_map_remove(certToTSN_entry *entry)
+{
+    netsnmp_container *maps;
+    netsnmp_cert_map map;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:map:remove", "pri %ld, fp %s\n",
+                entry->tlstmCertToTSNID, entry->fingerprint));
+
+    /** get current active maps */
+    maps = netsnmp_cert_map_container();
+    if (NULL == maps)
+        return;
+
+    map.priority = entry->tlstmCertToTSNID;
+    map.fingerprint = entry->fingerprint;
+
+    if (CONTAINER_REMOVE(maps, &map) != 0) {
+        snmp_log(LOG_ERR, "could not remove certificate map");
+    }
+    entry->map_flags = 0;
+}
+
+static netsnmp_tdata_row *
+_entry_from_map(netsnmp_cert_map  *map)
+{
+    netsnmp_tdata_row *row;
+    certToTSN_entry   *entry;
+
+    row = tlstmCertToTSNTable_createEntry(NULL, map->priority);
+    if (NULL == row) {
+        snmp_log(LOG_ERR, "can create tlstmCertToTSN row entry\n");
+        return NULL;
+    }
+    entry = row->data;
+
+    if (map->flags & NSCM_FROM_CONFIG)
+        entry->storageType = ST_PERMANENT;
+    else if (! (map->flags & NSCM_NONVOLATILE))
+        entry->storageType = ST_VOLATILE;
+    entry->map_flags = map->flags;
+
+    entry->fingerprint_len = strlen(map->fingerprint);
+    if (entry->fingerprint_len > sizeof(entry->fingerprint))
+        entry->fingerprint_len = sizeof(entry->fingerprint) - 1;
+    memcpy(entry->fingerprint, map->fingerprint, entry->fingerprint_len);
+    entry->fingerprint[sizeof(entry->fingerprint) - 1] = 0;
+    entry->hashType = map->hashType;
+    
+    if (map->data) {
+        entry->data_len = strlen(map->data);
+        if (entry->data_len) {
+            if (entry->data_len > sizeof(entry->data))
+                entry->data_len = sizeof(entry->data) - 1;
+            memcpy(entry->data, map->data, entry->data_len);
+            entry->data[sizeof(entry->data) - 1] = 0;
+        }
+    }
+    entry->mapType = map->mapType;
+
+    return row;
+}
+
+static int
+_cache_load(netsnmp_cache *cache, netsnmp_tdata *table)
+{
+    netsnmp_container *maps;
+    netsnmp_iterator  *map_itr;
+    netsnmp_cert_map  *map;
+    netsnmp_tdata_row *row;
+    certToTSN_entry   *entry;
+    int                rc = 0;
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:cache:load", "called, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    /** get current active maps */
+    maps = netsnmp_cert_map_container();
+    if (NULL == maps)
+        return 0;
+    DEBUGMSGTL(("tlstmCertToTSNTable:cache:load", "maps %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(maps)));
+
+    map_itr = CONTAINER_ITERATOR(maps);
+    if (NULL == map_itr) {
+        DEBUGMSGTL(("tlstmCertToTSNTable:cache:load",
+                    "cant get map iterator\n"));
+        return -1;
+    }
+
+    /*
+     * insert rows for active maps into tbl container
+     */
+    map = ITERATOR_FIRST(map_itr);
+    for( ; map; map = ITERATOR_NEXT(map_itr)) {
+
+        row = _entry_from_map(map);
+        if (NULL == row) {
+            rc =-1;
+            break;
+        }
+        entry = (certToTSN_entry*)row->data;
+        entry->rowStatus = RS_ACTIVE;
+
+        if (netsnmp_tdata_add_row(table, row) != SNMPERR_SUCCESS) {
+            tlstmCertToTSNTable_removeEntry(NULL, row);
+            rc = -1;
+            break;
+        }
+    }
+    ITERATOR_RELEASE(map_itr);
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:cache:load", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    return rc;
+}
+
+static void
+_cache_free(netsnmp_cache *cache, netsnmp_tdata *table)
+{
+    netsnmp_tdata_row *row;
+    netsnmp_iterator   *tbl_itr;
+    certToTSN_entry   *entry;
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:cache:free", "called, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    /** insert rows for active maps into tbl container */
+    tbl_itr = CONTAINER_ITERATOR(table->container);
+    if (NULL == tbl_itr) {
+        DEBUGMSGTL(("tlstmCertToTSNTable:cache:free",
+                    "cant get map iterator\n"));
+        return;
+    }
+
+    row = ITERATOR_FIRST(tbl_itr);
+    for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+        entry = row->data;
+
+        /*
+         * remove all active rows (they are in the maps container kept
+         * by the library). Keep inactive ones for next time.
+         */
+        if (entry->rowStatus == RS_ACTIVE) {
+            tlstmCertToTSNTable_removeEntry(NULL, row);
+            ITERATOR_REMOVE(tbl_itr);
+            continue;
+        }
+    }
+    ITERATOR_RELEASE(tbl_itr);
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:cache:free", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+}
+
+static void
+_parse_mib_maps(const char *token, char *line)
+{
+    netsnmp_tdata_row *row;
+    certToTSN_entry   *entry;
+    netsnmp_cert_map *map = netsnmp_certToTSN_parse_common(&line);
+
+    if (NULL == line) {
+        netsnmp_config_error("incomplete line");
+        netsnmp_cert_map_free(map);
+        return;
+    }
+
+    map->flags = NSCM_FROM_MIB | NSCM_NONVOLATILE;
+    row = _entry_from_map(map);
+    if (NULL == row) {
+        netsnmp_cert_map_free(map);
+        return;
+    }
+    
+    entry = (certToTSN_entry*)row->data;
+    entry->rowStatus = atoi(line);
+    entry->storageType = ST_NONVOLATILE;
+
+    /*
+     * if row is active, add it to the maps container so it is available
+     * for use. Do not add it to the table, since it will be added
+     * during cache_load.
+     */
+    if (RS_ACTIVE == entry->rowStatus) {
+        if (netsnmp_cert_map_add(map) != 0)
+            netsnmp_cert_map_free(map);
+    }
+    else {
+        netsnmp_cert_map_free(map);
+        if (netsnmp_tdata_add_row(_table, row) != SNMPERR_SUCCESS)
+            tlstmCertToTSNTable_removeEntry(NULL, row);
+    }
+}
+
+static int
+_save_entry(certToTSN_entry *entry, void *app_type)
+{
+    char buf[SNMP_MAXBUF_SMALL], *hashType, *mapType, *data = NULL;
+
+    if (NULL == entry)
+        return SNMP_ERR_GENERR;
+
+    hashType = se_find_label_in_slist("cert_hash_alg", entry->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 entry->hashType);
+        return SNMP_ERR_GENERR;
+    }
+    mapType = se_find_label_in_slist("cert_map_type", entry->mapType);
+    if (TSNM_tlstmCertSpecified == entry->mapType)
+        data = entry->data;
+    snprintf(buf, sizeof(buf), "%s %ld --%s %s --%s %s %d",
+             MAP_MIB_CONFIG_TOKEN, entry->tlstmCertToTSNID, hashType,
+             entry->fingerprint, mapType, data ? data : "", entry->rowStatus);
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:save", "saving '%s'\n", buf));
+    read_config_store(app_type, buf);
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_save_map(netsnmp_cert_map *map, int row_status, void *app_type)
+{
+    char buf[SNMP_MAXBUF_SMALL], *hashType, *mapType, *data = NULL;
+
+    if (NULL == map)
+        return SNMP_ERR_GENERR;
+
+    /** don't store values from conf files */
+    if (! (map->flags & NSCM_NONVOLATILE)) {
+        DEBUGMSGT(("tlstmCertToTSNTable:save", 
+                   "skipping RO/permanent/volatile row\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    hashType = se_find_label_in_slist("cert_hash_alg", map->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 map->hashType);
+        return SNMP_ERR_GENERR;
+    }
+    mapType = se_find_label_in_slist("cert_map_type", map->mapType);
+    if (TSNM_tlstmCertSpecified == map->mapType)
+        data = (char*)map->data;
+    snprintf(buf, sizeof(buf), "%s %d --%s %s --%s %s %d",
+             MAP_MIB_CONFIG_TOKEN, map->priority, hashType, map->fingerprint,
+             mapType, data ? data : "", row_status);
+
+    DEBUGMSGTL(("tlstmCertToTSNTable:save", "saving '%s'\n", buf));
+    read_config_store(app_type, buf);
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_save_maps(int majorID, int minorID, void *serverarg, void *clientarg)
+{
+    char            sep[] =
+        "\n##############################################################";
+    char            buf[] =
+        "#\n" "# certificate secName mapping persistent data\n" "#";
+    char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                                 NETSNMP_DS_LIB_APPTYPE);
+    netsnmp_container *maps = netsnmp_cert_map_container();
+    netsnmp_tdata_row *row;
+    netsnmp_iterator  *tbl_itr, *map_itr;
+    netsnmp_cert_map  *map;
+    certToTSN_entry   *entry;
+
+    if ((NULL == maps) || ((CONTAINER_SIZE(maps) == 0) &&
+                           (CONTAINER_SIZE(_table->container) == 0)))
+        return SNMPERR_SUCCESS;
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, buf);
+
+    /*
+     * save active rows from maps
+     */
+    if (NULL != maps) {
+        map_itr = CONTAINER_ITERATOR(maps);
+        if (NULL == map_itr) {
+            DEBUGMSGTL(("tlstmCertToTSNTable:save",
+                        "cant get map iterator\n"));
+            map = NULL;
+        }
+        else
+            map = ITERATOR_FIRST(map_itr);
+
+        for( ; map; map = ITERATOR_NEXT(map_itr)) {
+            /** don't store config rows */
+            if (map->flags & NSCM_FROM_CONFIG)
+                continue;
+            _save_map(map, RS_ACTIVE, type);
+        }
+    }
+    ITERATOR_RELEASE(map_itr);
+
+    /*
+     * save inactive rows from mib
+     */
+    tbl_itr = CONTAINER_ITERATOR(_table->container);
+    if (NULL == tbl_itr)
+        DEBUGMSGTL(("tlstmCertToTSNTable:save", "cant get table iterator\n"));
+    else {
+        row = ITERATOR_FIRST(tbl_itr);
+        for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+            entry = row->data;
+
+            /*
+             * skip all active rows (should be in maps and thus saved
+             * above) and volatile rows.
+             */
+            if ((entry->rowStatus == RS_ACTIVE) ||
+                (entry->storageType != ST_NONVOLATILE))
+                continue;
+
+            _save_entry(entry, type);
+        }
+        ITERATOR_RELEASE(tbl_itr);
+    }
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, "\n");
+
+    /*
+     * never fails 
+     */
+    return SNMPERR_SUCCESS;
+}
+
+
+static const oid _tsnm_base[] = { SNMP_TLS_TM_BASE, 1, 1 };
+static const int _tsnm_base_len = sizeof(_tsnm_base);
+
+static oid
+_oid2type(oid *val, int val_len)
+{
+    netsnmp_assert(val);
+
+    if (val_len != (_tsnm_base_len + sizeof(oid)))
+        return -1;
+
+    if (memcmp(_tsnm_base,val,_tsnm_base_len) != 0)
+        return -2;
+
+    if ((val[OID_LENGTH(_tsnm_base)] > TSNM_tlstmCert_MAX) ||
+        (0 == val[OID_LENGTH(_tsnm_base)]))
+        return -3;
+
+    return val[OID_LENGTH(_tsnm_base)];
+}
+
+#if 0
+static int
+_type2oid(int type, oid *val, int *val_len)
+{
+    netsnmp_assert( val && val_len );
+
+    if (*val_len < _tsnm_base_len + sizeof(oid))
+        return -1;
+
+    memcpy(val, _tsnm_base, _tsnm_base_len + sizeof(oid));
+    val[_tsnm_base_len + sizeof(oid)] = type;
+
+    return 0;
+}
+#endif
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
new file mode 100644
index 0000000..42b8097
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
@@ -0,0 +1,47 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+#ifndef SNMPTLSTMCERTTOTSN_TABLE_H
+#define SNMPTLSTMCERTTOTSN_TABLE_H
+
+#define SNMP_TLS_TM_CERT_COUNT   SNMP_TLS_TM_BASE, 2, 2, 1, 1
+#define SNMP_TLS_TM_CERT_CHANGED SNMP_TLS_TM_BASE, 2, 2, 1, 2
+#define SNMP_TLS_TM_CERT_TABLE   SNMP_TLS_TM_BASE, 2, 2, 1, 3
+
+/*
+ * function declarations 
+ */
+void            init_snmpTlstmCertToTSNTable(void);
+void            init_snmpTlstmCertToTSNTable_context(const char *);
+
+/*
+ * index definitions for table tlstmCertToTSNTable 
+ */
+
+/*
+ * column number definitions for table tlstmCertToTSNTable 
+ */
+#define COL_SNMPTLSTMCERTTOTSN_ID                       1
+#define COL_SNMPTLSTMCERTTOTSN_FINGERPRINT              2
+#define COL_SNMPTLSTMCERTTOTSN_MAPTYPE                  3
+#define COL_SNMPTLSTMCERTTOTSN_DATA                     4
+#define COL_SNMPTLSTMCERTTOTSN_STORAGETYPE              5
+#define COL_SNMPTLSTMCERTTOTSN_ROWSTATUS                6
+
+#define SNMPTLSTMCERTTOTSN_TABLE_MIN_COL COL_SNMPTLSTMCERTTOTSN_FINGERPRINT
+#define SNMPTLSTMCERTTOTSN_TABLE_MAX_COL COL_SNMPTLSTMCERTTOTSN_ROWSTATUS
+
+#define SNMPTLSTMCERTTOTSN_FINGERPRINT_MAX_SIZE          255
+#define SNMPTLSTMCERTTOTSN_MAPTYPE_MAX_SIZE              128
+#define SNMPTLSTMCERTTOTSN_DATA_MAX_SIZE                 1024
+
+#define TSNM_tlstmCertSpecified                 1
+#define TSNM_tlstmCertSANRFC822Name             2
+#define TSNM_tlstmCertSANDNSName                3
+#define TSNM_tlstmCertSANIpAddress              4
+#define TSNM_tlstmCertSANAny                    5
+#define TSNM_tlstmCertCommonName                6
+#define TSNM_tlstmCert_MAX                      TSNM_tlstmCertCommonName
+
+#endif                          /* SNMPTLSTMCERTTOTSN_TABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable.h
new file mode 100644
index 0000000..d814be2
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable.h
@@ -0,0 +1,6 @@
+#ifndef SNMPTLSTMPARAMSTABLE_H
+#define SNMPTLSTMPARAMSTABLE_H
+
+config_require(tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable)
+
+#endif                          /* SNMPTLSTMPARAMSTABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
new file mode 100644
index 0000000..a835533
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
@@ -0,0 +1,1271 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+
+#include "snmpTlstmParamsTable.h"
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#define FATE_DELETE_ME        -1
+
+/** **************************************************************************
+ *
+ * table structures
+ *
+ */
+    /*
+     * structure for undo storage and other vars for set processing
+     */
+ typedef struct snmpTlstmParamsTable_undo_s {
+    char  fate;
+    char  copied;
+    char  is_consistent;
+    netsnmp_request_info *req[SNMPTLSTMPARAMSTABLE_MAX_COLUMN + 1];
+    /* undo Column space */
+    char snmpTlstmParamsClientFingerprint[SNMPTLSTMPARAMSCLIENTFINGERPRINT_MAX_SIZE];
+    size_t snmpTlstmParamsClientFingerprint_len;
+    char snmpTlstmParamsStorageType;
+    char snmpTlstmParamsRowStatus;
+ } snmpTlstmParamsTable_undo;
+
+    /*
+     * Typical data structure for a row entry
+     */
+typedef struct snmpTlstmParamsTable_entry_s {
+    /* Index values */
+    char snmpTargetParamsName[SNMPTARGETPARAMSNAME_MAX_SIZE];
+    size_t snmpTargetParamsName_len;
+
+    /* Column values */
+    char snmpTlstmParamsClientFingerprint[SNMPTLSTMPARAMSCLIENTFINGERPRINT_MAX_SIZE];
+    size_t snmpTlstmParamsClientFingerprint_len;
+    char snmpTlstmParamsStorageType;
+    char snmpTlstmParamsRowStatus;
+
+    char            hashType;
+    char            params_flags;
+
+    /* used during set processing */
+     snmpTlstmParamsTable_undo *undo;
+} snmpTlstmParamsTable_entry;
+
+static Netsnmp_Node_Handler snmpTlstmParamsTable_handler;
+static NetsnmpCacheLoad snmpTlstmParamsTable_load;
+static NetsnmpCacheFree snmpTlstmParamsTable_free;
+
+static int _count_handler(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info *reqinfo,
+                          netsnmp_request_info *requests);
+static void _tlstmParams_init_persistence(void);
+static void _params_add(snmpTlstmParamsTable_entry *entry);
+static void _params_remove(snmpTlstmParamsTable_entry *entry);
+static void _params_tweak_storage(snmpTlstmParamsTable_entry *entry);
+
+static uint32_t                _last_changed = 0;
+static netsnmp_tdata          *_table_data = NULL;
+
+/*
+ * Initialize the snmpTlstmParamsTable table by defining its contents
+ * and how it's structured
+ */
+void
+init_snmpTlstmParamsTable(void)
+{
+    oid reg_oid[] = {SNMP_TLS_TM_BASE,2,2,1,6};
+    const size_t reg_oid_len   = OID_LENGTH(reg_oid);
+    netsnmp_handler_registration    *reg;
+    netsnmp_table_registration_info *table_info;
+    netsnmp_cache                   *cache;
+    netsnmp_watcher_info            *watcher;
+
+    DEBUGMSGTL(("tlstmParamsTable:init", "initializing table snmpTlstmParamsTable\n"));
+
+    reg = netsnmp_create_handler_registration
+        ("snmpTlstmParamsTable", snmpTlstmParamsTable_handler, reg_oid,
+         reg_oid_len, HANDLER_CAN_RWRITE);
+
+    _table_data = netsnmp_tdata_create_table( "snmpTlstmParamsTable", 0 );
+    if (NULL == _table_data) {
+        snmp_log(LOG_ERR,"error creating tdata table for snmpTlstmParamsTable\n");
+        return;
+    }
+    cache = netsnmp_cache_create(SNMPTLSTMPARAMSTABLE_TIMEOUT,
+                                  snmpTlstmParamsTable_load,
+                                 snmpTlstmParamsTable_free,
+                                  reg_oid, reg_oid_len);
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,"error creating cache for snmpTlstmParamsTable\n");
+        netsnmp_tdata_delete_table(_table_data);
+        _table_data = NULL;
+        return;
+    }
+    cache->magic = (void *)_table_data;
+    cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error creating table info for snmpTlstmParamsTable\n");
+        netsnmp_tdata_delete_table(_table_data);
+        _table_data = NULL;
+        netsnmp_cache_free(cache);
+        return;
+    }
+    /*
+     * populate index types
+     */
+    netsnmp_table_helper_add_indexes(table_info,
+                                     /* index: snmpTargetParamsName */
+                                     ASN_PRIV_IMPLIED_OCTET_STR,  0);
+
+    table_info->min_column = SNMPTLSTMPARAMSTABLE_MIN_COLUMN;
+    table_info->max_column = SNMPTLSTMPARAMSTABLE_MAX_COLUMN;
+    
+    netsnmp_tdata_register( reg, _table_data, table_info );
+    netsnmp_inject_handler_before( reg, netsnmp_cache_handler_get(cache),
+                                   "table_container");
+
+    /*
+     * register scalars
+     */
+    reg_oid[10] = 4;
+    reg = netsnmp_create_handler_registration("snmpTlstmParamsCount",
+                                              _count_handler, reg_oid,
+                                              OID_LENGTH(reg_oid),
+                                              HANDLER_CAN_RONLY);
+    if (NULL == reg)
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmParamsCount\n");
+    else {
+        netsnmp_register_scalar(reg);
+        if (cache) 
+            netsnmp_inject_handler_before(reg,
+                                          netsnmp_cache_handler_get(cache),
+                                          "snmpTlstmParamsCount");
+    }
+    
+    reg_oid[10] = 5;
+    reg = netsnmp_create_handler_registration(
+        "snmpTlstmParamsTableLastChanged", NULL, reg_oid,
+        OID_LENGTH(reg_oid), HANDLER_CAN_RONLY);
+    watcher = netsnmp_create_watcher_info((void*)&_last_changed,
+                                          sizeof(_last_changed),
+                                          ASN_TIMETICKS,
+                                          WATCHER_FIXED_SIZE);
+    if ((NULL == reg) || (NULL == watcher))
+        snmp_log(LOG_ERR,
+                 "could not create handler for snmpTlstmParamsTableLastChanged\n");
+    else
+        netsnmp_register_watched_scalar(reg, watcher);
+
+    /*
+     * Initialise the contents of the table here
+     */
+    _tlstmParams_init_persistence();
+}
+
+/** **************************************************************************
+ *
+ * utility functions for table structures
+ *
+ */
+/* create a new row in the table */
+netsnmp_tdata_row *
+snmpTlstmParamsTable_createEntry(netsnmp_tdata *table_data,
+                                 char* snmpTargetParamsName,
+                                 size_t snmpTargetParamsName_len ) {
+    snmpTlstmParamsTable_entry *entry;
+    netsnmp_tdata_row *row;
+
+    if ((NULL == snmpTargetParamsName) || (snmpTargetParamsName_len >
+                                           sizeof(entry->snmpTargetParamsName)))
+        return NULL;
+
+    entry = SNMP_MALLOC_TYPEDEF(snmpTlstmParamsTable_entry);
+    if (!entry)
+        return NULL;
+
+    row = netsnmp_tdata_create_row();
+    if (!row) {
+        SNMP_FREE(entry);
+        return NULL;
+    }
+    row->data = entry;
+
+    DEBUGMSGT(("tlstmParamsTable:entry:create", "entry %p / row %p\n",
+               entry, row));
+
+    DEBUGIF("snmpTlstmParamTable:entry:create") {
+        char name[sizeof(entry->snmpTargetParamsName)+1];
+        snprintf(name, sizeof(name), "%s", snmpTargetParamsName);
+        DEBUGMSGT(("tlstmParamsTable:entry:create",
+                   "entry %s %p / row %p\n",
+                   name, entry, row));
+    }
+
+    /*
+     * populate index
+     */
+    memcpy(entry->snmpTargetParamsName, snmpTargetParamsName,
+           snmpTargetParamsName_len);
+    entry->snmpTargetParamsName_len = snmpTargetParamsName_len;
+    netsnmp_tdata_row_add_index( row, ASN_PRIV_IMPLIED_OCTET_STR,
+                                 entry->snmpTargetParamsName,
+                                 snmpTargetParamsName_len);
+
+    entry->snmpTlstmParamsClientFingerprint[0] = '\0';
+    entry->snmpTlstmParamsClientFingerprint_len = 0;
+    entry->snmpTlstmParamsRowStatus = RS_NOTREADY;
+    entry->snmpTlstmParamsStorageType = ST_NONVOLATILE;
+        
+    if (table_data) {
+        DEBUGMSGTL(("tlstmParamsTable:row:insert", "row %p\n",
+                    row));
+        netsnmp_tdata_add_row( table_data, row );
+    }
+    return row;
+}
+
+/* allocate undo resources */
+static snmpTlstmParamsTable_undo *
+_allocUndo(snmpTlstmParamsTable_entry *entry)
+{
+    if (!entry)
+        return NULL;
+    
+    entry->undo = SNMP_MALLOC_TYPEDEF(snmpTlstmParamsTable_undo);
+    if (!entry->undo)
+        return NULL;
+
+    entry->undo->is_consistent = -1; /* don't know */
+
+    /* TODO: allocated any other resources needed */
+
+    return entry->undo;
+}
+
+/* free undo resources */
+static void
+_freeUndo(snmpTlstmParamsTable_entry *entry)
+{
+    if (!entry || !entry->undo)
+        return;
+
+    /* TODO: release any allocated resources */
+    SNMP_FREE(entry->undo);
+}
+
+/* remove a row from the table */
+void
+snmpTlstmParamsTable_removeEntry(netsnmp_tdata     *table_data, 
+                                 netsnmp_tdata_row *row)
+{
+    snmpTlstmParamsTable_entry *entry;
+
+    if (!row)
+        return;    /* Nothing to remove */
+
+    entry = (snmpTlstmParamsTable_entry *)row->data;
+
+    DEBUGMSGT(("tlstmParamsTable:entry:delete", "entry %p / row %p\n",
+               entry, row));
+
+    if (table_data) {
+        DEBUGMSGTL(("tlstmParamsTable:row:remove", "row %p\n", row));
+        netsnmp_tdata_remove_and_delete_row( table_data, row );
+    }
+    else
+        netsnmp_tdata_delete_row( row );    
+
+    if (entry && entry->undo)
+        _freeUndo(entry);
+    SNMP_FREE( entry ); /* TODO - release any other internal resources */
+}
+
+/** **************************************************************************
+ *
+ * handle cache / interactions with snmpTlstmParams container in snmplib
+ *
+ */
+static void
+_params_add(snmpTlstmParamsTable_entry *entry)
+{
+    snmpTlstmParams     *params;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmParamsTable:params:add", "name %s, fp %s\n",
+                entry->snmpTargetParamsName, entry->snmpTlstmParamsClientFingerprint));
+
+    params =
+        netsnmp_tlstmParams_create(entry->snmpTargetParamsName,
+                                   entry->hashType,
+                                   entry->snmpTlstmParamsClientFingerprint,
+                                   entry->snmpTlstmParamsClientFingerprint_len);
+    if (NULL == params)
+        return;
+
+    params->flags = TLSTM_PARAMS_FROM_MIB;
+    if (entry->snmpTlstmParamsStorageType == ST_NONVOLATILE)
+        params->flags |= TLSTM_PARAMS_NONVOLATILE;
+
+    if (netsnmp_tlstmParams_add(params) != 0) {
+        netsnmp_tlstmParams_free(params);
+    }
+}
+
+static void
+_params_remove(snmpTlstmParamsTable_entry *entry)
+{
+    snmpTlstmParams      index, *found;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmParamsTable:params:remove", "name %s\n",
+                entry->snmpTargetParamsName));
+
+    index.name = entry->snmpTargetParamsName;
+    found = netsnmp_tlstmParams_find(&index);
+    if (found) {
+        netsnmp_tlstmParams_remove(found);
+        netsnmp_tlstmParams_free(found);
+    }
+    entry->params_flags = 0;
+}
+
+static void
+_params_tweak_storage(snmpTlstmParamsTable_entry *entry)
+{
+    snmpTlstmParams     *params, index;
+
+    if (NULL == entry)
+        return;
+
+    DEBUGMSGTL(("tlstmParamsTable:params:tweak", "name %s, st %d\n",
+                entry->snmpTargetParamsName, entry->snmpTlstmParamsStorageType));
+
+    index.name = entry->snmpTargetParamsName;
+    params = netsnmp_tlstmParams_find(&index);
+    if (NULL == params) {
+        DEBUGMSGTL(("tlstmParamsTable:params:tweak",
+                    "couldn't find params!\n"));
+        return;
+    }
+
+    if (entry->snmpTlstmParamsStorageType == ST_NONVOLATILE)
+        params->flags |= TLSTM_PARAMS_NONVOLATILE;
+    else
+        params->flags &= ~TLSTM_PARAMS_NONVOLATILE;
+}
+
+static netsnmp_tdata_row *
+_entry_from_params(snmpTlstmParams  *params)
+{
+    netsnmp_tdata_row *row;
+    snmpTlstmParamsTable_entry *entry;
+
+    row = snmpTlstmParamsTable_createEntry(NULL, params->name,
+                                       strlen(params->name));
+    if (NULL == row) {
+        snmp_log(LOG_ERR, "can create snmpTlstmParams row entry\n");
+        return NULL;
+    }
+    entry = row->data;
+
+    if (params->flags & TLSTM_PARAMS_FROM_CONFIG)
+        entry->snmpTlstmParamsStorageType = ST_PERMANENT;
+    else if (! (params->flags & TLSTM_PARAMS_NONVOLATILE))
+        entry->snmpTlstmParamsStorageType = ST_VOLATILE;
+
+    entry->snmpTlstmParamsRowStatus = RS_ACTIVE;
+
+    if (params->fingerprint) {
+        entry->snmpTlstmParamsClientFingerprint_len = 
+            strlen(params->fingerprint);
+        if (entry->snmpTlstmParamsClientFingerprint_len >
+            sizeof(entry->snmpTlstmParamsClientFingerprint))
+            entry->snmpTlstmParamsClientFingerprint_len =
+                sizeof(entry->snmpTlstmParamsClientFingerprint) - 1;
+        memcpy(entry->snmpTlstmParamsClientFingerprint, params->fingerprint,
+               entry->snmpTlstmParamsClientFingerprint_len);
+        entry->snmpTlstmParamsClientFingerprint[sizeof(entry->snmpTlstmParamsClientFingerprint) - 1] = 0;
+    }
+    entry->hashType = params->hashType;
+    entry->params_flags = params->flags;
+
+    return row;
+}
+
+static int
+snmpTlstmParamsTable_load( netsnmp_cache *cache, void *vmagic )
+ {
+    netsnmp_tdata     *table = (netsnmp_tdata *)vmagic;
+    netsnmp_tdata_row *row;
+    netsnmp_container *active_params;
+    netsnmp_iterator  *itr;
+    snmpTlstmParams   *params;
+    int                rc = 0;
+
+    active_params = netsnmp_tlstmParams_container();
+    if (NULL == active_params)
+        return 0;
+
+    DEBUGMSGTL(("tlstmParamsTable:cache:load", "snmpTlstmParams %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(active_params)));
+    itr = CONTAINER_ITERATOR(active_params);
+    if (NULL == itr) {
+        DEBUGMSGTL(("tlstmParamsTable:cache:load",
+                    "cant get iterator\n"));
+        return -1;
+    }
+
+    /*
+     * insert rows for active params into tbl container
+     */
+    params = ITERATOR_FIRST(itr);
+    for( ; params; params = ITERATOR_NEXT(itr)) {
+
+        row = _entry_from_params(params);
+        if (NULL == row) {
+            rc =-1;
+            break;
+        }
+        if (netsnmp_tdata_add_row(table, row) != SNMPERR_SUCCESS) {
+            snmpTlstmParamsTable_removeEntry(NULL, row);
+            rc = -1;
+            break;
+        }
+    }
+    ITERATOR_RELEASE(itr);
+
+    DEBUGMSGTL(("tlstmParamsTable:cache:load", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    return rc;
+}
+
+static void
+snmpTlstmParamsTable_free( netsnmp_cache *cache, void *vmagic )
+{
+    netsnmp_tdata            *table = (netsnmp_tdata *)vmagic;
+    netsnmp_tdata_row        *row;
+    netsnmp_iterator         *tbl_itr;
+    snmpTlstmParamsTable_entry   *entry;
+
+    DEBUGMSGTL(("tlstmParamsTable:cache:free", "called, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+
+    tbl_itr = CONTAINER_ITERATOR(table->container);
+    if (NULL == tbl_itr) {
+        DEBUGMSGTL(("tlstmParamsTable:cache:free",
+                    "cant get entry iterator\n"));
+        return;
+    }
+
+    row = ITERATOR_FIRST(tbl_itr);
+    for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+        entry = row->data;
+
+        /*
+         * remove all active rows (they are in the params container kept
+         * by the library). Keep inactive ones for next time.
+         */
+        if (entry->snmpTlstmParamsRowStatus == RS_ACTIVE) {
+            snmpTlstmParamsTable_removeEntry(NULL, row);
+            ITERATOR_REMOVE(tbl_itr);
+            continue;
+        }
+    }
+    ITERATOR_RELEASE(tbl_itr);
+
+    DEBUGMSGTL(("tlstmParamsTable:cache:free", "done, %" NETSNMP_PRIz "d rows\n",
+                CONTAINER_SIZE(table->container)));
+}
+
+/** **************************************************************************
+ *
+ * handles requests for the snmpTlstmParamsTable table
+ *
+ */
+static int
+snmpTlstmParamsTable_handler(
+    netsnmp_mib_handler               *handler,
+    netsnmp_handler_registration      *reginfo,
+    netsnmp_agent_request_info        *reqinfo,
+    netsnmp_request_info              *requests) {
+
+    netsnmp_request_info       *request = NULL;
+    netsnmp_table_request_info *table_info;
+    netsnmp_tdata              *table_data;
+    netsnmp_tdata_row          *table_row;
+    snmpTlstmParamsTable_entry          *table_entry;
+    int                         ret = SNMP_ERR_NOERROR;
+    
+    DEBUGMSGTL(("tlstmParamsTable:handler", "Processing %s mode (%d) request\n",
+                se_find_label_in_slist("agent_mode", reqinfo->mode),
+                reqinfo->mode));
+
+    switch (reqinfo->mode) {
+    /** ######################################################### GET #####
+     *
+     *   Read-support (also covers GetNext requests)
+     */
+    case MODE_GET:
+        for (request=requests; request; request=request->next) {
+            if (request->processed)
+                continue;
+
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            table_info  =     netsnmp_extract_table_info( request);
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT: 
+            {
+                u_char bin[42], *ptr = bin;
+                size_t len = sizeof(bin), offset = 1;
+                int    rc;
+                bin[0] = table_entry->hashType;
+                netsnmp_assert(table_entry->hashType != 0);
+                rc = netsnmp_hex_to_binary(
+                    &ptr, &len, &offset, 0,
+                    table_entry->snmpTlstmParamsClientFingerprint, NULL);
+                if (1 != rc)
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_ERR_GENERR);
+                else
+                    snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                             bin, offset);
+            }
+                break; /* case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT */
+            case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE:
+                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
+                                            table_entry->snmpTlstmParamsStorageType);
+                break; /* case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE */
+            case COLUMN_SNMPTLSTMPARAMSROWSTATUS:
+                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
+                                            table_entry->snmpTlstmParamsRowStatus);
+                break; /* case COLUMN_SNMPTLSTMPARAMSROWSTATUS */
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_NOSUCHOBJECT);
+                break;
+            } /* switch colnum */
+        } /* for requests */
+        break; /* case MODE_GET */
+
+        /*
+         * Write-support
+         */
+    /** #################################################### RESERVE1 #####
+     *
+     *   In RESERVE1 we are just checking basic ASN.1 size/type restrictions.
+     * You probably don't need to change any of this code. Don't change any
+     * of the column values here. Save that for the ACTION phase.
+     *
+     *   The next phase is RESERVE2 or FREE.
+     */
+    case MODE_SET_RESERVE1:
+        for (request=requests; request; request=request->next) {
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            table_info  =     netsnmp_extract_table_info( request);
+
+            if ((NULL != table_entry) &&
+                (ST_READONLY == table_entry->snmpTlstmParamsStorageType)) {
+                ret = SNMP_ERR_NOTWRITABLE;
+                break;
+            }
+            
+            /*
+             * for each column, allocate any additional resources needed
+             * beyond what is in the undo structure.
+             */
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT:
+                ret = netsnmp_check_vb_type_and_max_size(
+                          request->requestvb, ASN_OCTET_STR, sizeof(table_entry->snmpTlstmParamsClientFingerprint));
+                /** check len/algorithm MIB requirements */
+                if (SNMP_ERR_NOERROR == ret)
+                    ret = netsnmp_cert_check_vb_fingerprint(request->requestvb);
+
+                break; /* case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT */
+
+            case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE:
+                ret = netsnmp_check_vb_storagetype(request->requestvb,
+                         (table_entry ? table_entry->snmpTlstmParamsStorageType : ST_NONE ));
+                break; /* case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE */
+
+            case COLUMN_SNMPTLSTMPARAMSROWSTATUS:
+                ret = netsnmp_check_vb_rowstatus_with_storagetype(request->requestvb,
+                         (table_entry ? table_entry->snmpTlstmParamsRowStatus : RS_NONEXISTENT ),
+                         (table_entry ? table_entry->snmpTlstmParamsStorageType : ST_NONE));
+                break; /* case COLUMN_SNMPTLSTMPARAMSROWSTATUS */
+            default:
+                ret = SNMP_ERR_NOTWRITABLE;
+            } /* switch colnum */
+
+            if ( ret != SNMP_ERR_NOERROR )
+                break;
+        }/* for requests */
+        break; /* case MODE_SET_RESERVE1 */
+
+    /** #################################################### RESERVE2 #####
+     *
+     *   RESERVE2 is for checking additional restrictions from the MIB.
+     * Since these restrictions are often in the description of the object,
+     * mib2c can't generate code. It's possible that you need to add
+     * additional checks here. However, don't change any of the column
+     * values here. Save that for the ACTION phase.
+     *
+     *   The next phase is ACTION or FREE.
+     */
+    case MODE_SET_RESERVE2:
+        for (request=requests; request; request=request->next) {
+            table_entry = (snmpTlstmParamsTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_data = netsnmp_tdata_extract_table(request);
+            table_info = netsnmp_extract_table_info( request);
+            /*
+             * if no table_row, create one
+             */
+            if ( !table_entry ) {
+                table_row = snmpTlstmParamsTable_createEntry
+                    (table_data,  (char*)table_info->indexes->val.string, 
+                     table_info->indexes->val_len);
+                if (!table_row) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                table_entry = table_row->data;
+                _allocUndo(table_entry);
+                if (table_entry && !table_entry->undo) {
+                    snmpTlstmParamsTable_removeEntry(table_data, table_row);
+                    table_row = NULL;
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+                table_entry->undo->fate = FATE_NEWLY_CREATED;
+                /** associate row with requests */
+                netsnmp_insert_tdata_row( request, table_row );
+            }
+            
+            /** allocate undo structure, if needed */
+            if(!table_entry->undo) {
+                _allocUndo(table_entry);
+                if (!table_entry->undo) {
+                    ret = SNMP_ERR_RESOURCEUNAVAILABLE;
+                    break;
+                }
+            }
+            
+            /** don't allow multiple sets of same column */
+            if (table_entry->undo->req[table_info->colnum]) {
+                DEBUGMSGT(("tlstmParamsTable:reserve2",
+                           "multiple sets to col %d in request\n",
+                           table_info->colnum));
+                ret = SNMP_ERR_INCONSISTENTNAME;
+                break;
+            }
+            table_entry->undo->req[table_info->colnum] = request;
+            
+            if ( ret != SNMP_ERR_NOERROR )
+                break;
+        } /* for requests */
+
+        /** make sure rowstatus is used to create rows */
+        if ( ret == SNMP_ERR_NOERROR ) {
+            for (request = requests; request; request = request->next) {
+                if (request->processed)
+                    continue;
+
+                table_entry = (snmpTlstmParamsTable_entry *)
+                    netsnmp_tdata_extract_entry(request);
+                if ((table_entry->undo->fate != FATE_NEWLY_CREATED) ||
+                    (table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSROWSTATUS]))
+                    continue;
+                ret = SNMP_ERR_INCONSISTENTNAME;
+            break;
+            } /* for requests / creation */
+        } /* if no error */
+        break; /* case MODE_SET_RESERVE2 */
+
+    /** ######################################################## FREE #####
+     *
+     *   FREE is for cleaning up after a failed request (during either
+     * RESERVE1 or RESERVE2). So any allocated resources need to be
+     * released.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_FREE:
+        /*
+         * release undo resources
+         * remove any newly created rows
+         */
+        for (request=requests; request; request=request->next) {
+            table_row   =     netsnmp_tdata_extract_row(  request);
+            table_data  =  netsnmp_tdata_extract_table(request);
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            
+            if ( !table_entry || !table_entry->undo )
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row( request, table_row );
+
+            if (FATE_NEWLY_CREATED == table_entry->undo->fate )
+                snmpTlstmParamsTable_removeEntry( table_data, table_row );
+            else
+                _freeUndo(table_entry);
+        }
+        break; /* case MODE_SET_FREE */
+
+    /** ###################################################### ACTION #####
+     *
+     *   In the ACTION phase, we perform any sets that can be undone.
+     * (Save anything that can't be undone for the COMMIT phase.)
+     *
+     *   After individual columns have been done, you should check that the
+     * row as a whole is consistent.
+     *
+     * The next phase is UNDO or COMMIT.
+     */
+    case MODE_SET_ACTION:
+        for (request=requests; request; request=request->next) {
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            table_info  =     netsnmp_extract_table_info( request);
+
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT:
+            {
+                u_char *tmp = (u_char*)table_entry->snmpTlstmParamsClientFingerprint;
+
+                memcpy( table_entry->undo->snmpTlstmParamsClientFingerprint,
+                        table_entry->snmpTlstmParamsClientFingerprint,
+                        sizeof(table_entry->snmpTlstmParamsClientFingerprint));
+                table_entry->undo->snmpTlstmParamsClientFingerprint_len =
+                    table_entry->snmpTlstmParamsClientFingerprint_len;
+
+                table_entry->hashType = request->requestvb->val.string[0];
+                memset( table_entry->snmpTlstmParamsClientFingerprint, 0,
+                        sizeof(table_entry->snmpTlstmParamsClientFingerprint));
+                table_entry->snmpTlstmParamsClientFingerprint_len =
+                    sizeof(table_entry->snmpTlstmParamsClientFingerprint);
+                table_entry->snmpTlstmParamsClientFingerprint_len =
+                    netsnmp_binary_to_hex(&tmp, &table_entry->snmpTlstmParamsClientFingerprint_len,
+                                          0, &request->requestvb->val.string[1],
+                                          request->requestvb->val_len - 1);
+                if (0 == table_entry->snmpTlstmParamsClientFingerprint_len)
+                    ret = SNMP_ERR_GENERR;
+            }
+                break; /* case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT */
+
+            case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE:
+                /* save snmpTlstmParamsStorageType value */
+                table_entry->undo->snmpTlstmParamsStorageType = table_entry->snmpTlstmParamsStorageType;
+                /* get value from varbind */
+                table_entry->snmpTlstmParamsStorageType = *request->requestvb->val.integer;
+                break; /* case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE */
+
+            case COLUMN_SNMPTLSTMPARAMSROWSTATUS:
+                /* save snmpTlstmParamsRowStatus value */
+                table_entry->undo->snmpTlstmParamsRowStatus = table_entry->snmpTlstmParamsRowStatus;
+                /* get value from varbind  */
+                table_entry->snmpTlstmParamsRowStatus     = *request->requestvb->val.integer;
+                break; /* case COLUMN_SNMPTLSTMPARAMSROWSTATUS */
+            } /* switch colnum */
+            if ( ret != SNMP_ERR_NOERROR )
+                break;
+        } /* set values for requests */
+
+        if ( ret == SNMP_ERR_NOERROR ) {
+
+            /*
+             * All columns now have their final values set. check the
+             * internal consistency of each row.
+             */
+            for (request=requests; request; request=request->next) {
+                table_entry = (snmpTlstmParamsTable_entry *)
+                    netsnmp_tdata_extract_entry(request);
+                table_info  =     netsnmp_extract_table_info( request);
+                
+                if (table_entry->undo->is_consistent != -1)
+                    continue; /* already checked */
+                
+                /** assume consistency */
+                table_entry->undo->is_consistent = 1;
+                
+                if ((RS_IS_ACTIVE(table_entry->snmpTlstmParamsRowStatus)) &&
+                    ((!table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSROWSTATUS]) ||
+                     (RS_IS_ACTIVE(table_entry->undo->snmpTlstmParamsRowStatus)))) {
+                    /*
+                     * check mib restrictions on active rows.
+                     */
+                    if (table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT]) {
+                        table_entry->undo->is_consistent = 0;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT];
+                        ret = SNMP_ERR_INCONSISTENTVALUE; /* per mib */
+                    }
+                } /* active row */
+                else if (RS_IS_GOING_ACTIVE(table_entry->snmpTlstmParamsRowStatus)) {
+                    /*
+                     * check restrictions for activating a row
+                     */
+                    /** if going active, inconsistency is fatal */
+                    if (!table_entry->undo->is_consistent) {
+                        if (FATE_NEWLY_CREATED == table_entry->undo->fate)
+                            ret = SNMP_ERR_INCONSISTENTNAME;
+                        else
+                            ret = SNMP_ERR_INCONSISTENTVALUE;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSROWSTATUS];
+                    }
+                } /* going active */
+                else if (RS_DESTROY == table_entry->snmpTlstmParamsRowStatus) {
+                    /*
+                     * TODO: check restrictions for deleting a row
+                     */
+                    /** can't delete active row */
+                    if (RS_IS_ACTIVE(table_entry->undo->snmpTlstmParamsRowStatus)) {
+                        ret = SNMP_ERR_INCONSISTENTVALUE;
+                        request = table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSROWSTATUS];
+                    }
+                } /* destroy */
+                if ( ret != SNMP_ERR_NOERROR )
+                    break;
+            } /* consistency for requests */
+        } /* if no error */
+        break; /* case MODE_SET_ACTION */
+
+    /** ######################################################## UNDO #####
+     *
+     *   UNDO is for cleaning up any failed requests that went through the
+     * ACTION phase.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_UNDO:
+        for (request=requests; request; request=request->next) {
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            table_row   =     netsnmp_tdata_extract_row(  request);
+            table_data  =     netsnmp_tdata_extract_table(request);
+            table_info  =     netsnmp_extract_table_info( request);
+
+            switch (table_info->colnum) {
+            case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT:
+                /* restore snmpTlstmParamsClientFingerprint value */
+                memcpy( table_entry->snmpTlstmParamsClientFingerprint,
+                        table_entry->undo->snmpTlstmParamsClientFingerprint,
+                        sizeof(table_entry->snmpTlstmParamsClientFingerprint));
+                table_entry->snmpTlstmParamsClientFingerprint_len =
+                    table_entry->undo->snmpTlstmParamsClientFingerprint_len;
+                break; /* case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT */
+
+            case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE:
+                /* restore snmpTlstmParamsStorageType value */
+                table_entry->snmpTlstmParamsStorageType =
+                    table_entry->undo->snmpTlstmParamsStorageType;
+                break; /* case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE */
+
+                case COLUMN_SNMPTLSTMPARAMSROWSTATUS:
+                    /* restore snmpTlstmParamsRowStatus value */
+                    table_entry->snmpTlstmParamsRowStatus = table_entry->undo->snmpTlstmParamsRowStatus;
+                    break; /* case COLUMN_SNMPTLSTMPARAMSROWSTATUS */
+            } /* switch colnum */
+        } /* for requests */
+
+        /*
+         * release undo data
+         * or remove any newly created rows
+         */
+        for (request=requests; request; request=request->next) {
+            table_row   =     netsnmp_tdata_extract_row(  request);
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+            
+            if ( !table_entry || !table_entry->undo )
+                continue;
+
+            /** disassociate row with requests */
+            netsnmp_remove_tdata_row( request, table_row );
+            
+            if (FATE_NEWLY_CREATED == table_entry->undo->fate )
+                snmpTlstmParamsTable_removeEntry( table_data, table_row );
+            else
+                _freeUndo(table_entry);
+        } /* for requests */
+        break; /* case MODE_SET_UNDO */
+
+    /** ###################################################### COMMIT #####
+     *
+     *   COMMIT is the final success state, when all changes are finalized.
+     * There is not recovery state should something faile here.
+     *
+     *   This the final phase for this path in the state machine.
+     */
+    case MODE_SET_COMMIT:
+        for (request=requests; request; request=request->next) {
+            table_row   =     netsnmp_tdata_extract_row(  request);
+            table_data  =     netsnmp_tdata_extract_table(request);
+            table_info  =     netsnmp_extract_table_info(    request);
+            table_entry = (snmpTlstmParamsTable_entry *)
+                              netsnmp_tdata_extract_entry(request);
+
+            if (!table_entry || !table_entry->undo)
+                continue;
+            
+            if ((RS_NOTREADY == table_entry->snmpTlstmParamsRowStatus) &&
+                table_entry->undo->is_consistent)
+                table_entry->snmpTlstmParamsRowStatus = RS_NOTINSERVICE;
+            else if ((RS_NOTINSERVICE == table_entry->snmpTlstmParamsRowStatus) &&
+                     (0 == table_entry->undo->is_consistent))
+                table_entry->snmpTlstmParamsRowStatus = RS_NOTREADY;
+
+            /** release undo data for requests with no rowstatus */
+            if (table_entry->undo &&
+                !table_entry->undo->req[COLUMN_SNMPTLSTMPARAMSROWSTATUS] != 0) {
+                _freeUndo(table_entry);
+                
+                /** update active addrs */
+                if ((0 == table_entry->params_flags) &&
+                    (table_entry->snmpTlstmParamsRowStatus == RS_ACTIVE))
+                    _params_add(table_entry);
+                else if ((0 != table_entry->params_flags) &&
+                         (table_entry->snmpTlstmParamsRowStatus == RS_DESTROY))
+                    _params_remove(table_entry);
+            }
+
+            switch (table_info->colnum) {
+
+            case COLUMN_SNMPTLSTMPARAMSROWSTATUS:
+                switch (table_entry->snmpTlstmParamsRowStatus) {
+                case RS_CREATEANDGO:
+                    /** Fall-through */
+                case RS_ACTIVE:
+                    table_entry->snmpTlstmParamsRowStatus = RS_ACTIVE;
+                    if (0 == table_entry->params_flags)
+                        _params_add(table_entry);
+                    break;
+
+                case RS_CREATEANDWAIT:
+                    /** Fall-through */
+                case RS_NOTINSERVICE:
+                    /** simply set status based on consistency */
+                    if (table_entry->undo->is_consistent)
+                        table_entry->snmpTlstmParamsRowStatus = RS_NOTINSERVICE;
+                    else
+                        table_entry->snmpTlstmParamsRowStatus = RS_NOTREADY;
+                    if (0 != table_entry->params_flags)
+                        _params_remove(table_entry);
+                    break;
+
+                case RS_DESTROY:
+                    if (0 != table_entry->params_flags)
+                        _params_remove(table_entry);
+                    /** disassociate row with requests */
+                    netsnmp_remove_tdata_row( request, table_row );
+                    snmpTlstmParamsTable_removeEntry(table_data, table_row );
+                    table_row = NULL;
+                    table_entry = NULL;
+                }
+                /** release undo data */
+                _freeUndo(table_entry);
+                break; /* case COLUMN_SNMPTLSTMPARAMSROWSTATUS */
+
+            case COLUMN_SNMPTLSTMPARAMSSTORAGETYPE:
+                    if (RS_ACTIVE == table_entry->snmpTlstmParamsRowStatus)
+                        _params_tweak_storage(table_entry);
+                    break;
+
+            case COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT:
+                break;
+            } /* switch colnum */
+        } /* for requests */
+
+        /** update last changed */
+        _last_changed = netsnmp_get_agent_uptime();
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
+        break; /* case MODE_SET_COMMIT */
+    }  /* switch (reqinfo->mode) */
+    
+    if ( ret != SNMP_ERR_NOERROR )
+        netsnmp_set_request_error( reqinfo, request, ret);
+    
+    return SNMP_ERR_NOERROR;
+}
+
+
+static int
+_count_handler(netsnmp_mib_handler *handler,
+               netsnmp_handler_registration *reginfo,
+               netsnmp_agent_request_info *reqinfo,
+               netsnmp_request_info *requests)
+{
+    int                val;
+
+    if (MODE_GET != reqinfo->mode) {
+        snmp_log(LOG_ERR, "bad mode in RO handler");
+        return SNMP_ERR_GENERR;
+    }
+
+    if (NULL == _table_data->container)
+        val = 0;
+    else
+        val = CONTAINER_SIZE(_table_data->container);
+
+    snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE,
+                             (u_char *) &val, sizeof(val));
+   
+    if (handler->next && handler->next->access_method)
+        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
+                                         requests);
+    
+    return SNMP_ERR_NOERROR;
+}
+
+/***********************************************************************
+ *
+ * PERSISTENCE
+ *
+ ***********************************************************************/
+
+static int _tlstmParamsTable_save(int majorID, int minorID,
+                                  void *serverarg, void *clientarg);
+static int _save_params(snmpTlstmParams *params, void *app_type);
+static int _save_entry(snmpTlstmParamsTable_entry *entry, void *type);
+static void _tlstmParamsTable_row_restore_mib(const char *token, char *buf);
+
+static const char mib_token[] = "snmpTlstmParamsEntry";
+
+/************************************************************
+ * *_init_persistence should be called from the main table
+ * init routine.
+ *
+ * If your table depends on rows in another table,
+ * you should register your callback after the other table,
+ * which should ensure the rows on which you depend are saved
+ * (and re-created) before the dependent rows.
+ */
+void
+_tlstmParams_init_persistence(void)
+{
+    int             rc;
+
+    register_config_handler(NULL, mib_token, _tlstmParamsTable_row_restore_mib,
+                            NULL, NULL);
+    rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+                                SNMP_CALLBACK_STORE_DATA,
+                                _tlstmParamsTable_save,
+                                _table_data->container);
+
+    if (rc != SNMP_ERR_NOERROR)
+        snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
+                 "in _tlstmParams_init_persistence\n");
+}
+
+static int
+_tlstmParamsTable_save(int majorID, int minorID, void *serverarg,
+                       void *clientarg)
+{
+    char            sep[] =
+        "##############################################################";
+    char            buf[] = "#\n" "# tlstmParams persistent data\n" "#";
+    char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                                 NETSNMP_DS_LIB_APPTYPE);
+
+    netsnmp_container *active_params = netsnmp_tlstmParams_container();
+    netsnmp_tdata_row *row;
+    netsnmp_iterator  *tbl_itr, *params_itr;
+    snmpTlstmParams   *params;
+    snmpTlstmParamsTable_entry *entry;
+
+    if ((CONTAINER_SIZE(active_params) == 0) &&
+        (CONTAINER_SIZE(_table_data->container) == 0))
+        return SNMPERR_SUCCESS;
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, buf);
+
+    /*
+     * save active rows from params container
+     */
+    if (NULL != active_params) {
+        params_itr = CONTAINER_ITERATOR(active_params);
+        if (NULL == params_itr) {
+            DEBUGMSGTL(("tlstmParamsTable:save",
+                        "cant get params iterator\n"));
+            params = NULL;
+        }
+        else
+            params = ITERATOR_FIRST(params_itr);
+
+        for( ; params; params = ITERATOR_NEXT(params_itr)) {
+            /** don't store config rows */
+            if ((params->flags & TLSTM_PARAMS_FROM_CONFIG) ||
+                ! (params->flags & TLSTM_PARAMS_NONVOLATILE))
+                continue;
+            _save_params(params, type);
+        }
+    }
+    ITERATOR_RELEASE(params_itr);
+
+    /*
+     * save inactive rows from mib
+     */
+    tbl_itr = CONTAINER_ITERATOR(_table_data->container);
+    if (NULL == tbl_itr)
+        DEBUGMSGTL(("tlstmParamsTable:save", "cant get table iterator\n"));
+    else {
+        row = ITERATOR_FIRST(tbl_itr);
+        for( ; row; row = ITERATOR_NEXT(tbl_itr)) {
+            entry = row->data;
+
+            /*
+             * skip all active rows (should be in active_params and thus saved
+             * above) and volatile rows.
+             */
+            if ((entry->snmpTlstmParamsRowStatus == RS_ACTIVE) ||
+                (entry->snmpTlstmParamsStorageType != ST_NONVOLATILE))
+                continue;
+
+            _save_entry(entry, type);
+        }
+        ITERATOR_RELEASE(tbl_itr);
+    }
+
+    read_config_store((char *) type, sep);
+    read_config_store((char *) type, "\n");
+
+    /*
+     * never fails 
+     */
+    return SNMPERR_SUCCESS;
+}
+
+/************************************************************
+ * _tlstmParamsTable_container_row_save
+ */
+static int
+_save_entry(snmpTlstmParamsTable_entry *entry, void *type)
+{
+    char   buf[SNMP_MAXBUF_SMALL], *hashType;
+
+    hashType = se_find_label_in_slist("cert_hash_alg", entry->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 entry->hashType);
+        return SNMP_ERR_GENERR;
+    }
+
+    /*
+     * build the line
+     */
+    netsnmp_assert(0 == entry->snmpTargetParamsName[
+                       entry->snmpTargetParamsName_len]);
+    netsnmp_assert(0 == entry->snmpTlstmParamsClientFingerprint[
+                       entry->snmpTlstmParamsClientFingerprint_len]);
+    snprintf(buf, sizeof(buf), "%s %s %s %s %d", mib_token,
+             entry->snmpTargetParamsName, hashType,
+             entry->snmpTlstmParamsClientFingerprint,
+             entry->snmpTlstmParamsRowStatus);
+    buf[sizeof(buf)-1] = 0;
+
+    read_config_store(type, buf);
+    DEBUGMSGTL(("tlstmParamsTable:row:save", "saving entry '%s'\n", buf));
+
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+_save_params(snmpTlstmParams *params, void *app_type)
+{
+    char buf[SNMP_MAXBUF_SMALL], *hashType;
+
+    if (NULL == params)
+        return SNMP_ERR_GENERR;
+
+    hashType = se_find_label_in_slist("cert_hash_alg", params->hashType);
+    if (NULL == hashType) {
+        snmp_log(LOG_ERR, "skipping entry unknown hash type %d\n",
+                 params->hashType);
+        return SNMP_ERR_GENERR;
+    }
+    snprintf(buf, sizeof(buf), "%s %s --%s %s %d", mib_token, params->name,
+             hashType, params->fingerprint, RS_ACTIVE);
+
+    DEBUGMSGTL(("tlstmParamsTable:params:save", "saving params '%s'\n",
+                buf));
+    read_config_store(app_type, buf);
+
+    return SNMP_ERR_NOERROR;
+}
+
+static void
+_tlstmParamsTable_row_restore_mib(const char *token, char *buf)
+{
+    u_char                 rowStatus;
+    snmpTlstmParams       *params;
+
+    /** need somewhere to save rows */
+    netsnmp_assert(_table_data && _table_data->container); 
+
+    params = netsnmp_tlstmParams_restore_common(&buf);
+    if (NULL == params)
+        return;
+
+    if (NULL == buf) {
+        config_perror("incomplete line");
+        return;
+    }
+    rowStatus = atoi(buf);
+
+    /*
+     * if row is active, add it to the params container so it is available
+     * for use. Do not add it to the table, since it will be added
+     * during cache_load.
+     */
+    if (RS_ACTIVE == rowStatus) {
+        params->flags = TLSTM_PARAMS_FROM_MIB | TLSTM_PARAMS_NONVOLATILE;
+
+        if (netsnmp_tlstmParams_add(params) != 0)
+            netsnmp_tlstmParams_free(params);
+    }
+    else {
+        netsnmp_tdata_row     *row;
+        snmpTlstmParamsTable_entry  *entry;
+
+        row = snmpTlstmParamsTable_createEntry(_table_data, params->name,
+                                               strlen(params->name));
+        if (!row)
+            return;
+
+        entry = row->data;
+        
+        entry->hashType = params->hashType;
+        strlcpy(entry->snmpTlstmParamsClientFingerprint, params->fingerprint,
+                sizeof(entry->snmpTlstmParamsClientFingerprint));
+        entry->snmpTlstmParamsClientFingerprint_len =
+            strlen(entry->snmpTlstmParamsClientFingerprint);
+        entry->snmpTlstmParamsStorageType = ST_NONVOLATILE;
+        entry->snmpTlstmParamsRowStatus = rowStatus;
+        netsnmp_tlstmParams_free(params);
+    }
+}
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
new file mode 100644
index 0000000..ae33cac
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
@@ -0,0 +1,30 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+#ifndef SNMPTLSTMPARAMSTABLE_H
+#define SNMPTLSTMPARAMSTABLE_H
+
+#define SNMP_TLS_TM_PARAMS_COUNT   SNMP_TLS_TM_BASE, 2, 2, 1, 4
+#define SNMP_TLS_TM_PARAMS_CHANGED SNMP_TLS_TM_BASE, 2, 2, 1, 5
+#define SNMP_TLS_TM_PARAMS_TABLE   SNMP_TLS_TM_BASE, 2, 2, 1, 6
+
+/* function declarations */
+void init_snmpTlstmParamsTable(void);
+void initialize_table_snmpTlstmParamsTable(void);
+#define SNMPTLSTMPARAMSTABLE_TIMEOUT  60
+
+/* index definitions for table snmpTlstmParamsTable */
+#define SNMPTARGETPARAMSNAME_MAX_SIZE  32
+
+/* column number definitions for table snmpTlstmParamsTable */
+#define COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT    1
+#define COLUMN_SNMPTLSTMPARAMSSTORAGETYPE    2
+#define COLUMN_SNMPTLSTMPARAMSROWSTATUS    3
+    
+#define SNMPTLSTMPARAMSCLIENTFINGERPRINT_MAX_SIZE    255
+    
+#define SNMPTLSTMPARAMSTABLE_MIN_COLUMN COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT
+#define SNMPTLSTMPARAMSTABLE_MAX_COLUMN COLUMN_SNMPTLSTMPARAMSROWSTATUS
+
+#endif /* SNMPTLSTMPARAMSTABLE_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmSession.h b/agent/mibgroup/tlstm-mib/snmpTlstmSession.h
new file mode 100644
index 0000000..9bf4ef8
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmSession.h
@@ -0,0 +1,6 @@
+#ifndef SNMPTLSTMSESSION_H
+#define SNMPTLSTMSESSION_H
+
+config_require(tlstm-mib/snmpTlstmSession/snmpTlstmSession)
+
+#endif /* SNMPTLSTMSESSION_H */
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c b/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c
new file mode 100644
index 0000000..09c7b60
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.c
@@ -0,0 +1,49 @@
+/*
+ * snmpTlstmSession
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "tlstm-mib.h"
+#include "snmpTlstmSession.h"
+
+static netsnmp_handler_registration* _myreg = NULL;
+
+/** Initializes the snmpTlstmSession module */
+void
+init_snmpTlstmSession(void)
+{
+    static oid      myoid[] = { SNMP_TLS_TM_BASE, 2, 1 };
+    int             rc;
+
+    DEBUGMSGTL(("tlstmSession", "Initializing\n"));
+
+    _myreg = netsnmp_create_handler_registration("snmpTlstmSession", NULL,
+                                                 myoid, OID_LENGTH(myoid),
+                                                 HANDLER_CAN_RONLY);
+    if (NULL == _myreg) {
+        snmp_log(LOG_ERR, "failed to create handler registration for "
+                 "snmpTlstmSession\n");
+        return;
+    }
+
+    rc = NETSNMP_REGISTER_STATISTIC_HANDLER(_myreg, 1, TLSTM);
+    if (MIB_REGISTERED_OK != rc) {
+        snmp_log(LOG_ERR, "failed to register snmpTlstmSession mdoule\n");
+        netsnmp_handler_registration_free(_myreg);
+        _myreg = NULL;
+    }
+
+}
+
+
+void
+shutdown_snmpTlstmSession(void)
+{
+    if (_myreg) {
+        netsnmp_unregister_handler(_myreg);
+        _myreg = NULL;
+    }
+}
diff --git a/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h b/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
new file mode 100644
index 0000000..2fcc03c
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
@@ -0,0 +1,9 @@
+#ifndef SNMPTLSTMSESSION_H
+#define SNMPTLSTMSESSION_H
+
+/** Initializes the snmpTlstmSession module */
+void init_snmpTlstmSession(void);
+void shutdown_snmpTlstmSession(void);
+
+#endif /* SNMPTLSTMSESSION_H */
+
diff --git a/agent/mibgroup/tsm-mib.h b/agent/mibgroup/tsm-mib.h
new file mode 100644
index 0000000..aec01fe
--- /dev/null
+++ b/agent/mibgroup/tsm-mib.h
@@ -0,0 +1,6 @@
+/*
+ * module to include the modules
+ */
+config_require(tsm-mib/snmpTsmStats)
+config_require(tsm-mib/snmpTsmConfigurationUsePrefix)
+config_add_mib(SNMP-TSM-MIB)
diff --git a/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.c b/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.c
new file mode 100644
index 0000000..c3976c4
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.c
@@ -0,0 +1,110 @@
+/*
+ * Note: this file originally auto-generated by mib2c
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "snmpTsmConfigurationUsePrefix.h"
+
+/** Initializes the snmpTsmConfigurationUsePrefix module */
+void
+init_snmpTsmConfigurationUsePrefix(void)
+{
+    const oid       snmpTsmConfigurationUsePrefix_oid[] =
+        { 1, 3, 6, 1, 2, 1, 190, 1, 2, 1 };
+
+    DEBUGMSGTL(("snmpTsmConfigurationUsePrefix", "Initializing\n"));
+
+    netsnmp_register_scalar(netsnmp_create_handler_registration
+                            ("snmpTsmConfigurationUsePrefix",
+                             handle_snmpTsmConfigurationUsePrefix,
+                             snmpTsmConfigurationUsePrefix_oid,
+                             OID_LENGTH(snmpTsmConfigurationUsePrefix_oid),
+                             HANDLER_CAN_RWRITE));
+}
+
+int
+handle_snmpTsmConfigurationUsePrefix(netsnmp_mib_handler *handler,
+                                     netsnmp_handler_registration *reginfo,
+                                     netsnmp_agent_request_info *reqinfo,
+                                     netsnmp_request_info *requests)
+{
+    int             ret;
+    /*
+     * 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. 
+     */
+
+    long current_value = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                                NETSNMP_DS_LIB_TSM_USE_PREFIX);
+    static long original_value = 0;
+
+    switch (reqinfo->mode) {
+
+    case MODE_GET:
+        if (current_value == 0)
+            current_value = TV_FALSE;
+        snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                 &current_value,
+                                 sizeof(current_value));
+        break;
+
+        /*
+         * 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 
+         */
+        ret = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);
+        if (ret != SNMP_ERR_NOERROR) {
+            netsnmp_set_request_error(reqinfo, requests, ret);
+        }
+        if (*(requests->requestvb->val.integer) != 2 &&
+            *(requests->requestvb->val.integer) != 1)
+            netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);
+        original_value = current_value;
+        break;
+
+    case MODE_SET_ACTION:
+        if (TV_FALSE == *(requests->requestvb->val.integer))
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_LIB_TSM_USE_PREFIX, 0);
+        else
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_LIB_TSM_USE_PREFIX, 1);
+        break;
+
+    case MODE_SET_UNDO:
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_TSM_USE_PREFIX,
+                               original_value);
+        break;
+
+        /* we don't need these */
+    case MODE_SET_COMMIT:
+    case MODE_SET_FREE:
+    case MODE_SET_RESERVE2:
+        break;
+
+    default:
+        /*
+         * we should never get here, so this is a really bad error 
+         */
+        snmp_log(LOG_ERR,
+                 "unknown mode (%d) in handle_snmpTsmConfigurationUsePrefix\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h b/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
new file mode 100644
index 0000000..ba0c5b3
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
@@ -0,0 +1,14 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *        $
+ */
+#ifndef SNMPTSMCONFIGURATIONUSEPREFIX_H
+#define SNMPTSMCONFIGURATIONUSEPREFIX_H
+
+/*
+ * function declarations 
+ */
+void            init_snmpTsmConfigurationUsePrefix(void);
+Netsnmp_Node_Handler handle_snmpTsmConfigurationUsePrefix;
+
+#endif                          /* SNMPTSMCONFIGURATIONUSEPREFIX_H */
diff --git a/agent/mibgroup/tsm-mib/snmpTsmStats.h b/agent/mibgroup/tsm-mib/snmpTsmStats.h
new file mode 100644
index 0000000..d1c4101
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmStats.h
@@ -0,0 +1,6 @@
+#ifndef SNMPTSMSTATS_H
+#define SNMPTSMSTATS_H
+
+config_require(tsm-mib/snmpTsmStats/snmpTsmStats)
+
+#endif /* SNMPTSMSTATS_H */
diff --git a/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
new file mode 100644
index 0000000..6e1b796
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
@@ -0,0 +1,46 @@
+/*
+ * snmpTsmStats
+ */
+
+#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/library/snmp_api.h>
+#include "snmpTsmStats.h"
+
+static netsnmp_handler_registration* _myreg = NULL;
+
+/** Initializes the snmpTsmStats module */
+void
+init_snmpTsmStats(void)
+{
+    static oid      snmpTsmStats_oid[] = { 1, 3, 6, 1, 2, 1, 190, 1, 1 };
+    int             rc;
+
+    DEBUGMSGTL(("snmpTsmStats", "Initializing\n"));
+
+    _myreg = netsnmp_create_handler_registration("snmpTsmStats", NULL,
+                                                 snmpTsmStats_oid,
+                                                 OID_LENGTH(snmpTsmStats_oid),
+                                                 HANDLER_CAN_RONLY);
+    if (NULL == _myreg) {
+        snmp_log(LOG_ERR, "failed to create handler registration for "
+                 "snmpTsmStats\n");
+        return;
+    }
+    rc = NETSNMP_REGISTER_STATISTIC_HANDLER(_myreg, 1, TSM);
+    if (MIB_REGISTERED_OK != rc) {
+        snmp_log(LOG_ERR, "failed to register snmpTsmStats mdoule\n");
+        netsnmp_handler_registration_free(_myreg);
+        _myreg = NULL;
+    }
+}
+
+void
+shutdown_snmpTsmSession(void)
+{
+    if (_myreg) {
+        netsnmp_unregister_handler(_myreg);
+        _myreg = NULL;
+    }
+}
diff --git a/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
new file mode 100644
index 0000000..95007cf
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
@@ -0,0 +1,8 @@
+#ifndef SNMPTSMSTATS_H
+#define SNMPTSMSTATS_H
+
+/** Initializes the snmpTsmStats module */
+void init_snmpTsmStats(void);
+void shutdown_snmpTsmStats(void);
+
+#endif /* SNMPTSMSTATS_H */
diff --git a/agent/mibgroup/tunnel/tunnel.c b/agent/mibgroup/tunnel/tunnel.c
index cf6eeda..f9649ef 100644
--- a/agent/mibgroup/tunnel/tunnel.c
+++ b/agent/mibgroup/tunnel/tunnel.c
@@ -248,7 +248,7 @@
 
 
 
-static char    *
+static const char *
 getName(int index)
 {
 #ifndef USING_IF_MIB_IFTABLE_IFTABLE_MODULE
@@ -410,7 +410,7 @@
     static int      max_index = 1;
     static struct tunnel *last_tunnel = NULL;
     struct tunnel  *tunnel;
-    char           *ifname;
+    const char     *ifname;
     int             type;
 
     /*
@@ -418,7 +418,7 @@
      */
     for (tunnel = tunnels; tunnel; tunnel = tunnel->next) {
         DEBUGMSG(("tunnel",
-                  "updateTunnels(): updating %s (index=%lu)\n",
+                  "updateTunnels(): updating %s (index=%" NETSNMP_PRIo "u)\n",
                   tunnel->ifname, tunnel->ifindex));
         updateTunnel(tunnel);
     }
@@ -464,7 +464,8 @@
             last_tunnel = tunnel;
 
             DEBUGMSG(("tunnel",
-                      "updateTunnels(): added %s (index=%lu state=%d)\n",
+                      "updateTunnels(): added %s (index=%" NETSNMP_PRIo
+                      "u state=%d)\n",
                       tunnel->ifname, tunnel->ifindex, tunnel->active));
         }
         if (type == 0)
@@ -485,8 +486,8 @@
         if (tunnel->ifindex == index) {
             if (!tunnel->active)
                 break;
-            DEBUGMSG(("tunnel",
-                      "%s (index=%lu)\n", tunnel->ifname, tunnel->ifindex));
+            DEBUGMSG(("tunnel", "%s (index=%" NETSNMP_PRIo "u)\n",
+                     tunnel->ifname, tunnel->ifindex));
             return tunnel;
         }
     }
@@ -507,8 +508,8 @@
         if (tunnel->ifindex > index) {
             if (!tunnel->active)
                 continue;
-            DEBUGMSG(("tunnel",
-                      "%s (index=%lu)\n", tunnel->ifname, tunnel->ifindex));
+            DEBUGMSG(("tunnel", "%s (index=%" NETSNMP_PRIo "u)\n",
+                      tunnel->ifname, tunnel->ifindex));
             return tunnel;
         }
     }
@@ -551,8 +552,8 @@
                               (*length) - tunnel_len - 3)) {
             if (!tunnel->active)
                 break;
-            DEBUGMSG(("tunnel",
-                      "%s (index=%lu)\n", tunnel->ifname, tunnel->ifindex));
+            DEBUGMSG(("tunnel", "%s (index=%" NETSNMP_PRIo "u)\n",
+                      tunnel->ifname, tunnel->ifindex));
             return tunnel;
         }
     }
@@ -595,8 +596,7 @@
     }
 
     if (last_tunnel) {
-        DEBUGMSG(("tunnel",
-                  "%s (index=%lu)\n",
+        DEBUGMSG(("tunnel", "%s (index=%" NETSNMP_PRIo "u)\n",
                   last_tunnel->ifname, last_tunnel->ifindex));
     } else {
         DEBUGMSG(("tunnel", "NONE\n"));
diff --git a/agent/mibgroup/ucd-snmp/disk.c b/agent/mibgroup/ucd-snmp/disk.c
index 4d3afa9..324fbc4 100644
--- a/agent/mibgroup/ucd-snmp/disk.c
+++ b/agent/mibgroup/ucd-snmp/disk.c
@@ -123,11 +123,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -136,9 +132,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -273,7 +266,7 @@
   if (numdisks == maxdisks) {
       if (maxdisks == 0) {
           maxdisks = 50;
-          disks = malloc(maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)malloc(maxdisks * sizeof(struct diskpart));
           if (!disks) {
               config_perror("malloc failed for new disk allocation.");
 	      netsnmp_config_error("\tignoring:  %s", cptr);
@@ -282,7 +275,7 @@
           memset(disks, 0, maxdisks * sizeof(struct diskpart));
       } else {
           maxdisks *= 2;
-          disks = realloc(disks, maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)realloc(disks, maxdisks * sizeof(struct diskpart));
           if (!disks) {
               config_perror("malloc failed for new disk allocation.");
 	      netsnmp_config_error("\tignoring:  %s", cptr);
@@ -333,7 +326,7 @@
   if (numdisks == maxdisks) {
       if (maxdisks == 0) {
           maxdisks = 50;
-          disks = malloc(maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)malloc(maxdisks * sizeof(struct diskpart));
           if (!disks) {
               config_perror("malloc failed for new disk allocation.");
 	      netsnmp_config_error("\tignoring:  %s", cptr);
@@ -342,7 +335,7 @@
           memset(disks, 0, maxdisks * sizeof(struct diskpart));
       } else {
           maxdisks *= 2;
-          disks = realloc(disks, maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)realloc(disks, maxdisks * sizeof(struct diskpart));
           if (!disks) {
               config_perror("malloc failed for new disk allocation.");
 	      netsnmp_config_error("\tignoring:  %s", cptr);
@@ -390,7 +383,7 @@
   if (numdisks == maxdisks) {
       if (maxdisks == 0) {
           maxdisks = 50;
-          disks = malloc(maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)malloc(maxdisks * sizeof(struct diskpart));
           if (!disks) {
 	      netsnmp_config_error("\tignoring:  %s", device);
               return;
@@ -398,7 +391,7 @@
           memset(disks, 0, maxdisks * sizeof(struct diskpart));
       } else {
           maxdisks *= 2;
-          disks = realloc(disks, maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)realloc(disks, maxdisks * sizeof(struct diskpart));
           if (!disks) {
               config_perror("malloc failed for new disk allocation.");
 	      netsnmp_config_error("\tignoring:  %s", device);
@@ -761,8 +754,7 @@
 #endif 
 #endif /* defined(HAVE_STRUCT_STATVFS_F_FILES) */
 
-#else
-#if HAVE_FSTAB_H
+#elif HAVE_FSTAB_H
     /*
      * read the disk information 
      */
@@ -796,13 +788,18 @@
     entry->dskTotal = (unsigned long long)(totalblks * multiplier);
     entry->dskAvail = (unsigned long long)(avail * multiplier);
     entry->dskUsed = (unsigned long long)(used * multiplier);
-#endif
+#else
+    /* MinGW */
+    entry->dskPercent = 0;
+    entry->dskTotal = 0;
+    entry->dskAvail = 0;
+    entry->dskUsed = 0;
 #endif
 
     entry->dskErrorFlag =
         (disks[disknum].minimumspace >= 0
-            ? entry->dskAvail < disks[disknum].minimumspace
-            : 100 - entry->dskPercent <= disks[disknum].minpercent) ? 1 : 0;
+            ? entry->dskAvail < (unsigned long long)disks[disknum].minimumspace
+            : 100 - entry->dskPercent <= (unsigned int)disks[disknum].minpercent) ? 1 : 0;
 
     return 0;
 }
@@ -908,11 +905,8 @@
         return ((u_char *) (&long_ret));
 
     case DISKPERCENTNODE:
-        if (entry.dskPercentInode >= 0) {
-            long_ret = entry.dskPercentInode;
-            return ((u_char *) (&long_ret));
-        } else
-            return NULL;
+        long_ret = entry.dskPercentInode;
+        return ((u_char *) (&long_ret));
 
     case ERRORFLAG:
         long_ret = entry.dskErrorFlag;
diff --git a/agent/mibgroup/ucd-snmp/disk_hw.c b/agent/mibgroup/ucd-snmp/disk_hw.c
new file mode 100644
index 0000000..93ecde3
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/disk_hw.c
@@ -0,0 +1,421 @@
+/*
+ * disk_hw.c
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+
+#include <stdio.h>
+
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <signal.h>
+#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
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+
+#include "struct.h"
+#include "disk.h"
+#include "util_funcs/header_simple_table.h"
+#if USING_UCD_SNMP_ERRORMIB_MODULE
+#include "errormib.h"
+#else
+#define setPerrorstatus(x) snmp_log_perror(x)
+#endif
+
+/*
+ *  * config file parsing routines
+ *   */
+static void       disk_free_config(void);
+static void       disk_parse_config(const char *, char *);
+static void       disk_parse_config_all(const char *, char *);
+
+static netsnmp_fsys_info ** _expand_disk_array( char *cptr );
+
+#define MAX_INT_32 0x7fffffff
+#define MAX_UINT_32 0xffffffff
+
+int             numdisks;
+int             allDisksIncluded = 0;
+int             maxdisks = 0;
+netsnmp_fsys_info **disks = NULL;
+
+struct variable2 extensible_disk_variables[] = {
+  {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {MIBINDEX}},
+  {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {ERRORNAME}},
+  {DISKDEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKDEVICE}},
+  {DISKMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKMINIMUM}},
+  {DISKMINPERCENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKMINPERCENT}},
+  {DISKTOTAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKTOTAL}},
+  {DISKAVAIL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKAVAIL}},
+  {DISKUSED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKUSED}},
+  {DISKPERCENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKPERCENT}},
+  {DISKPERCENTNODE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {DISKPERCENTNODE}},
+  {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {ERRORFLAG}},
+  {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+   var_extensible_disk, 1, {ERRORMSG}},
+   {DISKTOTALLOW, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKTOTALLOW}},
+   {DISKTOTALHIGH, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKTOTALHIGH}},
+   {DISKAVAILLOW, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKAVAILLOW}},
+   {DISKAVAILHIGH, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKAVAILHIGH}},
+   {DISKUSEDLOW, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKUSEDLOW}},
+   {DISKUSEDHIGH, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+    var_extensible_disk, 1, {DISKUSEDHIGH}},
+};
+
+/*
+ * Define the OID pointer to the top of the mib tree that we're
+ * registering underneath 
+ */
+oid             disk_variables_oid[] = { NETSNMP_UCDAVIS_MIB, NETSNMP_DISKMIBNUM, 1 };
+
+void
+init_disk_hw(void)
+{
+  /*
+   * register ourselves with the agent to handle our mib tree 
+   */
+  REGISTER_MIB("ucd-snmp/disk", extensible_disk_variables, variable2,
+	       disk_variables_oid);
+
+  snmpd_register_config_handler("disk", disk_parse_config,
+				disk_free_config,
+				"path [ minspace | minpercent% ]");
+  snmpd_register_config_handler("includeAllDisks", disk_parse_config_all,
+				disk_free_config,
+				"minpercent%");
+  allDisksIncluded = 0;
+}
+
+static void
+disk_free_config(void)
+{
+  netsnmp_fsys_info *entry;
+
+  for ( entry  = netsnmp_fsys_get_first();
+        entry != NULL;
+        entry  = netsnmp_fsys_get_next( entry )) {
+
+      entry->minspace   = -1;
+      entry->minpercent = -1;
+      entry->flags     &= ~NETSNMP_FS_FLAG_UCD;
+  }
+  if (disks) {
+     free( disks );
+     disks = NULL;
+     maxdisks = numdisks = 0;
+  }
+  allDisksIncluded = 0;
+}
+
+static void 
+disk_parse_config(const char *token, char *cptr)
+{
+  char            path[STRMAX];
+  int             minpercent;
+  int             minspace;
+  netsnmp_fsys_info *entry;
+
+  /*
+   * Ensure there is space for the new entry
+   */
+  if (numdisks == maxdisks) {
+      if (!_expand_disk_array( cptr )) 
+          return;
+  }
+
+  /*
+   * read disk path (eg, /1 or /usr) 
+   */
+  copy_nword(cptr, path, sizeof(path));
+  cptr = skip_not_white(cptr);
+  cptr = skip_white(cptr);
+	
+  /*
+   * read optional minimum disk usage spec 
+   */
+  if(cptr != NULL) {
+      if(strchr(cptr, '%') == NULL) {
+          minspace = atoi(cptr);
+          minpercent = -1;
+      }
+      else {
+          minspace = -1;
+          minpercent = atoi(cptr);
+      }
+  } else {
+      minspace = NETSNMP_DEFDISKMINIMUMSPACE;
+      minpercent = -1;
+  }
+
+  /*
+   * check if the disk already exists, if so then modify its
+   * parameters. if it does not exist then add it
+   */
+  entry = netsnmp_fsys_by_path( path, NETSNMP_FS_FIND_CREATE );
+  if ( entry ) {
+      entry->minspace   = minspace;
+      entry->minpercent = minpercent;
+      entry->flags     |= NETSNMP_FS_FLAG_UCD;
+      disks[numdisks++] = entry;
+  }
+}
+
+static void 
+disk_parse_config_all(const char *token, char *cptr)
+{
+  int             minpercent = DISKMINPERCENT;
+  netsnmp_fsys_info *entry;
+    
+  /*
+   * read the minimum disk usage percent
+   */
+  if(cptr != NULL) {
+      if(strchr(cptr, '%') != NULL) {
+          minpercent = atoi(cptr);
+      }
+  }
+  /*
+   * if we have already seen the "includeAllDisks" directive
+   * then search for the disk in the "disks" array and modify
+   * the values. if we havent seen the "includeAllDisks"
+   * directive then include this disk
+   */
+  if(allDisksIncluded) {
+      config_perror("includeAllDisks already specified.");
+      netsnmp_config_error("\tignoring: includeAllDisks %s", cptr);
+  }
+  else {
+
+      netsnmp_fsys_load( NULL, NULL );  /* Prime the fsys H/W module */
+      for ( entry  = netsnmp_fsys_get_first();
+            entry != NULL;
+            entry  = netsnmp_fsys_get_next( entry )) {
+
+          if ( !(entry->flags & NETSNMP_FS_FLAG_ACTIVE ))
+              continue;
+          entry->minspace   = -1;
+          entry->minpercent = minpercent;
+          entry->flags     |= NETSNMP_FS_FLAG_UCD;
+          /*
+           * Ensure there is space for the new entry
+           */
+          if (numdisks == maxdisks) {
+              if (!_expand_disk_array( entry->device )) 
+                  return;
+          }
+          disks[numdisks++] = entry;
+      }
+      allDisksIncluded = 1;
+  }
+}
+
+
+static int _percent( unsigned long long value, unsigned long long total ) {
+    float v=value, t=total, pct;
+
+    /* avoid division by zero */
+    if (total == 0)
+        return 0;
+
+    pct  = (v*100)/t;   /* Calculate percentage using floating point
+                           arithmetic, to avoid overflow errors */
+    pct += 0.5;         /* rounding */
+    return (int)pct;
+}
+
+static netsnmp_fsys_info **
+_expand_disk_array( char *cptr ) {
+
+    if ( maxdisks == 0 )
+        maxdisks  = 50;
+    else
+        maxdisks *= 2;
+
+    disks = realloc( disks, maxdisks * sizeof( netsnmp_fsys_info*));
+    if (!disks) {
+        config_perror("malloc failed for new disk allocation.");
+        netsnmp_config_error("\tignoring: %s", cptr);
+        return NULL;
+    }
+
+    if ( maxdisks == 50 )
+        memset(disks,              0,  maxdisks   * sizeof( netsnmp_fsys_info*));
+    else
+        memset(disks + maxdisks/2, 0,  maxdisks/2 * sizeof( netsnmp_fsys_info*));
+
+    return disks;
+}
+
+
+/*
+ * var_extensible_disk(...
+ * 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 
+ * exact   IN      - TRUE if an exact match was requested
+ * var_len OUT     - length of variable or 0 if function returned
+ * write_method
+ * 
+ */
+u_char         *
+var_extensible_disk(struct variable *vp,
+                    oid * name,
+                    size_t * length,
+                    int exact,
+                    size_t * var_len, WriteMethod ** write_method)
+{
+    int             disknum = 0;
+  netsnmp_fsys_info *entry;
+    unsigned long long val;
+    static long     long_ret;
+    static char     errmsg[300];
+
+    netsnmp_fsys_load( NULL, NULL );  /* Update the fsys H/W module */
+
+tryAgain:
+    if (header_simple_table
+        (vp, name, length, exact, var_len, write_method, numdisks))
+        return (NULL);
+    disknum = name[*length - 1] - 1;
+    entry = disks[disknum];
+    if ( !entry ) {
+        if (!exact || !(entry->flags & NETSNMP_FS_FLAG_UCD))
+            goto tryAgain;
+        return NULL;
+    }
+
+    switch (vp->magic) {
+    case MIBINDEX:
+        long_ret = disknum + 1;
+        return ((u_char *) (&long_ret));
+    case ERRORNAME:            /* DISKPATH */
+        *var_len = strlen(entry->path);
+        return ((u_char *)entry->path);
+    case DISKDEVICE:
+        *var_len = strlen(entry->device);
+        return ((u_char *)entry->device);
+    case DISKMINIMUM:
+        long_ret = entry->minspace;
+        return ((u_char *) (&long_ret));
+    case DISKMINPERCENT:
+        long_ret = entry->minpercent;
+        return ((u_char *) (&long_ret));
+
+    case DISKTOTAL:
+        val = netsnmp_fsys_size_ull(entry);
+        if (val > MAX_INT_32)
+            long_ret = MAX_INT_32;
+        else
+            long_ret = (long)val;
+        return ((u_char *) (&long_ret));
+    case DISKTOTALLOW:
+        long_ret = netsnmp_fsys_size_ull(entry) & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKTOTALHIGH:
+        long_ret = netsnmp_fsys_size_ull(entry) >> 32;
+        return ((u_char *) (&long_ret));
+        
+    case DISKAVAIL:
+        val = netsnmp_fsys_avail_ull(entry);
+        if (val > MAX_INT_32)
+            long_ret = MAX_INT_32;
+        else
+            long_ret = (long)val;
+        return ((u_char *) (&long_ret));
+    case DISKAVAILLOW:
+        long_ret = netsnmp_fsys_avail_ull(entry) & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKAVAILHIGH:
+        long_ret = netsnmp_fsys_avail_ull(entry) >> 32;
+        return ((u_char *) (&long_ret));
+
+    case DISKUSED:
+        val = netsnmp_fsys_used_ull(entry);
+        if (val > MAX_INT_32)
+            long_ret = MAX_INT_32;
+        else
+            long_ret = (long)val;
+        return ((u_char *) (&long_ret));
+    case DISKUSEDLOW:
+        long_ret = netsnmp_fsys_used_ull(entry) & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKUSEDHIGH:
+        long_ret = netsnmp_fsys_used_ull(entry) >> 32;
+        return ((u_char *) (&long_ret));
+
+    case DISKPERCENT:
+        long_ret = _percent( entry->used, entry->size );
+        return ((u_char *) (&long_ret));
+
+    case DISKPERCENTNODE:
+        long_ret = _percent( entry->inums_total - entry->inums_avail, entry->inums_total );
+        return ((u_char *) (&long_ret));
+
+    case ERRORFLAG:
+        long_ret = 0;
+        val = netsnmp_fsys_avail_ull(entry);
+        if (( entry->minspace >= 0 ) &&
+            ( val < entry->minspace ))
+            long_ret = 1;
+        else if (( entry->minpercent >= 0 ) &&
+                 (_percent( entry->avail, entry->size ) < entry->minpercent ))
+            long_ret = 1;
+        return ((u_char *) (&long_ret));
+
+    case ERRORMSG:
+        errmsg[0] = 0;
+        val = netsnmp_fsys_avail_ull(entry);
+        if (( entry->minspace >= 0 ) &&
+            ( val < entry->minspace ))
+                snprintf(errmsg, sizeof(errmsg),
+                        "%s: less than %d free (= %d)",
+                        entry->path, entry->minspace,
+                        (int) val);
+        else if (( entry->minpercent >= 0 ) &&
+                 (_percent( entry->avail, entry->size ) < entry->minpercent ))
+                snprintf(errmsg, sizeof(errmsg),
+                        "%s: less than %d%% free (= %d%%)",
+                        entry->path, entry->minpercent,
+                        _percent( entry->avail, entry->size ));
+        errmsg[ sizeof(errmsg)-1 ] = 0;
+        *var_len = strlen(errmsg);
+        return ((u_char *) (errmsg));
+    }
+    return NULL;
+}
diff --git a/agent/mibgroup/ucd-snmp/disk_hw.h b/agent/mibgroup/ucd-snmp/disk_hw.h
new file mode 100644
index 0000000..147b98f
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/disk_hw.h
@@ -0,0 +1,31 @@
+/*
+ *  Template MIB group interface - disk.h
+ *
+ */
+#ifndef _MIBGROUP_DISK_HW_H
+#define _MIBGROUP_DISK_HW_H
+
+void            init_disk_hw(void);
+
+config_require(util_funcs/header_simple_table)
+
+     extern FindVarMethod var_extensible_disk;
+
+#include "mibdefs.h"
+
+#define DISKDEVICE 3
+#define DISKMINIMUM 4
+#define DISKMINPERCENT 5
+#define DISKTOTAL 6
+#define DISKAVAIL 7
+#define DISKUSED 8
+#define DISKPERCENT 9
+#define DISKPERCENTNODE 10
+#define DISKTOTALLOW 11
+#define DISKTOTALHIGH 12
+#define DISKAVAILLOW 13
+#define DISKAVAILHIGH 14
+#define DISKUSEDLOW 15
+#define DISKUSEDHIGH 16
+
+#endif                          /* _MIBGROUP_DISK_HW_H */
diff --git a/agent/mibgroup/ucd-snmp/diskio.c b/agent/mibgroup/ucd-snmp/diskio.c
index f29388e..a819aa6 100644
--- a/agent/mibgroup/ucd-snmp/diskio.c
+++ b/agent/mibgroup/ucd-snmp/diskio.c
@@ -29,6 +29,7 @@
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/agent_callbacks.h>
 
 #include "util_funcs/header_simple_table.h"
 
@@ -51,10 +52,13 @@
 static int      cache_disknr = -1;
 #endif                          /* solaris2 */
 
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 /*
  * handle disk statistics via libperfstat
  */
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 static perfstat_disk_t *ps_disk;	/* storage for all disk values */
 static int ps_numdisks;			/* number of disks in system, may change while running */
@@ -108,7 +112,9 @@
 static mach_port_t masterPort;		/* to communicate with I/O Kit	*/
 #endif                          /* darwin */
 
-void            diskio_parse_config(const char *, char *);
+#ifndef solaris2
+static int      getstats(void);
+#endif
 
 #if defined (HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS)
 void		devla_getstats(unsigned int regno, void *dummy);
@@ -116,6 +122,10 @@
 
 FILE           *file;
 
+#ifdef linux
+static int	diskio_free_config(int, int, void *, void *);
+#endif
+
          /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -211,7 +221,7 @@
     IOMasterPort(bootstrap_port, &masterPort);
 #endif
 
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     /*
      * initialize values to gather information on first request
      */
@@ -225,8 +235,48 @@
     snmp_alarm_register(DISKIO_SAMPLE_INTERVAL, SA_REPEAT, devla_getstats, NULL);
 #endif
 
+
+#ifdef linux
+    char *app = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                      NETSNMP_DS_LIB_APPTYPE);
+    netsnmp_ds_register_config(ASN_BOOLEAN, app, "diskio_exclude_fd",
+                               NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_FD);
+    netsnmp_ds_register_config(ASN_BOOLEAN, app, "diskio_exclude_loop",
+                               NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_LOOP);
+    netsnmp_ds_register_config(ASN_BOOLEAN, app, "diskio_exclude_ram",
+                               NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_RAM);
+
+        /* or possible an exclusion pattern? */
+
+    snmp_register_callback(SNMP_CALLBACK_APPLICATION,
+	                   SNMPD_CALLBACK_PRE_UPDATE_CONFIG,
+	                   diskio_free_config, NULL);
+
+#endif
 }
 
+#ifdef linux
+/* to do: make sure diskio_free_config() gets invoked upon SIGHUP. */
+static int
+diskio_free_config(int major, int minor, void *serverarg, void *clientarg)
+{
+    DEBUGMSGTL(("diskio", "free config %d\n",
+		netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+				       NETSNMP_DS_AGENT_DISKIO_NO_RAM)));
+    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+			   NETSNMP_DS_AGENT_DISKIO_NO_FD,   0);
+    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+			   NETSNMP_DS_AGENT_DISKIO_NO_LOOP, 0);
+    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+			   NETSNMP_DS_AGENT_DISKIO_NO_RAM,  0);
+    return 0;
+}
+#endif
+
+
 #ifdef solaris2
 int
 get_disk(int disknr)
@@ -1049,7 +1099,25 @@
     }
 }
 
-int getstats(void)
+int is_excluded(const char *name)
+{
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_FD)
+                           && !(strncmp(name, "fd", 2)))
+        return 1;
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_LOOP)
+                           && !(strncmp(name, "loop", 4)))
+        return 1;
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_AGENT_DISKIO_NO_RAM)
+                           && !(strncmp(name, "ram", 3)))
+        return 1;
+    return 0;
+}
+
+static int
+getstats(void)
 {
     FILE* parts;
     time_t now;
@@ -1088,7 +1156,8 @@
 		    &pTemp->major, &pTemp->minor, pTemp->name,
 		    &pTemp->rio, &pTemp->rsect,
 		    &pTemp->wio, &pTemp->wsect);
-	    head.length++;
+            if (!is_excluded(pTemp->name))
+	        head.length++;
 	}
     }
     else {
@@ -1126,7 +1195,8 @@
                fclose(parts);
                return 1;
             }
-	    head.length++;
+            if (!is_excluded(pTemp->name))
+	        head.length++;
 	}
     }
 
@@ -1464,7 +1534,7 @@
 #endif                          /* darwin */
 
 
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 /*
  * collect statistics for all disks
  */
diff --git a/agent/mibgroup/ucd-snmp/dlmod.c b/agent/mibgroup/ucd-snmp/dlmod.c
index 0a85213..57bf87e 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.c
+++ b/agent/mibgroup/ucd-snmp/dlmod.c
@@ -19,10 +19,6 @@
 #endif
 #include <ctype.h>
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -37,7 +33,7 @@
 #include "dlmod.h"
 
 static struct dlmod *dlmods;
-static int      dlmod_next_index = 1;
+static unsigned int dlmod_next_index = 1;
 static char     dlmod_path[1024];
 
 static void     dlmod_parse_config(const char *, char *);
@@ -439,7 +435,7 @@
 
     if (header_dlmod(vp, name, length, exact,
                      var_len, write_method) == MATCH_FAILED)
-        return 0;
+        return NULL;
 
     /*
      * this is where we do the value assignments for the mib results. 
@@ -452,7 +448,7 @@
         DEBUGMSGTL(("dlmod", "unknown sub-id %d in var_dlmod\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }
 
 
@@ -478,8 +474,8 @@
 #define DLMODENTRY_NAME_LENGTH 12
     oid             newname[MAX_OID_LEN];
     int             result;
-    struct dlmod   *dlm = 0;
-    int             dlmod_index;
+    struct dlmod   *dlm = NULL;
+    unsigned int    dlmod_index;
 
     memcpy(newname, vp->name, vp->namelen * sizeof(oid));
     *write_method = 0;
@@ -529,7 +525,7 @@
 
     dlm = header_dlmodEntry(vp, name, length, exact, var_len, write_method);
     if (dlm == NULL)
-        return 0;
+        return NULL;
 
     /*
      * this is where we do the value assignments for the mib results. 
@@ -554,7 +550,7 @@
         DEBUGMSGTL(("dlmod", "unknown sub-id %d in var_dlmodEntry\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }
 
 int
diff --git a/agent/mibgroup/ucd-snmp/errormib.c b/agent/mibgroup/ucd-snmp/errormib.c
index 0fafb54..7f3bcb1 100644
--- a/agent/mibgroup/ucd-snmp/errormib.c
+++ b/agent/mibgroup/ucd-snmp/errormib.c
@@ -11,11 +11,7 @@
 #endif
 #include <signal.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -112,9 +108,6 @@
 #if HAVE_STRING_H
 #include <string.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
diff --git a/agent/mibgroup/ucd-snmp/extensible.c b/agent/mibgroup/ucd-snmp/extensible.c
index db17a9a..37a5eeb 100644
--- a/agent/mibgroup/ucd-snmp/extensible.c
+++ b/agent/mibgroup/ucd-snmp/extensible.c
@@ -10,11 +10,7 @@
 #include <fcntl.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -100,20 +96,16 @@
 #include <string.h>
 #endif
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#ifndef HAVE_STRNCASECMP
-int             strncasecmp(const char *s1, const char *s2, size_t n);
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 #include <net-snmp/agent/agent_callbacks.h>
+#include <net-snmp/library/system.h>
 
 #include "struct.h"
 #include "extensible.h"
+#include "mibgroup/util_funcs.h"
 #include "utilities/execute.h"
 #include "util_funcs/header_simple_table.h"
 
diff --git a/agent/mibgroup/ucd-snmp/extensible.h b/agent/mibgroup/ucd-snmp/extensible.h
index 9283692..24bd16d 100644
--- a/agent/mibgroup/ucd-snmp/extensible.h
+++ b/agent/mibgroup/ucd-snmp/extensible.h
@@ -8,6 +8,7 @@
 void            init_extensible(void);
 
 config_require(util_funcs/header_simple_table)
+config_require(util_funcs)
 config_require(utilities/execute)
 
      extern FindVarMethod var_extensible_shell;
diff --git a/agent/mibgroup/ucd-snmp/file.c b/agent/mibgroup/ucd-snmp/file.c
index a8dd154..9e345d8 100644
--- a/agent/mibgroup/ucd-snmp/file.c
+++ b/agent/mibgroup/ucd-snmp/file.c
@@ -12,11 +12,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -25,9 +21,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #endif
diff --git a/agent/mibgroup/ucd-snmp/lmSensors.c b/agent/mibgroup/ucd-snmp/lmSensors.c
index 519c80e..605ee16 100644
--- a/agent/mibgroup/ucd-snmp/lmSensors.c
+++ b/agent/mibgroup/ucd-snmp/lmSensors.c
@@ -84,9 +84,10 @@
     #include <kstat.h>
     #ifdef HAVE_PICL_H 
         #include <picl.h> /* accesses the picld daemon */
+    #else 
+        /* the following should be sufficient for any Sun-based sensors */
+	#include </usr/platform/sun4u/include/sys/envctrl.h>
     #endif 
-/* the following should be sufficient for any Sun-based sensors */
-    #include </usr/platform/sun4u/include/sys/envctrl.h>
 #else
     #include <sensors/sensors.h>
     #define CONFIG_FILE_NAME "/etc/sensors.conf"
@@ -247,7 +248,7 @@
                    size_t * var_len, WriteMethod ** write_method)
 {
     static long     long_ret;
-    static unsigned char string[SPRINT_MAX_LEN];
+    static char     string[SPRINT_MAX_LEN];
 
     int             s_index;
     int             s_type = -1;
@@ -379,9 +380,9 @@
     }
 
     _sensor_load(t); /* I'll let the linux people decide whether they want to load right away */
+leaving:
 #endif /* not solaris2 */
 
-leaving:
     DEBUGMSG(("ucd-snmp/lmSensors", "<= sensor_init\n"));
     return res;
 }
@@ -415,7 +416,7 @@
    the scale variable handles miniVolts */
 
 static int
-read_num_sensor(picl_nodehdl_t childh, char *prop ,int scale, int *value)
+read_num_sensor(picl_nodehdl_t childh, const char *prop, int scale, int *value)
  {
   picl_nodehdl_t  sensorh;
   picl_propinfo_t sensor_info;
@@ -481,7 +482,7 @@
 } /* end of read_num_sensor() */
 
 static int
-read_enum_sensor(picl_nodehdl_t childh, char **options, u_int *value)
+read_enum_sensor(picl_nodehdl_t childh, const char **options, u_int *value)
 {
   picl_nodehdl_t  sensorh;
   picl_propinfo_t sensor_info;
@@ -526,10 +527,10 @@
 
 /* scale variable handles miniVolts*/
  
-static int
+static void
 process_num_sensor(picl_nodehdl_t childh, 
-                  char propname[PICL_PROPNAMELEN_MAX], 
-                  char propval[PICL_PROPNAMELEN_MAX], int typ, int scale)
+                  const char propname[PICL_PROPNAMELEN_MAX], 
+                  const char propval[PICL_PROPNAMELEN_MAX], int typ, int scale)
 {
   int value = 0;
   picl_errno_t error_code;
@@ -553,10 +554,10 @@
   }
 } /* end process_num_sensor() */
 
-static int
+static void
 process_enum_sensor(picl_nodehdl_t childh, 
-                  char propname[PICL_PROPNAMELEN_MAX], 
-                  int typ, char **options)
+                  const char propname[PICL_PROPNAMELEN_MAX], 
+                  int typ, const char **options)
 {
   int value = 0;
   picl_errno_t error_code;
@@ -583,69 +584,69 @@
 /* The following are modules for dealing with individual sensors types.
    They call the generic modules above.  */
 
-static int
+static void
 process_individual_fan(picl_nodehdl_t childh, 
-                     char propname[PICL_PROPNAMELEN_MAX])
+                     const char propname[PICL_PROPNAMELEN_MAX])
 {
   process_num_sensor(childh, propname, "AtoDSensorValue", FAN_TYPE, 1);
 }
 
 
-static int
+static void
 process_newtype_fan(picl_nodehdl_t childh,
-                     char propname[PICL_PROPNAMELEN_MAX])
+                     const char propname[PICL_PROPNAMELEN_MAX])
 {
   process_num_sensor(childh, propname, "Speed", FAN_TYPE, 1);
 }
 
 
-static int
+static void
 process_temperature_sensor(picl_nodehdl_t childh,
-                               char propname[PICL_PROPNAMELEN_MAX])
+                               const char propname[PICL_PROPNAMELEN_MAX])
 {
   process_num_sensor(childh, propname, "Temperature", TEMP_TYPE, 1000);
 } /* MIB asks for mC */
 
-static int
+static void
 process_voltage_sensor(picl_nodehdl_t childh,
-                      char propname[PICL_PROPNAMELEN_MAX])
+                      const char propname[PICL_PROPNAMELEN_MAX])
 {
   process_num_sensor(childh, propname, "Voltage", VOLT_TYPE, 1000);
 } /* MIB asks for mV */
 
-static int
+static void
 process_digital_sensor(picl_nodehdl_t childh,
-                      char propname[PICL_PROPNAMELEN_MAX])
+                      const char propname[PICL_PROPNAMELEN_MAX])
 {
   process_num_sensor(childh, propname, "AtoDSensorValue", VOLT_TYPE, 1);
 }
 
 
-static int
+static void
 process_switch(picl_nodehdl_t childh,
-                   char propname[PICL_PROPNAMELEN_MAX])
+                   const char propname[PICL_PROPNAMELEN_MAX])
 {
 
-  char *settings[]={"OFF","ON","NORMAL","LOCKED","UNKNOWN",
+  const char *settings[]={"OFF","ON","NORMAL","LOCKED","UNKNOWN",
                    "DIAG","SECURE",NULL};
 
   process_enum_sensor(childh, propname, MISC_TYPE, settings);
 }
 
-static int
+static void
 process_led(picl_nodehdl_t childh,
-                   char propname[PICL_PROPNAMELEN_MAX])
+                   const char propname[PICL_PROPNAMELEN_MAX])
 {
 
-  char *settings[]={"OFF","ON","BLINK",NULL};
+  const char *settings[]={"OFF","ON","BLINK",NULL};
   process_enum_sensor(childh, propname, MISC_TYPE, settings);
 }
 
-static int
+static void
 process_i2c(picl_nodehdl_t childh,
-                   char propname[PICL_PROPNAMELEN_MAX])
+                   const char propname[PICL_PROPNAMELEN_MAX])
 {
-  char *settings[]={"OK",NULL};
+  const char *settings[]={"OK",NULL};
   process_enum_sensor(childh, propname, MISC_TYPE, settings);
 }
 
@@ -752,6 +753,12 @@
 {
 #ifdef solaris2
     int i,j;
+#ifdef HAVE_PICL_H 
+    int er_code;
+    picl_errno_t     error_code;
+    int level=0;
+    picl_nodehdl_t  rooth;
+#else
     int typ;
     int temp=0; /* do not reset this later, more than one typ has temperatures*/
     int other=0;
@@ -761,6 +768,7 @@
     envctrl_fan_t *fan_info;
     envctrl_ps_t *power_info;
     envctrl_encl_t *enc_info;
+#endif
 
 /* DEBUGMSG(("ucd-snmp/lmSensors", "Reading the sensors\n")); */
 
@@ -776,13 +784,6 @@
 /* try picld (if supported), if that doesn't work, try kstat */
 #ifdef HAVE_PICL_H 
 
-/* some more declarations */
-
-    int er_code;
-    picl_errno_t     error_code;
-    int level=0;
-    picl_nodehdl_t  rooth;
-
 er_code = picl_initialize();
 
 if (er_code == PICL_SUCCESS) {
@@ -809,7 +810,7 @@
 
 } /*end else picl_initialize */
 
-#endif  /* end of picld section */
+#else  /* end of picld section */
 /* initialize kstat */
 
 kc = kstat_open();
@@ -923,7 +924,7 @@
                    temp++;
                    break;
                default:
-                   DEBUGMSG(("ucd-snmp/lmSensors", "unknown element instance &d type &d value %d\n",
+                   DEBUGMSG(("ucd-snmp/lmSensors", "unknown element instance %d type %d value %d\n",
                        enc_info->instance, enc_info->type, enc_info->value));
                    break;
                } /* end switch */
@@ -937,14 +938,17 @@
     kstat_close(kc);
 
 } /* end else kstat */
+#endif
+
 #else /* end solaris2 only ie. ifdef everything else */
 
     const sensors_chip_name *chip;
     const sensors_feature_data *data;
     int             chip_nr = 0;
-    int             rc = 0;
     unsigned int    i = 0;
 
+    DEBUGMSG(("ucd-snmp/lmSensors", "=> sensor_load\n"));
+
     for (i = 0; i < N_TYPES; i++)
     {
         sensor_array[i].n = 0;
@@ -956,7 +960,7 @@
         {
            /* Continuing would be unsafe */
            snmp_log(LOG_ERR, "Cannot malloc sensor array!"); 
-           return (rc = 1);
+           return 1;
         } /* end if */
         sensor_array[i].current_len = DEFAULT_SENSORS;
     } /* end for */
@@ -974,7 +978,7 @@
                 !sensors_get_label(*chip, data->number, &label) &&
                 !sensors_get_feature(*chip, data->number, &val)) {
                 int             type = -1;
-                float           mul;
+                float           mul = 0;
                 _sensor_array  *array;
 
                 /* The label, as determined for a given chip in sensors.conf,
@@ -1016,14 +1020,14 @@
                            free(label);
                            label = NULL;
                        } /* end if label */
-                       return (rc=1);
+                       return 1;
                     } /* end if array->sensor */
                     array->current_len = new_size / sizeof(_sensor);
-                    DEBUGMSG(("ucd-snmp/lmSensors", "type #%d increased to %d elements\n", type, array->current_len));
+                    DEBUGMSG(("ucd-snmp/lmSensors", "type #%d increased to %d elements\n", type, (int)array->current_len));
                 } /* end if array->current */
                 strlcpy(array->sensor[array->n].name, label, MAX_NAME);
                 array->sensor[array->n].value = (int) (val * mul);
-                DEBUGMSGTL(("sensors","sensor %d, value %d\n",
+                DEBUGMSGTL(("sensors","sensor %s, value %d\n",
                             array->sensor[array->n].name,
                             array->sensor[array->n].value));
                 array->n++;
@@ -1034,10 +1038,11 @@
 	    } /* end if label */
         } /* end while data */
     } /* end while chip */
-    return rc;
+    DEBUGMSG(("ucd-snmp/lmSensors", "<= sensor_load\n"));
 #endif  /* end else ie. ifdef everything else */
     /* Update the timestamp after a load. */
     timestamp = t;
+    return 0;
 }
 
 #ifndef solaris2
diff --git a/agent/mibgroup/ucd-snmp/lmsensorsMib.c b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
index 8dea74e..5a50697 100644
--- a/agent/mibgroup/ucd-snmp/lmsensorsMib.c
+++ b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
@@ -2,6 +2,7 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/sensors.h>
+#include "hardware/sensors/hw_sensors.h"
 #include "ucd-snmp/lmsensorsMib.h"
 
 netsnmp_container *sensorContainer = NULL;
diff --git a/agent/mibgroup/ucd-snmp/loadave.c b/agent/mibgroup/ucd-snmp/loadave.c
index 2548ed8..6efc5e9 100644
--- a/agent/mibgroup/ucd-snmp/loadave.c
+++ b/agent/mibgroup/ucd-snmp/loadave.c
@@ -99,11 +99,7 @@
 #include <string.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -112,16 +108,16 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef dynix
 #include <sys/mc_vmparam.h>
 #endif
 #if defined(hpux10) || defined(hpux11)
 #include <sys/pstat.h>
 #endif
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #endif
 #if HAVE_SYS_SYSGET_H
@@ -137,7 +133,19 @@
 #include "util_funcs/header_simple_table.h"
 #include "kernel.h"
 
-double          maxload[3];
+static double maxload[3];
+static int laConfigSet = 0;
+
+static int
+loadave_store_config(int a, int b, void *c, void *d)
+{
+    char line[SNMP_MAXBUF_SMALL];
+    if (laConfigSet > 0) {
+        snprintf(line, SNMP_MAXBUF_SMALL, "pload %.02f %.02f %.02f", maxload[0], maxload[1], maxload[2]);
+        snmpd_store_config(line);
+    }
+    return SNMPERR_SUCCESS;
+}
 
 void
 init_loadave(void)
@@ -154,7 +162,7 @@
          var_extensible_loadave, 1, {ERRORNAME}},
         {LOADAVE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
          var_extensible_loadave, 1, {LOADAVE}},
-        {LOADMAXVAL, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+        {LOADMAXVAL, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
          var_extensible_loadave, 1, {LOADMAXVAL}},
         {LOADAVEINT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
          var_extensible_loadave, 1, {LOADAVEINT}},
@@ -181,9 +189,22 @@
     REGISTER_MIB("ucd-snmp/loadave", extensible_loadave_variables,
                  variable2, loadave_variables_oid);
 
+    laConfigSet = 0;
+
     snmpd_register_config_handler("load", loadave_parse_config,
                                   loadave_free_config,
                                   "max1 [max5] [max15]");
+
+    snmpd_register_config_handler("pload",
+                                  loadave_parse_config, NULL, NULL);
+
+
+    /*
+     * we need to be called back later
+     */
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                                       loadave_store_config, NULL);
+
 }
 
 void
@@ -191,6 +212,25 @@
 {
     int             i;
 
+    if (strcmp(token, "pload") == 0) {
+        if (laConfigSet < 0) {
+            snmp_log(LOG_WARNING,
+                     "ignoring attempted override of read-only load\n");
+            return;
+        } else {
+            laConfigSet++;
+        }
+    } else {
+        if (laConfigSet > 0) {
+            snmp_log(LOG_WARNING,
+                     "ignoring attempted override of read-only load\n");
+            /*
+             * Fall through and copy in this value.
+             */
+        }
+        laConfigSet = -1;
+    }
+
     for (i = 0; i <= 2; i++) {
         if (cptr != NULL)
             maxload[i] = atof(cptr);
@@ -237,7 +277,7 @@
 #define FIX_TO_DBL(_IN) (((double) _IN)/((double) FSCALE))
 #endif
 #endif
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     int             favenrun[3];
     perfstat_cpu_total_t cs;
 #endif
@@ -257,7 +297,7 @@
     {
         FILE           *in = fopen("/proc/loadavg", "r");
         if (!in) {
-            snmp_log(LOG_ERR, "snmpd: cannot open /proc/loadavg\n");
+            NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc/loadavg\n"));
             return (-1);
         }
         fscanf(in, "%lf %lf %lf", pave, (pave + 1), (pave + 2));
@@ -275,7 +315,7 @@
     r_ave[0] = pst_buf.psd_avg_1_min;
     r_ave[1] = pst_buf.psd_avg_5_min;
     r_ave[2] = pst_buf.psd_avg_15_min;
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     if(perfstat_cpu_total((perfstat_id_t *)NULL, &cs, sizeof(perfstat_cpu_total_t), 1) > 0) {
         r_ave[0] = cs.loadavg[0] / 65536.0;
         r_ave[1] = cs.loadavg[1] / 65536.0;
@@ -316,6 +356,70 @@
     return 0;
 }
 
+static int
+write_laConfig(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 double laConfig = 0;
+
+    switch (action) {
+    case RESERVE1: /* Check values for acceptability */
+        if (var_val_type != ASN_OCTET_STR) {
+            DEBUGMSGTL(("ucd-snmp/loadave",
+                        "write to laConfig not ASN_OCTET_STR\n"));
+            return SNMP_ERR_WRONGTYPE;
+        }
+        if (var_val_len > 8 || var_val_len <= 0) {
+            DEBUGMSGTL(("ucd-snmp/loadave",
+                        "write to laConfig: bad length\n"));
+            return SNMP_ERR_WRONGLENGTH;
+        }
+
+        if (laConfigSet < 0) {
+            /*
+             * The object is set in a read-only configuration file.
+             */
+            return SNMP_ERR_NOTWRITABLE;
+        }
+        break;
+
+    case RESERVE2: /* Allocate memory and similar resources */
+        {
+            char buf[8];
+            int old_errno = errno;
+            double val;
+            char *endp;
+
+            sprintf(buf, "%.*s", (int) var_val_len, (char *)var_val);
+            val = strtod(buf, &endp);
+
+            if (errno == ERANGE || *endp != '\0' || val < 0 || val > 65536.00) {
+                errno = old_errno;
+                DEBUGMSGTL(("ucd-snmp/loadave",
+                            "write to laConfig: invalid value\n"));
+                return SNMP_ERR_WRONGVALUE;
+            }
+
+            errno = old_errno;
+
+            laConfig = val;
+        }
+        break;
+
+    case COMMIT:
+        {
+            int idx = name[name_len - 1] - 1;
+            maxload[idx] = laConfig;
+            laConfigSet = 1;
+        }
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
 u_char         *
 var_extensible_loadave(struct variable * vp,
                        oid * name,
@@ -335,6 +439,10 @@
     case MIBINDEX:
         long_ret = name[*length - 1];
         return ((u_char *) (&long_ret));
+    case LOADMAXVAL:
+        /* setup write method, but don't return yet */
+        *write_method = write_laConfig;
+        break;
     case ERRORNAME:
         sprintf(errmsg, "Load-%d", ((name[*length - 1] == 1) ? 1 :
                                     ((name[*length - 1] == 2) ? 5 : 15)));
diff --git a/agent/mibgroup/ucd-snmp/logmatch.c b/agent/mibgroup/ucd-snmp/logmatch.c
index 8d01732..83b4e4a 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.c
+++ b/agent/mibgroup/ucd-snmp/logmatch.c
@@ -9,248 +9,104 @@
  */
 #include <net-snmp/net-snmp-config.h>
 
+#include "logmatch.h"
+
 #ifdef HAVE_REGEX_H
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
-
-
-#if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
+#include <regex.h>
+#include <time.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "struct.h"
-#include "logmatch.h"
 #include "util_funcs/header_generic.h"
 #include "util_funcs/header_simple_table.h"
 
+/*
+ * ------------------------------------------------
+ *  This function checks if the filename pattern
+ *  contains the % character indicating a variable
+ *  filename (i.e. it uses date/time format control
+ *  codes, see 'man date') then expands those control
+ *  codes based on current time and sets the
+ *  filename field in the struct.
+ *  Returns 1 if the filename changed, 0 otherwise
+ *  -------------------------------------------------
+ */
+
+static int
+logmatch_update_filename(const char * pattern, char * currentFilename)
+{
+    time_t t;
+    struct tm *tmp;
+    char newFilename[256];
+
+    /*
+     * -------------------------------------------------------------------
+     * if the filename pattern doesn't have the "%" character just return,
+     * since there is no need for further processing
+     * -------------------------------------------------------------------
+     */
+    if (strchr(pattern, '%') == NULL) {
+        return 0;
+    }
+
+    t = time(NULL);
+    tmp = localtime(&t);
+
+    if (tmp == NULL) {
+        perror("localtime");
+        return 0;
+    }
+
+    /* result of expansion must fit into newFilename, otherwise returning */
+    if (strftime(newFilename, sizeof(newFilename), pattern, tmp) == 0) {
+        return 0;
+    }
+
+    /* if same as current filename, just return */
+    if (strcmp(currentFilename, newFilename) == 0) {
+        return 0;
+    } else {
+        /* otherwise update currentFilename and return 1 */
+        strcpy(currentFilename, newFilename);
+        return 1;
+    }
+}
+
+struct logmatchstat {
+    char            filenamePattern[256];
+    char            filename[256];
+    char            regEx[256];
+    char            name[256];
+    FILE           *logfile;
+    long            currentFilePosition;
+    unsigned long   globalMatchCounter;
+    unsigned long   currentMatchCounter;
+    unsigned long   matchCounter;
+    regex_t         regexBuffer;
+    int             myRegexError;
+    int             virgin;
+    int             thisIndex;
+    int             frequency;
+};
+
 #define MAXLOGMATCH   250
 
-struct logmatchstat logmatchTable[MAXLOGMATCH];
-int             logmatchCount;
-
-void
-init_logmatch(void)
-{
-    struct variable2 logmatch_info[] = {
-        {LOGMATCH_INFO, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 0}
-    };
-
-    struct variable2 logmatch_table[] = {
-        {LOGMATCH_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {1}},
-        {LOGMATCH_NAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {2}},
-        {LOGMATCH_FILENAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {3}},
-        {LOGMATCH_REGEX, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {4}},
-        {LOGMATCH_GLOBALCTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {5}},
-        {LOGMATCH_GLOBALCNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {6}},
-        {LOGMATCH_CURRENTCTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {7}},
-        {LOGMATCH_CURRENTCNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {8}},
-        {LOGMATCH_COUNTER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {9}},
-        {LOGMATCH_COUNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {10}},
-        {LOGMATCH_FREQ, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {11}},
-        {LOGMATCH_ERROR, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {100}},
-        {LOGMATCH_MSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
-         var_logmatch_table, 1, {101}}
-    };
-
-    /*
-     * Define the OID pointer to the top of the mib tree that we're
-     * registering underneath 
-     */
-    oid             logmatch_info_oid[] = { NETSNMP_UCDAVIS_MIB, 16, 1 };
-    oid             logmatch_variables_oid[] = { NETSNMP_UCDAVIS_MIB, 16, 2, 1 };
-
-    /*
-     * register ourselves with the agent to handle our mib tree 
-     */
-    REGISTER_MIB("ucd-snmp/logmatch", logmatch_info, variable2,
-                 logmatch_info_oid);
-    REGISTER_MIB("ucd-snmp/logmatch", logmatch_table, variable2,
-                 logmatch_variables_oid);
-
-    snmpd_register_config_handler("logmatch", logmatch_parse_config,
-                                  logmatch_free_config,
-                                  "logmatch name path cycletime regex");
-
-}
+static struct logmatchstat logmatchTable[MAXLOGMATCH];
+static int                 logmatchCount = 0;
 
 /***************************************************************
 *                                                              *
-* !!!---!!! PUBLIC !!! --- !!!                                 *
-*                                                              *
-* logmatch_free_config                                         *
-* free memory allocated by this mib module                     *
-*                                                              *
-***************************************************************/
-
-void
-logmatch_free_config(void)
-{
-    int             i;
-
-    /*
-     * ------------------------------------ 
-     * the only memory we have allocated    
-     * is the memory allocated by regcomp   
-     * ------------------------------------ 
-     */
-
-    for (i = 0; i < logmatchCount; i++) {
-
-        regfree(&(logmatchTable[i].regexBuffer));
-    }
-    logmatchCount = 0;
-}
-
-/***************************************************************
-*                                                              *
-* !!!---!!! PUBLIC !!! --- !!!                                 *
-*                                                              *
-* logmatch_parse_config                                        *
-* parse one line from snmpd.conf                               *
-*                                                              *
-***************************************************************/
-
-void
-logmatch_parse_config(const char *token, char *cptr)
-{
-
-    char space_name;
-    char space_path;
-
-    if (logmatchCount < MAXLOGMATCH) {
-        logmatchTable[logmatchCount].frequency = 30;
-        logmatchTable[logmatchCount].thisIndex = logmatchCount;
-
-
-        /*
-         * ------------------------------------ 
-         * be careful this counter needs to be  
-         * reset from persistent storage         
-         * ------------------------------------ 
-         */
-
-        logmatchTable[logmatchCount].globalMatchCounter = 0;
-        logmatchTable[logmatchCount].currentMatchCounter = 0;
-        logmatchTable[logmatchCount].matchCounter = 0;
-        logmatchTable[logmatchCount].virgin = TRUE;
-        logmatchTable[logmatchCount].currentFilePosition = 0;
-
-
-        /*
-         * ------------------------------------ 
-         * be careful: the flag 255 must fit to 
-         * the size of regEx as definded in     
-         * logmatch.h                           
-         * ------------------------------------ 
-         */
-
-        sscanf(cptr, "%255s%c%255s%c %d %255c\n",
-               logmatchTable[logmatchCount].name,
-	       &space_name,
-               logmatchTable[logmatchCount].filenamePattern,
-	       &space_path,
-               &(logmatchTable[logmatchCount].frequency),
-               logmatchTable[logmatchCount].regEx);
-
-        /* fill in filename with initial data */
-        strcpy(logmatchTable[logmatchCount].filename, logmatchTable[logmatchCount].filenamePattern);
-        logmatch_update_filename(logmatchTable[logmatchCount].filenamePattern, logmatchTable[logmatchCount].filename);
-
-	/*
-	 * Log an error then return if any of the strings scanned in were
-	 * larger then they should have been.
-	 */
-	if (space_name != ' ') {
-		snmp_log(LOG_ERR, "logmatch_parse_config: the name scanned " \
-		 "in from line %s is too large. logmatchCount = %d\n",
-		 cptr, logmatchCount);
-		return;
-	} else if (space_path != ' ') {
-		snmp_log(LOG_ERR, "logmatch_parse_config: the file name " \
-		 "scanned in from line %s is too large. logmatchCount = %d\n",
-		    cptr, logmatchCount);
-		return;
-	}
-
-        /*
-         * ------------------------------------ 
-         * just to be safe "NULL" the end of    
-         * the arary regEx as sscanf won't do   
-         * it with the %c modifier              
-         * ------------------------------------ 
-         */
-
-        logmatchTable[logmatchCount].regEx[255] = '\0';
-
-
-        /*
-         * ------------------------------------ 
-         * now compile the regular expression   
-         * ------------------------------------ 
-         */
-
-        logmatchTable[logmatchCount].myRegexError =
-            regcomp(&(logmatchTable[logmatchCount].regexBuffer),
-                    logmatchTable[logmatchCount].regEx,
-                    REG_EXTENDED | REG_NOSUB);
-
-        if (logmatchTable[logmatchCount].frequency > 0) {
-            snmp_alarm_register(logmatchTable[logmatchCount].frequency,
-                                SA_REPEAT,
-                                (SNMPAlarmCallback *)
-                                updateLogmatch_Scheduled,
-                                &(logmatchTable[logmatchCount])
-                );
-        }
-
-        logmatchCount++;
-    }
-}
-
-
-/***************************************************************
-*                                                              *
-* !!!---!!! PUBLIC !!! --- !!!                                 *
-*                                                              *
 * updateLogmatch                                               *
 * this function is called back by snmpd alarms                 *
 *                                                              *
 ***************************************************************/
 
-
-void
+static void
 updateLogmatch(int iindex)
 {
 
@@ -276,7 +132,7 @@
      */
 
     snprintf(perfilename, sizeof(perfilename), "%s/snmpd_logmatch_%s.pos",
-	get_persistent_directory(), logmatchTable[iindex].name);
+             get_persistent_directory(), logmatchTable[iindex].name);
 
     if (logmatchTable[iindex].virgin) {
 
@@ -301,7 +157,8 @@
 
             pos = counter = ccounter = 0;
 
-            if (fscanf(perfile, "%lu %lu %lu %s", &pos, &ccounter, &counter, lastFilename)) {
+            if (fscanf(perfile, "%lu %lu %lu %s",
+                       &pos, &ccounter, &counter, lastFilename)) {
 
 
                 /*
@@ -312,7 +169,8 @@
                  * ------------------------------------ 
                  */
 
-                if (logmatch_update_filename(logmatchTable[iindex].filenamePattern, lastFilename) == 0) {
+                if (logmatch_update_filename(logmatchTable[iindex].filenamePattern,
+                                             lastFilename) == 0) {
 
                     /*
                      * ---------------------------------
@@ -373,7 +231,8 @@
      * -------------------------------------------
      */
 
-    if (logmatch_update_filename(logmatchTable[iindex].filenamePattern, logmatchTable[iindex].filename) == 1) {
+    if (logmatch_update_filename(logmatchTable[iindex].filenamePattern,
+                                 logmatchTable[iindex].filename) == 1) {
         logmatchTable[iindex].currentFilePosition = 0; 
         logmatchTable[iindex].currentMatchCounter = 0;
     }
@@ -477,22 +336,173 @@
 }
 
 
-void
+static void
 updateLogmatch_Scheduled(unsigned int registrationNumber,
                          struct logmatchstat *logmatchtable)
 {
-
     updateLogmatch(logmatchtable->thisIndex);
 }
 
+/***************************************************************
+*                                                              *
+* logmatch_parse_config                                        *
+* parse one line from snmpd.conf                               *
+*                                                              *
+***************************************************************/
+
+static void
+logmatch_parse_config(const char *token, char *cptr)
+{
+
+    char space_name;
+    char space_path;
+
+    if (logmatchCount < MAXLOGMATCH) {
+        logmatchTable[logmatchCount].frequency = 30;
+        logmatchTable[logmatchCount].thisIndex = logmatchCount;
 
 
+        /*
+         * ------------------------------------
+         * be careful this counter needs to be
+         * reset from persistent storage
+         * ------------------------------------
+         */
+
+        logmatchTable[logmatchCount].globalMatchCounter = 0;
+        logmatchTable[logmatchCount].currentMatchCounter = 0;
+        logmatchTable[logmatchCount].matchCounter = 0;
+        logmatchTable[logmatchCount].virgin = TRUE;
+        logmatchTable[logmatchCount].currentFilePosition = 0;
+
+
+        /*
+         * ------------------------------------
+         * be careful: the flag 255 must fit to
+         * the size of regEx as definded in
+         * logmatch.h
+         * ------------------------------------
+         */
+
+        sscanf(cptr, "%255s%c%255s%c %d %255c\n",
+               logmatchTable[logmatchCount].name,
+	       &space_name,
+               logmatchTable[logmatchCount].filenamePattern,
+	       &space_path,
+               &(logmatchTable[logmatchCount].frequency),
+               logmatchTable[logmatchCount].regEx);
+
+        /* fill in filename with initial data */
+        strcpy(logmatchTable[logmatchCount].filename,
+               logmatchTable[logmatchCount].filenamePattern);
+        logmatch_update_filename(logmatchTable[logmatchCount].filenamePattern,
+                                 logmatchTable[logmatchCount].filename);
+
+	/*
+	 * Log an error then return if any of the strings scanned in were
+	 * larger then they should have been.
+	 */
+	if (space_name != ' ') {
+		snmp_log(LOG_ERR, "logmatch_parse_config: the name scanned " \
+		 "in from line %s is too large. logmatchCount = %d\n",
+		 cptr, logmatchCount);
+		return;
+	} else if (space_path != ' ') {
+		snmp_log(LOG_ERR, "logmatch_parse_config: the file name " \
+		 "scanned in from line %s is too large. logmatchCount = %d\n",
+		    cptr, logmatchCount);
+		return;
+	}
+
+        /*
+         * ------------------------------------
+         * just to be safe "NULL" the end of
+         * the arary regEx as sscanf won't do
+         * it with the %c modifier
+         * ------------------------------------
+         */
+
+        logmatchTable[logmatchCount].regEx[255] = '\0';
+
+
+        /*
+         * ------------------------------------
+         * now compile the regular expression
+         * ------------------------------------
+         */
+
+        logmatchTable[logmatchCount].myRegexError =
+            regcomp(&logmatchTable[logmatchCount].regexBuffer,
+                    logmatchTable[logmatchCount].regEx,
+                    REG_EXTENDED | REG_NOSUB);
+
+        if (logmatchTable[logmatchCount].myRegexError) {
+            char regexErrorString[100];
+            regerror(logmatchTable[logmatchCount].myRegexError,
+                     &logmatchTable[logmatchCount].regexBuffer,
+                     regexErrorString, 100);
+            snmp_log(LOG_ERR, "Could not process the logmatch regex - %s," \
+                     "\n since regcomp() failed with - %s\n",
+                     logmatchTable[logmatchCount].regEx, regexErrorString);
+        }
+        else if (logmatchTable[logmatchCount].frequency > 0) {
+            snmp_alarm_register(logmatchTable[logmatchCount].frequency,
+                                SA_REPEAT,
+                                (SNMPAlarmCallback *) updateLogmatch_Scheduled,
+                                &logmatchTable[logmatchCount]);
+        }
+
+        logmatchCount++;
+    }
+}
+
+/***************************************************************
+*                                                              *
+* logmatch_free_config                                         *
+* free memory allocated by this mib module                     *
+*                                                              *
+***************************************************************/
+
+static void
+logmatch_free_config(void)
+{
+    int             i;
+
+    /*
+     * ------------------------------------
+     * the only memory we have allocated
+     * is the memory allocated by regcomp
+     * ------------------------------------
+     */
+
+    for (i = 0; i < logmatchCount; i++) {
+        if (logmatchTable[i].myRegexError == 0)
+            regfree(&logmatchTable[i].regexBuffer);
+    }
+    logmatchCount = 0;
+}
+
+
+#define LOGMATCH_INFO       0
+#define LOGMATCH_INDEX      1
+#define LOGMATCH_NAME       2
+#define LOGMATCH_FILENAME   3
+#define LOGMATCH_REGEX      4
+#define LOGMATCH_GLOBALCTR  5
+#define LOGMATCH_GLOBALCNT  6
+#define LOGMATCH_CURRENTCTR 7
+#define LOGMATCH_CURRENTCNT 8
+#define LOGMATCH_COUNTER    9
+#define LOGMATCH_COUNT      10
+#define LOGMATCH_FREQ       11
+#define LOGMATCH_ERROR      100
+#define LOGMATCH_MSG        101
 
 /*
  * OID functions 
  */
 
-u_char         *
+static u_char *
 var_logmatch_table(struct variable *vp,
                    oid * name,
                    size_t * length,
@@ -586,54 +596,62 @@
     return NULL;
 }
 
-/*
- * ------------------------------------------------
- *  This function checks if the filename pattern 
- *  contains the % character indicating a variable
- *  filename (i.e. it uses date/time format control 
- *  codes, see 'man date') then expands those control
- *  codes based on current time and sets the 
- *  filename field in the struct.
- *  Returns 1 if the filename changed, 0 otherwise
- *  -------------------------------------------------
- */
+void
+init_logmatch(void)
+{
+    struct variable2 logmatch_info[] = {
+        {LOGMATCH_INFO, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 0}
+    };
 
-int logmatch_update_filename(char * pattern, char * currentFilename) {
-    time_t t;
-    struct tm *tmp;
-    char newFilename[256];
+    struct variable2 logmatch_table[] = {
+        {LOGMATCH_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {1}},
+        {LOGMATCH_NAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {2}},
+        {LOGMATCH_FILENAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {3}},
+        {LOGMATCH_REGEX, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {4}},
+        {LOGMATCH_GLOBALCTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {5}},
+        {LOGMATCH_GLOBALCNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {6}},
+        {LOGMATCH_CURRENTCTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {7}},
+        {LOGMATCH_CURRENTCNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {8}},
+        {LOGMATCH_COUNTER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {9}},
+        {LOGMATCH_COUNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {10}},
+        {LOGMATCH_FREQ, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {11}},
+        {LOGMATCH_ERROR, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {100}},
+        {LOGMATCH_MSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_logmatch_table, 1, {101}}
+    };
 
-    /* 
-     * -------------------------------------------------------------------
-     * if the filename pattern doesn't have the "%" character just return, 
-     * since there is no need for further processing
-     * -------------------------------------------------------------------
+    /*
+     * Define the OID pointer to the top of the mib tree that we're
+     * registering underneath
      */
-    if (strstr(pattern, "%") == NULL) {
-        return 0;
-    }
+    oid             logmatch_info_oid[] = { NETSNMP_UCDAVIS_MIB, 16, 1 };
+    oid             logmatch_variables_oid[] = { NETSNMP_UCDAVIS_MIB, 16, 2, 1 };
 
-    t = time(NULL);
-    tmp = localtime(&t);
+    /*
+     * register ourselves with the agent to handle our mib tree
+     */
+    REGISTER_MIB("ucd-snmp/logmatch", logmatch_info, variable2,
+                 logmatch_info_oid);
+    REGISTER_MIB("ucd-snmp/logmatch", logmatch_table, variable2,
+                 logmatch_variables_oid);
 
-    if (tmp == NULL) {
-        perror("localtime");
-        return 0;
-    }
+    snmpd_register_config_handler("logmatch", logmatch_parse_config,
+                                  logmatch_free_config,
+                                  "logmatch name path cycletime regex");
 
-    /* result of expansion must fit into newFilename, otherwise returning */ 
-    if (strftime(newFilename, sizeof(newFilename), pattern, tmp) == 0) {
-        return 0;
-    }
-
-    /* if same as current filename, just return */
-    if (strcmp(currentFilename, newFilename) == 0) {
-        return 0;
-    } else {
-        /* otherwise update currentFilename and return 1 */
-        strcpy(currentFilename, newFilename); 
-        return 1;
-    }
 }
 
-#endif /* HAVE_REGEX */
+#endif /* HAVE_REGEX_H */
diff --git a/agent/mibgroup/ucd-snmp/logmatch.h b/agent/mibgroup/ucd-snmp/logmatch.h
index 35ad27f..b94ad3a 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.h
+++ b/agent/mibgroup/ucd-snmp/logmatch.h
@@ -8,54 +8,6 @@
 config_require(util_funcs/header_generic)
 config_require(util_funcs/header_simple_table)
 
-#include "mibdefs.h"
-#include <regex.h>
-
-struct logmatchstat {
-    char            filenamePattern[256];
-    char            filename[256];
-    char            regEx[256];
-    char            name[256];
-    FILE           *logfile;
-    long            currentFilePosition;
-    unsigned long   globalMatchCounter;
-    unsigned long   currentMatchCounter;
-    unsigned long   matchCounter;
-    regex_t         regexBuffer;
-    int             myRegexError;
-    int             virgin;
-    int             thisIndex;
-    int             frequency;
-};
-void            init_logmatch(void);
-
-
-/*
- * config logmatch parsing routines 
- */
-void            logmatch_free_config(void);
-void            logmatch_parse_config(const char *, char *);
-void            updateLogmatch_Scheduled(unsigned int,
-                                         struct logmatchstat *);
-extern FindVarMethod var_logmatch_table;
-
-
-
-#define LOGMATCH_ERROR_MSG  "%s: size exceeds %dkb (= %dkb)"
-
-#define LOGMATCH_INFO       0
-#define LOGMATCH_INDEX      1
-#define LOGMATCH_NAME       2
-#define LOGMATCH_FILENAME   3
-#define LOGMATCH_REGEX      4
-#define LOGMATCH_GLOBALCTR  5
-#define LOGMATCH_GLOBALCNT  6
-#define LOGMATCH_CURRENTCTR 7
-#define LOGMATCH_CURRENTCNT 8
-#define LOGMATCH_COUNTER    9
-#define LOGMATCH_COUNT      10
-#define LOGMATCH_FREQ       11
-#define LOGMATCH_ERROR      100
-#define LOGMATCH_MSG        101
+void init_logmatch(void);
 
 #endif                          /* _MIBGROUP_LOGMATCH_H */
diff --git a/agent/mibgroup/ucd-snmp/memory.c b/agent/mibgroup/ucd-snmp/memory.c
index a279cdd..742186f 100644
--- a/agent/mibgroup/ucd-snmp/memory.c
+++ b/agent/mibgroup/ucd-snmp/memory.c
@@ -202,7 +202,8 @@
                                      (u_char *)buf, strlen(buf));
             return SNMP_ERR_NOERROR;
         default:
-            snmp_log(LOG_ERR, "unknown object (%lu) in handle_memory\n",
+            snmp_log(LOG_ERR,
+                     "unknown object (%" NETSNMP_PRIo "u) in handle_memory\n",
                      requests->requestvb->name[ reginfo->rootoid_len - 2 ]);
 NOSUCH:
             netsnmp_set_request_error( reqinfo, requests, SNMP_NOSUCHOBJECT );
diff --git a/agent/mibgroup/ucd-snmp/memory_aix4.c b/agent/mibgroup/ucd-snmp/memory_aix4.c
index 820f628..786e5eb 100644
--- a/agent/mibgroup/ucd-snmp/memory_aix4.c
+++ b/agent/mibgroup/ucd-snmp/memory_aix4.c
@@ -34,6 +34,9 @@
 #include "memory.h"             /* the module-specific header */
 #include "memory_aix4.h"    /* the module-specific header */
 
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/agent/mibgroup/ucd-snmp/pass.c b/agent/mibgroup/ucd-snmp/pass.c
index fa933b6..98eacbb 100644
--- a/agent/mibgroup/ucd-snmp/pass.c
+++ b/agent/mibgroup/ucd-snmp/pass.c
@@ -23,9 +23,6 @@
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef WIN32
 #include <limits.h>
 #endif
@@ -81,7 +78,7 @@
 	/* change priority level */
 	cptr++;
 	cptr = skip_white(cptr);
-	if (! isdigit(*cptr)) {
+	if (! isdigit((unsigned char)(*cptr))) {
 	  config_perror("priority must be an integer");
 	  return;
 	}
@@ -104,7 +101,7 @@
      */
     if (*cptr == '.')
         cptr++;
-    if (!isdigit(*cptr)) {
+    if (!isdigit((unsigned char)(*cptr))) {
         config_perror("second token is not a OID");
         return;
     }
@@ -118,7 +115,7 @@
     (*ppass)->type = PASSTHRU;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
-    while (isdigit(*cptr) || *cptr == '.')
+    while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
         cptr++;
     /*
      * path
diff --git a/agent/mibgroup/ucd-snmp/pass_persist.c b/agent/mibgroup/ucd-snmp/pass_persist.c
index f685411..bd9b603 100644
--- a/agent/mibgroup/ucd-snmp/pass_persist.c
+++ b/agent/mibgroup/ucd-snmp/pass_persist.c
@@ -25,9 +25,6 @@
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef WIN32
 #include <limits.h>
 #endif
@@ -111,7 +108,7 @@
 	/* change priority level */
 	cptr++;
 	cptr = skip_white(cptr);
-	if (! isdigit(*cptr)) {
+	if (! isdigit((unsigned char)(*cptr))) {
 	  config_perror("priority must be an integer");
 	  return;
 	}
@@ -134,7 +131,7 @@
      */
     if (*cptr == '.')
         cptr++;
-    if (!isdigit(*cptr)) {
+    if (!isdigit((unsigned char)(*cptr))) {
         config_perror("second token is not a OID");
         return;
     }
@@ -148,7 +145,7 @@
     (*ppass)->type = PASSTHRU_PERSIST;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
-    while (isdigit(*cptr) || *cptr == '.')
+    while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
         cptr++;
     /*
      * path
diff --git a/agent/mibgroup/ucd-snmp/proc.c b/agent/mibgroup/ucd-snmp/proc.c
index 4284d08..700acf2 100644
--- a/agent/mibgroup/ucd-snmp/proc.c
+++ b/agent/mibgroup/ucd-snmp/proc.c
@@ -29,11 +29,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -45,9 +41,6 @@
 #if HAVE_KVM_H
 #include <kvm.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -216,8 +209,12 @@
         else
             (*procp)->min = 0;
     } else {
+        /* Default to asssume that we require at least one
+         *  such process to be running, but no upper limit */
         (*procp)->max = 0;
-        (*procp)->min = 0;
+        (*procp)->min = 1;
+        /* This frees "proc <procname> 0 0" to monitor
+         * processes that should _not_ be running. */
     }
 #ifdef NETSNMP_PROCFIXCMD
     sprintf((*procp)->fixcmd, NETSNMP_PROCFIXCMD, (*procp)->name);
@@ -267,9 +264,12 @@
         case ERRORFLAG:
             long_ret = sh_count_procs(proc->name);
             if (long_ret >= 0 &&
+                   /* Too few processes running */
                 ((proc->min && long_ret < proc->min) ||
+                   /* Too many processes running */
                  (proc->max && long_ret > proc->max) ||
-                 (proc->min == 0 && proc->max == 0 && long_ret < 1))) {
+                   /* Processes running that shouldn't be */
+                 (proc->min == 0 && proc->max == 0 && long_ret > 0))) {
                 long_ret = 1;
             } else {
                 long_ret = 0;
@@ -280,16 +280,20 @@
             if (long_ret < 0) {
                 errmsg[0] = 0;  /* catch out of mem errors return 0 count */
             } else if (proc->min && long_ret < proc->min) {
-                snprintf(errmsg, sizeof(errmsg),
+                if ( long_ret > 0 )
+                    snprintf(errmsg, sizeof(errmsg),
                         "Too few %s running (# = %d)",
                         proc->name, (int) long_ret);
+                else
+                    snprintf(errmsg, sizeof(errmsg),
+                        "No %s process running", proc->name);
             } else if (proc->max && long_ret > proc->max) {
                 snprintf(errmsg, sizeof(errmsg),
                         "Too many %s running (# = %d)",
                         proc->name, (int) long_ret);
-            } else if (proc->min == 0 && proc->max == 0 && long_ret < 1) {
+            } else if (proc->min == 0 && proc->max == 0 && long_ret > 0) {
                 snprintf(errmsg, sizeof(errmsg),
-                        "No %s process running.", proc->name);
+                        "%s process should not be running.", proc->name);
             } else {
                 errmsg[0] = 0;
             }
@@ -413,7 +417,7 @@
     return ret;
 }
 
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #include <procinfo.h>
 #include <sys/types.h>
 
diff --git a/agent/mibgroup/ucd-snmp/proxy.c b/agent/mibgroup/ucd-snmp/proxy.c
index 1f8f470..9a0e356 100644
--- a/agent/mibgroup/ucd-snmp/proxy.c
+++ b/agent/mibgroup/ucd-snmp/proxy.c
@@ -11,9 +11,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #endif
@@ -105,7 +102,9 @@
 
     DEBUGMSGTL(("proxy_config", "parsing args: %d\n", argn));
     /* Call special parse_args that allows for no specified community string */
-    arg = snmp_parse_args(argn, argv, &session, "C:", proxyOptProc);
+    arg = netsnmp_parse_args(argn, argv, &session, "C:", proxyOptProc,
+                             NETSNMP_PARSE_ARGS_NOLOGGING |
+                             NETSNMP_PARSE_ARGS_NOZERO);
 
     /* reset this in case we modified it */
     netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
@@ -420,7 +419,7 @@
              */
             DEBUGMSGTL(("proxy", "length=%d, base_len=%d, name_len=%d\n",
                         (int)ourlength, (int)sp->base_len, (int)sp->name_len));
-            if (ourlength > (int) sp->name_len)
+            if (ourlength > sp->name_len)
                 memcpy(&(sp->base[sp->base_len]), &(ourname[sp->name_len]),
                        sizeof(oid) * (ourlength - sp->name_len));
             ourlength = ourlength - sp->name_len + sp->base_len;
diff --git a/agent/mibgroup/ucd-snmp/versioninfo.c b/agent/mibgroup/ucd-snmp/versioninfo.c
index 4a109ed..f42932a 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.c
+++ b/agent/mibgroup/ucd-snmp/versioninfo.c
@@ -2,11 +2,7 @@
 
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -18,9 +14,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #endif
diff --git a/agent/mibgroup/ucd-snmp/vmstat_aix4.c b/agent/mibgroup/ucd-snmp/vmstat_aix4.c
index 69fc372..62d7ce6 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_aix4.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_aix4.c
@@ -39,6 +39,9 @@
 /*
  * libperfstat structs 
  */
+#ifdef HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
 #include <libperfstat.h>
 
 #include <net-snmp/net-snmp-config.h>
diff --git a/agent/mibgroup/ucd_snmp.h b/agent/mibgroup/ucd_snmp.h
index f92c2c4..0d87ec1 100644
--- a/agent/mibgroup/ucd_snmp.h
+++ b/agent/mibgroup/ucd_snmp.h
@@ -3,7 +3,7 @@
 config_require(ucd-snmp/versioninfo)
 config_require(ucd-snmp/pass)
 config_require(ucd-snmp/pass_persist)
-config_require(ucd-snmp/disk)
+config_version_require((ucd-snmp/disk, 5.7, ucd-snmp/disk_hw))
 config_require(ucd-snmp/loadave)
 config_require(agent/extend)
 config_require(ucd-snmp/errormib)
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
index 70e29d2..1edb6d6 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
@@ -23,6 +23,12 @@
 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)
+config_require(udp-mib/data_access/udp_endpoint_freebsd4)
+#elif defined(openbsd4)
+config_require(udp-mib/data_access/udp_endpoint_openbsd)
+#elif defined(netbsd1)
+config_require(udp-mib/data_access/udp_endpoint_netbsd)
 #else
 config_require(udp-mib/data_access/udp_endpoint_unsup)
 #endif
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c
new file mode 100644
index 0000000..efb8bb6
--- /dev/null
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c
@@ -0,0 +1,194 @@
+/*
+ *  UDP MIB architecture support for FreeBSD/DragonFlyBsd
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/udp_endpoint.h>
+
+#include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
+#include "udp-mib/data_access/udp_endpoint_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_udp_endpoint_entry_cleanup(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_udp_endpoint_entry_copy(netsnmp_udp_endpoint_entry *lhs,
+                                  netsnmp_udp_endpoint_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_udp_endpoint_entry_delete(netsnmp_udp_endpoint_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 tcpConn delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_udp_endpoint_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:udp_endpoint:container",
+                "udp_endpoint_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_udp_endpoint\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags);
+
+    return rc;
+}
+
+#define NS_ELEM struct xinpcb
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags)
+{
+    size_t   len;
+    int      sname[] = { CTL_NET, PF_INET, IPPROTO_UDP, UDPCTL_PCBLIST };
+    char     *udpcb_buf = NULL;
+#if defined(dragonfly)
+    struct xinpcb  *xig = NULL;
+#else
+    struct xinpgen *xig = NULL;
+#endif
+    netsnmp_udp_endpoint_entry  *entry;
+    int      rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    len = 0;
+    if (sysctl(sname, 4, 0, &len, 0, 0) < 0 ||
+       (udpcb_buf = malloc(len)) == NULL)
+        return -1;
+    if (sysctl(sname, 4, udpcb_buf, &len, 0, 0) < 0) {
+        free(udpcb_buf);
+        return -1;
+    }
+
+    /*
+     *  Unpick this into the constituent 'xinpgen' structures, and extract
+     *     the 'inpcb' elements into a linked list (built in reverse)
+     */
+#if defined(dragonfly)
+    xig = (struct xinpcb  *) udpcb_buf;
+#else
+    xig = (struct xinpgen *) udpcb_buf;
+    xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
+#endif
+
+#if defined(dragonfly)
+    while (xig && (xig->xi_len >= sizeof(struct xinpcb)))
+#else
+    while (xig && (xig->xig_len > sizeof(struct xinpgen)))
+#endif
+    {
+	NS_ELEM pcb = *((NS_ELEM *) xig);
+#if defined(dragonfly)
+	xig = (struct xinpcb  *) ((char *) xig + xig->xi_len);
+#else
+	xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
+#endif
+
+#if !defined(NETSNMP_ENABLE_IPV6)
+        if (pcb.xi_inp.inp_vflag & INP_IPV6)
+	    continue;
+#endif
+
+        entry = netsnmp_access_udp_endpoint_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        /** oddly enough, these appear to already be in network order */
+        entry->loc_port = htons(pcb.xi_inp.inp_lport);
+        entry->rmt_port = htons(pcb.xi_inp.inp_fport);
+        entry->pid = 0;
+        
+        /** the addr string may need work */
+	if (pcb.xi_inp.inp_vflag & INP_IPV6) {
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &pcb.xi_inp.in6p_laddr, 16);
+	    memcpy(entry->rmt_addr, &pcb.xi_inp.in6p_faddr, 16);
+	}
+	else {
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &pcb.xi_inp.inp_laddr, 4);
+	    memcpy(entry->rmt_addr, &pcb.xi_inp.inp_faddr, 4);
+	}
+
+        /*
+         * add entry to container
+         */
+	entry->index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+    }
+
+    if(rc<0)
+        return rc;
+
+    return 0;
+}
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 c87dc24..43b3230 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
@@ -227,8 +227,8 @@
      */
     ep->pid = netsnmp_get_pid_from_inode(inode);
 
-    ep->index = (u_int)(lpi->user_context);
-    lpi->user_context = (void*)((u_int)(lpi->user_context) + 1);
+    ep->index = (uintptr_t)(lpi->user_context);
+    lpi->user_context = (void*)((char*)(lpi->user_context) + 1);
 
     ep->oid_index.oids = &ep->index;
     ep->oid_index.len = 1;
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c
new file mode 100644
index 0000000..f68314b
--- /dev/null
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c
@@ -0,0 +1,207 @@
+/*
+ *  udp_endpointTable MIB architecture support for NetBSD
+ *
+ * $Id: udp_endpoint_linux.c 18994 2010-06-16 13:13:25Z dts12 $
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/udp_endpoint.h>
+
+#include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
+#include "udp-mib/data_access/udp_endpoint_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags, int var);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_udp_endpoint_entry_cleanup(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_udp_endpoint_entry_copy(netsnmp_udp_endpoint_entry *lhs,
+                                  netsnmp_udp_endpoint_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_udp_endpoint_entry_delete(netsnmp_udp_endpoint_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 udp_endpoint delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_udp_endpoint_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:udp_endpoint:container",
+                "udp_endpoint_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_udp_endpoint\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags, 4);
+#if defined(NETSNMP_ENABLE_IPV6)
+    rc = _load(container, load_flags, 6);
+#endif
+
+    return rc;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags, int ver)
+{
+    const char *mibname;
+    int      mib[8];
+    size_t   mib_len;
+    struct kinfo_pcb *pcblist;
+    size_t   pcb_len;
+    netsnmp_udp_endpoint_entry  *entry;
+    int      i, rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    switch (ver) {
+    case 4:
+    	mibname = "net.inet.udp.pcblist";
+    	break;
+    case 6:
+    	mibname = "net.inet6.udp6.pcblist";
+	break;
+    default:
+    	snmp_log(LOG_ERR, "udp-mib:data_access:_load: bad version %d\n", ver);
+	return -1;
+    }
+
+    if (sysctlnametomib(mibname, mib, &mib_len) == -1) {
+    	snmp_log(LOG_ERR, "udp-mib:data_access:_load: cant resolve mib %s\n", mibname);
+	return -1;
+    }
+
+    if (sysctl(mib, sizeof(mib) / sizeof(*mib), NULL, &pcb_len, NULL, 0) == -1) {
+    	snmp_log(LOG_ERR, "udp-mib:data_access:_load: cant size mib %s\n", mibname);
+	return -1;
+    }
+
+    if ((pcblist = malloc(pcb_len)) == NULL) {
+    	snmp_log(LOG_ERR, "udp-mib:data_access:_load: cant allocate mib %s\n", mibname);
+	return -1;
+    }
+    memset(pcblist, 0, pcb_len);
+
+    mib[6] = sizeof(*pcblist);
+    mib[7] = pcb_len / sizeof(*pcblist);
+
+    if (sysctl(mib, sizeof(mib) / sizeof(*mib),
+		    pcblist, &pcb_len, NULL, 0) == -1) {
+    	snmp_log(LOG_ERR, "udp-mib:data_access:_load: cant size mib %s\n", mibname);
+	return -1;
+    }
+
+    /*
+     *  Unpick this into the constituent structures, and extract
+     *     the 'inpcb' elements into a linked list (built in reverse)
+     */
+    for (i = 0; i < pcb_len / sizeof(*pcblist); i++) {
+	struct kinfo_pcb *pcb = pcblist+i;
+
+        entry = netsnmp_access_udp_endpoint_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        entry->pid = 0;
+        
+	if (ver == 6) {
+	    struct sockaddr_in6 src, dst;
+	    memcpy(&src, &pcb->ki_s, sizeof(src));
+	    memcpy(&dst, &pcb->ki_d, sizeof(dst));
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &src.sin6_addr, 16);
+	    memcpy(entry->rmt_addr, &dst.sin6_addr, 16);
+	    entry->loc_port = ntohs(src.sin6_port);
+	    entry->rmt_port = ntohs(dst.sin6_port);
+	}
+	else {
+	    struct sockaddr_in src, dst;
+	    memcpy(&src, &pcb->ki_s, sizeof(src));
+	    memcpy(&dst, &pcb->ki_d, sizeof(dst));
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &src.sin_addr, 4);
+	    memcpy(entry->rmt_addr, &dst.sin_addr, 4);
+	    entry->loc_port = ntohs(src.sin_port);
+	    entry->rmt_port = ntohs(dst.sin_port);
+	}
+
+        /*
+         * add entry to container
+         */
+        entry->index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+    }
+
+    if(rc<0)
+        return rc;
+
+    return 0;
+}
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c
new file mode 100644
index 0000000..99b67dc
--- /dev/null
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c
@@ -0,0 +1,177 @@
+/*
+ *  udp_endpointTable MIB architecture support for OpenBSD
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/udp_endpoint.h>
+#include <net-snmp/agent/auto_nlist.h>
+
+#include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
+#include "udp-mib/data_access/udp_endpoint_private.h"
+
+#include "mibII/mibII_common.h"
+
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+static int _load(netsnmp_container *container, u_int flags);
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_udp_endpoint_entry_cleanup(netsnmp_udp_endpoint_entry *entry)
+{
+    /*
+     * cleanup
+     */
+}
+
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_udp_endpoint_entry_copy(netsnmp_udp_endpoint_entry *lhs,
+                                  netsnmp_udp_endpoint_entry *rhs)
+{
+    return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_udp_endpoint_entry_delete(netsnmp_udp_endpoint_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+    /** xxx-rks:9 udp_endpoint delete not implemented */
+    return -1;
+}
+
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_udp_endpoint_container_load(netsnmp_container *container,
+                                    u_int load_flags )
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:udp_endpoint:container",
+                "udp_endpoint_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_udp_endpoint\n");
+        return -1;
+    }
+
+    rc = _load(container, load_flags);
+
+    return rc;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container, u_int load_flags)
+{
+    struct inpcbtable table;
+    struct inpcb   *head, *next, *prev;
+    struct inpcb   inpcb;
+    netsnmp_udp_endpoint_entry  *entry;
+    int      rc = 0;
+
+    /*
+     *  Read in the buffer containing the TCP table data
+     */
+    if (!auto_nlist(UDB_SYMBOL, (char *) &table, sizeof(table))) {
+	DEBUGMSGTL(("udp-mib/udp_endpoint_openbsd", "Failed to read udp_symbol\n"));
+	return -1;
+    }
+
+    prev = (struct inpcb *)&CIRCLEQ_FIRST(&table.inpt_queue);
+    prev = NULL;
+    head = next = CIRCLEQ_FIRST(&table.inpt_queue);
+
+    while (next) {
+	NETSNMP_KLOOKUP(next, (char *)&inpcb, sizeof(inpcb));
+	if (prev && CIRCLEQ_PREV(&inpcb, inp_queue) != prev) {
+	    snmp_log(LOG_ERR,"udbtable link error\n");
+	    break;
+	}
+	prev = next;
+	next = CIRCLEQ_NEXT(&inpcb, inp_queue);
+
+#if !defined(NETSNMP_ENABLE_IPV6)
+        if (inpcb.inp_flags & INP_IPV6)
+            goto skip;
+#endif
+        entry = netsnmp_access_udp_endpoint_entry_create();
+        if (NULL == entry) {
+            rc = -3;
+            break;
+        }
+
+        /** oddly enough, these appear to already be in network order */
+        entry->loc_port = ntohs(inpcb.inp_lport);
+        entry->rmt_port = ntohs(inpcb.inp_fport);
+        entry->pid = 0;
+        
+        /** the addr string may need work */
+	if (inpcb.inp_flags & INP_IPV6) {
+	    entry->loc_addr_len = entry->rmt_addr_len = 16;
+	    memcpy(entry->loc_addr, &inpcb.inp_laddr6, 16);
+	    memcpy(entry->rmt_addr, &inpcb.inp_faddr6, 16);
+	}
+	else {
+	    entry->loc_addr_len = entry->rmt_addr_len = 4;
+	    memcpy(entry->loc_addr, &inpcb.inp_laddr, 4);
+	    memcpy(entry->rmt_addr, &inpcb.inp_faddr, 4);
+	}
+
+        /*
+         * add entry to container
+         */
+        entry->index = CONTAINER_SIZE(container) + 1;
+        CONTAINER_INSERT(container, entry);
+#if !defined(NETSNMP_ENABLE_IPV6)
+    skip:
+#endif
+	if (next == head)
+	    break;
+    }
+
+    if (rc < 0)
+        return rc;
+
+    return 0;
+}
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
index ef83b9a..0e25c21 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
@@ -243,7 +243,8 @@
         netsnmp_access_udp_endpoint_container_free(ep_c, 0);
         return MFD_RESOURCE_UNAVAILABLE;
     }
-    for (ep = ITERATOR_FIRST(ep_it); ep; ep = ITERATOR_NEXT(ep_it)) {
+    for (ep = (netsnmp_udp_endpoint_entry*)ITERATOR_FIRST(ep_it); ep;
+         ep = (netsnmp_udp_endpoint_entry*)ITERATOR_NEXT (ep_it)) {
 
         /*
          * TODO:352:M: |   |-> set indexes in new udpEndpointTable rowreq context.
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
index 28c2df3..1b6dc67 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
@@ -158,7 +158,7 @@
 
     /*
      * Define the minimum and maximum accessible columns.  This
-     * optimizes retrival. 
+     * optimizes retrieval. 
      */
     tbl_info->min_column = UDPENDPOINTTABLE_MIN_COL;
     tbl_info->max_column = UDPENDPOINTTABLE_MAX_COL;
@@ -701,7 +701,7 @@
                                    netsnmp_agent_request_info *agtreq_info,
                                    netsnmp_request_info *requests)
 {
-    udpEndpointTable_rowreq_ctx *rowreq_ctx =
+    udpEndpointTable_rowreq_ctx *rowreq_ctx = (udpEndpointTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     int             rc, packet_rc;
 
@@ -748,7 +748,7 @@
                                     netsnmp_request_info *requests)
 {
     int             rc = SNMP_ERR_NOERROR;
-    udpEndpointTable_rowreq_ctx *rowreq_ctx =
+    udpEndpointTable_rowreq_ctx *rowreq_ctx = (udpEndpointTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:udpEndpointTable:_mfd_udpEndpointTable_object_lookup", "called\n"));
@@ -819,7 +819,7 @@
                                  netsnmp_agent_request_info *agtreq_info,
                                  netsnmp_request_info *requests)
 {
-    udpEndpointTable_rowreq_ctx *rowreq_ctx =
+    udpEndpointTable_rowreq_ctx *rowreq_ctx = (udpEndpointTable_rowreq_ctx*)
         netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info *tri;
     u_char         *old_string;
@@ -1024,6 +1024,7 @@
                  "udpEndpointTable_container_init\n");
         return;
     }
+    if_ctx->container->container_name = strdup("udpEndpointTable");
 
     if (NULL != if_ctx->cache)
         if_ctx->cache->magic = (void *) if_ctx->container;
@@ -1068,7 +1069,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (udpEndpointTable_rowreq_ctx*)
         CONTAINER_FIND(udpEndpointTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
diff --git a/agent/mibgroup/util_funcs.c b/agent/mibgroup/util_funcs.c
index 749efb2..fb76083 100644
--- a/agent/mibgroup/util_funcs.c
+++ b/agent/mibgroup/util_funcs.c
@@ -43,11 +43,7 @@
 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -70,9 +66,6 @@
 #include <strings.h>
 #endif
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -88,6 +81,7 @@
 #endif
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/snmp_logging.h>
 
 #include "struct.h"
 #include "util_funcs.h"
@@ -109,13 +103,6 @@
 
 extern int      numprocs, numextens;
 
-void
-Exit(int var)
-{
-    snmp_log(LOG_ERR, "Server Exiting with code %d\n", var);
-    exit(var);
-}
-
 /** deprecated, use netsnmp_mktemp instead */
 const char *
 make_tempfile(void)
@@ -226,6 +213,10 @@
 int
 get_exec_output(struct extensible *ex)
 {
+#ifndef USING_UTILITIES_EXECUTE_MODULE
+    ex->result = -1;
+    NETSNMP_LOGONCE((LOG_WARNING, "support for run_exec_command not available\n"));
+#else
 #if HAVE_EXECV
     char            cachefile[STRMAX];
     char            cache[NETSNMP_MAXCACHESIZE];
@@ -375,8 +366,9 @@
     }
     return fd;
 #endif                          /* WIN32 */
-    return -1;
 #endif
+#endif /* !defined(USING_UTILITIES_EXECUTE_MODULE) */
+    return -1;
 }
 int
 get_exec_pipes(char *cmd, int *fdIn, int *fdOut, int *pid)
@@ -664,70 +656,6 @@
     return SNMP_ERR_NOERROR;
 }
 
-char          **argvrestartp, *argvrestartname, *argvrestart;
-
-RETSIGTYPE
-restart_doit(int a)
-{
-    char * name = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-                                        NETSNMP_DS_LIB_APPTYPE);
-    snmp_shutdown(name);
-
-    /*  This signal handler may run with SIGALARM blocked.
-     *  Since the signal mask is preserved accross execv(), we must 
-     *  make sure that SIGALARM is unblocked prior of execv'ing.
-     *  Otherwise SIGALARM will be ignored in the next incarnation
-     *  of snmpd, because the signal is blocked. And thus, the 
-     *  restart doesn't work anymore. 
-     *
-     *  A quote from the sigprocmask() man page:
-     *  The use of sigprocmask() is unspecified in a multithreaded process; see
-     *  pthread_sigmask(3). 
-     */ 
-#if HAVE_SIGPROCMASK
-    {
-        sigset_t empty_set;
-      
-        sigemptyset(&empty_set);
-        sigprocmask(SIG_SETMASK, &empty_set, NULL);
-    }
-#elif HAVE_SIGBLOCK
-    sigsetmask(0);
-#endif
-
-    /*
-     * do the exec 
-     */
-#if HAVE_EXECV
-    execv(argvrestartname, argvrestartp);
-    setPerrorstatus(argvrestartname);
-#endif
-}
-
-int
-restart_hook(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)
-{
-
-    long            tmp = 0;
-
-    if (var_val_type != ASN_INTEGER) {
-        snmp_log(LOG_NOTICE, "Wrong type != int\n");
-        return SNMP_ERR_WRONGTYPE;
-    }
-    tmp = *((long *) var_val);
-    if (tmp == 1 && action == COMMIT) {
-#ifdef SIGALRM
-        signal(SIGALRM, restart_doit);
-#endif
-        alarm(NETSNMP_RESTARTSLEEP);
-    }
-    return SNMP_ERR_NOERROR;
-}
-
 void
 print_mib_oid(oid name[], size_t len)
 {
@@ -748,7 +676,7 @@
     int             i;
 
     for (i = 0; i < (int) len; i++)
-        buf += sprintf(buf, ".%u", (unsigned) name[i]);
+        buf += sprintf(buf, ".%" NETSNMP_PRIo "u", name[i]);
 }
 
 /*
@@ -782,15 +710,15 @@
         /*
          * rewind a field length 
          */
-        while (*ptr != 0 && isspace(*ptr) && init <= ptr)
+        while (*ptr != 0 && isspace((unsigned char)(*ptr)) && init <= ptr)
             ptr--;
-        while (*ptr != 0 && !isspace(*ptr) && init <= ptr)
+        while (*ptr != 0 && !isspace((unsigned char)(*ptr)) && init <= ptr)
             ptr--;
-        if (isspace(*ptr))
+        if (isspace((unsigned char)(*ptr)))
             ptr++;              /* past space */
         if (ptr < init)
             ptr = init;
-        if (!isspace(*ptr) && *ptr != 0)
+        if (!isspace((unsigned char)(*ptr)) && *ptr != 0)
             return (ptr);
     } else {
         if ((ptr = skip_white(ptr)) == NULL)
@@ -817,12 +745,12 @@
         return 0;
     if (*buf == '.')
         buf++;
-    for (i = 0; isdigit(*buf); i++) {
+    for (i = 0; isdigit((unsigned char)(*buf)); i++) {
         /* Subidentifiers are unsigned values, up to 2^32-1
          * so we need to use 'strtoul' rather than 'atoi'
          */
         oidout[i] = strtoul(buf, NULL, 10) & 0xffffffff;
-        while (isdigit(*buf++));
+        while (isdigit((unsigned char)(*buf))) buf++;
         if (*buf == '.')
             buf++;
     }
diff --git a/agent/mibgroup/util_funcs.h b/agent/mibgroup/util_funcs.h
index c5b52ef..d16b6c4 100644
--- a/agent/mibgroup/util_funcs.h
+++ b/agent/mibgroup/util_funcs.h
@@ -4,11 +4,15 @@
 #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"
 #include "util_funcs/header_generic.h"
 #include "util_funcs/header_simple_table.h"
+#include "util_funcs/restart.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -29,15 +33,12 @@
  prefix_cbx **list_head;
 }netsnmp_prefix_listen_info;
 #endif
-void            Exit(int);
 int             shell_command(struct extensible *);
 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);
 WriteMethod     clear_cache;
-RETSIGTYPE      restart_doit(int);
-WriteMethod     restart_hook;
 void            print_mib_oid(oid *, size_t);
 void            sprint_mib_oid(char *, const oid *, size_t);
 int             checkmib(struct variable *, oid *, size_t *, int, size_t *,
diff --git a/agent/mibgroup/util_funcs/Exit.c b/agent/mibgroup/util_funcs/Exit.c
new file mode 100644
index 0000000..c848fd8
--- /dev/null
+++ b/agent/mibgroup/util_funcs/Exit.c
@@ -0,0 +1,23 @@
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright 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.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <net-snmp/library/snmp_logging.h>
+
+#include "Exit.h"
+
+void
+Exit(int var)
+{
+    snmp_log(LOG_ERR, "Server Exiting with code %d\n", var);
+    exit(var);
+}
diff --git a/agent/mibgroup/util_funcs/Exit.h b/agent/mibgroup/util_funcs/Exit.h
new file mode 100644
index 0000000..54f0cd5
--- /dev/null
+++ b/agent/mibgroup/util_funcs/Exit.h
@@ -0,0 +1,17 @@
+/*
+ *  Exit.h:  verbose terminaion routine
+ */
+#ifndef _MIBGROUP_UTIL_FUNCS_EXIT_H
+#define _MIBGROUP_UTIL_FUNCS_EXIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void            Exit(int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif                          /* _MIBGROUP_UTIL_FUNCS_EXIT_H */
diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.c b/agent/mibgroup/util_funcs/get_pid_from_inode.c
index 77628b2..1c941b3 100644
--- a/agent/mibgroup/util_funcs/get_pid_from_inode.c
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
@@ -39,7 +39,7 @@
     }
 
     if (!(procdirs = opendir(PROC_PATH))) {
-        snmp_log(LOG_ERR, "snmpd: cannot open /proc\n");
+        NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc\n"));
         return 0;
     }
 
diff --git a/agent/mibgroup/util_funcs/header_simple_table.c b/agent/mibgroup/util_funcs/header_simple_table.c
index 8459a4c..81fe160 100644
--- a/agent/mibgroup/util_funcs/header_simple_table.c
+++ b/agent/mibgroup/util_funcs/header_simple_table.c
@@ -70,7 +70,7 @@
     } else if (((int) *length) > (int) vp->namelen + 1) {       /* exact case checked earlier */
         *length = vp->namelen + 1;
         memmove(newname, name, (*length) * sizeof(oid));
-        if (name[*length - 1] < ULONG_MAX) {
+        if (name[*length - 1] < MAX_SUBID) {
             newname[*length - 1] = name[*length - 1] + 1;
         } else {
             /*
@@ -82,7 +82,7 @@
         *length = vp->namelen + 1;
         memmove(newname, name, (*length) * sizeof(oid));
         if (!exact) {
-            if (name[*length - 1] < ULONG_MAX) {
+            if (name[*length - 1] < MAX_SUBID) {
                 newname[*length - 1] = name[*length - 1] + 1;
             } else {
                 /*
diff --git a/agent/mibgroup/util_funcs/restart.c b/agent/mibgroup/util_funcs/restart.c
new file mode 100644
index 0000000..5cad737
--- /dev/null
+++ b/agent/mibgroup/util_funcs/restart.c
@@ -0,0 +1,93 @@
+/*
+ * util_funcs.c
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright 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.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <signal.h>
+
+#if HAVE_RAISE
+#define alarm raise
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/library/snmp_logging.h>
+
+#ifdef USING_UCD_SNMP_ERRORMIB_MODULE
+#include "ucd-snmp/errormib.h"
+#else
+#define setPerrorstatus(x) snmp_log_perror(x)
+#endif
+
+char **argvrestartp, *argvrestartname, *argvrestart;
+
+RETSIGTYPE
+restart_doit(int a)
+{
+    char * name = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                        NETSNMP_DS_LIB_APPTYPE);
+    snmp_shutdown(name);
+
+    /*  This signal handler may run with SIGALARM blocked.
+     *  Since the signal mask is preserved accross execv(), we must
+     *  make sure that SIGALARM is unblocked prior of execv'ing.
+     *  Otherwise SIGALARM will be ignored in the next incarnation
+     *  of snmpd, because the signal is blocked. And thus, the
+     *  restart doesn't work anymore.
+     *
+     *  A quote from the sigprocmask() man page:
+     *  The use of sigprocmask() is unspecified in a multithreaded process; see
+     *  pthread_sigmask(3).
+     */
+#if HAVE_SIGPROCMASK
+    {
+        sigset_t empty_set;
+
+        sigemptyset(&empty_set);
+        sigprocmask(SIG_SETMASK, &empty_set, NULL);
+    }
+#elif HAVE_SIGBLOCK
+    sigsetmask(0);
+#endif
+
+    /*
+     * do the exec
+     */
+#if HAVE_EXECV
+    execv(argvrestartname, argvrestartp);
+    setPerrorstatus(argvrestartname);
+#endif
+}
+
+int
+restart_hook(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)
+{
+
+    long            tmp = 0;
+
+    if (var_val_type != ASN_INTEGER) {
+        snmp_log(LOG_NOTICE, "Wrong type != int\n");
+        return SNMP_ERR_WRONGTYPE;
+    }
+    tmp = *((long *) var_val);
+    if (tmp == 1 && action == COMMIT) {
+#ifdef SIGALRM
+        signal(SIGALRM, restart_doit);
+#endif
+        alarm(NETSNMP_RESTARTSLEEP);
+    }
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/util_funcs/restart.h b/agent/mibgroup/util_funcs/restart.h
new file mode 100644
index 0000000..82760a1
--- /dev/null
+++ b/agent/mibgroup/util_funcs/restart.h
@@ -0,0 +1,15 @@
+#ifndef _MIBGROUP_UTIL_FUNCS_RESTART_H
+#define _MIBGROUP_UTIL_FUNCS_RESTART_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+RETSIGTYPE      restart_doit(int);
+WriteMethod     restart_hook;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIBGROUP_UTIL_FUNCS_RESTART_H */
diff --git a/agent/mibgroup/utilities/execute.c b/agent/mibgroup/utilities/execute.c
index 4221f96..68f3654 100644
--- a/agent/mibgroup/utilities/execute.c
+++ b/agent/mibgroup/utilities/execute.c
@@ -35,19 +35,22 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <ucd-snmp/errormib.h>
 
-#include "util_funcs.h"
 #include "execute.h"
+#include "struct.h"
 
 #define setPerrorstatus(x) snmp_log_perror(x)
 
+#ifdef _MSC_VER
+#define popen  _popen
+#define pclose _pclose
+#endif
+
+
 int
 run_shell_command( char *command, char *input,
                    char *output,  int *out_len)	/* Or realloc style ? */
 {
 #if HAVE_SYSTEM
-    const char *ifname;    /* Filename for input  redirection */
-    const char *ofname;    /* Filename for output redirection */
-    char        shellline[STRMAX];   /* The full command to run */
     int         result;    /* and the return value of the command */
 
     if (!command)
@@ -56,25 +59,31 @@
     DEBUGMSGTL(("run_shell_command", "running %s\n", command));
     DEBUGMSGTL(("run:shell", "running '%s'\n", command));
 
+    result = -1;
+
     /*
-     * Set up the command to run....
+     * Set up the command and run it.
      */
     if (input) {
         FILE       *file;
 
-        ifname = netsnmp_mktemp();
-        if(NULL == ifname)
-            return -1;
-        file = fopen(ifname, "w");
-        if(NULL == file) {
-            snmp_log(LOG_ERR,"couldn't open temporary file %s\n", ifname);
-            unlink(ifname);
-            return -1;
-        }
-	fprintf(file, "%s", input);
-        fclose( file );
-
         if (output) {
+            const char *ifname;
+            const char *ofname;    /* Filename for output redirection */
+            char        shellline[STRMAX];   /* The full command to run */
+
+            ifname = netsnmp_mktemp();
+            if(NULL == ifname)
+                return -1;
+            file = fopen(ifname, "w");
+            if(NULL == file) {
+                snmp_log(LOG_ERR,"couldn't open temporary file %s\n", ifname);
+                unlink(ifname);
+                return -1;
+            }
+            fprintf(file, "%s", input);
+            fclose( file );
+
             ofname = netsnmp_mktemp();
             if(NULL == ofname) {
                 if(ifname)
@@ -83,49 +92,46 @@
             }
             snprintf( shellline, sizeof(shellline), "(%s) < \"%s\" > \"%s\"",
                       command, ifname, ofname );
+            result = system(shellline);
+            /*
+             * If output was requested, then retrieve & return it.
+             * Tidy up, and return the result of the command.
+             */
+            if (out_len && *out_len != 0) {
+                int         fd;        /* For processing any output */
+                int         len = 0;
+                fd = open(ofname, O_RDONLY);
+                if(fd >= 0)
+                    len  = read( fd, output, *out_len-1 );
+                *out_len = len;
+                if (len >= 0) output[len] = 0;
+                else output[0] = 0;
+                if (fd >= 0) close(fd);
+            }
+            unlink(ofname);
+            unlink(ifname);
         } else {
-            ofname = NULL;   /* Just to shut the compiler up! */
-            snprintf( shellline, sizeof(shellline), "(%s) < \"%s\"",
-                      command, ifname );
+            file = popen(command, "w");
+            if (file) {
+                fwrite(input, 1, strlen(input), file);
+                result = pclose(file);
+            }
         }
     } else {
-        ifname = NULL;   /* Just to shut the compiler up! */
         if (output) {
-            ofname = netsnmp_mktemp();
-            if(NULL == ofname)
-                return -1;
-            snprintf( shellline, sizeof(shellline), "(%s) > \"%s\"",
-                      command, ofname );
-        } else {
-            ofname = NULL;   /* Just to shut the compiler up! */
-            snprintf( shellline, sizeof(shellline), "%s",
-                      command );
-        }
-    }
+            FILE* file;
 
-    /*
-     * ... and run it
-     */
-    result = system(shellline);
-
-    /*
-     * If output was requested, then retrieve & return it.
-     * Tidy up, and return the result of the command.
-     */
-    if ( output && out_len && (*out_len != 0) ) {
-        int         fd;        /* For processing any output */
-        int         len = 0;
-        fd = open(ofname, O_RDONLY);
-        if(fd >= 0)
-            len  = read( fd, output, *out_len-1 );
-	*out_len = len;
-	if (len >= 0) output[len] = 0;
-	else output[0] = 0;
-	if (fd >= 0) close(fd);
-        unlink(ofname);
-    }
-    if ( input ) {
-        unlink(ifname);
+            file = popen(command, "r");
+            if (file) {
+                *out_len = fread(output, 1, *out_len - 1, file);
+                if (*out_len >= 0)
+                    output[*out_len] = 0;
+                else
+                    output[0] = 0;
+                result = pclose(file);
+            }
+        } else
+            result = system(command);
     }
 
     return result;
@@ -166,61 +172,6 @@
     return argv;
 }
 
-char **
-xx_tokenize_exec_command( char *command, int *argc )
-{
-    char ctmp[STRMAX];
-    char *cptr1, *cptr2;
-    char **argv;
-    int  count, i;
-
-    if (!command)
-        return NULL;
-
-    memset( ctmp, 0, STRMAX );
-    /*
-     * Make a copy of the command into the 'ctmp' buffer,
-     *    splitting it into separate tokens
-     *    (but still all in the one buffer).
-     */
-    count = 1;
-    for (cptr1 = command, cptr2 = ctmp;
-            cptr1 && *cptr1;
-            cptr1++, cptr2++) {
-        *cptr2 = *cptr1;
-	if (isspace(*cptr1)) {
-            /*
-             * We've reached the end of a token, so increase
-             * the count, and mark this in the command copy.
-             * Then get ready for the next word.
-             */
-            count++;
-            *cptr2 = 0;    /* End of token */
-	    cptr1 = skip_white(cptr1);
-	    if (!cptr1)
-	        break;
-	    cptr1--;	/* Back up one, ready for the next loop */
-	}
-    }
-
-    /*
-     * Now set up the 'argv' array,
-     *   copying tokens out of the 'cptr' buffer
-     */
-    argv = (char **) calloc((count + 2), sizeof(char *));
-    if (argv == NULL)
-        return NULL;
-    cptr2 = ctmp;
-    for (i = 0; i < count; i++) {
-        argv[i] = strdup( cptr2 );
-        cptr2  += strlen( cptr2 )+1;
-    }
-    argv[count] = NULL;
-    *argc       = count;
-        
-    return argv;
-}
-
 
 int
 run_exec_command( char *command, char *input,
diff --git a/agent/mibgroup/utilities/execute.h b/agent/mibgroup/utilities/execute.h
index 05e8270..3c9e84b 100644
--- a/agent/mibgroup/utilities/execute.h
+++ b/agent/mibgroup/utilities/execute.h
@@ -1,7 +1,6 @@
 #ifndef _MIBGROUP_EXECUTE_H
 #define _MIBGROUP_EXECUTE_H
 
-config_require(util_funcs)
 config_belongs_in(agent_module)
 
 int run_shell_command(char *command, char *input,
diff --git a/agent/mibgroup/utilities/iquery.c b/agent/mibgroup/utilities/iquery.c
index de93d61..3beebc6 100644
--- a/agent/mibgroup/utilities/iquery.c
+++ b/agent/mibgroup/utilities/iquery.c
@@ -131,7 +131,7 @@
                            pdu->securityEngineID,
                            pdu->securityEngineIDLen);
     else
-        return netsnmp_iquery_session( pdu->community, 
+        return netsnmp_iquery_session((char *) pdu->community, 
                            pdu->version,
                            pdu->version+1,
                            SNMP_SEC_LEVEL_NOAUTH,
diff --git a/agent/mibgroup/utilities/override.c b/agent/mibgroup/utilities/override.c
index 50cdb51..d50b6e4 100644
--- a/agent/mibgroup/utilities/override.c
+++ b/agent/mibgroup/utilities/override.c
@@ -32,7 +32,7 @@
                  netsnmp_request_info *requests)
 {
 
-    override_data  *data = handler->myvoid;
+    override_data  *data = (override_data*)handler->myvoid;
     void *tmpptr;
 
     if (!data) {
@@ -203,7 +203,7 @@
              * hex 
              */
             thedata->value_len =
-                hex_to_binary2(buf + 2, strlen(buf) - 2,
+                hex_to_binary2((u_char *)(buf + 2), strlen(buf) - 2,
                                (char **) &thedata->value);
         } else {
             thedata->value = strdup(buf);
diff --git a/agent/mibgroup/winExtDLL.c b/agent/mibgroup/winExtDLL.c
index c008576..d78c185 100644
--- a/agent/mibgroup/winExtDLL.c
+++ b/agent/mibgroup/winExtDLL.c
@@ -763,7 +763,6 @@
     winextdll      *ext_dll_info;
     netsnmp_request_info *request;
     UINT            nRequestType;
-    const char     *mode_name;
     int             rc;
 
     netsnmp_assert(ext_dll_view_info);
@@ -782,35 +781,27 @@
 
     switch (reqinfo->mode) {
     case MODE_GET:
-        mode_name = "GET";
         nRequestType = SNMP_EXTENSION_GET;
         netsnmp_assert(!context_info_head);
         break;
     case MODE_GETNEXT:
-        mode_name = "GETNEXT";
         nRequestType = SNMP_EXTENSION_GET_NEXT;
         netsnmp_assert(!context_info_head);
         break;
     case MODE_SET_RESERVE1:
-        mode_name = "SET_RESERVE1";
         nRequestType = SNMP_EXTENSION_SET_TEST;
         break;
     case MODE_SET_RESERVE2:
-        mode_name = "SET_RESERVE2";
         return SNMP_ERR_NOERROR;
     case MODE_SET_ACTION:
-        mode_name = "SET_ACTION";
         return SNMP_ERR_NOERROR;
     case MODE_SET_UNDO:
-        mode_name = "SET_UNDO";
         nRequestType = SNMP_EXTENSION_SET_UNDO;
         break;
     case MODE_SET_COMMIT:
-        mode_name = "SET_COMMIT";
         nRequestType = SNMP_EXTENSION_SET_COMMIT;
         break;
     case MODE_SET_FREE:
-        mode_name = "SET_FREE";
         nRequestType = SNMP_EXTENSION_SET_CLEANUP;
         break;
     default:
diff --git a/agent/mibgroup/winExtDLL.h b/agent/mibgroup/winExtDLL.h
index a10b21c..c90f669 100644
--- a/agent/mibgroup/winExtDLL.h
+++ b/agent/mibgroup/winExtDLL.h
@@ -17,9 +17,8 @@
      *  and writeable object methods ('WriteMethod').
      */
      void     init_winExtDLL(void);
-
-     Netsnmp_Node_Handler var_winExtDLL;
-     
+     void     shutdown_winExtDLL(void);
+   
 #ifdef __cplusplus
 }
 #endif
diff --git a/agent/object_monitor.c b/agent/object_monitor.c
index c8493e4..2ab8c9b 100644
--- a/agent/object_monitor.c
+++ b/agent/object_monitor.c
@@ -25,7 +25,7 @@
 
 #if ! defined TRUE
 #  define TRUE 1
-#elif TRUE != 1
+#elsif TRUE != 1
 error "TRUE != 1"
 #endif
 /**************************************************************************
diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c
index b7761b0..0946423 100644
--- a/agent/snmp_agent.c
+++ b/agent/snmp_agent.c
@@ -59,11 +59,7 @@
 #include <string.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -79,9 +75,6 @@
 #include <netinet/in.h>
 #endif
 #include <errno.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #define SNMP_NEED_REQUEST_LIST
 #include <net-snmp/net-snmp-includes.h>
@@ -382,7 +375,7 @@
                 /*
                  * I don't think this case should ever happen. Please email
                  * the net-snmp-coders@lists.sourceforge.net if you have
-                 * a test case that hits this assert. -- rstory
+                 * a test case that hits this condition. -- rstory
                  */
 		int i;
                 netsnmp_assert(NULL == asp->requests); /* see note above */
@@ -405,7 +398,7 @@
 	    } else {
                 /*
                  * when would we not have saved variables? someone
-                 * let me know if they hit this assert. -- rstory
+                 * let me know if they hit this condition. -- rstory
                  */
                 netsnmp_assert(NULL != ptr->saved_vars);
             }
@@ -679,6 +672,11 @@
         }                       /* endif -- count>0 */
 
     /*
+     * see if persistent store needs to be saved
+     */
+    snmp_store_if_needed();
+
+    /*
      * Run requested alarms.  
      */
     run_alarms();
@@ -1077,6 +1075,7 @@
     agent_nsap     *a = NULL, *n = NULL, **prevNext = &agent_nsap_list;
     int             handle = 0;
     void           *isp = NULL;
+    int             rc;
 
     if (t == NULL) {
         return -1;
@@ -1107,6 +1106,27 @@
 				  NETSNMP_DS_AGENT_FLAGS);
     s->isAuthoritative = SNMP_SESS_AUTHORITATIVE;
 
+    /* Optional supplimental transport configuration information and
+       final call to actually open the transport */
+    if ((rc = netsnmp_sess_config_transport(s->transport_configuration, t))
+        != SNMPERR_SUCCESS) {
+        SNMP_FREE(s);
+        SNMP_FREE(n);
+        return -1;
+    }
+
+
+    if (t->f_open)
+        t = t->f_open(t);
+
+    if (NULL == t) {
+        SNMP_FREE(s);
+        SNMP_FREE(n);
+        return -1;
+    }
+
+    t->flags |= NETSNMP_TRANSPORT_FLAG_OPENED;
+
     sp = snmp_add(s, t, netsnmp_agent_check_packet,
                   netsnmp_agent_check_parse);
     if (sp == NULL) {
@@ -2096,7 +2116,7 @@
                 asp->treecache_len =
                     (asp->treecache_len + CACHE_GROW_SIZE);
                 asp->treecache =
-                    realloc(asp->treecache,
+                    (netsnmp_tree_cache *)realloc(asp->treecache,
                             sizeof(netsnmp_tree_cache) *
                             asp->treecache_len);
                 if (asp->treecache == NULL)
@@ -2224,7 +2244,7 @@
     if (asp->treecache == NULL && asp->treecache_len == 0) {
         asp->treecache_len = SNMP_MAX(1 + asp->vbcount / 4, 16);
         asp->treecache =
-            calloc(asp->treecache_len, sizeof(netsnmp_tree_cache));
+            (netsnmp_tree_cache *)calloc(asp->treecache_len, sizeof(netsnmp_tree_cache));
         if (asp->treecache == NULL)
             return SNMP_ERR_GENERR;
     }
@@ -2265,8 +2285,8 @@
              * result vector
              */
             if (maxresponses < 0 ||
-                maxresponses > INT_MAX / sizeof(struct varbind_list *))
-                maxresponses = INT_MAX / sizeof(struct varbind_list *);
+                maxresponses > (int)(INT_MAX / sizeof(struct varbind_list *)))
+                maxresponses = (int)(INT_MAX / sizeof(struct varbind_list *));
 
             /* ensure that the maximum number of repetitions will fit in the
              * result vector
@@ -3466,6 +3486,10 @@
             return SNMPERR_VALUE;
              */
 
+        case SNMP_MSG_INTERNAL_SET_RESERVE1:
+            request->status = SNMP_ERR_NOCREATION;
+            break;
+
         default:
             request->status = SNMP_ERR_NOSUCHNAME;      /* WWW: correct? */
             break;
@@ -3569,19 +3593,21 @@
     return result;
 }
 
-extern struct timeval starttime;
-
-                /*
-                 * Return the value of 'sysUpTime' at the given marker 
-                 */
+/**
+ * Return the value of 'sysUpTime' at the given marker
+ *
+ * @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.
+ */
 u_long
 netsnmp_marker_uptime(marker_t pm)
 {
     u_long          res;
-    marker_t        start = (marker_t) & starttime;
+    const_marker_t  start = netsnmp_get_agent_starttime();
 
     res = uatime_hdiff(start, pm);
-    return res;                 /* atime_diff works in msec, not csec */
+    return res;
 }
 
                         /*
@@ -3593,6 +3619,49 @@
     return netsnmp_marker_uptime((marker_t) tv);
 }
 
+
+struct timeval  starttime;
+
+/**
+ * Return a pointer to the variable in which the Net-SNMP start time has
+ * been stored.
+ */
+const_marker_t        
+netsnmp_get_agent_starttime(void)
+{
+    return &starttime;
+}
+
+/**
+ * Report the time that elapsed since the agent start time in hundredths of a
+ * second.
+ *
+ * @see See also netsnmp_set_agent_starttime().
+ */
+uint64_t
+netsnmp_get_agent_runtime(void)
+{
+    struct timeval now, delta;
+
+    gettimeofday(&now, NULL);
+    NETSNMP_TIMERSUB(&now, &starttime, &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).
+ */
+void            
+netsnmp_set_agent_starttime(marker_t s)
+{
+    if (s)
+        starttime = *(struct timeval*)s;
+    else
+        gettimeofday(&starttime, NULL);
+}
+
+
                 /*
                  * Return the current value of 'sysUpTime' 
                  */
@@ -3605,6 +3674,18 @@
     return netsnmp_timeval_uptime(&now);
 }
 
+void
+netsnmp_set_agent_uptime(u_long hsec)
+{
+    struct timeval  now;
+    struct timeval  new_uptime;
+
+    gettimeofday(&now, NULL);
+    new_uptime.tv_sec = hsec / 100;
+    new_uptime.tv_usec = (hsec - new_uptime.tv_sec * 100) * 10000L;
+    NETSNMP_TIMERSUB(&now, &new_uptime, &starttime);
+}
+
 
 /*************************************************************************
  *
diff --git a/agent/snmp_perl.c b/agent/snmp_perl.c
index 7caa335..3f0a216 100644
--- a/agent/snmp_perl.c
+++ b/agent/snmp_perl.c
@@ -29,7 +29,10 @@
 void
 maybe_source_perl_startup(void)
 {
-    const char     *embedargs[] = { "", "" };
+    int             argc;
+    char          **argv;
+    char          **env;
+    char           *embedargs[] = { NULL, NULL };
     const char     *perl_init_file = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
 							   NETSNMP_DS_AGENT_PERL_INIT_FILE);
     char            init_file[SNMP_MAXBUF];
@@ -40,14 +43,19 @@
         return;
     have_done_init = 1;
 
+    embedargs[0] = strdup("");
     if (!perl_init_file) {
         snprintf(init_file, sizeof(init_file) - 1,
                  "%s/%s", SNMPSHAREPATH, "snmp_perl.pl");
         perl_init_file = init_file;
     }
-    embedargs[1] = perl_init_file;
+    embedargs[1] = strdup(perl_init_file);
 
     DEBUGMSGTL(("perl", "initializing perl (%s)\n", embedargs[1]));
+    argc = 0;
+    argv = NULL;
+    env = NULL;
+    PERL_SYS_INIT3(&argc, &argv, &env);
     my_perl = perl_alloc();
     if (!my_perl)
         goto bail_out;
@@ -58,17 +66,22 @@
     PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
 #endif
 
-    if (perl_parse(my_perl, xs_init, 2, NETSNMP_REMOVE_CONST(char **, embedargs), NULL))
+    if (perl_parse(my_perl, xs_init, 2, embedargs, NULL))
         goto bail_out;
 
     if (perl_run(my_perl))
         goto bail_out;
 
+    free(embedargs[0]);
+    free(embedargs[1]);
+
     DEBUGMSGTL(("perl", "done initializing perl\n"));
 
     return;
 
   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);
diff --git a/agent/snmp_vars.c b/agent/snmp_vars.c
index d8ec51d..a4ea379 100644
--- a/agent/snmp_vars.c
+++ b/agent/snmp_vars.c
@@ -77,11 +77,7 @@
 #include <errno.h>
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -90,9 +86,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-# include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 # include <sys/socket.h>
 #endif
@@ -154,6 +147,12 @@
 #include "agent_module_includes.h"
 #include "net-snmp/library/container.h"
 
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+#include <openssl/ssl.h>
+#include <openssl/x509v3.h>
+#include <net-snmp/library/cert_util.h>
+#endif
+
 #include "snmp_perl.h"
 
 #ifndef  MIN
@@ -237,8 +236,6 @@
 u_char          return_buf[256];        /* nee 64 */
 #endif
 
-struct timeval  starttime;
-
 int             callback_master_num = -1;
 
 #ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
@@ -286,9 +283,7 @@
     /*
      * get current time (ie, the time the agent started) 
      */
-    gettimeofday(&starttime, NULL);
-    starttime.tv_sec--;
-    starttime.tv_usec += 1000000L;
+    netsnmp_set_agent_starttime(NULL);
 
     /*
      * we handle alarm signals ourselves in the select loop 
@@ -320,10 +315,12 @@
      * initialize agentx configs
      */
     agentx_config_init();
+#if defined(USING_AGENTX_SUBAGENT_MODULE)
     if(netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                               NETSNMP_DS_AGENT_ROLE) == SUB_AGENT)
         subagent_init();
 #endif
+#endif
 
     /*
      * Register configuration tokens from transport modules.  
@@ -342,6 +339,11 @@
     init_perl();
 #endif
 
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+    /** init secname mapping */
+    netsnmp_certs_agent_init();
+#endif
+
 #ifdef USING_AGENTX_SUBAGENT_MODULE
     /*
      * don't init agent modules for a sub-agent
@@ -375,6 +377,9 @@
     clear_callback();
     clear_user_list();
     netsnmp_addrcache_destroy();
+#ifdef NETSNMP_CAN_USE_NLIST
+    free_kmem();
+#endif
 
     done_init_agent = 0;
 }
diff --git a/agent/snmpd.c b/agent/snmpd.c
index f0a6efe..b3cfe32 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/types.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -61,11 +62,7 @@
 #include <arpa/inet.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -79,8 +76,6 @@
 #endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
-#elif HAVE_WINSOCK_H
-#include <winsock.h>
 #endif
 #if HAVE_NET_IF_H
 #include <net/if.h>
@@ -261,81 +256,92 @@
 usage(char *prog)
 {
 #ifdef WIN32SERVICE
-    printf("\nUsage:  %s [-register] [-quiet] [OPTIONS] [LISTENING ADDRESSES]",
-           prog);
-    printf("\n        %s [-unregister] [-quiet]", prog);
+    printf("\nUsage:  %s [-register] [-quiet] [OPTIONS] [LISTENING ADDRESSES]"
+           "\n        %s [-unregister] [-quiet]", prog, prog);
 #else
     printf("\nUsage:  %s [OPTIONS] [LISTENING ADDRESSES]", prog);
 #endif
-    printf("\n");
-    printf("\n\tVersion:  %s\n", netsnmp_get_version());
-    printf("\tWeb:      http://www.net-snmp.org/\n");
-    printf("\tEmail:    net-snmp-coders@lists.sourceforge.net\n");
-    printf("\n  -a\t\t\tlog addresses\n");
-    printf("  -A\t\t\tappend to the logfile rather than truncating it\n");
-    printf("  -c FILE[,...]\t\tread FILE(s) as configuration file(s)\n");
-    printf("  -C\t\t\tdo not read the default configuration files\n");
-    printf("  -d\t\t\tdump sent and received SNMP packets\n");
-    printf("  -D[TOKEN[,...]]\tturn on debugging output for the given TOKEN(s)\n"
+    printf("\n"
+           "\n\tVersion:  %s\n%s"
+           "\t\t\t  (config search path: %s)\n%s%s",
+           netsnmp_get_version(),
+           "\tWeb:      http://www.net-snmp.org/\n"
+           "\tEmail:    net-snmp-coders@lists.sourceforge.net\n"
+           "\n  -a\t\t\tlog addresses\n"
+           "  -A\t\t\tappend to the logfile rather than truncating it\n"
+           "  -c FILE[,...]\t\tread FILE(s) as configuration file(s)\n"
+           "  -C\t\t\tdo not read the default configuration files\n",
+           get_configuration_directory(),
+           "  -d\t\t\tdump sent and received SNMP packets\n"
+#ifndef NETSNMP_DISABLE_DEBUGGING
+           "  -D[TOKEN[,...]]\tturn on debugging output for the given TOKEN(s)\n"
 	   "\t\t\t  (try ALL for extremely verbose output)\n"
-	   "\t\t\t  Don't put space(s) between -D and TOKEN(s).\n");
-    printf("  -f\t\t\tdo not fork from the shell\n");
-#if HAVE_UNISTD_H
-    printf("  -g GID\t\tchange to this numeric gid after opening\n"
-	   "\t\t\t  transport endpoints\n");
+	   "\t\t\t  Don't put space(s) between -D and TOKEN(s).\n"
 #endif
-    printf("  -h, --help\t\tdisplay this usage message\n");
-    printf("  -H\t\t\tdisplay configuration file directives understood\n");
-    printf("  -I [-]INITLIST\tlist of mib modules to initialize (or not)\n");
-    printf("\t\t\t  (run snmpd with -Dmib_init for a list)\n");
-    printf("  -L <LOGOPTS>\t\ttoggle options controlling where to log to\n");
+           "  -f\t\t\tdo not fork from the shell\n",
+#if HAVE_UNISTD_H
+           "  -g GID\t\tchange to this numeric gid after opening\n"
+	   "\t\t\t  transport endpoints\n"
+#endif
+           "  -h, --help\t\tdisplay this usage message\n"
+           "  -H\t\t\tdisplay configuration file directives understood\n"
+           "  -I [-]INITLIST\tlist of mib modules to initialize (or not)\n"
+           "\t\t\t  (run snmpd with -Dmib_init for a list)\n"
+           "  -L <LOGOPTS>\t\ttoggle options controlling where to log to\n");
     snmp_log_options_usage("\t", stdout);
-    printf("  -m MIBLIST\t\tuse MIBLIST instead of the default MIB list\n");
-    printf("  -M DIRLIST\t\tuse DIRLIST as the list of locations\n\t\t\t  to look for MIBs\n");
-    printf("  -p FILE\t\tstore process id in FILE\n");
-    printf("  -q\t\t\tprint information in a more parsable format\n");
-    printf("  -r\t\t\tdo not exit if files only accessible to root\n"
-	   "\t\t\t  cannot be opened\n");
+    printf("  -m MIBLIST\t\tuse MIBLIST instead of the default MIB list\n"
+           "  -M DIRLIST\t\tuse DIRLIST as the list of locations to look for MIBs\n"
+           "\t\t\t  (default %s)\n%s%s",
+#ifndef NETSNMP_DISABLE_MIB_LOADING
+           netsnmp_get_mib_directory(),
+#else
+           "MIBs not loaded",
+#endif
+           "  -p FILE\t\tstore process id in FILE\n"
+           "  -q\t\t\tprint information in a more parsable format\n"
+           "  -r\t\t\tdo not exit if files only accessible to root\n"
+	   "\t\t\t  cannot be opened\n"
 #ifdef WIN32SERVICE
-    printf("  -register\t\tregister as a Windows service\n");
-    printf("  \t\t\t  (followed by -quiet to prevent message popups)\n");
-    printf("  \t\t\t  (followed by the startup parameter list)\n");
-    printf("  \t\t\t  Note that some parameters are not relevant when running as a service\n");
+           "  -register\t\tregister as a Windows service\n"
+           "  \t\t\t  (followed by -quiet to prevent message popups)\n"
+           "  \t\t\t  (followed by the startup parameter list)\n"
+           "  \t\t\t  Note that some parameters are not relevant when running as a service\n"
 #endif
 #if HAVE_UNISTD_H
-    printf("  -u UID\t\tchange to this uid (numeric or textual) after\n"
-	   "\t\t\t  opening transport endpoints\n");
+           "  -u UID\t\tchange to this uid (numeric or textual) after\n"
+	   "\t\t\t  opening transport endpoints\n"
 #endif
 #ifdef WIN32SERVICE
-    printf("  -unregister\t\tunregister as a Windows service\n");
-    printf("  \t\t\t  (followed -quiet to prevent message popups)\n");
+           "  -unregister\t\tunregister as a Windows service\n"
+           "  \t\t\t  (followed -quiet to prevent message popups)\n"
 #endif
-    printf("  -v, --version\t\tdisplay version information\n");
-    printf("  -V\t\t\tverbose display\n");
+           "  -v, --version\t\tdisplay version information\n"
+           "  -V\t\t\tverbose display\n"
 #if defined(USING_AGENTX_SUBAGENT_MODULE)|| defined(USING_AGENTX_MASTER_MODULE)
-    printf("  -x ADDRESS\t\tuse ADDRESS as AgentX address\n");
+           "  -x ADDRESS\t\tuse ADDRESS as AgentX address\n"
 #endif
 #ifdef USING_AGENTX_SUBAGENT_MODULE
-    printf("  -X\t\t\trun as an AgentX subagent rather than as an\n"
-	   "\t\t\t  SNMP master agent\n");
+           "  -X\t\t\trun as an AgentX subagent rather than as an\n"
+	   "\t\t\t  SNMP master agent\n"
 #endif
-
-    printf("\nDeprecated options:\n");
-    printf("  -l FILE\t\tuse -Lf <FILE> instead\n");
-    printf("  -P\t\t\tuse -p instead\n");
-    printf("  -s\t\t\tuse -Lsd instead\n");
-    printf("  -S d|i|0-7\t\tuse -Ls <facility> instead\n");
-
-    printf("\n");
+           ,
+           "\nDeprecated options:\n"
+           "  -l FILE\t\tuse -Lf <FILE> instead\n"
+           "  -P\t\t\tuse -p instead\n"
+           "  -s\t\t\tuse -Lsd instead\n"
+           "  -S d|i|0-7\t\tuse -Ls <facility> instead\n"
+           "\n"
+           );
     exit(1);
 }
 
 static void
 version(void)
 {
-    printf("\nNET-SNMP version:  %s\n", netsnmp_get_version());
-    printf("Web:               http://www.net-snmp.org/\n");
-    printf("Email:             net-snmp-coders@lists.sourceforge.net\n\n");
+    printf("\nNET-SNMP version:  %s\n"
+           "Web:               http://www.net-snmp.org/\n"
+           "Email:             net-snmp-coders@lists.sourceforge.net\n\n",
+           netsnmp_get_version());
     exit(0);
 }
 
@@ -422,7 +428,6 @@
     int             arg, i, ret;
     int             dont_fork = 0, do_help = 0;
     int             log_set = 0;
-    int             uid = 0, gid = 0;
     int             agent_mode = -1;
     char           *cptr, **argvptr;
     char           *pid_file = NULL;
@@ -434,9 +439,6 @@
 #if HAVE_GETPWNAM && HAVE_PWD_H
     struct passwd  *info;
 #endif
-#if HAVE_UNISTD_H
-    const char     *persistent_dir;
-#endif
 
 #ifndef WIN32
     /*
@@ -570,8 +572,13 @@
             break;
 
         case 'D':
+#ifdef NETSNMP_DISABLE_DEBUGGING
+            fprintf(stderr, "Debugging not configured\n");
+            exit(1);
+#else
             debug_register_tokens(optarg);
             snmp_set_do_debugging(1);
+#endif
             break;
 
         case 'f':
@@ -842,7 +849,7 @@
             char *c, *astring;
             if ((c = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
 					   NETSNMP_DS_AGENT_PORTS))) {
-                astring = malloc(strlen(c) + 2 + strlen(argv[i]));
+                astring = (char*)malloc(strlen(c) + 2 + strlen(argv[i]));
                 if (astring == NULL) {
                     fprintf(stderr, "malloc failure processing argv[%d]\n", i);
                     exit(1);
@@ -969,7 +976,11 @@
     }
 #endif
 
-#if HAVE_UNISTD_H
+#if defined(HAVE_UNISTD_H) && (defined(HAVE_CHOWN) || defined(HAVE_SETGID) || defined(HAVE_SETUID))
+    {
+    const char     *persistent_dir;
+    int             uid, gid;
+
     persistent_dir = get_persistent_directory();
     mkdirhier( persistent_dir, NETSNMP_AGENT_DIRECTORY_MODE, 0 );
    
@@ -978,8 +989,10 @@
     gid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
 			     NETSNMP_DS_AGENT_GROUPID);
     
+#ifdef HAVE_CHOWN
     if ( uid != 0 || gid != 0 )
         chown( persistent_dir, uid, gid );
+#endif
 
 #ifdef HAVE_SETGID
     if ((gid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
@@ -1009,7 +1022,7 @@
         info = getpwuid(uid);
         if (info) {
             DEBUGMSGTL(("snmpd/main", "Supplementary groups for %s.\n", info->pw_name));
-            if (initgroups(info->pw_name, (gid != 0 ? gid : info->pw_gid)) == -1) {
+            if (initgroups(info->pw_name, (gid != 0 ? (gid_t)gid : info->pw_gid)) == -1) {
                 snmp_log_perror("initgroups failed");
                 if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                             NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
@@ -1028,6 +1041,7 @@
         }
     }
 #endif
+    }
 #endif
 
     /*
@@ -1127,7 +1141,7 @@
  *	0	On success.
  *	-1	System error.
  *
- * Infinite while-loop which monitors incoming messges for the agent.
+ * Infinite while-loop which monitors incoming messages for the agent.
  * Invoke the established message handlers for incoming messages on a per
  * port basis.  Handle timeouts.
  */
@@ -1227,7 +1241,8 @@
                     numfds, tvp));
         if(tvp)
             DEBUGMSGTL(("timer", "tvp %ld.%ld\n", tvp->tv_sec, tvp->tv_usec));
-        count = select(numfds, readfds.lfs_setptr, writefds.lfs_setptr, exceptfds.lfs_setptr, tvp);
+        count = net_snmp_large_fd_set_select(numfds, &readfds, &writefds, &exceptfds,
+				      tvp);
         DEBUGMSGTL(("snmpd/select", "returned, count = %d\n", count));
 
         if (count > 0) {
@@ -1288,6 +1303,11 @@
             }                   /* endif -- count>0 */
 
         /*
+         * see if persistent store needs to be saved
+         */
+        snmp_store_if_needed();
+
+        /*
          * run requested alarms 
          */
         run_alarms();
diff --git a/apps/Makefile.depend b/apps/Makefile.depend
index 61a7a69..985c2c9 100644
--- a/apps/Makefile.depend
+++ b/apps/Makefile.depend
@@ -1,19 +1,133 @@
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
+./agentxtrap.lo: ../include/net-snmp/net-snmp-config.h
+./agentxtrap.lo: ../include/net-snmp/system/linux.h
+./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-includes.h
+./agentxtrap.lo: ../include/net-snmp/definitions.h
+./agentxtrap.lo: ../include/net-snmp/types.h
+./agentxtrap.lo: ../include/net-snmp/library/oid.h
+./agentxtrap.lo: ../include/net-snmp/library/types.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_api.h
+./agentxtrap.lo: ../include/net-snmp/varbind_api.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_client.h
+./agentxtrap.lo: ../include/net-snmp/pdu_api.h
+./agentxtrap.lo: ../include/net-snmp/library/asn1.h
+./agentxtrap.lo: ../include/net-snmp/output_api.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_debug.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_logging.h
+./agentxtrap.lo: ../include/net-snmp/session_api.h
+./agentxtrap.lo: ../include/net-snmp/library/callback.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/ucd_compat.h
+./agentxtrap.lo: ../include/net-snmp/library/mib.h
+./agentxtrap.lo: ../include/net-snmp/mib_api.h
+./agentxtrap.lo: ../include/net-snmp/library/parse.h
+./agentxtrap.lo: ../include/net-snmp/library/oid_stash.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_impl.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp-tc.h
+./agentxtrap.lo: ../include/net-snmp/library/getopt.h
+./agentxtrap.lo: ../include/net-snmp/utilities.h
+./agentxtrap.lo: ../include/net-snmp/library/system.h
+./agentxtrap.lo: ../include/net-snmp/library/tools.h
+./agentxtrap.lo: ../include/net-snmp/library/int64.h
+./agentxtrap.lo: ../include/net-snmp/library/mt_support.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_alarm.h
+./agentxtrap.lo: ../include/net-snmp/library/data_list.h
+./agentxtrap.lo: ../include/net-snmp/library/check_varbind.h
+./agentxtrap.lo: ../include/net-snmp/library/container.h
+./agentxtrap.lo: ../include/net-snmp/library/factory.h
+./agentxtrap.lo: ../include/net-snmp/library/container_binary_array.h
+./agentxtrap.lo: ../include/net-snmp/library/container_list_ssll.h
+./agentxtrap.lo: ../include/net-snmp/library/container_iterator.h
+./agentxtrap.lo: ../include/net-snmp/library/container.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_assert.h
+./agentxtrap.lo: ../include/net-snmp/version.h
+./agentxtrap.lo: ../include/net-snmp/config_api.h
+./agentxtrap.lo: ../include/net-snmp/library/read_config.h
+./agentxtrap.lo: ../include/net-snmp/library/default_store.h
+./agentxtrap.lo: ../include/net-snmp/net-snmp-config.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_parse_args.h
+./agentxtrap.lo: ../include/net-snmp/library/snmp_enum.h
+./agentxtrap.lo: ../include/net-snmp/library/vacm.h
+./agentxtrap.lo: ../include/net-snmp/snmpv3_api.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpv3.h
+./agentxtrap.lo: ../include/net-snmp/library/transform_oids.h
+./agentxtrap.lo: ../include/net-snmp/library/keytools.h
+./agentxtrap.lo: ../include/net-snmp/library/scapi.h
+./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/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
 ./encode_keychange.lo: ../include/net-snmp/net-snmp-config.h
-./encode_keychange.lo: ../include/net-snmp/system/linux.h
-./encode_keychange.lo: ../include/net-snmp/system/sysv.h
-./encode_keychange.lo: ../include/net-snmp/system/generic.h
-./encode_keychange.lo: ../include/net-snmp/machine/generic.h
 ./encode_keychange.lo: ../include/net-snmp/net-snmp-includes.h
 ./encode_keychange.lo: ../include/net-snmp/definitions.h
 ./encode_keychange.lo: ../include/net-snmp/types.h
+./encode_keychange.lo: ../include/net-snmp/library/oid.h
 ./encode_keychange.lo: ../include/net-snmp/library/types.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_api.h
 ./encode_keychange.lo: ../include/net-snmp/varbind_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_client.h
 ./encode_keychange.lo: ../include/net-snmp/pdu_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/asn1.h
+./encode_keychange.lo: ../include/net-snmp/output_api.h
+./encode_keychange.lo: ../include/net-snmp/library/snmp_debug.h
+./encode_keychange.lo: ../include/net-snmp/library/snmp_logging.h
 ./encode_keychange.lo: ../include/net-snmp/session_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/callback.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_transport.h
@@ -21,8 +135,12 @@
 ./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/snmpUDPIPv6Domain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./encode_keychange.lo: ../include/net-snmp/library/ucd_compat.h
@@ -44,7 +162,6 @@
 ./encode_keychange.lo: ../include/net-snmp/library/check_varbind.h
 ./encode_keychange.lo: ../include/net-snmp/library/container.h
 ./encode_keychange.lo: ../include/net-snmp/library/factory.h
-./encode_keychange.lo: ../include/net-snmp/library/snmp_logging.h
 ./encode_keychange.lo: ../include/net-snmp/library/container_binary_array.h
 ./encode_keychange.lo: ../include/net-snmp/library/container_list_ssll.h
 ./encode_keychange.lo: ../include/net-snmp/library/container_iterator.h
@@ -57,8 +174,6 @@
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_enum.h
 ./encode_keychange.lo: ../include/net-snmp/library/vacm.h
-./encode_keychange.lo: ../include/net-snmp/output_api.h
-./encode_keychange.lo: ../include/net-snmp/library/snmp_debug.h
 ./encode_keychange.lo: ../include/net-snmp/snmpv3_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpv3.h
 ./encode_keychange.lo: ../include/net-snmp/library/transform_oids.h
@@ -69,12 +184,8 @@
 ./encode_keychange.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpbulkget.lo: ../include/net-snmp/system/linux.h
-./snmpbulkget.lo: ../include/net-snmp/system/sysv.h
-./snmpbulkget.lo: ../include/net-snmp/system/generic.h
-./snmpbulkget.lo: ../include/net-snmp/machine/generic.h
-./snmpbulkget.lo: ../include/net-snmp/utilities.h
-./snmpbulkget.lo: ../include/net-snmp/types.h
+./snmpbulkget.lo: ../include/net-snmp/utilities.h ../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
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_api.h
@@ -82,6 +193,9 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpbulkget.lo: ../include/net-snmp/pdu_api.h
 ./snmpbulkget.lo: ../include/net-snmp/library/asn1.h
+./snmpbulkget.lo: ../include/net-snmp/output_api.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpbulkget.lo: ../include/net-snmp/session_api.h
 ./snmpbulkget.lo: ../include/net-snmp/library/callback.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_transport.h
@@ -89,8 +203,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpbulkget.lo: ../include/net-snmp/library/ucd_compat.h
@@ -110,7 +228,6 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpbulkget.lo: ../include/net-snmp/library/container.h
 ./snmpbulkget.lo: ../include/net-snmp/library/factory.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpbulkget.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpbulkget.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpbulkget.lo: ../include/net-snmp/library/container_iterator.h
@@ -125,8 +242,6 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpbulkget.lo: ../include/net-snmp/library/vacm.h
-./snmpbulkget.lo: ../include/net-snmp/output_api.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpbulkget.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpbulkget.lo: ../include/net-snmp/library/transform_oids.h
@@ -137,19 +252,19 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-config.h
-./snmpbulkwalk.lo: ../include/net-snmp/system/linux.h
-./snmpbulkwalk.lo: ../include/net-snmp/system/sysv.h
-./snmpbulkwalk.lo: ../include/net-snmp/system/generic.h
-./snmpbulkwalk.lo: ../include/net-snmp/machine/generic.h
 ./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpbulkwalk.lo: ../include/net-snmp/definitions.h
 ./snmpbulkwalk.lo: ../include/net-snmp/types.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/oid.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/types.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/varbind_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpbulkwalk.lo: ../include/net-snmp/pdu_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/asn1.h
+./snmpbulkwalk.lo: ../include/net-snmp/output_api.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpbulkwalk.lo: ../include/net-snmp/session_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/callback.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_transport.h
@@ -157,8 +272,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/ucd_compat.h
@@ -180,7 +299,6 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/container.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/factory.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/container_iterator.h
@@ -193,8 +311,6 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/vacm.h
-./snmpbulkwalk.lo: ../include/net-snmp/output_api.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpbulkwalk.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/transform_oids.h
@@ -205,18 +321,18 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdelta.lo: ../include/net-snmp/net-snmp-config.h
-./snmpdelta.lo: ../include/net-snmp/system/linux.h
-./snmpdelta.lo: ../include/net-snmp/system/sysv.h
-./snmpdelta.lo: ../include/net-snmp/system/generic.h
-./snmpdelta.lo: ../include/net-snmp/machine/generic.h
 ./snmpdelta.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpdelta.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpdelta.lo: ../include/net-snmp/library/oid.h
 ./snmpdelta.lo: ../include/net-snmp/library/types.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpdelta.lo: ../include/net-snmp/varbind_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpdelta.lo: ../include/net-snmp/pdu_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/asn1.h
+./snmpdelta.lo: ../include/net-snmp/output_api.h
+./snmpdelta.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpdelta.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpdelta.lo: ../include/net-snmp/session_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/callback.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_transport.h
@@ -224,8 +340,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpdelta.lo: ../include/net-snmp/library/ucd_compat.h
@@ -247,7 +367,6 @@
 ./snmpdelta.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpdelta.lo: ../include/net-snmp/library/container.h
 ./snmpdelta.lo: ../include/net-snmp/library/factory.h
-./snmpdelta.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpdelta.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpdelta.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpdelta.lo: ../include/net-snmp/library/container_iterator.h
@@ -260,8 +379,6 @@
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpdelta.lo: ../include/net-snmp/library/vacm.h
-./snmpdelta.lo: ../include/net-snmp/output_api.h
-./snmpdelta.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpdelta.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpdelta.lo: ../include/net-snmp/library/transform_oids.h
@@ -272,17 +389,18 @@
 ./snmpdelta.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdf.lo: ../include/net-snmp/net-snmp-config.h
-./snmpdf.lo: ../include/net-snmp/system/linux.h
-./snmpdf.lo: ../include/net-snmp/system/sysv.h
-./snmpdf.lo: ../include/net-snmp/system/generic.h
-./snmpdf.lo: ../include/net-snmp/machine/generic.h
 ./snmpdf.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpdf.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpdf.lo: ../include/net-snmp/definitions.h
+./snmpdf.lo: ../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
 ./snmpdf.lo: ../include/net-snmp/varbind_api.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpdf.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./snmpdf.lo: ../include/net-snmp/output_api.h
+./snmpdf.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpdf.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpdf.lo: ../include/net-snmp/session_api.h
 ./snmpdf.lo: ../include/net-snmp/library/callback.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_transport.h
@@ -290,8 +408,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpdf.lo: ../include/net-snmp/library/ucd_compat.h
@@ -312,7 +434,6 @@
 ./snmpdf.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpdf.lo: ../include/net-snmp/library/container.h
 ./snmpdf.lo: ../include/net-snmp/library/factory.h
-./snmpdf.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpdf.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpdf.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpdf.lo: ../include/net-snmp/library/container_iterator.h
@@ -324,8 +445,6 @@
 ./snmpdf.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpdf.lo: ../include/net-snmp/library/vacm.h
-./snmpdf.lo: ../include/net-snmp/output_api.h
-./snmpdf.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpdf.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpdf.lo: ../include/net-snmp/library/transform_oids.h
@@ -336,11 +455,8 @@
 ./snmpdf.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpget.lo: ../include/net-snmp/system/linux.h
-./snmpget.lo: ../include/net-snmp/system/sysv.h
-./snmpget.lo: ../include/net-snmp/system/generic.h
-./snmpget.lo: ../include/net-snmp/machine/generic.h
 ./snmpget.lo: ../include/net-snmp/utilities.h ../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
 ./snmpget.lo: ../include/net-snmp/library/snmp_api.h
@@ -348,6 +464,9 @@
 ./snmpget.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpget.lo: ../include/net-snmp/pdu_api.h
 ./snmpget.lo: ../include/net-snmp/library/asn1.h
+./snmpget.lo: ../include/net-snmp/output_api.h
+./snmpget.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpget.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpget.lo: ../include/net-snmp/session_api.h
 ./snmpget.lo: ../include/net-snmp/library/callback.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_transport.h
@@ -355,8 +474,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpget.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpget.lo: ../include/net-snmp/library/ucd_compat.h
@@ -375,7 +498,6 @@
 ./snmpget.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpget.lo: ../include/net-snmp/library/container.h
 ./snmpget.lo: ../include/net-snmp/library/factory.h
-./snmpget.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpget.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpget.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpget.lo: ../include/net-snmp/library/container_iterator.h
@@ -390,8 +512,6 @@
 ./snmpget.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpget.lo: ../include/net-snmp/library/vacm.h
-./snmpget.lo: ../include/net-snmp/output_api.h
-./snmpget.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpget.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpget.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpget.lo: ../include/net-snmp/library/transform_oids.h
@@ -402,19 +522,19 @@
 ./snmpget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpgetnext.lo: ../include/net-snmp/net-snmp-config.h
-./snmpgetnext.lo: ../include/net-snmp/system/linux.h
-./snmpgetnext.lo: ../include/net-snmp/system/sysv.h
-./snmpgetnext.lo: ../include/net-snmp/system/generic.h
-./snmpgetnext.lo: ../include/net-snmp/machine/generic.h
 ./snmpgetnext.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpgetnext.lo: ../include/net-snmp/definitions.h
 ./snmpgetnext.lo: ../include/net-snmp/types.h
+./snmpgetnext.lo: ../include/net-snmp/library/oid.h
 ./snmpgetnext.lo: ../include/net-snmp/library/types.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpgetnext.lo: ../include/net-snmp/varbind_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpgetnext.lo: ../include/net-snmp/pdu_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/asn1.h
+./snmpgetnext.lo: ../include/net-snmp/output_api.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpgetnext.lo: ../include/net-snmp/session_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/callback.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_transport.h
@@ -422,8 +542,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpgetnext.lo: ../include/net-snmp/library/ucd_compat.h
@@ -445,7 +569,6 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpgetnext.lo: ../include/net-snmp/library/container.h
 ./snmpgetnext.lo: ../include/net-snmp/library/factory.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpgetnext.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpgetnext.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpgetnext.lo: ../include/net-snmp/library/container_iterator.h
@@ -458,8 +581,6 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpgetnext.lo: ../include/net-snmp/library/vacm.h
-./snmpgetnext.lo: ../include/net-snmp/output_api.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpgetnext.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpgetnext.lo: ../include/net-snmp/library/transform_oids.h
@@ -470,18 +591,19 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpset.lo: ../include/net-snmp/net-snmp-config.h
-./snmpset.lo: ../include/net-snmp/system/linux.h
-./snmpset.lo: ../include/net-snmp/system/sysv.h
-./snmpset.lo: ../include/net-snmp/system/generic.h
-./snmpset.lo: ../include/net-snmp/machine/generic.h
 ./snmpset.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpset.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpset.lo: ../include/net-snmp/definitions.h
+./snmpset.lo: ../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
 ./snmpset.lo: ../include/net-snmp/varbind_api.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpset.lo: ../include/net-snmp/pdu_api.h
 ./snmpset.lo: ../include/net-snmp/library/asn1.h
+./snmpset.lo: ../include/net-snmp/output_api.h
+./snmpset.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpset.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpset.lo: ../include/net-snmp/session_api.h
 ./snmpset.lo: ../include/net-snmp/library/callback.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_transport.h
@@ -489,8 +611,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpset.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpset.lo: ../include/net-snmp/library/ucd_compat.h
@@ -511,7 +637,6 @@
 ./snmpset.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpset.lo: ../include/net-snmp/library/container.h
 ./snmpset.lo: ../include/net-snmp/library/factory.h
-./snmpset.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpset.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpset.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpset.lo: ../include/net-snmp/library/container_iterator.h
@@ -523,8 +648,6 @@
 ./snmpset.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpset.lo: ../include/net-snmp/library/vacm.h
-./snmpset.lo: ../include/net-snmp/output_api.h
-./snmpset.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpset.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpset.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpset.lo: ../include/net-snmp/library/transform_oids.h
@@ -535,11 +658,8 @@
 ./snmpset.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpset.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpstatus.lo: ../include/net-snmp/net-snmp-config.h
-./snmpstatus.lo: ../include/net-snmp/system/linux.h
-./snmpstatus.lo: ../include/net-snmp/system/sysv.h
-./snmpstatus.lo: ../include/net-snmp/system/generic.h
-./snmpstatus.lo: ../include/net-snmp/machine/generic.h
 ./snmpstatus.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./snmpstatus.lo: ../include/net-snmp/library/oid.h
 ./snmpstatus.lo: ../include/net-snmp/library/types.h
 ./snmpstatus.lo: ../include/net-snmp/definitions.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_api.h
@@ -547,6 +667,9 @@
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpstatus.lo: ../include/net-snmp/pdu_api.h
 ./snmpstatus.lo: ../include/net-snmp/library/asn1.h
+./snmpstatus.lo: ../include/net-snmp/output_api.h
+./snmpstatus.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpstatus.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpstatus.lo: ../include/net-snmp/session_api.h
 ./snmpstatus.lo: ../include/net-snmp/library/callback.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_transport.h
@@ -554,8 +677,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpstatus.lo: ../include/net-snmp/library/ucd_compat.h
@@ -575,7 +702,6 @@
 ./snmpstatus.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpstatus.lo: ../include/net-snmp/library/container.h
 ./snmpstatus.lo: ../include/net-snmp/library/factory.h
-./snmpstatus.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpstatus.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpstatus.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpstatus.lo: ../include/net-snmp/library/container_iterator.h
@@ -590,8 +716,6 @@
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpstatus.lo: ../include/net-snmp/library/vacm.h
-./snmpstatus.lo: ../include/net-snmp/output_api.h
-./snmpstatus.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpstatus.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpstatus.lo: ../include/net-snmp/library/transform_oids.h
@@ -602,18 +726,18 @@
 ./snmpstatus.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptable.lo: ../include/net-snmp/net-snmp-config.h
-./snmptable.lo: ../include/net-snmp/system/linux.h
-./snmptable.lo: ../include/net-snmp/system/sysv.h
-./snmptable.lo: ../include/net-snmp/system/generic.h
-./snmptable.lo: ../include/net-snmp/machine/generic.h
 ./snmptable.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmptable.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptable.lo: ../include/net-snmp/library/oid.h
 ./snmptable.lo: ../include/net-snmp/library/types.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptable.lo: ../include/net-snmp/varbind_api.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptable.lo: ../include/net-snmp/pdu_api.h
 ./snmptable.lo: ../include/net-snmp/library/asn1.h
+./snmptable.lo: ../include/net-snmp/output_api.h
+./snmptable.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptable.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptable.lo: ../include/net-snmp/session_api.h
 ./snmptable.lo: ../include/net-snmp/library/callback.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_transport.h
@@ -621,8 +745,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptable.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptable.lo: ../include/net-snmp/library/ucd_compat.h
@@ -644,7 +772,6 @@
 ./snmptable.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptable.lo: ../include/net-snmp/library/container.h
 ./snmptable.lo: ../include/net-snmp/library/factory.h
-./snmptable.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptable.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptable.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptable.lo: ../include/net-snmp/library/container_iterator.h
@@ -657,8 +784,6 @@
 ./snmptable.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptable.lo: ../include/net-snmp/library/vacm.h
-./snmptable.lo: ../include/net-snmp/output_api.h
-./snmptable.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptable.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptable.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptable.lo: ../include/net-snmp/library/transform_oids.h
@@ -669,18 +794,19 @@
 ./snmptable.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmptable.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptest.lo: ../include/net-snmp/net-snmp-config.h
-./snmptest.lo: ../include/net-snmp/system/linux.h
-./snmptest.lo: ../include/net-snmp/system/sysv.h
-./snmptest.lo: ../include/net-snmp/system/generic.h
-./snmptest.lo: ../include/net-snmp/machine/generic.h
 ./snmptest.lo: ../include/net-snmp/net-snmp-includes.h
-./snmptest.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptest.lo: ../include/net-snmp/definitions.h
+./snmptest.lo: ../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
 ./snmptest.lo: ../include/net-snmp/varbind_api.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptest.lo: ../include/net-snmp/pdu_api.h
 ./snmptest.lo: ../include/net-snmp/library/asn1.h
+./snmptest.lo: ../include/net-snmp/output_api.h
+./snmptest.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptest.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptest.lo: ../include/net-snmp/session_api.h
 ./snmptest.lo: ../include/net-snmp/library/callback.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_transport.h
@@ -688,8 +814,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptest.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptest.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptest.lo: ../include/net-snmp/library/ucd_compat.h
@@ -711,7 +841,6 @@
 ./snmptest.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptest.lo: ../include/net-snmp/library/container.h
 ./snmptest.lo: ../include/net-snmp/library/factory.h
-./snmptest.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptest.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptest.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptest.lo: ../include/net-snmp/library/container_iterator.h
@@ -723,8 +852,6 @@
 ./snmptest.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptest.lo: ../include/net-snmp/library/vacm.h
-./snmptest.lo: ../include/net-snmp/output_api.h
-./snmptest.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptest.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptest.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptest.lo: ../include/net-snmp/library/transform_oids.h
@@ -734,13 +861,118 @@
 ./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/snmpusm.h
+./snmptls.lo: ../include/net-snmp/net-snmp-config.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/library/oid.h
+./snmptls.lo: ../include/net-snmp/library/types.h
+./snmptls.lo: ../include/net-snmp/library/snmp_api.h
+./snmptls.lo: ../include/net-snmp/varbind_api.h
+./snmptls.lo: ../include/net-snmp/library/snmp_client.h
+./snmptls.lo: ../include/net-snmp/pdu_api.h
+./snmptls.lo: ../include/net-snmp/library/asn1.h
+./snmptls.lo: ../include/net-snmp/output_api.h
+./snmptls.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptls.lo: ../include/net-snmp/library/snmp_logging.h
+./snmptls.lo: ../include/net-snmp/session_api.h
+./snmptls.lo: ../include/net-snmp/library/callback.h
+./snmptls.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./snmptls.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptls.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptls.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptls.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptls.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmptls.lo: ../include/net-snmp/library/parse.h
+./snmptls.lo: ../include/net-snmp/library/oid_stash.h
+./snmptls.lo: ../include/net-snmp/library/snmp_impl.h
+./snmptls.lo: ../include/net-snmp/library/snmp.h
+./snmptls.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptls.lo: ../include/net-snmp/library/getopt.h
+./snmptls.lo: ../include/net-snmp/utilities.h
+./snmptls.lo: ../include/net-snmp/library/system.h
+./snmptls.lo: ../include/net-snmp/library/tools.h
+./snmptls.lo: ../include/net-snmp/library/int64.h
+./snmptls.lo: ../include/net-snmp/library/mt_support.h
+./snmptls.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmptls.lo: ../include/net-snmp/library/data_list.h
+./snmptls.lo: ../include/net-snmp/library/check_varbind.h
+./snmptls.lo: ../include/net-snmp/library/container.h
+./snmptls.lo: ../include/net-snmp/library/factory.h
+./snmptls.lo: ../include/net-snmp/library/container_binary_array.h
+./snmptls.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmptls.lo: ../include/net-snmp/library/container_iterator.h
+./snmptls.lo: ../include/net-snmp/library/container.h
+./snmptls.lo: ../include/net-snmp/library/snmp_assert.h
+./snmptls.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
+./snmptls.lo: ../include/net-snmp/library/read_config.h
+./snmptls.lo: ../include/net-snmp/library/default_store.h
+./snmptls.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmptls.lo: ../include/net-snmp/library/snmp_enum.h
+./snmptls.lo: ../include/net-snmp/library/vacm.h
+./snmptls.lo: ../include/net-snmp/snmpv3_api.h
+./snmptls.lo: ../include/net-snmp/library/snmpv3.h
+./snmptls.lo: ../include/net-snmp/library/transform_oids.h
+./snmptls.lo: ../include/net-snmp/library/keytools.h
+./snmptls.lo: ../include/net-snmp/library/scapi.h
+./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/snmpusm.h
+./snmptls.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmptls.lo: ../include/net-snmp/agent/mib_module_config.h
+./snmptls.lo: ../include/net-snmp/agent/agent_module_config.h
+./snmptls.lo: ../include/net-snmp/agent/snmp_agent.h
+./snmptls.lo: ../include/net-snmp/agent/snmp_vars.h
+./snmptls.lo: ../include/net-snmp/agent/agent_handler.h
+./snmptls.lo: ../include/net-snmp/agent/var_struct.h
+./snmptls.lo: ../include/net-snmp/agent/agent_registry.h
+./snmptls.lo: ../include/net-snmp/library/fd_event_manager.h
+./snmptls.lo: ../include/net-snmp/agent/ds_agent.h
+./snmptls.lo: ../include/net-snmp/agent/agent_read_config.h
+./snmptls.lo: ../include/net-snmp/agent/agent_trap.h
+./snmptls.lo: ../include/net-snmp/agent/all_helpers.h
+./snmptls.lo: ../include/net-snmp/agent/instance.h
+./snmptls.lo: ../include/net-snmp/agent/baby_steps.h
+./snmptls.lo: ../include/net-snmp/agent/scalar.h
+./snmptls.lo: ../include/net-snmp/agent/scalar_group.h
+./snmptls.lo: ../include/net-snmp/agent/watcher.h
+./snmptls.lo: ../include/net-snmp/agent/multiplexer.h
+./snmptls.lo: ../include/net-snmp/agent/null.h
+./snmptls.lo: ../include/net-snmp/agent/debug_handler.h
+./snmptls.lo: ../include/net-snmp/agent/cache_handler.h
+./snmptls.lo: ../include/net-snmp/agent/old_api.h
+./snmptls.lo: ../include/net-snmp/agent/read_only.h
+./snmptls.lo: ../include/net-snmp/agent/row_merge.h
+./snmptls.lo: ../include/net-snmp/agent/serialize.h
+./snmptls.lo: ../include/net-snmp/agent/bulk_to_next.h
+./snmptls.lo: ../include/net-snmp/agent/mode_end_call.h
+./snmptls.lo: ../include/net-snmp/agent/table.h
+./snmptls.lo: ../include/net-snmp/agent/table_data.h
+./snmptls.lo: ../include/net-snmp/agent/table_dataset.h
+./snmptls.lo: ../include/net-snmp/agent/table_tdata.h
+./snmptls.lo: ../include/net-snmp/agent/table_iterator.h
+./snmptls.lo: ../include/net-snmp/agent/table_container.h
+./snmptls.lo: ../include/net-snmp/agent/table_array.h
+./snmptls.lo: ../include/net-snmp/agent/mfd.h
+./snmptls.lo: ../include/net-snmp/agent/snmp_get_statistic.h
+./snmptls.lo: ../include/net-snmp/library/cert_util.h
+./snmptls.lo: ../agent/mibgroup/tlstm-mib.h
+./snmptls.lo: ../agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
+./snmptls.lo: ../agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
+./snmptls.lo: ../agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
 ./snmptranslate.lo: ../include/net-snmp/net-snmp-config.h
-./snmptranslate.lo: ../include/net-snmp/system/linux.h
-./snmptranslate.lo: ../include/net-snmp/system/sysv.h
-./snmptranslate.lo: ../include/net-snmp/system/generic.h
-./snmptranslate.lo: ../include/net-snmp/machine/generic.h
 ./snmptranslate.lo: ../include/net-snmp/utilities.h
 ./snmptranslate.lo: ../include/net-snmp/types.h
+./snmptranslate.lo: ../include/net-snmp/library/oid.h
 ./snmptranslate.lo: ../include/net-snmp/library/types.h
 ./snmptranslate.lo: ../include/net-snmp/definitions.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_api.h
@@ -748,6 +980,9 @@
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptranslate.lo: ../include/net-snmp/pdu_api.h
 ./snmptranslate.lo: ../include/net-snmp/library/asn1.h
+./snmptranslate.lo: ../include/net-snmp/output_api.h
+./snmptranslate.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptranslate.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptranslate.lo: ../include/net-snmp/session_api.h
 ./snmptranslate.lo: ../include/net-snmp/library/callback.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_transport.h
@@ -755,8 +990,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptranslate.lo: ../include/net-snmp/library/ucd_compat.h
@@ -776,7 +1015,6 @@
 ./snmptranslate.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptranslate.lo: ../include/net-snmp/library/container.h
 ./snmptranslate.lo: ../include/net-snmp/library/factory.h
-./snmptranslate.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptranslate.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptranslate.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptranslate.lo: ../include/net-snmp/library/container_iterator.h
@@ -789,21 +1027,20 @@
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptranslate.lo: ../include/net-snmp/library/vacm.h
-./snmptranslate.lo: ../include/net-snmp/output_api.h
-./snmptranslate.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptrap.lo: ../include/net-snmp/net-snmp-config.h
-./snmptrap.lo: ../include/net-snmp/system/linux.h
-./snmptrap.lo: ../include/net-snmp/system/sysv.h
-./snmptrap.lo: ../include/net-snmp/system/generic.h
-./snmptrap.lo: ../include/net-snmp/machine/generic.h
 ./snmptrap.lo: ../include/net-snmp/net-snmp-includes.h
-./snmptrap.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptrap.lo: ../include/net-snmp/definitions.h
+./snmptrap.lo: ../include/net-snmp/types.h
+./snmptrap.lo: ../include/net-snmp/library/oid.h
 ./snmptrap.lo: ../include/net-snmp/library/types.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptrap.lo: ../include/net-snmp/varbind_api.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrap.lo: ../include/net-snmp/pdu_api.h
 ./snmptrap.lo: ../include/net-snmp/library/asn1.h
+./snmptrap.lo: ../include/net-snmp/output_api.h
+./snmptrap.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptrap.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrap.lo: ../include/net-snmp/session_api.h
 ./snmptrap.lo: ../include/net-snmp/library/callback.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_transport.h
@@ -811,8 +1048,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptrap.lo: ../include/net-snmp/library/ucd_compat.h
@@ -834,7 +1075,6 @@
 ./snmptrap.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptrap.lo: ../include/net-snmp/library/container.h
 ./snmptrap.lo: ../include/net-snmp/library/factory.h
-./snmptrap.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrap.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptrap.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptrap.lo: ../include/net-snmp/library/container_iterator.h
@@ -846,8 +1086,6 @@
 ./snmptrap.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptrap.lo: ../include/net-snmp/library/vacm.h
-./snmptrap.lo: ../include/net-snmp/output_api.h
-./snmptrap.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptrap.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptrap.lo: ../include/net-snmp/library/transform_oids.h
@@ -858,19 +1096,19 @@
 ./snmptrap.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./snmptrapd_auth.lo: ../include/net-snmp/system/sysv.h
-./snmptrapd_auth.lo: ../include/net-snmp/system/generic.h
-./snmptrapd_auth.lo: ../include/net-snmp/machine/generic.h
 ./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmptrapd_auth.lo: ../include/net-snmp/definitions.h
 ./snmptrapd_auth.lo: ../include/net-snmp/types.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/oid.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/types.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/varbind_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd_auth.lo: ../include/net-snmp/pdu_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/asn1.h
+./snmptrapd_auth.lo: ../include/net-snmp/output_api.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_auth.lo: ../include/net-snmp/session_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_transport.h
@@ -878,8 +1116,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/ucd_compat.h
@@ -901,7 +1143,6 @@
 ./snmptrapd_auth.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/container.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/factory.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/container_iterator.h
@@ -914,8 +1155,6 @@
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/vacm.h
-./snmptrapd_auth.lo: ../include/net-snmp/output_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptrapd_auth.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptrapd_auth.lo: ../include/net-snmp/library/transform_oids.h
@@ -931,18 +1170,18 @@
 ./snmptrapd_auth.lo: ../agent/mibgroup/mibII/vacm_conf.h
 ./snmptrapd_auth.lo: ../include/net-snmp/agent/agent_trap.h
 ./snmptrapd.lo: ../include/net-snmp/net-snmp-config.h
-./snmptrapd.lo: ../include/net-snmp/system/linux.h
-./snmptrapd.lo: ../include/net-snmp/system/sysv.h
-./snmptrapd.lo: ../include/net-snmp/system/generic.h
-./snmptrapd.lo: ../include/net-snmp/machine/generic.h
 ./snmptrapd.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmptrapd.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptrapd.lo: ../include/net-snmp/library/oid.h
 ./snmptrapd.lo: ../include/net-snmp/library/types.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptrapd.lo: ../include/net-snmp/varbind_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd.lo: ../include/net-snmp/pdu_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/asn1.h
+./snmptrapd.lo: ../include/net-snmp/output_api.h
+./snmptrapd.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptrapd.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd.lo: ../include/net-snmp/session_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_transport.h
@@ -950,8 +1189,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptrapd.lo: ../include/net-snmp/library/ucd_compat.h
@@ -973,7 +1216,6 @@
 ./snmptrapd.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptrapd.lo: ../include/net-snmp/library/container.h
 ./snmptrapd.lo: ../include/net-snmp/library/factory.h
-./snmptrapd.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptrapd.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptrapd.lo: ../include/net-snmp/library/container_iterator.h
@@ -986,8 +1228,6 @@
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptrapd.lo: ../include/net-snmp/library/vacm.h
-./snmptrapd.lo: ../include/net-snmp/output_api.h
-./snmptrapd.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptrapd.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptrapd.lo: ../include/net-snmp/library/transform_oids.h
@@ -1032,17 +1272,17 @@
 ./snmptrapd.lo: ../include/net-snmp/agent/table_iterator.h
 ./snmptrapd.lo: ../include/net-snmp/agent/table_container.h
 ./snmptrapd.lo: ../include/net-snmp/agent/table_array.h
-./snmptrapd.lo: ../include/net-snmp/agent/mfd.h snmptrapd_handlers.h
-./snmptrapd.lo: snmptrapd_log.h snmptrapd_ds.h snmptrapd_auth.h
+./snmptrapd.lo: ../include/net-snmp/agent/mfd.h
+./snmptrapd.lo: ../include/net-snmp/agent/snmp_get_statistic.h
+./snmptrapd.lo: snmptrapd_handlers.h snmptrapd_log.h snmptrapd_ds.h
+./snmptrapd.lo: snmptrapd_auth.h
 ./snmptrapd.lo: ../agent/mibgroup/notification-log-mib/notification_log.h
-./snmptrapd.lo: ../agent/mibgroup/mibII/vacm_conf.h ../agent/snmp_perl.h
+./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/system/linux.h
-./snmptrapd_handlers.lo: ../include/net-snmp/system/sysv.h
-./snmptrapd_handlers.lo: ../include/net-snmp/system/generic.h
-./snmptrapd_handlers.lo: ../include/net-snmp/machine/generic.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
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/types.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/definitions.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_api.h
@@ -1050,6 +1290,9 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/pdu_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/asn1.h
+./snmptrapd_handlers.lo: ../include/net-snmp/output_api.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/session_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1057,8 +1300,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1074,9 +1321,6 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/vacm.h
-./snmptrapd_handlers.lo: ../include/net-snmp/output_api.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_debug.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/utilities.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/system.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/tools.h
@@ -1140,24 +1384,25 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/table_container.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/table_array.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/mfd.h
+./snmptrapd_handlers.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./snmptrapd_handlers.lo: ../agent/mibgroup/utilities/execute.h
 ./snmptrapd_handlers.lo: snmptrapd_handlers.h snmptrapd_auth.h
 ./snmptrapd_handlers.lo: snmptrapd_log.h snmptrapd_ds.h
 ./snmptrapd_handlers.lo: ../agent/mibgroup/notification-log-mib/notification_log.h
 ./snmptrapd_log.lo: ../include/net-snmp/net-snmp-config.h
-./snmptrapd_log.lo: ../include/net-snmp/system/linux.h
-./snmptrapd_log.lo: ../include/net-snmp/system/sysv.h
-./snmptrapd_log.lo: ../include/net-snmp/system/generic.h
-./snmptrapd_log.lo: ../include/net-snmp/machine/generic.h
 ./snmptrapd_log.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmptrapd_log.lo: ../include/net-snmp/definitions.h
 ./snmptrapd_log.lo: ../include/net-snmp/types.h
+./snmptrapd_log.lo: ../include/net-snmp/library/oid.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/types.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/varbind_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd_log.lo: ../include/net-snmp/pdu_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/asn1.h
+./snmptrapd_log.lo: ../include/net-snmp/output_api.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_log.lo: ../include/net-snmp/session_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1165,8 +1410,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1188,7 +1437,6 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/container.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/factory.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/container_iterator.h
@@ -1201,8 +1449,6 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/vacm.h
-./snmptrapd_log.lo: ../include/net-snmp/output_api.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptrapd_log.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/transform_oids.h
@@ -1214,23 +1460,20 @@
 ./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/system/linux.h
-./snmptrapd_sql.lo: ../include/net-snmp/system/sysv.h
-./snmptrapd_sql.lo: ../include/net-snmp/system/generic.h
-./snmptrapd_sql.lo: ../include/net-snmp/machine/generic.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
-./snmpusm.lo: ../include/net-snmp/system/linux.h
-./snmpusm.lo: ../include/net-snmp/system/sysv.h
-./snmpusm.lo: ../include/net-snmp/system/generic.h
-./snmpusm.lo: ../include/net-snmp/machine/generic.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpusm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpusm.lo: ../include/net-snmp/definitions.h
+./snmpusm.lo: ../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
 ./snmpusm.lo: ../include/net-snmp/varbind_api.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpusm.lo: ../include/net-snmp/pdu_api.h
 ./snmpusm.lo: ../include/net-snmp/library/asn1.h
+./snmpusm.lo: ../include/net-snmp/output_api.h
+./snmpusm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpusm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpusm.lo: ../include/net-snmp/session_api.h
 ./snmpusm.lo: ../include/net-snmp/library/callback.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1238,8 +1481,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1260,7 +1507,6 @@
 ./snmpusm.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpusm.lo: ../include/net-snmp/library/container.h
 ./snmpusm.lo: ../include/net-snmp/library/factory.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpusm.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpusm.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpusm.lo: ../include/net-snmp/library/container_iterator.h
@@ -1272,8 +1518,6 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpusm.lo: ../include/net-snmp/library/vacm.h
-./snmpusm.lo: ../include/net-snmp/output_api.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpusm.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpusm.lo: ../include/net-snmp/library/transform_oids.h
@@ -1284,18 +1528,19 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpvacm.lo: ../include/net-snmp/net-snmp-config.h
-./snmpvacm.lo: ../include/net-snmp/system/linux.h
-./snmpvacm.lo: ../include/net-snmp/system/sysv.h
-./snmpvacm.lo: ../include/net-snmp/system/generic.h
-./snmpvacm.lo: ../include/net-snmp/machine/generic.h
 ./snmpvacm.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpvacm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpvacm.lo: ../include/net-snmp/definitions.h
+./snmpvacm.lo: ../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
 ./snmpvacm.lo: ../include/net-snmp/varbind_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpvacm.lo: ../include/net-snmp/pdu_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/asn1.h
+./snmpvacm.lo: ../include/net-snmp/output_api.h
+./snmpvacm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpvacm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpvacm.lo: ../include/net-snmp/session_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/callback.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1303,8 +1548,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpvacm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1326,7 +1575,6 @@
 ./snmpvacm.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpvacm.lo: ../include/net-snmp/library/container.h
 ./snmpvacm.lo: ../include/net-snmp/library/factory.h
-./snmpvacm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpvacm.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpvacm.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpvacm.lo: ../include/net-snmp/library/container_iterator.h
@@ -1338,8 +1586,6 @@
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpvacm.lo: ../include/net-snmp/library/vacm.h
-./snmpvacm.lo: ../include/net-snmp/output_api.h
-./snmpvacm.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpvacm.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpvacm.lo: ../include/net-snmp/library/transform_oids.h
@@ -1350,18 +1596,19 @@
 ./snmpvacm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpwalk.lo: ../include/net-snmp/net-snmp-config.h
-./snmpwalk.lo: ../include/net-snmp/system/linux.h
-./snmpwalk.lo: ../include/net-snmp/system/sysv.h
-./snmpwalk.lo: ../include/net-snmp/system/generic.h
-./snmpwalk.lo: ../include/net-snmp/machine/generic.h
 ./snmpwalk.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpwalk.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmpwalk.lo: ../include/net-snmp/definitions.h
+./snmpwalk.lo: ../include/net-snmp/types.h
+./snmpwalk.lo: ../include/net-snmp/library/oid.h
 ./snmpwalk.lo: ../include/net-snmp/library/types.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpwalk.lo: ../include/net-snmp/varbind_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpwalk.lo: ../include/net-snmp/pdu_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/asn1.h
+./snmpwalk.lo: ../include/net-snmp/output_api.h
+./snmpwalk.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpwalk.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpwalk.lo: ../include/net-snmp/session_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/callback.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1369,8 +1616,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpwalk.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1392,7 +1643,6 @@
 ./snmpwalk.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpwalk.lo: ../include/net-snmp/library/container.h
 ./snmpwalk.lo: ../include/net-snmp/library/factory.h
-./snmpwalk.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpwalk.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpwalk.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpwalk.lo: ../include/net-snmp/library/container_iterator.h
@@ -1404,8 +1654,6 @@
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpwalk.lo: ../include/net-snmp/library/vacm.h
-./snmpwalk.lo: ../include/net-snmp/output_api.h
-./snmpwalk.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpwalk.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpwalk.lo: ../include/net-snmp/library/transform_oids.h
@@ -1416,24 +1664,20 @@
 ./snmpwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpusm.h
 ./sshtosnmp.lo: ../include/net-snmp/net-snmp-config.h
-./sshtosnmp.lo: ../include/net-snmp/system/linux.h
-./sshtosnmp.lo: ../include/net-snmp/system/sysv.h
-./sshtosnmp.lo: ../include/net-snmp/system/generic.h
-./sshtosnmp.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/if.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/if.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/if.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/if.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/if.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/if.lo: ../include/net-snmp/types.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/if.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/if.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/if.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1441,8 +1685,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1464,7 +1712,6 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/container_iterator.h
@@ -1477,8 +1724,6 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/if.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/if.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/transform_oids.h
@@ -1491,19 +1736,19 @@
 ./snmpnetstat/if.lo: ./snmpnetstat/main.h
 ./snmpnetstat/if.lo: ./snmpnetstat/netstat.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/types.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1511,8 +1756,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1534,7 +1783,6 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/container_iterator.h
@@ -1547,8 +1795,6 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/transform_oids.h
@@ -1560,19 +1806,19 @@
 ./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
-./snmpnetstat/inet.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/inet.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/inet.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/inet.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/types.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/inet.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1580,8 +1826,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1603,7 +1853,6 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/container_iterator.h
@@ -1616,8 +1865,6 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/inet.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/transform_oids.h
@@ -1629,19 +1876,19 @@
 ./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/inet.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/main.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/main.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/main.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/main.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/main.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/main.lo: ../include/net-snmp/types.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/main.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/main.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/main.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1649,8 +1896,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1672,7 +1923,6 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/container_iterator.h
@@ -1685,8 +1935,6 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/main.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/main.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/transform_oids.h
@@ -1698,19 +1946,19 @@
 ./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
-./snmpnetstat/route.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/route.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/route.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/route.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/route.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/route.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/route.lo: ../include/net-snmp/types.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/route.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/route.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/route.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1718,8 +1966,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1741,7 +1993,6 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/container_iterator.h
@@ -1754,8 +2005,6 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/route.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/route.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/transform_oids.h
@@ -1767,19 +2016,19 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/route.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/system/linux.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/system/sysv.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/system/generic.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/machine/generic.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/definitions.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/types.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/oid.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/types.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/pdu_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/session_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1787,8 +2036,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1810,7 +2063,6 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/factory.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/container_iterator.h
@@ -1823,8 +2075,6 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/vacm.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/output_api.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/snmpv3_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpv3.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/transform_oids.h
diff --git a/apps/Makefile.in b/apps/Makefile.in
index b847073..769352d 100644
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -17,7 +17,13 @@
 # Things to install
 #
 
-SSHINSTALLBINPROGS = @SSHINSTALLBINPROGS@
+@NETSNMP_BUILD_SSH_PROG_TRUE@SSHINSTALLBINPROG = sshtosnmp$(EXEEXT)
+@NETSNMP_BUILD_SSH_PROG_FALSE@SSHINSTALLBINPROG =
+@NETSNMP_BUILD_TLS_PROG_TRUE@TLSINSTALLBINPROG = snmptls$(EXEEXT)
+@NETSNMP_BUILD_TLS_PROG_FALSE@TLSINSTALLBINPROG =
+
+@NETSNMP_HAVE_AGENTX_LIBS_TRUE@AGENTXTRAP = agentxtrap$(EXEEXT)
+@NETSNMP_HAVE_AGENTX_LIBS_FALSE@AGENTXTRAP =
 
 INSTALLBINPROGS	= snmpget$(EXEEXT) 			\
 		snmpgetnext$(EXEEXT) 			\
@@ -34,8 +40,9 @@
 		snmptest$(EXEEXT)			\
 		encode_keychange$(EXEEXT) 		\
 		snmpdf$(EXEEXT) 			\
+		$(AGENTXTRAP)				\
 		snmpvacm$(EXEEXT)                       \
-                $(SSHINSTALLBINPROGS)
+                $(SSHINSTALLBINPROG) $(TLSINSTALLBINPROG)
 
 INSTALLSBINPROGS = snmptrapd$(EXEEXT)
 
@@ -49,10 +56,9 @@
 
 # USELIBS/USEAGENTLIBS are for dependencies
 USELIBS		= ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) 
-HELPERLIB       = ../agent/helpers/libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION)
 AGENTLIB        = ../agent/libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
 MIBLIB          = ../agent/libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
-USEAGENTLIBS	= $(MIBLIB) $(AGENTLIB) $(HELPERLIB) $(USELIBS)
+USEAGENTLIBS	= $(MIBLIB) $(AGENTLIB) $(USELIBS)
 MYSQL_LIBS	= @MYSQL_LIBS@
 MYSQL_INCLUDES	= @MYSQL_INCLUDES@
 
@@ -136,6 +142,12 @@
 snmpvacm$(EXEEXT):    snmpvacm.$(OSUFFIX) $(USELIBS)
 	$(LINK) ${CFLAGS} -o $@ snmpvacm.$(OSUFFIX) ${LDFLAGS} ${LIBS}
 
+snmptls$(EXEEXT):    snmptls.$(OSUFFIX) $(USELIBS)
+	$(LINK) ${CFLAGS} -o $@ snmptls.$(OSUFFIX) ${LDFLAGS} ${LIBS} 
+
+agentxtrap$(EXEEXT):    agentxtrap.$(OSUFFIX) $(USEAGENTLIBS)
+	$(LINK) ${CFLAGS} -o $@ agentxtrap.$(OSUFFIX) ${LDFLAGS} $(USEAGENTLIBS) $(PERLLDOPTS_FOR_APPS) ${LIBS}
+
 snmpgetnext$(EXEEXT):    snmpgetnext.$(OSUFFIX) $(USELIBS)
 	$(LINK) ${CFLAGS} -o $@ snmpgetnext.$(OSUFFIX) ${LDFLAGS} ${LIBS}
 
@@ -164,7 +176,7 @@
 	  @rm -f $(INSTALL_PREFIX)$(snmplibdir)/snmp_perl_trapd.pl
 	  @echo "removed snmp_perl_trapd.pl from $(INSTALL_PREFIX)$(snmplibdir)"
 
-sshtosnmp: sshtosnmp.$(OSUFFIX)
+sshtosnmp$(EXEEXT): sshtosnmp.$(OSUFFIX)
 	$(LINK) ${CFLAGS} -o $@ sshtosnmp.$(OSUFFIX)
 
 
diff --git a/apps/agentxtrap.c b/apps/agentxtrap.c
new file mode 100644
index 0000000..340f114
--- /dev/null
+++ b/apps/agentxtrap.c
@@ -0,0 +1,607 @@
+ #include <net-snmp/net-snmp-config.h>
+
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h> /* optind, optarg and optopt */
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "../agent/mibgroup/agentx/agentx_config.h"
+#include "../agent/mibgroup/agentx/client.h"
+#include "../agent/mibgroup/agentx/protocol.h"
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#else
+#define UNUSED
+#endif
+
+extern const oid sysuptime_oid[];
+extern const size_t sysuptime_oid_len;
+extern const oid snmptrap_oid[];
+extern const size_t snmptrap_oid_len;
+
+static void
+usage(const char* progname)
+{
+    fprintf(stderr,
+            "USAGE: %s [OPTIONS] TRAP-PARAMETERS\n"
+            "\n"
+            "  Version:  %s\n"
+            "  Web:      http://www.net-snmp.org/\n"
+            "  Email:    net-snmp-coders@lists.sourceforge.net\n"
+            "\n"
+            "OPTIONS:\n", progname, netsnmp_get_version());
+
+    fprintf(stderr,
+            "  -h\t\t\tdisplay this help message\n"
+            "  -V\t\t\tdisplay package version number\n"
+            "  -m MIB[" ENV_SEPARATOR "...]\t\tload given list of MIBs (ALL loads "
+            "everything)\n"
+            "  -M DIR[" ENV_SEPARATOR "...]\t\tlook in given list of directories for MIBs\n"
+            "  -D[TOKEN[,...]]\tturn on debugging output for the specified "
+            "TOKENs\n"
+            "\t\t\t   (ALL gives extremely verbose debugging output)\n"
+            "  -d\t\t\tdump all traffic\n");
+#ifndef NETSNMP_DISABLE_MIB_LOADING
+    fprintf(stderr,
+            "  -P MIBOPTS\t\tToggle various defaults controlling mib "
+            "parsing:\n");
+    snmp_mib_toggle_options_usage("\t\t\t  ", stderr);
+#endif /* NETSNMP_DISABLE_MIB_LOADING */
+    fprintf(stderr,
+            "  -L LOGOPTS\t\tToggle various defaults controlling logging:\n");
+    snmp_log_options_usage("\t\t\t  ", stderr);
+
+    fprintf(stderr,
+            "  -c context\n"
+            "  -U uptime\n"
+            "  -x ADDRESS\t\tuse ADDRESS as AgentX address\n"
+            "\n"
+            "TRAP-PARAMETERS:\n"
+            "  trapoid [OID TYPE VALUE] ...\n");
+}
+
+struct tState_s;
+typedef const struct tState_s* tState;
+struct tState_s {
+    void (*entry)(tState self); /**<< State entry action */
+    void (*exit)(tState self); /**<< State exit action */
+    /** Handler for AgentX-Response-PDU's */
+    void (*response)(tState self, netsnmp_pdu *res);
+    /** State to change to if an AgentX timeout occurs or the timer runs out */
+    tState timeout;
+    void (*disconnect)(tState self); /**<< Handler for disconnect indications */
+    /** Handler for Close-PDU indications */
+    void (*close)(tState self, netsnmp_pdu *res);
+    const char* name; /**<< Name of the current state */
+    int is_open; /**<< If the connection is open in this state */
+};
+
+static tState state; /**<< Current state of the state machine */
+static tState next_state; /**<< Next state of the state machine */
+
+static const char  *context = NULL; /**<< Context that delivers the trap */
+static size_t       contextLen; /**<< Length of eventual context */
+static int          result = 1; /**<< Program return value */
+static netsnmp_pdu *pdu = NULL; /**<< The trap pdu that is to be sent */
+/** The reference number of the next packet */
+static long         packetid = 0;
+/** The session id of the session to the master */
+static long         session;
+static void        *sessp = NULL; /**<< The current communication session */
+
+#define STATE_CALL(method)                                              \
+    if(!state->method) {                                                \
+        snmp_log(LOG_ERR, "No " #method " method in %s, terminating\n", \
+                 state->name);                                          \
+        abort();                                                        \
+    } else                                                              \
+        state->method
+
+static void
+change_state(tState new_state)
+{
+    if (next_state && next_state != new_state)
+        DEBUGMSGTL(("process", "Ignore transition to %s\n", next_state->name));
+    next_state = new_state;
+}
+
+static int
+handle_agentx_response(int operation, netsnmp_session *sp, UNUSED int reqid,
+                       netsnmp_pdu *act, UNUSED void *magic)
+{
+    switch(operation) {
+    case NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE:
+        if(act->command == AGENTX_MSG_CLEANUPSET) {
+            /* Do nothing - no response and no action as nothing get
+             * allocated in any handler here
+             */
+        } else if(act->command != AGENTX_MSG_RESPONSE) {
+            /* Copy the head to a response */
+            netsnmp_pdu* res = snmp_split_pdu(act, 0, 0);
+            res->command = AGENTX_MSG_RESPONSE;
+            if (act->sessid != session || !state->is_open)
+                res->errstat = AGENTX_ERR_NOT_OPEN;
+            if(res->errstat == AGENTX_ERR_NOERROR)
+                switch(act->command) {
+                case AGENTX_MSG_GET:
+                    res->variables = snmp_clone_varbind(act->variables);
+                    snmp_reset_var_types(res->variables, SNMP_NOSUCHOBJECT);
+                    break;
+                case AGENTX_MSG_GETNEXT:
+                case AGENTX_MSG_GETBULK:
+                    res->variables = snmp_clone_varbind(act->variables);
+                    snmp_reset_var_types(res->variables, SNMP_ENDOFMIBVIEW);
+                    break;
+                case AGENTX_MSG_TESTSET:
+                    res->errstat = SNMP_ERR_NOTWRITABLE;
+                    res->errindex = 1;
+                    break;
+                case AGENTX_MSG_COMMITSET:
+                    res->errstat = SNMP_ERR_COMMITFAILED;
+                    res->errindex = 1;
+                    break;
+                case AGENTX_MSG_UNDOSET:
+                    /* Success - could undo not setting any value :-) */
+                    break;
+                case AGENTX_MSG_CLOSE:
+                    /* Always let the master succeed! */
+                    break;
+                default:
+                    /* Unknown command */
+                    res->errstat = AGENTX_ERR_PARSE_FAILED;
+                    break;
+                }
+            if(snmp_send(sp, res) == 0)
+                snmp_free_pdu(res);
+            switch(act->command) {
+            case AGENTX_MSG_CLOSE:
+                /* Take action once the answer is sent! */
+                STATE_CALL(close)(state, act);
+                break;
+            default:
+                /* Do nothing */
+                break;
+            }
+        } else
+            /* RESPONSE act->time, act->errstat, act->errindex, varlist */
+            STATE_CALL(response)(state, act);
+        break;
+    case NETSNMP_CALLBACK_OP_TIMED_OUT:
+        change_state(state->timeout);
+        break;
+    case NETSNMP_CALLBACK_OP_DISCONNECT:
+        STATE_CALL(disconnect)(state);
+        break;
+    }
+    return 0;
+}
+
+extern const struct tState_s Connecting;
+extern const struct tState_s Opening;
+extern const struct tState_s Notifying;
+extern const struct tState_s Closing;
+extern const struct tState_s Disconnecting;
+extern const struct tState_s Exit;
+
+static void
+StateDisconnect(UNUSED tState self)
+{
+    snmp_log(LOG_ERR, "Unexpected disconnect in state %s\n", self->name);
+    change_state(&Disconnecting);
+}
+
+static void
+StateClose(UNUSED tState self, netsnmp_pdu *act)
+{
+    snmp_log(LOG_ERR, "Unexpected close with reason code %ld in state %s\n",
+             act->errstat, self->name);
+    change_state(&Disconnecting);
+}
+
+static void
+ConnectingEntry(UNUSED tState self)
+{
+    netsnmp_session init;
+    netsnmp_transport* t;
+    void* sess;
+
+    if(sessp) {
+        snmp_sess_close(sessp);
+        sessp = NULL;
+    }
+
+    snmp_sess_init(&init);
+    init.version = AGENTX_VERSION_1;
+    init.retries = 0; /* Retries are handled by the state machine */
+    init.timeout = SNMP_DEFAULT_TIMEOUT;
+    init.flags |= SNMP_FLAGS_STREAM_SOCKET;
+    init.callback = handle_agentx_response;
+    init.authenticator = NULL;
+
+    if(!(t = netsnmp_transport_open_client(
+             "agentx", netsnmp_ds_get_string(
+                 NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET)))) {
+        snmp_log(LOG_ERR, "Failed to connect to AgentX server\n");
+        change_state(&Exit);
+    } else if(!(sess = snmp_sess_add_ex(
+                    &init, t, NULL, agentx_parse, NULL, NULL,
+                    agentx_realloc_build, agentx_check_packet, NULL))) {
+      snmp_log(LOG_ERR, "Failed to create session\n");
+        change_state(&Exit);
+    } else {
+        sessp = sess;
+        change_state(&Opening);
+    }
+}
+
+const struct tState_s Connecting = {
+    ConnectingEntry,
+    NULL,
+    NULL,
+    NULL,
+    StateDisconnect,
+    NULL,
+    "Connnecting",
+    0
+};
+
+static netsnmp_pdu*
+pdu_create_opt_context(int command, const char* context, size_t len)
+{
+    netsnmp_pdu* res = snmp_pdu_create(command);
+    if (res)
+        if (context) {
+            if (snmp_clone_mem((void**)&res->contextName, context, len)) {
+                snmp_free_pdu(res);
+                res = NULL;
+            } else
+                res->contextNameLen = len;
+        }
+    return res;
+}
+
+static void
+OpeningEntry(UNUSED tState self)
+{
+    netsnmp_pdu* act =
+        pdu_create_opt_context(AGENTX_MSG_OPEN, context, contextLen);
+    if(act) {
+        act->sessid = 0;
+        act->transid = 0;
+        act->reqid = ++packetid;
+        act->time = 0;
+        snmp_pdu_add_variable(act, NULL, 0, ASN_OCTET_STR, NULL, 0);
+        if(snmp_sess_send(sessp, act) == 0)
+            snmp_free_pdu(act);
+    }
+}
+
+static void
+OpeningRes(UNUSED tState self, netsnmp_pdu *act)
+{
+    if(act->errstat == AGENTX_ERR_NOERROR) {
+        session = act->sessid;
+        change_state(&Notifying);
+    } else {
+        snmp_log(LOG_ERR, "Failed to open session");
+        change_state(&Exit);
+    }
+}
+
+const struct tState_s Opening = {
+    OpeningEntry,
+    NULL,
+    OpeningRes,
+    &Disconnecting,
+    StateDisconnect,
+    StateClose,
+    "Opening",
+    0
+};
+
+static void
+NotifyingEntry(UNUSED tState self)
+{
+    netsnmp_pdu* act = snmp_clone_pdu(pdu);
+    if(act) {
+        act->sessid = session;
+        act->transid = 0;
+        act->reqid = ++packetid;
+        if(snmp_sess_send(sessp, act) == 0)
+            snmp_free_pdu(act);
+    }
+}
+
+static void
+NotifyingRes(UNUSED tState self, netsnmp_pdu *act)
+{
+    if(act->errstat == AGENTX_ERR_NOERROR)
+        result = 0;
+    else
+        snmp_log(LOG_ERR, "Failed to send notification");
+    /** \todo: Retry handling --- ClosingReconnect??? */
+    change_state(&Closing);
+}
+
+const struct tState_s Notifying = {
+    NotifyingEntry,
+    NULL,
+    NotifyingRes,
+    NULL,            /** \todo: Retry handling? */
+    StateDisconnect, /** \todo: Retry handling? */
+    StateClose,
+    "Notifying",
+    1
+};
+
+static void
+ClosingEntry(UNUSED tState self)
+{
+    /* CLOSE pdu->errstat */
+    netsnmp_pdu* act =
+        pdu_create_opt_context(AGENTX_MSG_CLOSE, context, contextLen);
+    if(act) {
+        act->sessid = session;
+        act->transid = 0;
+        act->reqid = ++packetid;
+        act->errstat = AGENTX_CLOSE_SHUTDOWN;
+        if(snmp_sess_send(sessp, act) == 0)
+            snmp_free_pdu(act);
+    }
+}
+
+static void
+ClosingRes(UNUSED tState self, netsnmp_pdu *act)
+{
+    if(act->errstat != AGENTX_ERR_NOERROR) {
+        snmp_log(LOG_ERR, "AgentX error status of %ld\n", act->errstat);
+    }
+    change_state(&Disconnecting);
+}
+
+static void
+ClosingDisconnect(UNUSED tState self)
+{
+    change_state(&Disconnecting);
+}
+
+static void
+ClosingClose(UNUSED tState self, UNUSED netsnmp_pdu *act)
+{
+    change_state(&Disconnecting);
+}
+
+const struct tState_s Closing = {
+    ClosingEntry,
+    NULL,
+    ClosingRes,
+    &Disconnecting,
+    ClosingDisconnect,
+    ClosingClose,
+    "Closing",
+    1
+};
+
+static void
+DisconnectingEntry(UNUSED tState self)
+{
+    snmp_sess_close(sessp);
+    sessp = NULL;
+    change_state(&Exit);
+}
+
+const struct tState_s Disconnecting = {
+    DisconnectingEntry,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    "Disconnecting",
+    0
+};
+
+const struct tState_s Exit = {
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    "Exit",
+    0
+};
+
+int
+main(int argc, char *argv[])
+{
+    int             arg;
+    char           *prognam;
+    char           *cp = NULL;
+
+    const char*     sysUpTime = NULL;
+
+    prognam = strrchr(argv[0], '/');
+    if (prognam)
+        ++prognam;
+    else
+        prognam = argv[0];
+
+    putenv(strdup("POSIXLY_CORRECT=1"));
+
+    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+			   NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD, 1);
+    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+			   NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE, 1);
+
+    while ((arg = getopt(argc, argv, ":Vhm:M:D:dP:L:U:c:x:")) != -1) {
+        switch (arg) {
+        case 'h':
+            usage(prognam);
+            exit(0);
+        case 'm':
+            setenv("MIBS", optarg, 1);
+            break;
+        case 'M':
+            setenv("MIBDIRS", optarg, 1);
+            break;
+        case 'c':
+            context = optarg;
+            contextLen = strlen(context);
+            break;
+        case 'D':
+            debug_register_tokens(optarg);
+            snmp_set_do_debugging(1);
+            break;
+        case 'd':
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_LIB_DUMP_PACKET, 1);
+            break;
+        case 'U':
+            sysUpTime = optarg;
+            break;
+        case 'V':
+            fprintf(stderr, "NET-SNMP version: %s\n", netsnmp_get_version());
+            exit(0);
+            break;
+#ifndef DISABLE_MIB_LOADING
+        case 'P':
+            cp = snmp_mib_toggle_options(optarg);
+            if (cp != NULL) {
+                fprintf(stderr, "Unknown parser option to -P: %c.\n", *cp);
+                usage(prognam);
+                exit(1);
+            }
+            break;
+#endif /* DISABLE_MIB_LOADING */
+        case 'L':
+            if (snmp_log_options(optarg, argc, argv) < 0) {
+                exit(1);
+            }
+            break;
+        case 'x':
+            if (optarg != NULL) {
+                netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
+                                      NETSNMP_DS_AGENT_X_SOCKET, optarg);
+            } else
+                usage(argv[0]);
+            break;
+
+        case ':':
+            fprintf(stderr, "Option -%c requires an operand\n", optopt);
+            usage(prognam);
+            exit(1);
+            break;
+        case '?':
+            fprintf(stderr, "Unrecognized option: -%c\n", optopt);
+            usage(prognam);
+            exit(1);
+            break;
+        }
+    }
+
+    arg = optind;
+
+    /* initialize tcpip, if necessary */
+    SOCK_STARTUP;
+
+    init_snmp("snmpapp");
+    agentx_config_init();
+
+    /* NOTIFY varlist */
+    pdu = pdu_create_opt_context(AGENTX_MSG_NOTIFY, context, contextLen);
+
+    if (sysUpTime)
+        snmp_add_var(pdu, sysuptime_oid, sysuptime_oid_len, 't', sysUpTime);
+
+    if (arg == argc) {
+        fprintf(stderr, "Missing trap-oid parameter\n");
+        usage(prognam);
+        SOCK_CLEANUP;
+        exit(1);
+    }
+
+    if (snmp_add_var(pdu, snmptrap_oid, snmptrap_oid_len, 'o', argv[arg])) {
+        snmp_perror(argv[arg]);
+        SOCK_CLEANUP;
+        exit(1);
+    }
+    ++arg;
+
+    while (arg < argc) {
+        oid    name[MAX_OID_LEN];
+        size_t name_length = MAX_OID_LEN;
+        arg += 3;
+        if (arg > argc) {
+            fprintf(stderr, "%s: Missing type/value for variable\n",
+                    argv[arg - 3]);
+            SOCK_CLEANUP;
+            exit(1);
+        }
+        if (!snmp_parse_oid(argv[arg - 3], name, &name_length)) {
+            snmp_perror(argv[arg - 3]);
+            SOCK_CLEANUP;
+            exit(1);
+        }
+        if (snmp_add_var(pdu, name, name_length, argv[arg - 2][0],
+                         argv[arg - 1]) != 0) {
+            snmp_perror(argv[arg - 3]);
+            SOCK_CLEANUP;
+            exit(1);
+        }
+    }
+
+    packetid = 0;
+
+    state = &Connecting;
+    next_state = NULL;
+    if(state->entry) state->entry(state);
+
+    /* main loop here... */
+    for(;;) {
+        int block = 1;
+        int numfds = 0;
+        int count;
+        fd_set fdset;
+        struct timeval timeout;
+
+        while(next_state) {
+            if(state->exit) state->exit(state);
+            DEBUGMSGTL(("process", "State transition: %s -> %s\n",
+                        state->name, next_state->name));
+            state = next_state;
+            next_state = NULL;
+            if(state->entry) state->entry(state);
+        }
+
+        if(state == &Exit)
+            break;
+
+        FD_ZERO(&fdset);
+        snmp_sess_select_info(sessp, &numfds, &fdset, &timeout, &block);
+        count = select(numfds, &fdset, NULL, NULL, !block ? &timeout : NULL);
+        if (count > 0)
+            snmp_sess_read(sessp, &fdset);
+        else if (count == 0)
+            snmp_sess_timeout(sessp);
+        else if (errno != EINTR) {
+            snmp_log(LOG_ERR, "select error [%s]\n", strerror(errno));
+            change_state(&Exit);
+        }
+    }
+
+    /* at shutdown time */
+    snmp_free_pdu(pdu);
+    pdu = NULL;
+
+    snmp_shutdown("snmpapp");
+
+    SOCK_CLEANUP;
+    exit(result);
+}
diff --git a/apps/encode_keychange.c b/apps/encode_keychange.c
index 9441723..5bf8e4c 100644
--- a/apps/encode_keychange.c
+++ b/apps/encode_keychange.c
@@ -38,10 +38,6 @@
 #include <netinet/in.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdlib.h>
@@ -394,22 +390,22 @@
 
     usage_synopsis(ofp);
 
-    fprintf(ofp, "\n\
-    Only -t is mandatory.  The transform is used to convert P=>Ku, convert\n\
-    Ku=>Kul, and to hash the old Kul with the random bits.\n\
-\n\
-    Passphrase will be taken from the first successful source as follows:\n\
+    fprintf(ofp, "\n%s\
 	a) Commandline options,\n\
 	b) The file \"%s/%s\",\n\
-	c) stdin  -or-  User input from the terminal.\n\
+	c) stdin  -or-  User input from the terminal.\n\n%s\
+		" NL,
+   "Only -t is mandatory.  The transform is used to convert P=>Ku, convert\n\
+    Ku=>Kul, and to hash the old Kul with the random bits.\n\
 \n\
-    -f will require reading from the stdin/terminal, ignoring a) and b).\n\
+    Passphrase will be taken from the first successful source as follows:\n",
+    (s = getenv("HOME")) ? s : "$HOME", local_passphrase_filename,
+   "-f will require reading from the stdin/terminal, ignoring a) and b).\n\
     -P will prevent prompts for passphrases to stdout from being printed.\n\
 \n\
     <engineID> is interpreted as a hex string when preceeded by \"0x\",\n\
     otherwise it is created to contain \"text\".  If nothing is given,\n\
-    <engineID> is constructed from the first IP address for the local host.\n\
-		" NL, (s = getenv("HOME")) ? s : "$HOME", local_passphrase_filename);
+    <engineID> is constructed from the first IP address for the local host.\n");
 
 
     /*
@@ -744,12 +740,16 @@
         ti = snmp_ttyecho(0, 0);
     }
 
-    fgets(buffer, sizeof(buffer), stdin);
+    bufp = fgets(buffer, sizeof(buffer), stdin);
 
     if (!bvisible) {
         ti = snmp_ttyecho(0, ti);
         fputs("\n", ofp);
     }
+    if (!bufp) {
+        fprintf(stderr, "Aborted...\n");
+        exit(1);
+    }
 
 
     /*
diff --git a/apps/snmpbulkget.c b/apps/snmpbulkget.c
index bc9687c..2e9ee34 100644
--- a/apps/snmpbulkget.c
+++ b/apps/snmpbulkget.c
@@ -42,11 +42,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -60,9 +56,6 @@
 #endif
 #include <stdio.h>
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -120,7 +113,7 @@
                     exit(1);
                 } else {
                     optarg = endptr;
-                    if (isspace(*optarg)) {
+                    if (isspace((unsigned char)(*optarg))) {
                         return;
                     }
                 }
@@ -151,9 +144,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpbulkwalk.c b/apps/snmpbulkwalk.c
index b46af58..379d2ae 100644
--- a/apps/snmpbulkwalk.c
+++ b/apps/snmpbulkwalk.c
@@ -42,11 +42,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -60,9 +56,6 @@
 #endif
 #include <stdio.h>
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -157,7 +150,7 @@
                     exit(1);
                 } else {
                     optarg = endptr;
-                    if (isspace(*optarg)) {
+                    if (isspace((unsigned char)(*optarg))) {
                         return;
                     }
                 }
@@ -209,9 +202,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpdelta.c b/apps/snmpdelta.c
index 7388ec7..710fc77 100644
--- a/apps/snmpdelta.c
+++ b/apps/snmpdelta.c
@@ -46,11 +46,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -62,9 +58,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -256,7 +249,7 @@
 
     for (cp = buf; *cp; cp++);
     while (cp >= buf) {
-        if (isalpha(*cp))
+        if (isalpha((unsigned char)(*cp)))
             break;
         cp--;
     }
@@ -296,7 +289,7 @@
             continue;
         blank = TRUE;
         for (cp = buf; *cp; cp++)
-            if (!isspace(*cp)) {
+            if (!isspace((unsigned char)(*cp))) {
                 blank = FALSE;
                 break;
             }
@@ -408,9 +401,11 @@
     int             exit_code = 0;
 
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", &optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpdf.c b/apps/snmpdf.c
index a0e9b9e..2b438f9 100644
--- a/apps/snmpdf.c
+++ b/apps/snmpdf.c
@@ -1,5 +1,5 @@
 /*
- * snmpdf.c - send snmp GET requests to a network entity.
+ * snmpdf.c - display disk space usage on a network entity via SNMP.
  *
  */
 
@@ -54,11 +54,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -70,9 +66,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -236,9 +229,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpget.c b/apps/snmpget.c
index 33d5d71..701f536 100644
--- a/apps/snmpget.c
+++ b/apps/snmpget.c
@@ -43,11 +43,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -59,9 +55,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -131,9 +124,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpgetnext.c b/apps/snmpgetnext.c
index 5f91def..7de13f3 100644
--- a/apps/snmpgetnext.c
+++ b/apps/snmpgetnext.c
@@ -43,11 +43,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -59,9 +55,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -127,9 +120,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", &optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpnetstat/Makefile.depend b/apps/snmpnetstat/Makefile.depend
index a329634..c1faecf 100644
--- a/apps/snmpnetstat/Makefile.depend
+++ b/apps/snmpnetstat/Makefile.depend
@@ -7,12 +7,16 @@
 ./if.lo: ../../include/net-snmp/machine/generic.h
 ./if.lo: ../../include/net-snmp/net-snmp-includes.h
 ./if.lo: ../../include/net-snmp/definitions.h ../../include/net-snmp/types.h
+./if.lo: ../../include/net-snmp/library/oid.h
 ./if.lo: ../../include/net-snmp/library/types.h
 ./if.lo: ../../include/net-snmp/library/snmp_api.h
 ./if.lo: ../../include/net-snmp/varbind_api.h
 ./if.lo: ../../include/net-snmp/library/snmp_client.h
 ./if.lo: ../../include/net-snmp/pdu_api.h
 ./if.lo: ../../include/net-snmp/library/asn1.h
+./if.lo: ../../include/net-snmp/output_api.h
+./if.lo: ../../include/net-snmp/library/snmp_debug.h
+./if.lo: ../../include/net-snmp/library/snmp_logging.h
 ./if.lo: ../../include/net-snmp/session_api.h
 ./if.lo: ../../include/net-snmp/library/callback.h
 ./if.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -20,8 +24,12 @@
 ./if.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./if.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./if.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./if.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./if.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./if.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./if.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./if.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./if.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./if.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./if.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./if.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -43,7 +51,6 @@
 ./if.lo: ../../include/net-snmp/library/check_varbind.h
 ./if.lo: ../../include/net-snmp/library/container.h
 ./if.lo: ../../include/net-snmp/library/factory.h
-./if.lo: ../../include/net-snmp/library/snmp_logging.h
 ./if.lo: ../../include/net-snmp/library/container_binary_array.h
 ./if.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./if.lo: ../../include/net-snmp/library/container_iterator.h
@@ -52,11 +59,10 @@
 ./if.lo: ../../include/net-snmp/version.h ../../include/net-snmp/config_api.h
 ./if.lo: ../../include/net-snmp/library/read_config.h
 ./if.lo: ../../include/net-snmp/library/default_store.h
+./if.lo: ../../include/net-snmp/net-snmp-config.h
 ./if.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./if.lo: ../../include/net-snmp/library/snmp_enum.h
 ./if.lo: ../../include/net-snmp/library/vacm.h
-./if.lo: ../../include/net-snmp/output_api.h
-./if.lo: ../../include/net-snmp/library/snmp_debug.h
 ./if.lo: ../../include/net-snmp/snmpv3_api.h
 ./if.lo: ../../include/net-snmp/library/snmpv3.h
 ./if.lo: ../../include/net-snmp/library/transform_oids.h
@@ -69,19 +75,19 @@
 ./if.lo: main.h
 ./if.lo: netstat.h
 ./inet6.lo: ../../include/net-snmp/net-snmp-config.h
-./inet6.lo: ../../include/net-snmp/system/linux.h
-./inet6.lo: ../../include/net-snmp/system/sysv.h
-./inet6.lo: ../../include/net-snmp/system/generic.h
-./inet6.lo: ../../include/net-snmp/machine/generic.h
 ./inet6.lo: ../../include/net-snmp/net-snmp-includes.h
 ./inet6.lo: ../../include/net-snmp/definitions.h
 ./inet6.lo: ../../include/net-snmp/types.h
+./inet6.lo: ../../include/net-snmp/library/oid.h
 ./inet6.lo: ../../include/net-snmp/library/types.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_api.h
 ./inet6.lo: ../../include/net-snmp/varbind_api.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_client.h
 ./inet6.lo: ../../include/net-snmp/pdu_api.h
 ./inet6.lo: ../../include/net-snmp/library/asn1.h
+./inet6.lo: ../../include/net-snmp/output_api.h
+./inet6.lo: ../../include/net-snmp/library/snmp_debug.h
+./inet6.lo: ../../include/net-snmp/library/snmp_logging.h
 ./inet6.lo: ../../include/net-snmp/session_api.h
 ./inet6.lo: ../../include/net-snmp/library/callback.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -89,8 +95,12 @@
 ./inet6.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./inet6.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./inet6.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inet6.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet6.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./inet6.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./inet6.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -112,7 +122,6 @@
 ./inet6.lo: ../../include/net-snmp/library/check_varbind.h
 ./inet6.lo: ../../include/net-snmp/library/container.h
 ./inet6.lo: ../../include/net-snmp/library/factory.h
-./inet6.lo: ../../include/net-snmp/library/snmp_logging.h
 ./inet6.lo: ../../include/net-snmp/library/container_binary_array.h
 ./inet6.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./inet6.lo: ../../include/net-snmp/library/container_iterator.h
@@ -125,8 +134,6 @@
 ./inet6.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_enum.h
 ./inet6.lo: ../../include/net-snmp/library/vacm.h
-./inet6.lo: ../../include/net-snmp/output_api.h
-./inet6.lo: ../../include/net-snmp/library/snmp_debug.h
 ./inet6.lo: ../../include/net-snmp/snmpv3_api.h
 ./inet6.lo: ../../include/net-snmp/library/snmpv3.h
 ./inet6.lo: ../../include/net-snmp/library/transform_oids.h
@@ -137,19 +144,19 @@
 ./inet6.lo: ../../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./inet.lo: ../../include/net-snmp/system/sysv.h
-./inet.lo: ../../include/net-snmp/system/generic.h
-./inet.lo: ../../include/net-snmp/machine/generic.h
 ./inet.lo: ../../include/net-snmp/net-snmp-includes.h
 ./inet.lo: ../../include/net-snmp/definitions.h
 ./inet.lo: ../../include/net-snmp/types.h
+./inet.lo: ../../include/net-snmp/library/oid.h
 ./inet.lo: ../../include/net-snmp/library/types.h
 ./inet.lo: ../../include/net-snmp/library/snmp_api.h
 ./inet.lo: ../../include/net-snmp/varbind_api.h
 ./inet.lo: ../../include/net-snmp/library/snmp_client.h
 ./inet.lo: ../../include/net-snmp/pdu_api.h
 ./inet.lo: ../../include/net-snmp/library/asn1.h
+./inet.lo: ../../include/net-snmp/output_api.h
+./inet.lo: ../../include/net-snmp/library/snmp_debug.h
+./inet.lo: ../../include/net-snmp/library/snmp_logging.h
 ./inet.lo: ../../include/net-snmp/session_api.h
 ./inet.lo: ../../include/net-snmp/library/callback.h
 ./inet.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -157,8 +164,12 @@
 ./inet.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./inet.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./inet.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./inet.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./inet.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inet.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./inet.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./inet.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./inet.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./inet.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -180,7 +191,6 @@
 ./inet.lo: ../../include/net-snmp/library/check_varbind.h
 ./inet.lo: ../../include/net-snmp/library/container.h
 ./inet.lo: ../../include/net-snmp/library/factory.h
-./inet.lo: ../../include/net-snmp/library/snmp_logging.h
 ./inet.lo: ../../include/net-snmp/library/container_binary_array.h
 ./inet.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./inet.lo: ../../include/net-snmp/library/container_iterator.h
@@ -193,8 +203,6 @@
 ./inet.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./inet.lo: ../../include/net-snmp/library/snmp_enum.h
 ./inet.lo: ../../include/net-snmp/library/vacm.h
-./inet.lo: ../../include/net-snmp/output_api.h
-./inet.lo: ../../include/net-snmp/library/snmp_debug.h
 ./inet.lo: ../../include/net-snmp/snmpv3_api.h
 ./inet.lo: ../../include/net-snmp/library/snmpv3.h
 ./inet.lo: ../../include/net-snmp/library/transform_oids.h
@@ -205,19 +213,19 @@
 ./inet.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
 ./inet.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/system/linux.h
-./main.lo: ../../include/net-snmp/system/sysv.h
-./main.lo: ../../include/net-snmp/system/generic.h
-./main.lo: ../../include/net-snmp/machine/generic.h
 ./main.lo: ../../include/net-snmp/net-snmp-includes.h
 ./main.lo: ../../include/net-snmp/definitions.h
 ./main.lo: ../../include/net-snmp/types.h
+./main.lo: ../../include/net-snmp/library/oid.h
 ./main.lo: ../../include/net-snmp/library/types.h
 ./main.lo: ../../include/net-snmp/library/snmp_api.h
 ./main.lo: ../../include/net-snmp/varbind_api.h
 ./main.lo: ../../include/net-snmp/library/snmp_client.h
 ./main.lo: ../../include/net-snmp/pdu_api.h
 ./main.lo: ../../include/net-snmp/library/asn1.h
+./main.lo: ../../include/net-snmp/output_api.h
+./main.lo: ../../include/net-snmp/library/snmp_debug.h
+./main.lo: ../../include/net-snmp/library/snmp_logging.h
 ./main.lo: ../../include/net-snmp/session_api.h
 ./main.lo: ../../include/net-snmp/library/callback.h
 ./main.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -225,8 +233,12 @@
 ./main.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./main.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./main.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./main.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./main.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./main.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./main.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./main.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./main.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./main.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./main.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./main.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -248,7 +260,6 @@
 ./main.lo: ../../include/net-snmp/library/check_varbind.h
 ./main.lo: ../../include/net-snmp/library/container.h
 ./main.lo: ../../include/net-snmp/library/factory.h
-./main.lo: ../../include/net-snmp/library/snmp_logging.h
 ./main.lo: ../../include/net-snmp/library/container_binary_array.h
 ./main.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./main.lo: ../../include/net-snmp/library/container_iterator.h
@@ -261,8 +272,6 @@
 ./main.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./main.lo: ../../include/net-snmp/library/snmp_enum.h
 ./main.lo: ../../include/net-snmp/library/vacm.h
-./main.lo: ../../include/net-snmp/output_api.h
-./main.lo: ../../include/net-snmp/library/snmp_debug.h
 ./main.lo: ../../include/net-snmp/snmpv3_api.h
 ./main.lo: ../../include/net-snmp/library/snmpv3.h
 ./main.lo: ../../include/net-snmp/library/transform_oids.h
@@ -271,22 +280,21 @@
 ./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/snmpusm.h
-./main.lo: main.h netstat.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/system/linux.h
-./route.lo: ../../include/net-snmp/system/sysv.h
-./route.lo: ../../include/net-snmp/system/generic.h
-./route.lo: ../../include/net-snmp/machine/generic.h
 ./route.lo: ../../include/net-snmp/net-snmp-includes.h
 ./route.lo: ../../include/net-snmp/definitions.h
 ./route.lo: ../../include/net-snmp/types.h
+./route.lo: ../../include/net-snmp/library/oid.h
 ./route.lo: ../../include/net-snmp/library/types.h
 ./route.lo: ../../include/net-snmp/library/snmp_api.h
 ./route.lo: ../../include/net-snmp/varbind_api.h
 ./route.lo: ../../include/net-snmp/library/snmp_client.h
 ./route.lo: ../../include/net-snmp/pdu_api.h
 ./route.lo: ../../include/net-snmp/library/asn1.h
+./route.lo: ../../include/net-snmp/output_api.h
+./route.lo: ../../include/net-snmp/library/snmp_debug.h
+./route.lo: ../../include/net-snmp/library/snmp_logging.h
 ./route.lo: ../../include/net-snmp/session_api.h
 ./route.lo: ../../include/net-snmp/library/callback.h
 ./route.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -294,8 +302,12 @@
 ./route.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./route.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./route.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./route.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./route.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./route.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./route.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./route.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./route.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./route.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./route.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./route.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -317,7 +329,6 @@
 ./route.lo: ../../include/net-snmp/library/check_varbind.h
 ./route.lo: ../../include/net-snmp/library/container.h
 ./route.lo: ../../include/net-snmp/library/factory.h
-./route.lo: ../../include/net-snmp/library/snmp_logging.h
 ./route.lo: ../../include/net-snmp/library/container_binary_array.h
 ./route.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./route.lo: ../../include/net-snmp/library/container_iterator.h
@@ -330,8 +341,6 @@
 ./route.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./route.lo: ../../include/net-snmp/library/snmp_enum.h
 ./route.lo: ../../include/net-snmp/library/vacm.h
-./route.lo: ../../include/net-snmp/output_api.h
-./route.lo: ../../include/net-snmp/library/snmp_debug.h
 ./route.lo: ../../include/net-snmp/snmpv3_api.h
 ./route.lo: ../../include/net-snmp/library/snmpv3.h
 ./route.lo: ../../include/net-snmp/library/transform_oids.h
@@ -340,22 +349,21 @@
 ./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/snmpusm.h
-./route.lo: main.h netstat.h
+./route.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/system/linux.h
-./winstub.lo: ../../include/net-snmp/system/sysv.h
-./winstub.lo: ../../include/net-snmp/system/generic.h
-./winstub.lo: ../../include/net-snmp/machine/generic.h
 ./winstub.lo: ../../include/net-snmp/net-snmp-includes.h
 ./winstub.lo: ../../include/net-snmp/definitions.h
 ./winstub.lo: ../../include/net-snmp/types.h
+./winstub.lo: ../../include/net-snmp/library/oid.h
 ./winstub.lo: ../../include/net-snmp/library/types.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_api.h
 ./winstub.lo: ../../include/net-snmp/varbind_api.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_client.h
 ./winstub.lo: ../../include/net-snmp/pdu_api.h
 ./winstub.lo: ../../include/net-snmp/library/asn1.h
+./winstub.lo: ../../include/net-snmp/output_api.h
+./winstub.lo: ../../include/net-snmp/library/snmp_debug.h
+./winstub.lo: ../../include/net-snmp/library/snmp_logging.h
 ./winstub.lo: ../../include/net-snmp/session_api.h
 ./winstub.lo: ../../include/net-snmp/library/callback.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_transport.h
@@ -363,8 +371,12 @@
 ./winstub.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpUnixDomain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./winstub.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./winstub.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./winstub.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpTCPDomain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./winstub.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./winstub.lo: ../../include/net-snmp/library/snmpIPXDomain.h
 ./winstub.lo: ../../include/net-snmp/library/ucd_compat.h
@@ -386,7 +398,6 @@
 ./winstub.lo: ../../include/net-snmp/library/check_varbind.h
 ./winstub.lo: ../../include/net-snmp/library/container.h
 ./winstub.lo: ../../include/net-snmp/library/factory.h
-./winstub.lo: ../../include/net-snmp/library/snmp_logging.h
 ./winstub.lo: ../../include/net-snmp/library/container_binary_array.h
 ./winstub.lo: ../../include/net-snmp/library/container_list_ssll.h
 ./winstub.lo: ../../include/net-snmp/library/container_iterator.h
@@ -399,8 +410,6 @@
 ./winstub.lo: ../../include/net-snmp/library/snmp_parse_args.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_enum.h
 ./winstub.lo: ../../include/net-snmp/library/vacm.h
-./winstub.lo: ../../include/net-snmp/output_api.h
-./winstub.lo: ../../include/net-snmp/library/snmp_debug.h
 ./winstub.lo: ../../include/net-snmp/snmpv3_api.h
 ./winstub.lo: ../../include/net-snmp/library/snmpv3.h
 ./winstub.lo: ../../include/net-snmp/library/transform_oids.h
diff --git a/apps/snmpnetstat/if.c b/apps/snmpnetstat/if.c
index 43e502d..81334f7 100644
--- a/apps/snmpnetstat/if.c
+++ b/apps/snmpnetstat/if.c
@@ -73,7 +73,7 @@
         char            ip[128], route[128];
         int             mtu;
         int             drops;
-        int             ifindex;
+        unsigned int    ifindex;
                         /*
                          * Save "expandable" fields as string values
                          *  rather than integer statistics
@@ -132,14 +132,15 @@
      */
     for (vp=addr_if_var, vp2=addr_mask_var;  vp;
          vp=vp->next_variable, vp2=vp2->next_variable) {
-        if ( vp->val.integer && *vp->val.integer == cur_if->ifindex )
+        if ( vp->val.integer && *vp->val.integer == (int)cur_if->ifindex )
             break;
     }
     if (vp2) {
         /*
          * Always want a numeric interface IP address
          */
-        snprintf( cur_if->ip, 128, "%lu.%lu.%lu.%lu",
+        snprintf( cur_if->ip, 128, "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u."
+                  "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u",
                   vp2->name[10],
                   vp2->name[11],
                   vp2->name[12],
@@ -541,7 +542,7 @@
     struct iftot *sum = NULL, *total  = NULL;    /* overall summary    */
     int    line;
     int    first;
-    int    i;
+    size_t i;
 
     var = NULL;
     if ( intrface ) {
diff --git a/apps/snmpnetstat/inet.c b/apps/snmpnetstat/inet.c
index a69fb5b..6f7c1e1 100644
--- a/apps/snmpnetstat/inet.c
+++ b/apps/snmpnetstat/inet.c
@@ -46,8 +46,6 @@
 #include <unistd.h>
 #endif
 #if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
 #include "winstub.h"
 #endif
 #if HAVE_SYS_SOCKET_H
@@ -69,7 +67,7 @@
 #include "netstat.h"
 
 struct stat_table {
-    int             entry;      /* entry number in table */
+    unsigned int  entry;      /* entry number in table */
     /*
      * format string to printf(description, value) 
      * warning: the %d must be before the %s 
@@ -641,7 +639,7 @@
 		snprintf(line, sizeof line, "%s", cp);
 	else {
 		inp->s_addr = ntohl(inp->s_addr);
-#define C(x)	((x) & 0xff)
+#define C(x)	(unsigned)((x) & 0xff)
 		snprintf(line, sizeof line, "%u.%u.%u.%u",
 		    C(inp->s_addr >> 24), C(inp->s_addr >> 16),
 		    C(inp->s_addr >> 8), C(inp->s_addr));
diff --git a/apps/snmpnetstat/inet6.c b/apps/snmpnetstat/inet6.c
index 4535c0a..42718f2 100644
--- a/apps/snmpnetstat/inet6.c
+++ b/apps/snmpnetstat/inet6.c
@@ -46,8 +46,6 @@
 #include <unistd.h>
 #endif
 #if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
 #include "winstub.h"
 #endif
 #if HAVE_SYS_SOCKET_H
@@ -73,7 +71,7 @@
 #include "netstat.h"
 
 struct stat_table {
-    int             entry;      /* entry number in table */
+    unsigned int entry;      /* entry number in table */
     /*
      * format string to printf(description, value) 
      * warning: the %d must be before the %s 
@@ -225,20 +223,21 @@
 {
     netsnmp_variable_list *var, *vp;
     struct stat_table     *sp;
-    oid   *stats, stat;
-    int    max_stat = 0;
+    long   *stats;
+    oid stat;
+    unsigned int max_stat = 0;
     int    active   = 0;
 
     var = NULL;
     for (sp=stable; sp->entry; sp++) {
         oid_buf[buf_len-1] = sp->entry;
-        if (sp->entry>max_stat)
+        if (sp->entry > max_stat)
             max_stat = sp->entry;
         snmp_varlist_add_variable( &var, oid_buf, buf_len,
                                    ASN_NULL, NULL,  0);
     }
     oid_buf[buf_len-1] = stable[0].entry;
-    stats = (oid *)calloc(max_stat+1, sizeof(oid));
+    stats = (long *)calloc(max_stat+1, sizeof(long));
     
     /*
      * Walk the specified column(s), and total the individual statistics
@@ -415,7 +414,7 @@
 
 	struct servent *sp = NULL;
 	char line[80], *cp;
-	int width;
+	unsigned width;
 	int len = sizeof line;
 
 	width = Aflag ? 12 : 16;
@@ -493,7 +492,7 @@
 		if (IN6_IS_ADDR_LINKLOCAL(in6p) ||
 		    IN6_IS_ADDR_MC_LINKLOCAL(in6p)) {
 			sin6.sin6_scope_id =
-			    ntohs(*(const u_int16_t *)&in6p->s6_addr[2]);
+			    ntohs(*(const uint16_t *)&in6p->s6_addr[2]);
 			sin6.sin6_addr.s6_addr[2] = 0;
 			sin6.sin6_addr.s6_addr[3] = 0;
 		}
diff --git a/apps/snmpnetstat/main.c b/apps/snmpnetstat/main.c
index ac2b04f..fa199ed 100644
--- a/apps/snmpnetstat/main.c
+++ b/apps/snmpnetstat/main.c
@@ -57,6 +57,10 @@
 #include "main.h"
 #include "netstat.h"
 
+#if HAVE_WINSOCK_H
+#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 */
@@ -316,11 +320,13 @@
             progname = argv[0];
 
 	switch (snmp_parse_args( argc, argv, &session, "C:iRs", optProc)) {
-	case -2:
+	case NETSNMP_PARSE_ARGS_ERROR:
+	    exit(1);
+	case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
 	    exit(0);
-	case -1:
+	case NETSNMP_PARSE_ARGS_ERROR_USAGE:
 	    usage();
-	    exit(0);
+	    exit(1);
 	default:
 	    break;
 	}
@@ -511,7 +517,7 @@
 
 	setprotoent(1);			/* make protocol lookup cheaper */
 	while ((p = getprotoent())) {
-		/* assert: name not same as p->name */
+		/* netsnmp_assert: name not same as p->name */
 		for (alias = p->p_aliases; *alias; alias++)
 			if (strcmp(name, *alias) == 0) {
 				endprotoent();
diff --git a/apps/snmpnetstat/main.h b/apps/snmpnetstat/main.h
index 71e7a65..1272321 100644
--- a/apps/snmpnetstat/main.h
+++ b/apps/snmpnetstat/main.h
@@ -4,10 +4,13 @@
 #endif
 
 extern  netsnmp_session *ss;
+NETSNMP_IMPORT
 int netsnmp_query_get(    netsnmp_variable_list *list,
                           netsnmp_session       *session);
+NETSNMP_IMPORT
 int netsnmp_query_getnext(netsnmp_variable_list *list,
                           netsnmp_session       *session);
+NETSNMP_IMPORT
 int netsnmp_query_walk(   netsnmp_variable_list *list,
                           netsnmp_session       *session);
 
diff --git a/apps/snmpnetstat/winstub.c b/apps/snmpnetstat/winstub.c
index ffd5966..5e2dd64 100644
--- a/apps/snmpnetstat/winstub.c
+++ b/apps/snmpnetstat/winstub.c
@@ -25,9 +25,6 @@
 #if HAVE_STRING_H
 #include <string.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
diff --git a/apps/snmpnetstat/winstub.h b/apps/snmpnetstat/winstub.h
index ea40450..8fc51dd 100644
--- a/apps/snmpnetstat/winstub.h
+++ b/apps/snmpnetstat/winstub.h
@@ -2,6 +2,8 @@
 #ifndef _WINSTUB_H_
 #define _WINSTUB_H_
 
+#include <net-snmp/types.h>
+
 #if (defined(WIN32) || defined(cygwin))
 
 /*
diff --git a/apps/snmpset.c b/apps/snmpset.c
index faeda95..1b29a6c 100644
--- a/apps/snmpset.c
+++ b/apps/snmpset.c
@@ -43,11 +43,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -59,9 +55,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -142,9 +135,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmpstatus.c b/apps/snmpstatus.c
index ae08369..0443c4d 100644
--- a/apps/snmpstatus.c
+++ b/apps/snmpstatus.c
@@ -1,5 +1,6 @@
 /*
- * snmpstatus.c - send snmp GET requests to a network entity.
+ * snmpstatus.c - retrieves a fixed set of management information from
+ * a network entity.
  *
  */
 /***********************************************************************
@@ -43,11 +44,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -59,9 +56,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -159,9 +153,11 @@
      * get the common command line arguments 
      */
     switch (snmp_parse_args(argc, argv, &session, "C:", &optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmptable.c b/apps/snmptable.c
index 1422ece..c9c7d26 100644
--- a/apps/snmptable.c
+++ b/apps/snmptable.c
@@ -43,11 +43,7 @@
 # include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -60,9 +56,6 @@
 #include <sys/select.h>
 #endif
 #include <stdio.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -208,6 +201,7 @@
             default:
                 fprintf(stderr, "Bad option after -C: %c\n", optarg[-1]);
                 usage();
+                exit(1);
             }
         }
         break;
@@ -265,9 +259,11 @@
      * get the common command line arguments 
      */
     switch (snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
@@ -670,7 +666,7 @@
                     col++;
                     name[rootlen] = column[col].subid;
                     if ((vars->name_length < name_length) ||
-                        ((int) vars->name[rootlen] != column[col].subid) ||
+                        (vars->name[rootlen] != column[col].subid) ||
                         memcmp(name, vars->name,
                                name_length * sizeof(oid)) != 0
                         || vars->type == SNMP_ENDOFMIBVIEW) {
diff --git a/apps/snmptest.c b/apps/snmptest.c
index 28f9254..519e38e 100644
--- a/apps/snmptest.c
+++ b/apps/snmptest.c
@@ -45,11 +45,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -61,9 +57,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -102,9 +95,11 @@
      * get the common command line arguments 
      */
     switch (snmp_parse_args(argc, argv, &session, NULL, NULL)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
@@ -168,7 +163,11 @@
                     } else {
                         printf("What repeat count? ");
                         fflush(stdout);
-                        fgets(input, sizeof(input), stdin);
+                        if (!fgets(input, sizeof(input), stdin)) {
+                            printf("Quitting,  Goodbye\n");
+                            SOCK_CLEANUP;
+                            exit(0);
+                        }
                         maxRepetitions = atoi(input);
                         pdu->non_repeaters = nonRepeaters;
                         pdu->max_repetitions = maxRepetitions;
@@ -303,7 +302,7 @@
     if (buf[val_len - 1] == '\n')
         buf[--val_len] = 0;
     if (*buf == '$') {
-        switch (toupper(buf[1])) {
+        switch (toupper((unsigned char)(buf[1]))) {
         case 'G':
             command = SNMP_MSG_GET;
             printf("Request type is Get Request\n");
@@ -343,7 +342,7 @@
             }
             break;
         case 'Q':
-            switch ((toupper(buf[2]))) {
+            switch ((toupper((unsigned char)(buf[2])))) {
             case '\n':
             case 0:
                 printf("Quitting,  Goodbye\n");
@@ -380,7 +379,11 @@
         || command == SNMP_MSG_TRAP2) {
         printf("Type [i|u|s|x|d|n|o|t|a]: ");
         fflush(stdout);
-        fgets(buf, sizeof(buf), stdin);
+        if (!fgets(buf, sizeof(buf), stdin)) {
+            printf("Quitting,  Goodbye\n");
+            SOCK_CLEANUP;
+            exit(0);
+        }
         ch = *buf;
         switch (ch) {
         case 'i':
@@ -419,7 +422,11 @@
       getValue:
         printf("Value: ");
         fflush(stdout);
-        fgets(buf, sizeof(buf), stdin);
+        if (!fgets(buf, sizeof(buf), stdin)) {
+            printf("Quitting,  Goodbye\n");
+            SOCK_CLEANUP;
+            exit(0);
+        }
         switch (vp->type) {
         case ASN_INTEGER:
             vp->val.integer = (long *) malloc(sizeof(long));
diff --git a/apps/snmptls.c b/apps/snmptls.c
new file mode 100644
index 0000000..809d369
--- /dev/null
+++ b/apps/snmptls.c
@@ -0,0 +1,556 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#undef NETSNMP_USE_ASSERT
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <ctype.h>
+
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+
+#include "tlstm-mib.h"
+#include "tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h"
+#include "tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h"
+#include "tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h"
+
+
+
+/*
+#define COL_SNMPTLSTMCERTTOTSN_ID                       1
+#define COL_SNMPTLSTMCERTTOTSN_FINGERPRINT              2
+#define COL_SNMPTLSTMCERTTOTSN_MAPTYPE                  3
+#define COL_SNMPTLSTMCERTTOTSN_DATA                     4
+#define COL_SNMPTLSTMCERTTOTSN_STORAGETYPE              5
+#define COL_SNMPTLSTMCERTTOTSN_ROWSTATUS                6
+*/
+const oid certNum[] = { SNMP_TLS_TM_CERT_COUNT };
+const oid certChg[] = { SNMP_TLS_TM_CERT_CHANGED };
+const oid certTbl[] = { SNMP_TLS_TM_CERT_TABLE };
+
+/*
+#define COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT    1
+#define COLUMN_SNMPTLSTMPARAMSSTORAGETYPE    2
+#define COLUMN_SNMPTLSTMPARAMSROWSTATUS    3
+*/
+
+const oid paramsNum[] = { SNMP_TLS_TM_PARAMS_COUNT };
+const oid paramsChg[] = { SNMP_TLS_TM_PARAMS_CHANGED };
+const oid paramsTbl[] = { SNMP_TLS_TM_PARAMS_TABLE };
+
+const oid addrNum[] = { SNMP_TLS_TM_ADDR_COUNT };
+const oid addrChg[] = { SNMP_TLS_TM_ADDR_CHANGED };
+const oid addrTbl[] = { SNMP_TLS_TM_ADDR_TABLE };
+
+
+const oid tlstmCertSpecified[]     = { SNMP_TLS_TM_BASE, 1, 1, 1 };
+const oid tlstmCertSANRFC822Name[] = { SNMP_TLS_TM_BASE, 1, 1, 2 };
+const oid tlstmCertSANDNSName[]    = { SNMP_TLS_TM_BASE, 1, 1, 3 };
+const oid tlstmCertSANIpAddress[]  = { SNMP_TLS_TM_BASE, 1, 1, 4 };
+const oid tlstmCertSANAny[]        = { SNMP_TLS_TM_BASE, 1, 1, 5 };
+const oid tlstmCertCommonName[]    = { SNMP_TLS_TM_BASE, 1, 1, 6 };
+
+const oid *certMapTypes[TSNM_tlstmCert_MAX + 1] = {
+    0, tlstmCertSpecified, tlstmCertSANRFC822Name, tlstmCertSANDNSName,
+    tlstmCertSANIpAddress, tlstmCertSANAny, tlstmCertCommonName };
+
+/** **************************************************************************
+ *
+ * cert rows
+ *
+ */
+netsnmp_variable_list *
+cert_row_create(uint32_t priority, int hash_type, const char *fp,
+                const oid *map_type, int map_type_len, const u_char *data,
+                int data_len, uint32_t st, int *row_status_index)
+{
+    oid                    name[] = { SNMP_TLS_TM_CERT_TABLE, 1, -1, -1 };
+    int                    name_len = OID_LENGTH(name), col_pos = name_len - 2;
+    int                    rs_index = 4;
+    u_char                 bin_fp[SNMP_MAXBUF_SMALL], *bin_fp_ptr = bin_fp;
+    u_int                  rs;
+    size_t                 bin_fp_len;
+    netsnmp_variable_list *vl = NULL, *vb;
+
+    netsnmp_require_ptr_LRV( fp, NULL );
+
+    DEBUGMSGT(("cert:create", "creating varbinds for pri %d, fp %s\n", priority,
+               fp));
+
+    bin_fp_len = sizeof(bin_fp);
+    netsnmp_tls_fingerprint_build(hash_type, fp, &bin_fp_ptr, &bin_fp_len, 0);
+
+    name[name_len-1] = priority;
+    name[col_pos] = COL_SNMPTLSTMCERTTOTSN_FINGERPRINT;
+    vl = snmp_varlist_add_variable(&vl, name, name_len, ASN_OCTET_STR,
+                                   &bin_fp, bin_fp_len);
+    netsnmp_require_ptr_LRV(vl, NULL);
+
+    if (map_type_len && map_type) {
+        name[col_pos] = COL_SNMPTLSTMCERTTOTSN_MAPTYPE;
+        vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_OBJECT_ID,
+                                       map_type, map_type_len * sizeof(oid));
+        if (NULL == vb) {
+            snmp_free_varbind(vl);
+            return NULL;
+        }
+    }
+    else
+        --rs_index;
+
+    if (data) {
+        name[col_pos] = COL_SNMPTLSTMCERTTOTSN_DATA;
+        vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_OCTET_STR,
+                                       data, data_len);
+        if (NULL == vb) {
+            snmp_free_varbind(vl);
+            return NULL;
+        }
+    }
+    else
+        --rs_index;
+
+    if (st) {
+        name[col_pos] = COL_SNMPTLSTMCERTTOTSN_STORAGETYPE;
+        vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                       &st, sizeof(st));
+        if (NULL == vb) {
+            snmp_free_varbind(vl);
+            return NULL;
+        }
+    }
+    else
+        --rs_index;
+
+    name[col_pos] = COL_SNMPTLSTMCERTTOTSN_ROWSTATUS;
+    rs = RS_CREATEANDGO;
+    vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                   &rs, sizeof(rs));
+    if (NULL == vb) {
+        snmp_free_varbind(vl);
+        return NULL;
+    }
+
+    if (row_status_index)
+        *row_status_index = rs_index;
+
+    return vl;
+}
+
+/** **************************************************************************
+ *
+ * param rows
+ *
+ */
+netsnmp_variable_list *
+params_row_create(const char *param_name, int hash_type, const char *fp,
+                  uint32_t st, int *row_status_index)
+{
+    oid                    name[MAX_OID_LEN];
+    int                    name_len, col_pos, rs_index = 2;
+    u_char                 bin_fp[SNMP_MAXBUF_SMALL], *bin_fp_ptr = bin_fp;
+    u_int                  rs;
+    size_t                 bin_fp_len;
+    netsnmp_variable_list *vl = NULL, *vb;
+
+    netsnmp_require_ptr_LRV( param_name, NULL );
+    netsnmp_require_ptr_LRV( fp, NULL );
+
+    DEBUGMSGT(("params:create", "creating varbinds for %s params, fp %s\n",
+               param_name, fp));
+
+    /*
+     * build base name
+     */
+    name_len = OID_LENGTH(paramsTbl);
+    memcpy(name, paramsTbl, sizeof(paramsTbl));
+    name[name_len++] = 1; /* entry */
+    col_pos = name_len++; /* column */
+    while (*param_name)
+        name[name_len++] = *param_name++;
+
+    bin_fp_len = sizeof(bin_fp);
+    netsnmp_tls_fingerprint_build(hash_type, fp, &bin_fp_ptr, &bin_fp_len, 0);
+
+    name[col_pos] = COLUMN_SNMPTLSTMPARAMSCLIENTFINGERPRINT;
+    vl = snmp_varlist_add_variable(&vl, name, name_len, ASN_OCTET_STR,
+                                   &bin_fp, bin_fp_len);
+    netsnmp_require_ptr_LRV(vl, NULL);
+
+    if (st) {
+        name[col_pos] = COLUMN_SNMPTLSTMPARAMSSTORAGETYPE;
+        vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                       &st, sizeof(st));
+        if (NULL == vb) {
+            snmp_free_varbind(vl);
+            return NULL;
+        }
+    }
+    else
+        --rs_index;
+
+    name[col_pos] = COLUMN_SNMPTLSTMPARAMSROWSTATUS;
+    rs = RS_CREATEANDGO;
+    vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                   &rs, sizeof(rs));
+    if (NULL == vb) {
+        snmp_free_varbind(vl);
+        return NULL;
+    }
+
+    if (row_status_index)
+        *row_status_index = rs_index;
+
+    return vl;
+}
+
+/** **************************************************************************
+ *
+ * addr rows
+ *
+ */
+netsnmp_variable_list *
+addr_row_create(const char *target_name, int hash_type, const char *fp,
+                const char *identity, uint32_t st, int *row_status_index)
+{
+    oid                    name[MAX_OID_LEN];
+    int                    name_len, col_pos, rs_index = 3;
+    u_char                 bin_fp[SNMP_MAXBUF_SMALL], *bin_fp_ptr = bin_fp;
+    u_int                  rs;
+    size_t                 bin_fp_len;
+    netsnmp_variable_list *vl = NULL, *vb;
+
+    netsnmp_require_ptr_LRV( target_name, NULL );
+
+    DEBUGMSGT(("addr:create", "creating varbinds for %s addr, fp %s, id %s\n",
+               target_name, fp, identity));
+
+    /*
+     * build base name
+     */
+    name_len = OID_LENGTH(addrTbl);
+    memcpy(name, addrTbl, sizeof(addrTbl));
+    name[name_len++] = 1; /* entry */
+    col_pos = name_len++; /* column */
+    while (*target_name)
+        name[name_len++] = *target_name++;
+
+    if (fp) {
+        bin_fp_len = sizeof(bin_fp);
+        netsnmp_tls_fingerprint_build(hash_type, fp, &bin_fp_ptr,
+                                           &bin_fp_len, 0);
+
+        name[col_pos] = COLUMN_SNMPTLSTMADDRSERVERFINGERPRINT;
+        vl = snmp_varlist_add_variable(&vl, name, name_len, ASN_OCTET_STR,
+                                       &bin_fp, bin_fp_len);
+        netsnmp_require_ptr_LRV(vl, NULL);
+    }
+    else
+        --rs_index;
+
+    if (identity) {
+        name[col_pos] = COLUMN_SNMPTLSTMADDRSERVERIDENTITY;
+        vl = snmp_varlist_add_variable(&vl, name, name_len, ASN_OCTET_STR,
+                                       identity, strlen(identity));
+        netsnmp_require_ptr_LRV(vl, NULL);
+    }
+    else
+        --rs_index;
+
+    if (st) {
+        name[col_pos] = COLUMN_SNMPTLSTMADDRSTORAGETYPE;
+        vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                       &st, sizeof(st));
+        if (NULL == vb) {
+            snmp_free_varbind(vl);
+            return NULL;
+        }
+    }
+    else
+        --rs_index;
+
+    name[col_pos] = COLUMN_SNMPTLSTMADDRROWSTATUS;
+    rs = RS_CREATEANDGO;
+    vb = snmp_varlist_add_variable(&vl, name, name_len, ASN_INTEGER,
+                                   &rs, sizeof(rs));
+    if (NULL == vb) {
+        snmp_free_varbind(vl);
+        return NULL;
+    }
+
+    if (row_status_index)
+        *row_status_index = rs_index;
+
+    return vl;
+}
+
+/** **************************************************************************
+ *
+ * application code
+ *
+ */
+static char         *_data = NULL, *_map_type_str = NULL, *_id_str = NULL;
+static char         *_storage_type_str = NULL, *_fp_str = NULL;
+static int           _storage_type = ST_NONE, _hash_type = NS_HASH_NONE;
+static size_t        _data_len;
+
+static void
+optProc(int argc, char *const *argv, int opt)
+{
+    if ('C' != opt)
+        return;
+
+    while (*optarg) {
+        switch (*optarg++) {
+            case 'm':
+                if (optind < argc)
+                    _map_type_str = argv[optind++];
+                else {
+                    fprintf(stderr, "Bad -Cm option: no argument given\n");
+                    exit(1);
+                }
+                break;
+                
+            case 'd':
+                if (optind < argc) {
+                    _data = argv[optind++];
+                    _data_len = strlen(_data);
+                }
+                else {
+                    fprintf(stderr, "Bad -Cd option: no argument given\n");
+                    exit(1);
+                }
+                break;
+
+	    case 's':
+                if (optind < argc) {
+                    if (isdigit(0xFF & argv[optind][0]))
+                        _storage_type = atoi(argv[optind++]);
+                    else
+                        _storage_type_str = argv[optind++];
+                }
+                else {
+                    fprintf(stderr, "Bad -Cs option: no argument given\n");
+                    exit(1);
+                }
+		break;
+                
+	    case 'h':
+                if (optind < argc) {
+                    if (isdigit(0xFF & argv[optind][0]))
+                        _hash_type = atoi(argv[optind++]);
+                }
+                else {
+                    fprintf(stderr, "Bad -Ch option: no argument given\n");
+                    exit(1);
+                }
+		break;
+                
+	    case 'f':
+                if (optind < argc)
+                    _fp_str = argv[optind++];
+                else {
+                    fprintf(stderr, "Bad -Cf option: no argument given\n");
+                    exit(1);
+                }
+		break;
+                
+	    case 'i':
+                if (optind < argc)
+                    _id_str = argv[optind++];
+                else {
+                    fprintf(stderr, "Bad -Ci option: no argument given\n");
+                    exit(1);
+                }
+		break;
+                
+            default:
+                fprintf(stderr, "Unknown flag passed to -C: %c\n",
+                        optarg[-1]);
+                exit(1);
+        }
+    }
+}
+
+void
+_parse_storage_type(const char *arg)
+{
+    netsnmp_pdu dummy;
+    oid name[] = { SNMP_TLS_TM_CERT_TABLE, 1,
+                   COL_SNMPTLSTMCERTTOTSN_STORAGETYPE };
+    int name_len = OID_LENGTH(name);
+
+    if (NULL == arg)
+        return;
+
+    memset(&dummy, 0x00, sizeof(dummy));
+    snmp_add_var(&dummy, name, name_len, 'i', arg);
+    if (dummy.variables) {
+        _storage_type = *dummy.variables->val.integer;
+        snmp_free_varbind(dummy.variables);
+    }
+    else {
+        fprintf(stderr, "unknown storage type %s for -Cs\n", arg);
+        exit(1);
+    }
+
+    return;
+}
+
+void
+usage(void)
+{
+    fprintf(stderr, "USAGE: snmptls [-Cm mapTypeOID] [-Cd data] [-Cs storageType] ");
+    snmp_parse_args_usage(stderr);
+    fprintf(stderr, "<command> [command options]\n\n");
+    snmp_parse_args_descriptions(stderr);
+    fprintf(stderr, "  [options]   certToSecName add <priority> <hashType> <fingerprint>\n");
+    fprintf(stderr, "\t-Cm\t\tMaptype; [snmpTlstmCertCommonName|snmpTlstmCertSANRFC822Name|snmpTlstmCertSANIpAddress|snmpTlstmCertSANDNSName|snmpTlstmCertSpecified]\n");
+    fprintf(stderr, "\t\t\t(default is snmpTlstmCertSpecified)\n");
+    fprintf(stderr, "\t-Cd\t\tData; data for snmpTlstmCertSpecified.\n");
+    fprintf(stderr, "\t-Cs\t\tstorageType; default is nonVolatile.\n");
+
+    fprintf(stderr, "  [options]   targetParamsFingerprint add <params-name> <hashType> <fingerprint>\n");
+    fprintf(stderr, "\t-Cs\t\tstorageType; default is nonVolatile.\n");
+
+    fprintf(stderr, "  [options]   targetAddr add <target-name> <hashType> [<hash_type> <remote-fingerprint>] [server-identity]\n");
+    fprintf(stderr, "\t-Cs\t\tstorageType; default is nonVolatile.\n");
+
+    exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+    netsnmp_session        session, *ss;
+    netsnmp_variable_list *var_list = NULL;
+    int                    arg, rs_idx = 0;
+    u_int                  hash_type;
+    char                  *fingerprint, *tmp;
+
+    /*
+     * get the common command line arguments 
+     */
+    switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
+        exit(0);
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
+        usage();
+    default:
+        break;
+    }
+
+    /*
+     * Open an SNMP session.
+     */
+    SOCK_STARTUP;
+    ss = snmp_open(&session);
+    if (ss == NULL) {
+        /*
+         * diagnose snmp_open errors with the input netsnmp_session pointer 
+         */
+        snmp_sess_perror("snmptls", &session);
+        SOCK_CLEANUP;
+        exit(1);
+    }
+
+    if (strcmp(argv[arg], "certToSecName") == 0) {
+
+        oid           map_type[MAX_OID_LEN];
+        u_int         pri;
+        size_t        map_type_len = 0;
+
+        if (strcmp(argv[++arg], "add") != 0) {
+            fprintf(stderr, "only add is supported at this time\n");
+            exit(1);
+        }
+
+        pri = atoi(argv[++arg]);
+        tmp = argv[++arg];
+        hash_type = atoi(tmp);
+        fingerprint = argv[++arg];
+
+        DEBUGMSGT(("snmptls",
+                   "create pri %d, hash type %d, fp %s",
+                   pri, hash_type, fingerprint));
+        if (_map_type_str) {
+            map_type_len = MAX_OID_LEN;
+            if (snmp_parse_oid(_map_type_str, map_type, &map_type_len) 
+                == NULL) {
+                snmp_perror(_map_type_str);
+                exit(1);
+            }
+            DEBUGMSG(("snmptls", ", map type "));
+            DEBUGMSGOID(("snmptls", map_type, map_type_len));
+        }
+        if (_data)
+            DEBUGMSG(("snmptls", ", data %s", _data));
+
+        _parse_storage_type(_storage_type_str);
+
+        DEBUGMSG(("snmptls", "\n"));
+        var_list = cert_row_create(pri, hash_type, fingerprint, map_type,
+                                   map_type_len, (u_char*)_data, _data_len,
+                                   _storage_type, &rs_idx);
+    }
+    else if (strcmp(argv[arg], "targetParamsFingerprint") == 0) {
+
+        char * params_name;
+
+        if (strcmp(argv[++arg], "add") != 0) {
+            fprintf(stderr, "only add is supported at this time\n");
+            exit(1);
+        }
+
+        params_name = argv[++arg];
+        hash_type = atoi(argv[++arg]);
+        fingerprint = argv[++arg];
+        
+        _parse_storage_type(_storage_type_str);
+
+        DEBUGMSGT(("snmptls",
+                   "create %s param fp, hash type %d, fp %s\n",
+                   params_name, hash_type, fingerprint));
+
+        var_list = params_row_create(params_name, hash_type, fingerprint,
+                                     _storage_type, &rs_idx);
+    }
+
+    else if (strcmp(argv[arg], "targetAddr") == 0) {
+
+        char * addr_name;
+
+        if (strcmp(argv[++arg], "add") != 0) {
+            fprintf(stderr, "only add is supported at this time\n");
+            exit(1);
+        }
+
+        addr_name = argv[++arg];
+        
+        _parse_storage_type(_storage_type_str);
+
+        DEBUGMSGT(("snmptls",
+                   "create %s addr fp, hash type %d, fp %s, id %s\n",
+                   addr_name, _hash_type, _fp_str, _id_str));
+
+        var_list = addr_row_create(addr_name, _hash_type, _fp_str, _id_str,
+                                     _storage_type, &rs_idx);
+    }
+
+    if (! var_list) {
+        fprintf(stderr, "no command specified\n");
+        usage();
+    }
+
+    netsnmp_row_create(ss, var_list, rs_idx);
+
+    SOCK_CLEANUP;
+    return 0;
+}
diff --git a/apps/snmptranslate.c b/apps/snmptranslate.c
index 750d60f..7391fd4 100644
--- a/apps/snmptranslate.c
+++ b/apps/snmptranslate.c
@@ -51,11 +51,6 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <net-snmp/utilities.h>
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/config_api.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/mib_api.h>
@@ -240,7 +235,6 @@
         }
     }
 
-    snmp_enable_stderrlog();
     init_snmp("snmpapp");
     if (optind < argc)
         current_name = argv[optind];
diff --git a/apps/snmptrap.c b/apps/snmptrap.c
index 55320f8..7c086db 100644
--- a/apps/snmptrap.c
+++ b/apps/snmptrap.c
@@ -41,11 +41,7 @@
 # include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -58,9 +54,6 @@
 #include <sys/select.h>
 #endif
 #include <stdio.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -152,9 +145,11 @@
     if (strcmp(prognam, "snmpinform") == 0)
         inform = 1;
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c
index 4ee615d..16dff50 100644
--- a/apps/snmptrapd.c
+++ b/apps/snmptrapd.c
@@ -40,9 +40,7 @@
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
 #if HAVE_SYS_SOCKIO_H
@@ -103,6 +101,7 @@
 #include "snmptrapd_log.h"
 #include "snmptrapd_auth.h"
 #include "notification-log-mib/notification_log.h"
+#include "tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h"
 #include "mibII/vacm_conf.h"
 #ifdef NETSNMP_EMBEDDED_PERL
 #include "snmp_perl.h"
@@ -529,15 +528,6 @@
 #endif
 
 void
-parse_config_logOption(const char *token, char *cptr)
-{
-  int my_argc = 0 ;
-  char **my_argv = NULL;
-
-  snmp_log_options( cptr, my_argc, my_argv );
-}
-
-void
 parse_config_doNotFork(const char *token, char *cptr)
 {
   if (netsnmp_ds_parse_boolean(cptr) == 1)
@@ -650,9 +640,6 @@
                             parse_config_agentgroup, NULL, "groupid");
 #endif
     
-    register_config_handler("snmptrapd", "logOption",
-                            parse_config_logOption, NULL, "string");
-
     register_config_handler("snmptrapd", "doNotFork",
                             parse_config_doNotFork, NULL, "(1|yes|true|0|no|false)");
 
@@ -1041,6 +1028,9 @@
         /* register net-snmp vacm extensions */
         init_register_nsVacm_context("snmptrapd");
 #endif
+#ifdef USING_TLSTM_MIB_SNMPTLSTMCERTTOTSNTABLE_MODULE
+        init_snmpTlstmCertToTSNTable_context("snmptrapd");
+#endif
     }
 #endif
 
diff --git a/apps/snmptrapd_auth.c b/apps/snmptrapd_auth.c
index b7fb605..be21e5e 100644
--- a/apps/snmptrapd_auth.c
+++ b/apps/snmptrapd_auth.c
@@ -4,11 +4,13 @@
  */
 #include <net-snmp/net-snmp-config.h>
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_NETDB_H
 #include <netdb.h>
 #endif
 
diff --git a/apps/snmptrapd_ds.h b/apps/snmptrapd_ds.h
index 55c1226..03eba14 100644
--- a/apps/snmptrapd_ds.h
+++ b/apps/snmptrapd_ds.h
@@ -1,7 +1,12 @@
 #ifndef SNMPTRAPD_DS_H
 #define SNMPTRAPD_DS_H
 
-/* these must not conflict with agent's DS booleans */
+/* booleans
+ *
+ * WARNING: These must not conflict with the agent's DS booleans
+ * If you define additional entries here, check in <agent/ds_agent.h> first
+ *  (and consider repeating the definitions there) */
+
 #define NETSNMP_DS_APP_NUMERIC_IP       16
 #define NETSNMP_DS_APP_NO_AUTHORIZATION 17
 
diff --git a/apps/snmptrapd_handlers.c b/apps/snmptrapd_handlers.c
index 0176aa7..3ee3aa7 100644
--- a/apps/snmptrapd_handlers.c
+++ b/apps/snmptrapd_handlers.c
@@ -14,10 +14,10 @@
 #endif
 #include <ctype.h>
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_NETDB_H
 #include <netdb.h>
 #endif
 #if HAVE_SYS_WAIT_H
@@ -217,7 +217,7 @@
      * which tells us which style of format this is
      */
     cp = line;
-    while (*cp && !isspace(*cp))
+    while (*cp && !isspace((unsigned char)(*cp)))
         cp++;
     if (!(*cp)) {
         /*
@@ -230,7 +230,7 @@
 
     sep = cp;
     *(cp++) = '\0';
-    while (*cp && isspace(*cp))
+    while (*cp && isspace((unsigned char)(*cp)))
         cp++;
 
     /*
@@ -359,7 +359,7 @@
  * to be applied to *all* incoming traps
  */
 netsnmp_trapd_handler *
-netsnmp_add_global_traphandler(int list, Netsnmp_Trap_Handler handler)
+netsnmp_add_global_traphandler(int list, Netsnmp_Trap_Handler *handler)
 {
     netsnmp_trapd_handler *traph;
 
@@ -405,7 +405,7 @@
  * traps with no specific trap handlers of their own.
  */
 netsnmp_trapd_handler *
-netsnmp_add_default_traphandler( Netsnmp_Trap_Handler handler) {
+netsnmp_add_default_traphandler(Netsnmp_Trap_Handler *handler) {
     return netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
                                           handler);
 }
@@ -785,6 +785,11 @@
                        netsnmp_transport     *transport,
                        netsnmp_trapd_handler *handler)
 {
+#ifndef USING_UTILITIES_EXECUTE_MODULE
+    NETSNMP_LOGONCE((LOG_WARNING,
+                     "support for run_shell_command not available\n"));
+    return NETSNMPTRAPD_HANDLER_FAIL;
+#else
     u_char         *rbuf = NULL;
     size_t          r_len = 64, o_len = 0;
     int             oldquick;
@@ -843,6 +848,7 @@
         free(rbuf);
     }
     return NETSNMPTRAPD_HANDLER_OK;
+#endif /* !def USING_UTILITIES_EXECUTE_MODULE */
 }
 
 
@@ -938,10 +944,6 @@
     netsnmp_trapd_handler *traph;
     netsnmp_transport *transport = (netsnmp_transport *) magic;
     int ret, idx;
-    extern netsnmp_trapd_handler *netsnmp_auth_global_traphandlers;
-    extern netsnmp_trapd_handler *netsnmp_pre_global_traphandlers;
-    extern netsnmp_trapd_handler *netsnmp_post_global_traphandlers;
-
 
     switch (op) {
     case NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE:
diff --git a/apps/snmptrapd_log.c b/apps/snmptrapd_log.c
index f488302..9bfc0b2 100644
--- a/apps/snmptrapd_log.c
+++ b/apps/snmptrapd_log.c
@@ -40,9 +40,7 @@
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
 #if HAVE_SYS_SOCKIO_H
@@ -106,7 +104,7 @@
 typedef struct {
     char            cmd;        /* the format command itself */
     size_t          width;      /* the field's minimum width */
-    size_t          precision;  /* the field's precision */
+    int             precision;  /* the field's precision */
     int             left_justify;       /* if true, left justify this field */
     int             alt_format; /* if true, display in alternate format */
     int             leading_zeroes;     /* if true, display with leading zeroes */
@@ -370,7 +368,7 @@
     temp_to_write = temp_len;
 
     if (options->precision != UNDEF_PRECISION &&
-        temp_to_write > options->precision) {
+        temp_to_write > (size_t)options->precision) {
         temp_to_write = options->precision;
     }
 
@@ -622,7 +620,7 @@
     char           *tstr;
     unsigned int    oflags;
 
-    if ((temp_buf = calloc(temp_buf_len, 1)) == NULL) {
+    if ((temp_buf = (u_char*)calloc(temp_buf_len, 1)) == NULL) {
         return 0;
     }
 
@@ -654,7 +652,7 @@
         }
         if (host != NULL) {
             if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                             (u_char *)host->h_name)) {
+                             (const u_char *)host->h_name)) {
                 if (temp_buf != NULL) {
                     free(temp_buf);
                 }
@@ -995,9 +993,9 @@
     char            fmt_cmd = options->cmd;     /* what we're outputting */
     u_char         *temp_buf = NULL;
     size_t          tbuf_len = 64;
-    int             i;
+    unsigned int    i;
 
-    if ((temp_buf = calloc(tbuf_len, 1)) == NULL) {
+    if ((temp_buf = (u_char*)calloc(tbuf_len, 1)) == NULL) {
         return 0;
     }
 
@@ -1161,7 +1159,7 @@
         }
 
         for (i = 0; i < pdu->securityNameLen; i++) {
-            if (isprint(pdu->securityName[i])) {
+            if (isprint((unsigned char)(pdu->securityName[i]))) {
                 *(*buf + *out_len) = pdu->securityName[i];
             } else {
                 *(*buf + *out_len) = '.';
@@ -1183,7 +1181,7 @@
         }
 
         for (i = 0; i < pdu->contextNameLen; i++) {
-            if (isprint(pdu->contextName[i])) {
+            if (isprint((unsigned char)(pdu->contextName[i]))) {
                 *(*buf + *out_len) = pdu->contextName[i];
             } else {
                 *(*buf + *out_len) = '.';
@@ -1719,7 +1717,7 @@
              * Parsing a width field.  
              */
             reset_options = TRUE;
-            if (isdigit(next_chr)) {
+            if (isdigit((unsigned char)(next_chr))) {
                 options.width *= 10;
                 options.width +=
                     (unsigned long) next_chr - (unsigned long) '0';
@@ -1750,7 +1748,7 @@
              * Parsing a precision field.  
              */
             reset_options = TRUE;
-            if (isdigit(next_chr)) {
+            if (isdigit((unsigned char)(next_chr))) {
                 if (options.precision == UNDEF_PRECISION) {
                     options.precision =
                         (unsigned long) next_chr - (unsigned long) '0';
@@ -1761,8 +1759,9 @@
                 }
             } else if (is_fmt_cmd(next_chr)) {
                 options.cmd = next_chr;
-                if (options.width < options.precision) {
-                    options.width = options.precision;
+                if ((options.precision != UNDEF_PRECISION) &&
+                    (options.width < (size_t)options.precision)) {
+                    options.width = (size_t)options.precision;
                 }
                 if (!realloc_dispatch_format_cmd
                     (buf, buf_len, out_len, allow_realloc, &options, pdu,
diff --git a/apps/snmptrapd_sql.c b/apps/snmptrapd_sql.c
index 98d3fbe..ce25423 100644
--- a/apps/snmptrapd_sql.c
+++ b/apps/snmptrapd_sql.c
@@ -28,10 +28,10 @@
 #endif
 #include <ctype.h>
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_NETDB_H
 #include <netdb.h>
 #endif
 
@@ -63,7 +63,7 @@
     char        *password;        /* password (def=none) */
     u_int        port_num;        /* port number (built-in value) */
     char        *socket_name;     /* socket name (built-in value) */
-    char        *db_name;         /* database name (def=none) */
+    const char  *db_name;         /* database name (def=none) */
     u_int        flags;           /* connection flags (none) */
     MYSQL       *conn;            /* connection */
     u_char       connected;       /* connected flag */
@@ -145,7 +145,7 @@
     u_char    *val;
     u_long     val_len;
 
-    u_int16_t  type;
+    uint16_t   type;
 
 } sql_vb_buf;
 
@@ -161,14 +161,14 @@
     u_long     user_len;
 
     MYSQL_TIME time;
-    u_int16_t  version, type;
-    u_int32_t  reqid;
+    uint16_t   version, type;
+    uint32_t   reqid;
 
     char      *transport;
     u_long     transport_len;
 
-    u_int16_t  security_level, security_model;
-    u_int32_t  msgid;
+    uint16_t   security_level, security_model;
+    uint32_t   msgid;
 
     char      *context;
     u_long     context_len;
@@ -1084,7 +1084,7 @@
         return;
 
     DEBUGMSGT(("sql:process", "processing %d queued traps\n",
-               CONTAINER_SIZE(_sql.queue)));
+               (int)CONTAINER_SIZE(_sql.queue)));
 
     /*
      * if we don't have a database connection, try to reconnect. We
@@ -1112,4 +1112,6 @@
                     NULL);
 }
 
+#else
+int unused;	/* Suppress "empty translation unit" warning */
 #endif /* NETSNMP_USE_MYSQL */
diff --git a/apps/snmpusm.c b/apps/snmpusm.c
index f86515e..42919bd 100644
--- a/apps/snmpusm.c
+++ b/apps/snmpusm.c
@@ -36,11 +36,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -52,9 +48,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -129,6 +122,7 @@
 size_t          usmUserEngineIDLen = 0;
 u_char         *usmUserEngineID = NULL;
 char           *usmUserPublic_val = NULL;
+int             docreateandwait = 0;
 
 
 void
@@ -139,19 +133,21 @@
     fprintf(stderr, " COMMAND\n\n");
     snmp_parse_args_descriptions(stderr);
     fprintf(stderr, "\nsnmpusm commands:\n");
-    fprintf(stderr, "  [options] create     USER [CLONEFROM-USER]\n");
-    fprintf(stderr, "  [options] delete     USER\n");
-    fprintf(stderr, "  [options] cloneFrom  USER CLONEFROM-USER\n");
-    fprintf(stderr, "  [options] activate   USER\n");
-    fprintf(stderr, "  [options] deactivate USER\n");
-    fprintf(stderr, "  [options] [-Ca] [-Cx] changekey [USER]\n");
+    fprintf(stderr, "  [options]               create     USER [CLONEFROM-USER]\n");
+    fprintf(stderr, "  [options]               delete     USER\n");
+    fprintf(stderr, "  [options]               activate   USER\n");
+    fprintf(stderr, "  [options]               deactivate USER\n");
+    fprintf(stderr, "  [options] [-Cw]         cloneFrom  USER CLONEFROM-USER\n");
+    fprintf(stderr, "  [options] [-Ca] [-Cx]   changekey  [USER]\n");
     fprintf(stderr,
-            "  [options] [-Ca] [-Cx] passwd OLD-PASSPHRASE NEW-PASSPHRASE [USER]\n");
+            "  [options] [-Ca] [-Cx]   passwd     OLD-PASSPHRASE NEW-PASSPHRASE [USER]\n");
     fprintf(stderr,
-            "  [options] (-Ca|-Cx) -Ck passwd OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]\n");
+            "  [options] (-Ca|-Cx) -Ck passwd     OLD-KEY-OR-PASS NEW-KEY-OR-PASS [USER]\n");
     fprintf(stderr, "\nsnmpusm options:\n");
     fprintf(stderr, "\t-CE ENGINE-ID\tSet usmUserEngineID (e.g. 800000020109840301).\n");
     fprintf(stderr, "\t-Cp STRING\tSet usmUserPublic value to STRING.\n");
+    fprintf(stderr, "\t-Cw\t\tCreate the user with createAndWait.\n");
+    fprintf(stderr, "\t\t\t(it won't be active until you active it)\n");
     fprintf(stderr, "\t-Cx\t\tChange the privacy key.\n");
     fprintf(stderr, "\t-Ca\t\tChange the authentication key.\n");
     fprintf(stderr, "\t-Ck\t\tAllows to use localized key (must start with 0x)\n");
@@ -197,7 +193,6 @@
     BIGNUM *other_pub;
     u_char *key;
     size_t key_len;
-    unsigned char *cp;
             
     dhkeychange = (u_char *) malloc(2 * vars->val_len * sizeof(char));
     if (!dhkeychange)
@@ -205,9 +200,10 @@
     
     memcpy(dhkeychange, vars->val.string, vars->val_len);
 
-    cp = dhvar->val.string;
-    dh = d2i_DHparams(NULL, (const unsigned char **) &cp,
-                      dhvar->val_len);
+    {
+        const unsigned char *cp = dhvar->val.string;
+        dh = d2i_DHparams(NULL, &cp, dhvar->val_len);
+    }
 
     if (!dh || !dh->g || !dh->p) {
         SNMP_FREE(dhkeychange);
@@ -220,7 +216,7 @@
         return SNMPERR_GENERR;
     }
             
-    if (vars->val_len != BN_num_bytes(dh->pub_key)) {
+    if (vars->val_len != (unsigned int)BN_num_bytes(dh->pub_key)) {
         SNMP_FREE(dhkeychange);
         fprintf(stderr,"incorrect diffie-helman lengths (%lu != %d)\n",
                 (unsigned long)vars->val_len, BN_num_bytes(dh->pub_key));
@@ -253,7 +249,7 @@
 
         printf("new %s key: 0x", keyname);
         for(kp = key + key_len - outkey_len;
-            kp - key < key_len;  kp++) {
+            kp - key < (int)key_len;  kp++) {
             printf("%02x", (unsigned char) *kp);
         }
         printf("\n");
@@ -300,6 +296,10 @@
                 optind++;
                 break;
 
+            case 'w':
+                docreateandwait = 1;
+                break;
+
 	    case 'E': {
 	        size_t ebuf_len = MAX_ENGINEID_LENGTH;
                 u_char *ebuf;
@@ -382,9 +382,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
@@ -710,7 +712,11 @@
              */
             setup_oid(usmUserStatus, &name_length,
                       usmUserEngineID, usmUserEngineIDLen, argv[arg-1]);
-            longvar = RS_CREATEANDGO;
+            if (docreateandwait) {
+                longvar = RS_CREATEANDWAIT;
+            } else {
+                longvar = RS_CREATEANDGO;
+            }
             snmp_pdu_add_variable(pdu, usmUserStatus, name_length,
                                   ASN_INTEGER, (u_char *) & longvar,
                                   sizeof(longvar));
diff --git a/apps/snmpvacm.c b/apps/snmpvacm.c
index bdba896..f88ede6 100644
--- a/apps/snmpvacm.c
+++ b/apps/snmpvacm.c
@@ -23,11 +23,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -39,9 +35,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -279,7 +272,8 @@
     int             exitval = 0;
     int             command = 0;
     long            longvar;
-    int             secModel, secLevel, contextMatch, val, i = 0;
+    int             secModel, secLevel, contextMatch;
+    unsigned int    val, i = 0;
     char           *mask, *groupName, *prefix, *authtype;
     u_char          viewMask[VACMSTRINGLEN];
     char           *st;
@@ -289,9 +283,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
@@ -388,7 +384,7 @@
                 i++;
             }
 	} else {
-            for (i=0 ; i < ((int)name_length+7)/8; i++)
+            for (i=0 ; i < (name_length+7)/8; i++)
                 viewMask[i] = (u_char)0xff;
         }
         view_oid(vacmViewTreeFamilyMask, &name_length, argv[arg],
diff --git a/apps/snmpwalk.c b/apps/snmpwalk.c
index b0db3f4..dfad7e0 100644
--- a/apps/snmpwalk.c
+++ b/apps/snmpwalk.c
@@ -42,11 +42,7 @@
 # include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -59,9 +55,6 @@
 #include <sys/select.h>
 #endif
 #include <stdio.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -213,9 +206,11 @@
      * get the common command line arguments 
      */
     switch (arg = snmp_parse_args(argc, argv, &session, "C:", optProc)) {
-    case -2:
+    case NETSNMP_PARSE_ARGS_ERROR:
+        exit(1);
+    case NETSNMP_PARSE_ARGS_SUCCESS_EXIT:
         exit(0);
-    case -1:
+    case NETSNMP_PARSE_ARGS_ERROR_USAGE:
         usage();
         exit(1);
     default:
diff --git a/apps/sshtosnmp.c b/apps/sshtosnmp.c
index 070a45d..d26067d 100644
--- a/apps/sshtosnmp.c
+++ b/apps/sshtosnmp.c
@@ -68,7 +68,6 @@
     struct sockaddr_un addr;
     u_char buf[4096];
     size_t buf_len = sizeof(buf);
-    u_short name_len;
     int rc = 0, pktsize = 0;
 
     fd_set read_set;
diff --git a/configure b/configure
index 8ae958a..935bee0 100755
--- a/configure
+++ b/configure
Binary files differ
diff --git a/configure.ac b/configure.ac
index 3cb4cdd..4215a30 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,7 +10,7 @@
 #
 # Process this file with autoconf to produce a configure script.
 #
-AC_INIT([Net-SNMP], [5.5.2], [net-snmp-coders@lists.sourceforge.net])
+AC_INIT([Net-SNMP], [5.6.2], [net-snmp-coders@lists.sourceforge.net])
 AC_PREREQ([2.63])
 AC_CONFIG_SRCDIR([agent/mibgroup/ucd-snmp/extensible.c])
 AC_REVISION([$Revision$])
@@ -42,22 +42,28 @@
 #     checks for system services
 
 m4_include([configure.d/config_project_with_enable])
+m4_include([configure.d/config_project_manual])
 m4_include([configure.d/config_os_progs])
 m4_include([configure.d/config_project_paths])
 m4_include([configure.d/config_os_headers])
+AC_CACHE_SAVE
 m4_include([configure.d/config_project_ipv6_types])
 m4_include([configure.d/config_modules_lib])
+AC_CACHE_SAVE
 m4_include([configure.d/config_os_libs1])
 m4_include([configure.d/config_modules_agent])
 m4_include([configure.d/config_os_misc1])
 m4_include([configure.d/config_os_libs2])
+AC_CACHE_SAVE
 m4_include([configure.d/config_project_perl_python])
 m4_include([configure.d/config_os_misc2])
 m4_include([configure.d/config_project_types])
 m4_include([configure.d/config_os_misc3])
+AC_CACHE_SAVE
 m4_include([configure.d/config_os_functions])
 m4_include([configure.d/config_os_struct_members])
 m4_include([configure.d/config_os_misc4])
+AC_CACHE_SAVE
 
 #
 # define the agent libraries variables
@@ -67,10 +73,11 @@
 AC_SUBST(OTHERAGENTLIBOBJS)
 AC_SUBST(OTHERAGENTLIBLOBJS)
 
-m4_include([configure.d/config_project_manual])
-
 AC_SUBST(DLLIBS)
 
+AC_SUBST(PARTIALTARGETFLAGS)
+AC_SUBST(ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE)
+
 AC_CONFIG_FILES([Makefile:Makefile.top:Makefile.in:Makefile.rules])
 AC_CONFIG_FILES([snmplib/Makefile:Makefile.top:snmplib/Makefile.in:Makefile.rules:snmplib/Makefile.depend])
 AC_CONFIG_FILES([apps/Makefile:Makefile.top:apps/Makefile.in:Makefile.rules:apps/Makefile.depend])
@@ -86,6 +93,7 @@
 		[chmod +x net-snmp-config])
 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_COMMANDS([default], echo timestamp > stamp-h)
 
diff --git a/configure.d/config_modules_agent b/configure.d/config_modules_agent
index 7815448..5cb30bb 100644
--- a/configure.d/config_modules_agent
+++ b/configure.d/config_modules_agent
@@ -778,3 +778,20 @@
 AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBS,"$NETSNMP_DEFAULT_MIBS")
 AC_SUBST(NETSNMP_DEFAULT_MIBS)
 AC_MSG_RESULT($NETSNMP_DEFAULT_MIBS)
+
+#-------------------
+# Define symbols for conditional compilation in makefiles
+#
+
+if echo " $agent_module_list " | \
+   fgrep ' agentx/agentx_config ' | \
+   fgrep ' agentx/client ' | \
+   fgrep ' agentx/protocol ' > /dev/null ; then
+   NETSNMP_HAVE_AGENTX_LIBS_TRUE=''
+   NETSNMP_HAVE_AGENTX_LIBS_FALSE='#'
+else
+   NETSNMP_HAVE_AGENTX_LIBS_TRUE='#'
+   NETSNMP_HAVE_AGENTX_LIBS_FALSE=''
+fi
+AC_SUBST([NETSNMP_HAVE_AGENTX_LIBS_TRUE])
+AC_SUBST([NETSNMP_HAVE_AGENTX_LIBS_FALSE])
diff --git a/configure.d/config_modules_lib b/configure.d/config_modules_lib
index 4334f42..52063f1 100644
--- a/configure.d/config_modules_lib
+++ b/configure.d/config_modules_lib
@@ -59,122 +59,8 @@
 AC_MSG_RESULT([$other_agentobjs $other_lagentobjs $other_trapd_objects])
   
 #
-# Do transport module processing.
+# Create directory structure for build
 #
-AC_MSG_CHECKING([for and configuring transport modules to use])
-transport_src_list=""
-transport_hdr_list=""
-transport_def_list=""
-transport_result_list=""
-transport_add_list=""
-new_with_transport_list=`echo $with_transports | $SED 's/,/ /g;'`
-new_with_out_transport_list=`echo $with_out_transports | $SED 's/,/ /g;'`
-
-#
-# Add the default transports to the list
-#
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
-  transport_default_list="UDP TCP Alias Callback"
-else
-  transport_default_list="UDP TCP Alias Unix Callback"
-fi
-if test "x$enable_ipv6" = "xyes"; then
-  transport_default_list="UDPIPv6 TCPIPv6 $transport_default_list"
-fi
-for i in $transport_default_list; do
-  if echo " $new_with_transport_list " | $GREP " $i " >/dev/null; then
-    :
-  else
-    transport_add_list="$i $transport_add_list"
-  fi
-done
-new_transport_list="$transport_add_list $new_with_transport_list"
-
-for i in $new_transport_list; do
-  if echo " $new_with_out_transport_list " | $GREP " $i " >/dev/null; then
-    if test "x$i" = "xUDP"; then
-      echo
-      AC_MSG_ERROR(It is not possible to compile without UDP/IP support.)
-    fi
-    continue
-  else
-    if test "x$i" = "xAAL5PVC"; then
-      if test "x$PARTIALTARGETOS" != "xlinux"; then
-        echo
-        AC_MSG_ERROR(AAL5 PVC support unavailable for this platform (Linux only))
-      fi
-    fi
-    if test "x$i" = "xIPX"; then
-      if test "x$PARTIALTARGETOS" != "xlinux"; then
-        echo
-        AC_MSG_ERROR(IPX support unavailable for this platform (Linux only))
-      fi
-    fi
-    if test "x$i" = "xUnix"; then
-      if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-        echo
-        AC_MSG_ERROR(Unix domain protocol support unavailable for this platform)
-      fi
-    fi
-    if test ! "x$enable_ipv6" = "xyes"; then
-        if test "x$i" = "xUDPIPv6" -o "x$i" = "xTCPIPv6"; then
-            echo
-            AC_MSG_ERROR(IPv6 transports not available if IPv6 support is not enabled)
-        fi
-    fi
-    transport_src="snmp"$i"Domain.c"
-    transport_hdr="snmp"$i"Domain.h"
-    rel_transport_src="snmplib/"$transport_src
-    rel_transport_hdr="include/net-snmp/library/"$transport_hdr
-    if test -f "$srcdir/$rel_transport_src"; then
-      transport_result_list="$transport_result_list $i"
-      transport_src_list="$transport_src $transport_src_list"
-      if test -f "$srcdir/$rel_transport_hdr"; then
-        transport_hdr_list="$transport_hdr $transport_hdr_list"
-      fi
-      transport_def=`echo $i | $SED 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-      transport_def_list="NETSNMP_TRANSPORT_"$transport_def"_DOMAIN $transport_def_list"
-    else
-      echo
-      AC_MSG_ERROR(Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i.)
-    fi
-  fi
-done
-transport_obj_list=`echo " $transport_src_list " | $SED 's/\.c/\.o/g'` 	 
-transport_lobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.lo/g'`
-
-## MinGW requires inet_ntop() and inet_pton().
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-  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"
-  fi
-fi
-
-AC_SUBST(transport_hdr_list)
-AC_SUBST(transport_src_list)
-AC_SUBST(transport_obj_list)
-AC_SUBST(transport_lobj_list)
-for i in $transport_def_list; do
-  AC_DEFINE_UNQUOTED($i)
-done
-AC_MSG_RESULT($transport_result_list.)
-AC_MSG_CACHE_ADD(Network transport support: $transport_result_list)
-
-#
-# Security modules to use
-# 
-
-AC_MSG_CHECKING([for security modules to use])
-security_def_list="usm"
-security_src_list=""
-security_obj_list="" 	 
-security_lobj_list=""
-security_init_file="snmplib/snmpsm_init.h"
-security_incl_file="include/net-snmp/library/snmpv3-security-includes.h"
-new_with_security=`echo $with_security_modules | $SED 's/,/ /g;'`
-new_with_out_security=`echo $with_out_security_modules | $SED 's/,/ /g;'`
-
 if test ! -d include; then
   mkdir include
 fi
@@ -194,43 +80,37 @@
 if test ! -d snmplib; then
   mkdir snmplib
 fi
-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
+if test ! -d snmplib/transports ; then
+  mkdir snmplib/transports
+fi
 
-for i in $security_def_list; 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
-  else
-    new_with_security="$new_with_security $i"
-  fi
+#
+# Do transport module processing.
+#
+AC_MSG_CHECKING([for and configuring transport modules to use])
+
+# include the actual code checking
+m4_include(configure.d/config_modules_transports)
+
+AC_SUBST(transport_hdr_list)
+AC_SUBST(transport_src_list)
+AC_SUBST(transport_obj_list)
+AC_SUBST(transport_lobj_list)
+for i in $transport_def_list; do
+  AC_DEFINE_UNQUOTED($i)
 done
+AC_MSG_RESULT($transport_result_list.)
+AC_MSG_CACHE_ADD(Network transport support: $transport_result_list)
 
-for i in $new_with_security; do
-  cfile="snmp"$i".c"
-  hfile="snmp"$i".h"
+# cleanup
+rm -f module_tmp_header.h
 
-  # make sure support exists for it
-  if test -f $srcdir"/snmplib/"$cfile -a -f $srcdir"/include/net-snmp/library/"$hfile; then
-    :
-  else
-    echo
-    AC_MSG_ERROR(No such security module: $i / $cfile / $hfile)
-  fi
+#
+# Security modules to use
+# 
 
-  # define a bunch of stuff to enable it
-  security_src_list="$security_src_list $cfile"
-  security_hdr_list="$security_hdr_list $hfile"
-  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'`
-  echo "init_"$i"();" >> $security_init_file
-  echo "#include <net-snmp/library/$hfile>" >> $security_incl_file
-  AC_DEFINE_UNQUOTED($def_name)
-done
-
+AC_MSG_CHECKING([for security modules to use])
+m4_include(configure.d/config_modules_security_modules)
 AC_SUBST(security_src_list)
 AC_SUBST(security_hdr_list)
 AC_SUBST(security_obj_list) 	 
@@ -340,6 +220,6 @@
 if test "x$ac_cv_header_sensors_sensors_h" = "xyes"; then
     AC_CHECK_DECLS([sensors_get_all_subfeatures],
         [AC_DEFINE(NETSNMP_USE_SENSORS_V3, 1,
-            [Define this if you have lim_sensors v3 or later])],,
+            [Define this if you have lm_sensors v3 or later])],,
         [[#include <sensors/sensors.h>]])
 fi
diff --git a/configure.d/config_modules_security_modules b/configure.d/config_modules_security_modules
new file mode 100644
index 0000000..1b5d125
--- /dev/null
+++ b/configure.d/config_modules_security_modules
@@ -0,0 +1,51 @@
+# -*- sh -*-
+security_def_list="usm"
+security_src_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;'`
+
+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
+
+for i in $security_def_list; 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
+  else
+    new_with_security="$new_with_security $i"
+  fi
+done
+
+for i in $new_with_security; do
+  cfile="snmp"$i".c"
+  hfile="snmp"$i".h"
+
+  # make sure support exists for it
+  if test -f $srcdir"/snmplib/"$cfile -a -f $srcdir"/include/net-snmp/library/"$hfile; then
+    :
+  else
+    echo
+    AC_MSG_ERROR(No such security module: $i / $cfile / $hfile)
+  fi
+
+  # define a bunch of stuff to enable it
+  security_src_list="$security_src_list $cfile"
+  security_hdr_list="$security_hdr_list $hfile"
+  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'`
+  echo "init_"$i"();" >> $security_init_file
+  echo "#include <net-snmp/library/$hfile>" >> $security_incl_file
+  AC_DEFINE_UNQUOTED($def_name)
+done
+
diff --git a/configure.d/config_modules_transports b/configure.d/config_modules_transports
new file mode 100644
index 0000000..aa27146
--- /dev/null
+++ b/configure.d/config_modules_transports
@@ -0,0 +1,134 @@
+# -*- sh -*-
+transport_src_list=""
+transport_hdr_list=""
+transport_def_list=""
+transport_result_list=""
+transport_add_list=""
+new_with_transport_list=`echo $with_transports | $SED 's/,/ /g;'`
+new_with_out_transport_list=`echo $with_out_transports | $SED 's/,/ /g;'`
+
+# set up the CPP command
+MODULECPP="$CPP $PARTIALTARGETFLAGS -I${srcdir} -I${srcdir}/include"
+
+#
+# Add the default transports to the list
+#
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
+  transport_default_list="UDP TCP Alias Callback"
+else
+  transport_default_list="UDP TCP Alias Unix Callback"
+fi
+if test "x$enable_ipv6" = "xyes"; then
+  transport_default_list="UDPIPv6 TCPIPv6 $transport_default_list"
+fi
+for i in $transport_default_list; do
+  if echo " $new_with_transport_list " | $GREP " $i " >/dev/null; then
+    :
+  else
+    transport_add_list="$i $transport_add_list"
+  fi
+done
+new_transport_list="$transport_add_list $new_with_transport_list"
+
+if test "x$ctor_header" = "x" ; then
+   ctor_header="snmplib/transports/snmp_transport_inits.h"
+fi
+
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $ctor_header
+while test "x$new_transport_list" != "x"; do
+  future_new_transport_list=""
+  for i in $new_transport_list; do
+    if echo " $new_with_out_transport_list " | $GREP " $i " >/dev/null; then
+      true
+    else
+      if test "x$enable_ipv6" != "xyes"; then
+          if test "x$i" = "xUDPIPv6" -o "x$i" = "xTCPIPv6"; then
+              AC_MSG_ERROR(IPv6 transports not available if IPv6 support is not enabled)
+          fi
+      fi
+      transport_src="transports/snmp"$i"Domain.c"
+      transport_hdr="snmp"$i"Domain.h"
+      rel_transport_src="snmplib/"$transport_src
+      rel_transport_hdr="include/net-snmp/library/"$transport_hdr
+      lc_i=`echo $i | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      ctor_fn="netsnmp_"$lc_i"_ctor"
+      if test -f "$srcdir/$rel_transport_src"; then
+        transport_result_list="$transport_result_list $i"
+        transport_src_list="$transport_src $transport_src_list"
+        if test -f "$srcdir/$rel_transport_hdr"; then
+          transport_hdr_list="$transport_hdr $transport_hdr_list"
+        fi
+        transport_def=`echo $i | $SED 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+        transport_def_list="NETSNMP_TRANSPORT_"$transport_def"_DOMAIN $transport_def_list"
+      else
+        echo
+        AC_MSG_ERROR(Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i.)
+      fi
+
+      #---------------------
+      # 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([[
+#include NETSNMP_SYSTEM_INCLUDE_FILE
+#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"]]))
+      mv conftest.$ac_ext module_tmp_header.h
+
+      #
+      # check for dependencies using config_require() macro
+      #
+      sub_list=`$MODULECPP module_tmp_header.h | $GREP config_checkit_require | $SED 's/.*config_checkit_require *( *\(.*\) *).*/\1/'`
+      if test "x$sub_list" != "x" ; then
+        for j in $sub_list ; do
+	  if echo " $future_new_transport_list $new_transport_list " | $GREP " $j " > /dev/null ; then
+	    :
+	  else
+            future_new_transport_list="$future_new_transport_list $j"
+	  fi
+        done
+      fi
+
+      #
+      # check for errors using config_error() macro
+      #
+      error_list=`$MODULECPP module_tmp_header.h | $GREP config_checkit_error | $SED 's/.*config_checkit_error(\(.*\)).*/\1/g'`
+      if test "x$error_list" != "x" ; then
+        echo ""
+        AC_MSG_ERROR($error_list)
+      fi
+
+      #
+      # Check for needed constructor initialization routines to call
+      #
+      found=`grep $ctor_fn $srcdir/$rel_transport_src`
+      if grep $ctor_fn $srcdir/$rel_transport_src > /dev/null ; then
+	# we add them down below instead of here to make sure
+	# config_require dependency constructors get called first.
+	tr_init_list="$ctor_fn $tr_init_list"
+      fi
+    fi
+  done # for each new transport
+  new_transport_list="$future_new_transport_list"
+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'`
+for i in $tr_init_list ; do
+   echo "$i();" >> $ctor_header
+done
+
+## win32 platforms require inet_ntop etc.
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+  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"
+  fi
+fi
+
+if test "x$transport_result_list" = x ; then
+   AC_MSG_ERROR([No transports configured, at least one must be provided])
+fi
diff --git a/configure.d/config_os_functions b/configure.d/config_os_functions
index a7162d6..57d7854 100644
--- a/configure.d/config_os_functions
+++ b/configure.d/config_os_functions
@@ -31,32 +31,67 @@
                [signal          sigset                  ] )
 
 #  Library:
-AC_CHECK_FUNCS([fork            gai_strerror                   ] dnl
-               [getaddrinfo     gethostname   gethostbyname    ] dnl
-               [getipnodebyname               gettimeofday     ] dnl
-               [if_nametoindex  mkstemp       regcomp          ] dnl
-               [readdir                                        ] dnl
-               [setenv          setitimer     setlocale        ] dnl
-               [setsid          snprintf                       ] dnl
-               [strcasestr      strdup        strerror         ] dnl
-               [strlcat         strlcpy       strncasecmp      ] dnl
-               [strtok_r        strtol        strtoul          ] dnl
-               [strtoull        sysconf       times            ] dnl
-               [vsnprintf                                      ] )
+AC_CHECK_FUNCS([closedir        fork            getipnodebyname  ] dnl
+               [gettimeofday    if_nametoindex  mkstemp          ] dnl
+               [opendir         readdir         regcomp          ] dnl
+               [setenv          setitimer       setlocale        ] dnl
+               [setsid          snprintf        strcasestr       ] dnl
+               [strdup          strerror        strncasecmp      ] dnl
+               [sysconf         times           vsnprintf        ] )
+
+# IPv4/IPv6 function checks. AC_CHECK_FUNC() can't find these on MinGW
+# since these functions have the __cdecl calling convention on MinGW.
+case x$target_os in
+  xmingw*)
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <ws2tcpip.h>],
+    [ gai_strerror(0); ])],
+    [ ac_cv_func_gai_strerror=yes
+      AS_ECHO "#define HAVE_GAI_STRERROR 1" >>confdefs.h
+    ], [ ])
+
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <ws2tcpip.h>],
+    [ getaddrinfo(NULL, NULL, NULL, NULL); ])],
+    [ ac_cv_func_getaddrinfo=yes
+      AS_ECHO "#define HAVE_GETADDRINFO 1" >>confdefs.h
+    ], [ ])
+
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <winsock2.h>],
+    [ gethostbyname(NULL); ])],
+    [ ac_cv_func_gethostbyname=yes
+      AS_ECHO "#define HAVE_GETHOSTBYNAME 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
+    ], [ ])
+    ;;
+
+  *)
+    AC_CHECK_FUNCS([gai_strerror getaddrinfo gethostbyname gethostbyname2 gethostname])
+    ;;
+esac
+
+AC_CONFIG_LIBOBJ_DIR([snmplib])
+
+AC_REPLACE_FUNCS([getopt        inet_ntop     inet_pton        ] dnl
+                 [strlcat       strlcpy       strtok_r         ] dnl
+                 [strtol        strtoul       strtoull         ] )
 
 #  Agent:
-AC_CHECK_FUNCS([cgetnext        execv         gai_strerror     ] dnl
-               [getfsstat       getgrnam      gethostname      ] dnl
-               [                getloadavg                     ] dnl
-               [getpid          getpwnam      getvfsstat       ] dnl
+AC_CHECK_FUNCS([cgetnext        chown          execv           ] dnl
+               [gai_strerror                   getgrnam        ] dnl
+               [gethostname     getloadavg                     ] dnl
+               [getpid          getpwnam                       ] dnl
                [hasmntopt       initgroups                     ] dnl
-               [if_nameindex    if_nametoindex                 ] dnl
-               [kinfo_get_cpus                                 ] dnl
-               [mkstemp         mktime                         ] dnl
+               [if_nameindex    if_indextoname if_nametoindex  ] dnl
+               [localtime_r     mkstemp        mktime          ] dnl
                [poll            regcomp                        ] dnl
                [setgid          setgroups                      ] dnl
                [setmntent       setuid                         ] dnl
                [sigaction       sigblock      sighold          ] dnl
+               [sigprocmask                                    ] dnl
                [statfs          statvfs       stime            ] dnl
                [strncasecmp     system                         ] dnl
                [uname           usleep                         ] )
@@ -92,7 +127,7 @@
 AC_MSG_CHECKING([[for two-argument statfs with struct fs_data (Ultrix)]])
 AC_CACHE_VAL(
     fu_cv_sys_stat_fs_data,
-    [AC_TRY_RUN([
+    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
@@ -109,10 +144,10 @@
 /* Ultrix's statfs returns 1 for success,
    0 for not mounted, -1 for failure.  */
 exit (statfs (".", &fsd) != 1);
-}],
-    fu_cv_sys_stat_fs_data=yes,
-    fu_cv_sys_stat_fs_data=no,
-    fu_cv_sys_stat_fs_data=no)])
+}]])],
+    [fu_cv_sys_stat_fs_data=yes],
+    [fu_cv_sys_stat_fs_data=no],
+    [fu_cv_sys_stat_fs_data=no])])
 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
 if test $fu_cv_sys_stat_fs_data = yes; then
     AC_DEFINE(STAT_STATFS_FS_DATA, 1,
@@ -228,3 +263,55 @@
 AC_MSG_RESULT($netsnmp_PRIz)
 AC_DEFINE_UNQUOTED([NETSNMP_PRIz], ["$netsnmp_PRIz"],
                    [Size prefix to use to printf a size_t or ssize_t])
+
+##
+#   Check how to print a uint32_t variable
+##
+
+AC_CACHE_CHECK(
+    [the underlying type of an uint32_t],
+    netsnmp_cv_uint32_t_type,
+    [m4_foreach([TYPE], [[char],[short],[int],[long],[long long]],
+     [if [[ x$netsnmp_cv_uint32_t_type = x ]] ; then
+         AC_COMPILE_IFELSE(
+	     [AC_LANG_PROGRAM(
+[AC_INCLUDES_DEFAULT()
+extern unsigned TYPE variable;
+extern uint32_t variable;],
+                 [])],
+             [netsnmp_cv_uint32_t_type="TYPE"])
+     fi
+    ])])
+
+AC_MSG_CHECKING([how to printf a uint32_t])
+case "$netsnmp_cv_uint32_t_type" in
+    char|short|int) netsnmp_PRI32="" ;;
+    long) netsnmp_PRI32="l" ;;
+    "long long") netsnmp_PRI32="ll" ;;
+    *) AC_MSG_ERROR([underlying type of uint32_t not known]) ;;
+esac
+AC_MSG_RESULT($netsnmp_PRI32)
+AC_DEFINE_UNQUOTED([NETSNMP_PRI32], ["$netsnmp_PRI32"],
+                   [Size prefix to use to printf a uint32_t])
+
+# check to see if the openssl is good enough for DTLS
+# (BIO_dgram_get_peer is a macro, not a true function)
+if echo " $transport_result_list " | $GREP "DTLS" > /dev/null; then
+    AC_CACHE_VAL(
+       netsnmp_cv_bio_dgram_get_peer,
+       AC_MSG_CHECKING([[for BIO_dgram_get_peer]])
+       [
+        oldLIBS="$LIBS"
+        LIBS="$LIBS -lcrypto"
+        AC_LINK_IFELSE(
+          [AC_LANG_PROGRAM(
+            [[#include <openssl/bio.h>]],
+            [[BIO_dgram_get_peer(NULL, NULL);]])], [],
+          [AC_MSG_ERROR(DTLS support requires a newer version of OpenSSL)])
+
+        LIBS="$oldLIBS"
+       ]
+       AC_MSG_RESULT(yes)
+    )
+fi
+
diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
index 3803734..19b27fc 100644
--- a/configure.d/config_os_headers
+++ b/configure.d/config_os_headers
@@ -13,6 +13,9 @@
 #  Apps:
 AC_HEADER_SYS_WAIT      #  <sys/wait.h>
 
+# allow for quick module/library/etc processing checks
+if test "x$NETSNMP_QUICK_CHECK" = "x" ; then
+
 ##
 #   Stand-alone headers:
 ##
@@ -24,6 +27,7 @@
                  [sys/select.h       ] dnl
                  [sys/socket.h       ] dnl
                  [sys/time.h         ] dnl
+                 [sys/timeb.h        ] dnl
                  [sys/un.h           ])
 
 #  Library and Agent:
@@ -204,6 +208,9 @@
 #endif
     ]])
 
+#	QNX
+AC_CHECK_HEADERS([nbutil.h])
+
 #       UFS headers
 #  Agent:
 #
@@ -473,7 +480,12 @@
 *** To monitor CPU/memory values in AIX you need to install
 *** libperfstat which can be found in bos.perf
 ]),,
-                LMIBLIBS))
+                LMIBLIBS),,
+    [[
+#if HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
+    ]])
         ;;
     hpux*)
         #       HP-UX agent needs open_mib       (XXX - not a header check!)
@@ -504,5 +516,6 @@
 #
 # for ucd-snmp/lmsensorsMib
 #
-AC_CHECK_HEADERS([sensors/sensors.h])
+AC_CHECK_HEADERS([sensors/sensors.h picl.h])
 
+fi # NETSNMP_QUICK_CHECK
diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
index cc47545..3414678 100644
--- a/configure.d/config_os_libs2
+++ b/configure.d/config_os_libs2
@@ -207,9 +207,22 @@
 if test "x$with_nl" != "xno"; then
     case $target_os in
     linux*) # Check for libnl (linux)
-	NETSNMP_SEARCH_LIBS(
-	    nl_connect, nl,
-	    [AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS)
+        netsnmp_save_CPPFLAGS="$CPPFLAGS"
+        CPPFLAGS="-I/usr/include/libnl3 $CPPFLAGS"
+        NETSNMP_SEARCH_LIBS(nl_connect, nl-3,
+            [AC_CHECK_HEADERS(netlink/netlink.h)
+            EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES -I/usr/include/libnl3"],
+            [CPPFLAGS="$netsnmp_save_CPPFLAGS"], [], [], [LMIBLIBS])
+        if test "x$ac_cv_header_netlink_netlink_h" != xyes; then
+            NETSNMP_SEARCH_LIBS(nl_connect, nl, [
+                AC_CHECK_HEADERS(netlink/netlink.h)], [], [], LMIBLIBS)
+        fi
+        if test "x$ac_cv_header_netlink_netlink_h" = xyes; then
+            AC_EGREP_HEADER([nl_socket_free], [netlink/socket.h],
+                            [AC_DEFINE([HAVE_LIBNL3], [1],
+                            [Define to 1 if <netlink/netlink.h> provides the
+                            libnl3 API])])
+        fi
     ;;
     esac
 fi
@@ -223,13 +236,15 @@
 #   Security related functions
 #
 NONAGENTLIBS=$LIBS	 # save old libraries
-SSHINSTALLBINPROGS=""
-if test "x$tryopenssl" != "xno"; then
+SSHPROG=no
+TLSPROG=no
+if test "x$tryopenssl" != "xno" -a "x$tryopenssl" != "xinternal"; then
+    # check for libpkcs11 if asked
     if test "x$askedopenssl" != "xyes" -a "x$askedpkcs" = "xyes"; then
         AC_CHECK_LIB(pkcs11, C_Initialize,
             AC_DEFINE(HAVE_LIBPKCS11, 1,
                 [Define to 1 if you have the `pkcs11' library (-lpkcs11).])
-            LIBPKCS11="-lpkcs11")
+		LIBPKCS11="-lpkcs11")
     else 
         if test "x$tryrsaref" != "xno"; then
             AC_CHECK_LIB(rsaref, RSAPrivateDecrypt)
@@ -265,12 +280,21 @@
                 AC_DEFINE([HAVE_EVP_MD_CTX_DESTROY], [],
                     [Define to 1 if you have the `EVP_MD_CTX_destroy' function.]))
         fi
+        if echo " $transport_result_list " | $GREP "DTLS" > /dev/null; then
+	    AC_CHECK_LIB(ssl, DTLSv1_method,
+                AC_DEFINE(HAVE_LIBSSL_DTLS, 1,
+                    [Define to 1 if your `ssl' library supports DTLS (-lssl).])
+                LIBCRYPTO=" -lssl $LIBCRYPTO",	
+		AC_MSG_ERROR([The DTLS based transports require the libssl library from OpenSSL to be available and support DTLS])	,-lcrypto)
+            TLSPROG=yes
+        fi
         if echo " $transport_result_list " | $GREP "TLS" > /dev/null; then
 	    AC_CHECK_LIB(ssl, SSL_library_init,
                 AC_DEFINE(HAVE_LIBSSL, 1,
                     [Define to 1 if you have the `ssl' library (-lssl).])
                 LIBCRYPTO=" -lssl $LIBCRYPTO",	
 		AC_MSG_ERROR([The DTLS based transports require the libssl library from OpenSSL to be available])	,-lcrypto)
+            TLSPROG=yes
         fi
         if echo " $transport_result_list " | $GREP " SSH " > /dev/null; then
 	    AC_CHECK_LIB(ssh2, libssh2_session_startup,
@@ -278,7 +302,7 @@
                     [Define to 1 if you have the `ssh2' library (-lssh2).])
                 LIBCRYPTO=" -lssh2 $LIBCRYPTO",
                 AC_MSG_ERROR([The SSH transport requires the libssh2 library to be available]),)
-            SSHINSTALLBINPROGS=sshtosnmp
+            SSHPROG=yes
         fi
     fi
 elif test "x$askedpkcs" = "xyes"; then
@@ -287,8 +311,53 @@
         LIBPKCS11="-lpkcs11")
 fi
 LIBS=$NONAGENTLIBS	 # restore old libraries
-AC_SUBST(SSHINSTALLBINPROGS)
+if test "x$SSHPROG" = "xyes"; then
+    NETSNMP_BUILD_SSH_PROG_TRUE=''
+    NETSNMP_BUILD_SSH_PROG_FALSE='#'
+else
+    NETSNMP_BUILD_SSH_PROG_TRUE='#'
+    NETSNMP_BUILD_SSH_PROG_FALSE=''
+fi
+if test "x$TLSPROG" = "xyes"; then
+    NETSNMP_BUILD_TLS_PROG_TRUE=''
+    NETSNMP_BUILD_TLS_PROG_FALSE='#'
+else
+    NETSNMP_BUILD_TLS_PROG_TRUE='#'
+    NETSNMP_BUILD_TLS_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)
 
+#
+# If we're using internal crypto support we need to compile in extra files
+#
+crypto_files_c=""
+crypto_files_o=""
+crypto_files_lo=""
+if test "x$tryopenssl" != "xno" -a "x$CRYPTO" = "x"; then
+   # If we:
+   #   1) couldn't find needed openssl support
+   #   2) OR were asked to use internal support
+   #   3) AND we have the needed files
+   # then use it
+   CRYPTO="internal"
+   crypto_files_c="openssl/openssl_sha1.c openssl/openssl_md5.c openssl/openssl_set_key.c openssl/openssl_des_enc.c openssl/openssl_cbc_enc.c openssl/openssl_aes_cfb.c openssl/openssl_aes_core.c openssl/openssl_cfb128.c"
+   crypto_files_o="openssl/openssl_sha1.o openssl/openssl_md5.o openssl/openssl_set_key.o openssl/openssl_des_enc.o openssl/openssl_cbc_enc.o openssl/openssl_aes_cfb.o openssl/openssl_aes_core.oo openssl/openssl_cfb128.o"
+   crypto_files_lo="openssl/openssl_sha1.lo openssl/openssl_md5.lo openssl/openssl_set_key.lo openssl/openssl_des_enc.lo openssl/openssl_cbc_enc.lo openssl/openssl_aes_cfb.lo openssl/openssl_aes_core.lo openssl/openssl_cfb128.lo"
+   AC_DEFINE(HAVE_AES_CFB128_ENCRYPT)
+fi
+AC_SUBST(crypto_files_c)
+AC_SUBST(crypto_files_o)
+AC_SUBST(crypto_files_lo)
+
+#
+# if we can do any sort of crypto then note it
+#
+if test "x$CRYPTO" != "x" ; then
+  AC_DEFINE(NETSNMP_CAN_DO_CRYPTO, 1, "Define if crytography support is possible")
+fi
 
 #   TCP wrapper support
 #
@@ -307,12 +376,11 @@
   LIBS="$LIBS -lwrap"
   AC_MSG_CHECKING([for TCP wrappers library -lwrap])
   # XXX: should check for hosts_ctl
-  AC_TRY_LINK(
-    [#include <sys/types.h>
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
      #include <tcpd.h>
      int allow_severity = 0;
-     int deny_severity  = 0;],
-    [hosts_access((void *)0)],
+     int deny_severity  = 0;]],
+    [[hosts_access((void *)0)]])],
     [AC_MSG_RESULT([yes])
      AC_DEFINE(NETSNMP_USE_LIBWRAP)
      test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
@@ -322,12 +390,11 @@
      AC_CHECK_FUNC(yp_get_default_domain, ,
        AC_CHECK_LIB(nsl, yp_get_default_domain))
      AC_MSG_CHECKING([for TCP wrappers library -lwrap linked with -lnsl])
-     AC_TRY_LINK(
-       [#include <sys/types.h>
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
 	#include <tcpd.h>
 	int allow_severity = 0;
-	int deny_severity  = 0;],
-       [hosts_access((void *)0)],
+	int deny_severity  = 0;]],
+       [[hosts_access((void *)0)]])],
        [AC_MSG_RESULT(yes)
 	AC_DEFINE(NETSNMP_USE_LIBWRAP)
 	test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
diff --git a/configure.d/config_os_misc2 b/configure.d/config_os_misc2
index 3d867b2..d90036d 100644
--- a/configure.d/config_os_misc2
+++ b/configure.d/config_os_misc2
@@ -43,7 +43,16 @@
 
 #       Available authentication/encryption modes
 #
-if test "x$useopenssl" != "xno" ; then
+if test "x$CRYPTO" = "xinternal" ; then
+    authmodes="MD5 SHA1"
+    if test "x$enable_privacy" != "xno" ; then
+        encrmodes="DES AES"
+    else
+        encrmodes="[disabled]"
+    fi
+    AC_DEFINE(NETSNMP_USE_INTERNAL_CRYPTO, 1, "Define if internal cryptography code should be used")
+    AC_MSG_RESULT(Internal Crypto Support)
+elif test "x$useopenssl" != "xno" ; then
     authmodes="MD5 SHA1"
     if test "x$enable_privacy" != "xno" ; then
         if test "x$ac_cv_header_openssl_aes_h" = "xyes" ; then
@@ -80,6 +89,7 @@
 AC_SUBST(LNETSNMPLIBS)
 AC_SUBST(LAGENTLIBS)
 
+AC_MSG_CACHE_ADD(Crypto support from:        $CRYPTO)
 AC_MSG_CACHE_ADD(Authentication support:     $authmodes)
 AC_MSG_CACHE_ADD(Encryption support:         $encrmodes)
 
diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4
index 81dded5..73f8087 100644
--- a/configure.d/config_os_misc4
+++ b/configure.d/config_os_misc4
@@ -143,6 +143,22 @@
 #   System/Compilation-related
 ##
 
+#       Test for SIGHUP
+#
+
+AC_MSG_CHECKING([for SIGHUP])
+AC_COMPILE_IFELSE(
+    [AC_LANG_PROGRAM([#include <signal.h>], [return SIGHUP])],
+    [netsnmp_have_sighup=yes],
+    [netsnmp_have_sighup=no]
+)
+AC_MSG_RESULT([$netsnmp_have_sighup])
+if test "x$netsnmp_have_sighup" = xyes; then
+    AC_DEFINE([HAVE_SIGHUP], [1],
+              [Define if SIGHUP is defined in <signal.h>.])
+fi
+
+
 #       Check whether sysctl() is usable
 #	    used in library/agent
 #
@@ -195,6 +211,39 @@
   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)
@@ -284,3 +333,100 @@
     fi         # "test $ac_inet_ip_h = yes"
     ;;
 esac
+
+#   Check whether IP_PKTINFO is usable.
+#
+
+AC_CACHE_CHECK([for IP_PKTINFO ],
+                [ac_cv_have_ip_pktinfo],
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <stdio.h>  /* printf() */
+#include <stdlib.h> /* malloc() */
+#include <string.h> /* memset() */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+], [
+    void *buf;
+    int len;
+    void *from;
+    socklen_t *fromlen;
+
+    struct iovec iov;
+    char *cmsg = malloc(CMSG_SPACE(sizeof(struct in_pktinfo)));
+    struct cmsghdr *cm;
+    struct msghdr msg;
+
+    iov.iov_base = buf;
+    iov.iov_len = len;
+
+    memset(&msg, 0, sizeof msg);
+    msg.msg_name = from;
+    msg.msg_namelen = *fromlen;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = &cmsg;
+    msg.msg_controllen = sizeof(cmsg);
+
+    for (cm = CMSG_FIRSTHDR(&msg); cm; cm = CMSG_NXTHDR(&msg, cm)) {
+        if (cm->cmsg_level == SOL_IP && cm->cmsg_type == IP_PKTINFO) {
+            struct in_pktinfo* src = (struct in_pktinfo *)CMSG_DATA(cm);
+            printf("Address: %s; index: %d\n", inet_ntoa(src->ipi_addr),
+	           src->ipi_ifindex);
+        }
+    }
+])],
+[ac_cv_have_ip_pktinfo=yes],
+[ac_cv_have_ip_pktinfo=no]
+)])
+if test x$ac_cv_have_ip_pktinfo = xyes; then
+    AC_DEFINE(HAVE_IP_PKTINFO, 1, [Set if IP_PKTINFO is usable])
+fi
+
+#   Check whether IP_RECVDSTADDR is usable.
+#
+
+AC_CACHE_CHECK([for IP_RECVDSTADDR ],
+                [ac_cv_have_ip_recvdstaddr],
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <stdio.h>  /* printf() */
+#include <stdlib.h> /* malloc() */
+#include <string.h> /* memset() */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+], [
+    void *buf;
+    int len;
+    void *from;
+    socklen_t *fromlen;
+
+    struct iovec iov;
+    char *cmsg = malloc(CMSG_SPACE(sizeof(struct in_addr)));
+    struct cmsghdr *cm;
+    struct msghdr msg;
+
+    iov.iov_base = buf;
+    iov.iov_len = len;
+
+    memset(&msg, 0, sizeof msg);
+    msg.msg_name = from;
+    msg.msg_namelen = *fromlen;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = &cmsg;
+    msg.msg_controllen = sizeof(cmsg);
+
+    for (cm = CMSG_FIRSTHDR(&msg); cm; cm = CMSG_NXTHDR(&msg, cm)) {
+        if (cm->cmsg_level == IPPROTO_IP && cm->cmsg_type == IP_RECVDSTADDR) {
+            struct in_addr* src = (struct in_addr *)CMSG_DATA(cm);
+            printf("Address: %s\n", inet_ntoa(src));
+        }
+    }
+])],
+[ac_cv_have_ip_recvdstaddr=yes],
+[ac_cv_have_ip_recvdstaddr=no]
+)])
+if test x$ac_cv_have_ip_recvdstaddr = xyes; then
+    AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Set if IP_RECVDSTADDR is usable])
+fi
diff --git a/configure.d/config_os_progs b/configure.d/config_os_progs
index addbc71..a60714e 100644
--- a/configure.d/config_os_progs
+++ b/configure.d/config_os_progs
@@ -40,6 +40,16 @@
 AC_PROG_MAKE_SET
 AC_PROG_SED
 
+AC_CHECK_PROGS([FILE], [file])
+if test x$ac_cv_prog_FILE = x; then
+  # The file program is not included in the default Cygwin setup, although
+  # this program is essential for libtool to work properly. It is nontrivial
+  # to deduce from the message printed by libtool that the 'file' tool is
+  # missing and libtool does not abort when the file program is not found. So
+  # stop now if the file program has not been found.
+  AC_MSG_ERROR([file program not found although it is needed by libtool.], [1])
+fi
+
 AC_CHECK_PROGS(FIND,   find)
 AC_CHECK_PROGS(WHOAMI, whoami logname, whoami)
 
@@ -67,6 +77,24 @@
 
 
 ##
+#   The Perl function system() is used for running the Net-SNMP regression
+#   tests. Find out whether that function invokes a POSIX shell, which is
+#   necessary in order to run the regression tests. When using Windows + MSYS
+#   + ActiveState Perl, Perl's system() function does invoke Windows' cmd.exe
+#   which is not a POSIX shell.
+##
+
+AC_MSG_CHECKING([whether the Perl function system() invokes a POSIX shell])
+if test "x$PERLPROG" != 'x' && test -x "$PERLPROG" && test "x`$PERLPROG -e 'system('\''echo $OSTYPE'\'');'`" != 'x$OSTYPE'; then
+    PERL_SYSTEM_INVOKES_POSIX_SHELL=yes
+else
+    PERL_SYSTEM_INVOKES_POSIX_SHELL=no
+fi
+AC_MSG_RESULT([$PERL_SYSTEM_INVOKES_POSIX_SHELL])
+AC_SUBST([PERL_SYSTEM_INVOKES_POSIX_SHELL])
+
+
+##
 #   Compilation-related program checks:
 ##
 
@@ -143,6 +171,7 @@
 AC_SUBST(AGENT_INCLUDES)
 AC_SUBST(HELPER_INCLUDES)
 AC_SUBST(MIBGROUP_INCLUDES)
+AC_SUBST(EXTERNAL_MIBGROUP_INCLUDES)
 AC_SUBST(GNU_vpath)
 AC_SUBST(NON_GNU_VPATH)
 
@@ -187,7 +216,11 @@
 #
 case x$target_os in
   xmingw*)
-    with_socklib=winsock2;;
+    with_socklib=winsock2
+    if test "x$enable_ipv6" = "xyes"; then
+      CFLAGS="-D_WIN32_WINNT=0x0501 $CFLAGS"
+    fi
+    ;;
   *)
     with_socklib=default;;
 esac
@@ -345,7 +378,7 @@
 #
     
 case $target_os in
-    aix4.2*|aix4.3*|aix5*|aix6*)
+    aix4.2*|aix4.3*|aix5*|aix6*|aix7*)
         #   Runtime linking flags                       (AIX)
         #
         AC_MSG_CHECKING([what linker flags to add to enable runtime linking on AIX])
@@ -368,7 +401,7 @@
 	fi
 	;;
 
-    darwin8*|darwin9*)
+    darwin8*|darwin9*|darwin10*)
         #   Flat Namespace linking                      (Mac OS/X)
         #
         AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
@@ -385,6 +418,14 @@
 esac
 
 
+#       dpkg package (swintst_apt)
+#	    used in agent only
+#
+AC_PATH_PROG([DPKG_QUERY_PATH], dpkg-query)
+if test x$DPKG_QUERY_PATH != x; then
+    AC_DEFINE(HAVE_DPKG_QUERY, 1, [Set if the dpkg-query command is available])
+fi
+
 
 ##
 #   Non-program/compilation checks:
diff --git a/configure.d/config_os_struct_members b/configure.d/config_os_struct_members
index 6ca777b..2f408f6 100644
--- a/configure.d/config_os_struct_members
+++ b/configure.d/config_os_struct_members
@@ -200,27 +200,16 @@
 #endif
     ]])
 
-#       struct msghdr
+#       struct sockaddr_un
 #   Library:
 #
-AC_CHECK_MEMBERS([struct msghdr.msg_control],,,[
-    AC_INCLUDES_DEFAULT()
+AC_CHECK_SIZEOF([sockaddr_un.sun_path],,[
+    AC_INCLUDES_DEFAULT
     [
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
+#if HAVE_SYS_UN_H
+#include <sys/un.h>
 #endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
+struct sockaddr_un sockaddr_un;
     ]])
 
 #       struct statfs
@@ -229,6 +218,7 @@
 AC_CHECK_MEMBERS([struct statfs.f_favail,
                   struct statfs.f_ffree,
                   struct statfs.f_files,
+                  struct statfs.f_flags,
                   struct statfs.f_frsize],,,[
     AC_INCLUDES_DEFAULT()
     [
@@ -241,6 +231,9 @@
 #ifdef HAVE_SYS_MOUNT_H
 #include <sys/mount.h>
 #endif 
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif 
     ]])
 
 #       struct statvfs
@@ -314,6 +307,49 @@
 #endif
     ]])
 
+#       extern timezone
+AC_MSG_CHECKING([extern timezone])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#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
+]], [[
+  return timezone;
+]])], [
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_TIMEZONE_VARIABLE], [1], [Define if a timezone variable is declared in <sys/time.h>])
+], [
+AC_MSG_RESULT([no])
+])
+
+#       struct timezone
+#   Library:
+#
+AC_CHECK_MEMBERS([struct timezone.tz_dsttime],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_TIMEB_H
+# include <sys/timeb.h>
+#endif
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+    ]])
+
 #       struct udpstat
 #   Agent:
 #
diff --git a/configure.d/config_project_ipv6_types b/configure.d/config_project_ipv6_types
index 5a1b3fb..35886a1 100644
--- a/configure.d/config_project_ipv6_types
+++ b/configure.d/config_project_ipv6_types
@@ -160,18 +160,6 @@
 				v6trylibc=yes;
 				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
 			;;
-		cygwin)
-			AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef _CYGWIN_IN6_H
-yes
-#endif],
-				[v6type=$i;
-				v6lib=dummy;
-				v6libdir=none
-				v6trylibc=yes;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-                       ;;
 		generic)
                         AC_MSG_RESULT([[postponed]])
 			AC_CHECK_MEMBER([struct sockaddr_in6.sin6_addr],,,[
@@ -187,7 +175,7 @@
 #endif
 ]])
 	                AC_MSG_CHECKING([[ipv6 stack type]])
-                        if test "x$ac_cv_have_struct_sockaddr_in6_sin6_addr" = "xyes"; then
+                        if test "x$ac_cv_member_struct_sockaddr_in6_sin6_addr" = "xyes"; then
 				v6type=$i
 				v6lib=dummy
 				v6libdir=none
diff --git a/configure.d/config_project_paths b/configure.d/config_project_paths
index cee8367..9690c84 100644
--- a/configure.d/config_project_paths
+++ b/configure.d/config_project_paths
@@ -31,20 +31,20 @@
 
 #   Exec prefix
 #
-if test "x$exec_prefix" = "xNONE"; then
-    exec_prefix=$prefix
-fi
-
 #       Prefix must be an absolute path
 #           i.e. begin with "/"                         (Unix)
 #                or "[A-Z]:"                            (Windows)
 #
-firstchar=`echo $exec_prefix | $SED 's/\(.\).*/\1/'`
-if test "x$firstchar" != "x/" ; then
-   secondchar=`echo $exec_prefix | $SED 's/.\(.\).*/\1/'`
-   if test "x$secondchar" != "x:" ; then
-      exec_prefix=`pwd`/$exec_prefix
-      echo "adjusting exec_prefix to $exec_prefix"
+if test "x$exec_prefix" = "xNONE"; then
+   exec_prefix='${prefix}'
+else
+   firstchar=`echo $exec_prefix | $SED 's/\(.\).*/\1/'`
+   if test "x$firstchar" != "x/" ; then
+      secondchar=`echo $exec_prefix | $SED 's/.\(.\).*/\1/'`
+      if test "x$secondchar" != "x:" ; then
+         exec_prefix=`pwd`/$exec_prefix
+         echo "adjusting exec_prefix to $exec_prefix"
+      fi
    fi
 fi
 
diff --git a/configure.d/config_project_perl_python b/configure.d/config_project_perl_python
index 812b66f..798c5ce 100644
--- a/configure.d/config_project_perl_python
+++ b/configure.d/config_project_perl_python
@@ -174,6 +174,16 @@
       fi
     ;;
 
+    # Embedded perl typically fails on HP-UX and Mac OS X
+    # We really need to investigate why, and check for this explicitly
+    # But for the time being, turn this off by default
+    hpux*|darwin8*|darwin9*|darwin10*)
+        if test "x$embed_perl" = "xtry" ; then
+            AC_MSG_WARN([Embedded perl defaulting to off])
+            embed_perl="no"
+        fi
+    ;;
+
     *)
     ;;
 esac
diff --git a/configure.d/config_project_with_enable b/configure.d/config_project_with_enable
index 3a93fec..069cc07 100644
--- a/configure.d/config_project_with_enable
+++ b/configure.d/config_project_with_enable
@@ -81,10 +81,15 @@
 tryopenssl=defaultyes
 askedopenssl=no
 NETSNMP_ARG_WITH(openssl,
-[  --with-openssl=PATH             Look for openssl in PATH/lib.],
+[  --with-openssl=PATH             Look for openssl in PATH/lib,
+                                  or PATH may be "internal" to build with
+                                  minimal copied OpenSSL code for USM only.],
     if test "x$withval" = "xyes"; then
       tryopenssl=yes
       askedopenssl=yes
+    elif test "x$withval" = "xinternal"; then
+      tryopenssl=internal
+      askedopenssl=internal
     elif test "x$withval" = "xno"; then
       tryopenssl=no
     elif test -d "$withval"; then
@@ -527,8 +532,9 @@
     IPX         support for SNMP over IPX per RFC 1420.
                 This transport is presently only available for Linux,
                 is never compiled in by default and may be omitted.
+    DTLSUDP     support for tunneling SNMP over DTLS/UDP
+    TLSTCP      support for tunneling SNMP over TLS/TCP
     SSH         (alpha) support for tunneling SNMP over SSH
-    DTLSUDP     (alpha) support for tunneling SNMP over DTLS/UDP
 ])
 
 #
@@ -552,7 +558,7 @@
                            (required and always compiled in)
         ksm                support for kerberos based SNMP security
         tsm                support for the Transport-based security
-                           (for use with the SSH and DTLSUDP transports)
+                           (for use with the SSH, DTLSUDP and TLSTCP transports)
 ])
 
 
@@ -579,6 +585,8 @@
      developer="yes"
    elif test "$enableval" != no ; then
      AC_MSG_ERROR([Please use --enable/--disable-developer])
+   else
+     developer="no"
    fi])
 
 NETSNMP_ARG_ENABLE(testing-code,
diff --git a/dist/Makefile b/dist/Makefile
index d7c8f84..10a7493 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.5.2
+VERSION = 5.6.2
 
 VERSION_TAG=`echo Ext-$(VERSION) | sed 's/\./-/g;'`
 
diff --git a/dist/generation-scripts/gen-security-headers.in b/dist/generation-scripts/gen-security-headers.in
new file mode 100644
index 0000000..4e5881a
--- /dev/null
+++ b/dist/generation-scripts/gen-security-headers.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# we should be able to do this without creating a full configure-like
+# script, but we need to figure out how to call m4 directly.
+AC_INIT([Net-SNMP], [5.6.pre2], [net-snmp-coders@lists.sourceforge.net])
+
+AC_ARG_WITH(security-modules,
+[  --with-security-modules="s1 s2 ..."   Compile in the given SNMP security
+                                    modules (space or comma separated list).])
+AC_ARG_WITH(output-header,
+[  --with-output-header="file"            Where to store the header file])
+AC_ARG_WITH(output-init,
+[  --with-output-init="file"              Where to store the init file])
+
+m4_include(dist/generation-scripts/gen-variables)
+
+AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_INCLUDE_FILE, "$NETSNMP_SYSTEM_INCLUDE_FILE")
+
+if test "x$with_output_header" != "x" ; then
+    security_incl_file="$with_output_header"
+fi
+
+if test "x$with_output_init" != "x" ; then
+    security_init_file="$with_output_init"
+fi
+
+m4_include(configure.d/config_modules_security_modules)
+
+
diff --git a/dist/generation-scripts/gen-transport-headers.in b/dist/generation-scripts/gen-transport-headers.in
new file mode 100644
index 0000000..71a7bd9
--- /dev/null
+++ b/dist/generation-scripts/gen-transport-headers.in
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# we should be able to do this without creating a full configure-like
+# script, but we need to figure out how to call m4 directly.
+AC_INIT([Net-SNMP], [5.6.pre2], [net-snmp-coders@lists.sourceforge.net])
+
+AC_ARG_WITH(transports,
+[  --with-transports="t1 t2 ..."   Compile in the given SNMP transport
+                                    modules (space or comma separated list).])
+AC_ARG_WITH(out_transports,
+[  --with-out-transports="t1 ..."  Exclude listed SNMP transports
+                                    (space or comma separated list).])
+
+AC_ARG_WITH(output,
+[  --with-output="file"            Where to store the header file])
+
+m4_include(dist/generation-scripts/gen-variables)
+
+AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_INCLUDE_FILE, "$NETSNMP_SYSTEM_INCLUDE_FILE")
+
+if test "x$with_output" != "x" ; then
+    ctor_header=$with_output
+fi
+
+m4_include(configure.d/config_modules_transports)
+
+
diff --git a/dist/generation-scripts/gen-variables.in b/dist/generation-scripts/gen-variables.in
new file mode 100644
index 0000000..4329206
--- /dev/null
+++ b/dist/generation-scripts/gen-variables.in
@@ -0,0 +1,10 @@
+#
+# common variables used by configure scripts
+#
+SED="@SED@"
+CPP="@CPP@"
+GREP="@GREP@"
+PARTIALTARGETFLAGS="@PARTIALTARGETFLAGS@"
+NETSNMP_SYSTEM_INCLUDE_FILE="@ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE@"
+
+srcdir=@srcdir@
diff --git a/dist/makerelease.xml b/dist/makerelease.xml
index f0fb803..c32b813 100644
--- a/dist/makerelease.xml
+++ b/dist/makerelease.xml
@@ -362,7 +362,7 @@
 	<step type="system" stepname="build:configure" title="build:configure">
 	  <text>We need to run configure to set up the build tree.</text>
 	  <commands>
-	    <command>./configure --cache=config.cache --with-defaults --with-mib-modules='host examples examples/example testhandler smux Rmon disman/event-mib' --with-transports=IPX --enable-ipv6 --enable-embedded-perl --enable-shared</command>
+	    <command>./configure --cache=config.cache --with-defaults --with-mib-modules='host examples examples/example testhandler tlstm-mib tsm-mib smux Rmon disman/event-mib' --with-transports="IPX TLSTCP DTLSUDP" --with-security-modules="tsm" --enable-ipv6 --enable-embedded-perl --enable-shared</command>
 	  </commands>
 	</step>
 	<step type="system" stepname="build:make" title="build:make">
@@ -376,7 +376,7 @@
 	  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>make test TESTOPTS=-n</command>
+	    <command>make test</command>
 	  </commands>
 	</step>
 	<step type="system" stepname="code:checkcomments" title="code:checkcomments">
diff --git a/dist/net-snmp.spec b/dist/net-snmp.spec
index ac1fe20..2283c2f 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.5.2
+Version: 5.6.2
 # 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 6b71082..cc0b87a 100755
--- a/dist/patme
+++ b/dist/patme
@@ -14,12 +14,13 @@
 our %opts =
 (
  'd' => $ENV{'HOME'} . "/src/snmp/patme/",
- 'b' => 'main,5.4,5.3,5.2',
+ 'b' => 'main,5.5,5.4,5.3,5.2',
  'p' => '-p0',
 );
 
 # sets the order shown
 our @codetrees = ('main',
+		  '5.5',
 		  '5.4',
 		  '5.3',
 		  '5.2',
@@ -32,6 +33,7 @@
 		  '5.2' => 'V5-2-patches',
 		  '5.3' => 'V5-3-patches',
 		  '5.4' => 'V5-4-patches',
+		  '5.5' => 'V5-5-patches',
 		  'main' => 'net-snmp',
 		  'UCD' => 'V4-2-patches');
 
diff --git a/doxygen.conf b/doxygen.conf
index 29824b1..20e457d 100644
--- a/doxygen.conf
+++ b/doxygen.conf
@@ -585,7 +585,7 @@
 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
 # generate man pages
 
-GENERATE_MAN           = YES
+GENERATE_MAN           = NO
 
 # The MAN_OUTPUT tag is used to specify where the man pages will be put. 
 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
diff --git a/include/net-snmp/agent/agent_handler.h b/include/net-snmp/agent/agent_handler.h
index 86fa1c5..2432b88 100644
--- a/include/net-snmp/agent/agent_handler.h
+++ b/include/net-snmp/agent/agent_handler.h
@@ -232,6 +232,8 @@
     void
         netsnmp_request_add_list_data(netsnmp_request_info *request,
                                       netsnmp_data_list *node);
+    int netsnmp_request_remove_list_data(netsnmp_request_info *request,
+                                         const char *name);
 
     int
         netsnmp_request_remove_list_data(netsnmp_request_info *request,
diff --git a/include/net-snmp/agent/agent_read_config.h b/include/net-snmp/agent/agent_read_config.h
index e9af89d..e6b3540 100644
--- a/include/net-snmp/agent/agent_read_config.h
+++ b/include/net-snmp/agent/agent_read_config.h
@@ -11,12 +11,17 @@
 
     void            init_agent_read_config(const char *);
     void            update_config(void);
-    void            snmpd_register_config_handler(const char *,
+    void            snmpd_register_config_handler(const char *token,
                                                   void (*parser) (const
                                                                   char *,
                                                                   char *),
                                                   void (*releaser) (void),
-                                                  const char *);
+                                                  const char *help);
+    void            snmpd_register_const_config_handler(
+                                 const char *,
+                                 void (*parser) (const char *, const char *),
+                                 void (*releaser) (void),
+                                 const char *);
     void            snmpd_unregister_config_handler(const char *);
     void            snmpd_store_config(const char *);
 
diff --git a/include/net-snmp/agent/agent_registry.h b/include/net-snmp/agent/agent_registry.h
index 44fe42e..ba80793 100644
--- a/include/net-snmp/agent/agent_registry.h
+++ b/include/net-snmp/agent/agent_registry.h
@@ -48,7 +48,7 @@
 };
 
 typedef struct subtree_context_cache_s {
-    char				*context_name;
+    const char				*context_name;
     struct netsnmp_subtree_s		*first_subtree;
     struct subtree_context_cache_s	*next;
 } subtree_context_cache;
diff --git a/include/net-snmp/agent/agent_trap.h b/include/net-snmp/agent/agent_trap.h
index 3ef4c6e..26e2223 100644
--- a/include/net-snmp/agent/agent_trap.h
+++ b/include/net-snmp/agent/agent_trap.h
@@ -14,20 +14,20 @@
 void            send_easy_trap(int, int);
 void            send_trap_pdu(netsnmp_pdu *);
 void            send_v2trap(netsnmp_variable_list *);
-void            send_v3trap(netsnmp_variable_list *vars, char *context);
+void            send_v3trap(netsnmp_variable_list *vars, const char *context);
 void            send_trap_vars(int, int, netsnmp_variable_list *);
 void            send_trap_vars_with_context(int trap, int specific, 
-                                          netsnmp_variable_list *vars, 
-										  char *context);
+                                            netsnmp_variable_list *vars,
+                                            const char *context);
 void            send_enterprise_trap_vars(int trap, int specific,
-                                          oid * enterprise,
+                                          const oid * enterprise,
                                           int enterprise_length,
                                           netsnmp_variable_list * vars);
 int             netsnmp_send_traps(int trap, int specific,
-                          oid * enterprise, int enterprise_length,
+                          const oid * enterprise, int enterprise_length,
                           netsnmp_variable_list * vars,
-                          /* These next two are currently unused */
-                          char * context, int flags);
+                          /* flags are currently unused */
+                          const char * context, int flags);
 void            snmpd_parse_config_authtrap(const char *, char *);
 void            snmpd_parse_config_trapsink(const char *, char *);
 void            snmpd_parse_config_trap2sink(const char *, char *);
diff --git a/include/net-snmp/agent/all_helpers.h b/include/net-snmp/agent/all_helpers.h
index 27e580e..d0d5c22 100644
--- a/include/net-snmp/agent/all_helpers.h
+++ b/include/net-snmp/agent/all_helpers.h
@@ -32,6 +32,7 @@
 #include <net-snmp/agent/table_array.h> 
 
 #include <net-snmp/agent/mfd.h>
+#include <net-snmp/agent/snmp_get_statistic.h>
 
 
 void            netsnmp_init_helpers(void);
diff --git a/include/net-snmp/agent/cache_handler.h b/include/net-snmp/agent/cache_handler.h
index b002159..7f4e74e 100644
--- a/include/net-snmp/agent/cache_handler.h
+++ b/include/net-snmp/agent/cache_handler.h
@@ -95,6 +95,7 @@
     netsnmp_cache_create(int timeout, NetsnmpCacheLoad * load_hook,
                          NetsnmpCacheFree * free_hook,
                          const oid * rootoid, int rootoid_len);
+    int netsnmp_cache_remove(netsnmp_cache *cache);
     int netsnmp_cache_free(netsnmp_cache *cache);
 
     netsnmp_mib_handler *
diff --git a/include/net-snmp/agent/ds_agent.h b/include/net-snmp/agent/ds_agent.h
index 86c74d4..3ae759d 100644
--- a/include/net-snmp/agent/ds_agent.h
+++ b/include/net-snmp/agent/ds_agent.h
@@ -28,9 +28,16 @@
 #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 */
 
-/* WARNING: The trap receiver uses DS flags and must not conflict with
-   these!  If you use a value above 15, change the minimimum DS bool
-   value in snmptrapd_log.h */
+   /* Repeated from "apps/snmptrapd_ds.h" */
+#define NETSNMP_DS_APP_NUMERIC_IP       16
+#define NETSNMP_DS_APP_NO_AUTHORIZATION 17
+
+#define NETSNMP_DS_AGENT_DISKIO_NO_FD   18      /* 1 = don't report /dev/fd*   entries in diskIOTable */
+#define NETSNMP_DS_AGENT_DISKIO_NO_LOOP 19      /* 1 = don't report /dev/loop* entries in diskIOTable */
+#define NETSNMP_DS_AGENT_DISKIO_NO_RAM  20      /* 1 = don't report /dev/ram*  entries in diskIOTable */
+
+/* WARNING: The trap receiver also uses DS flags and must not conflict with these!
+ * If you define additional boolean entries, check in "apps/snmptrapd_ds.h" first */
 
 /*
  * strings 
diff --git a/include/net-snmp/agent/hardware/fsys.h b/include/net-snmp/agent/hardware/fsys.h
index cd7880c..5a1e5ef 100644
--- a/include/net-snmp/agent/hardware/fsys.h
+++ b/include/net-snmp/agent/hardware/fsys.h
@@ -47,6 +47,7 @@
 #define NETSNMP_FS_FLAG_RONLY    0x04
 #define NETSNMP_FS_FLAG_BOOTABLE 0x08
 #define NETSNMP_FS_FLAG_REMOVE   0x10
+#define NETSNMP_FS_FLAG_UCD      0x20
 
 #define NETSNMP_FS_FIND_CREATE     1   /* or use one of the type values */
 #define NETSNMP_FS_FIND_EXIST      0
@@ -67,6 +68,9 @@
      long inums_total;
      long inums_avail;
 
+     int  minspace;
+     int  minpercent;
+
      long flags;
 
      netsnmp_fsys_info *next;
@@ -88,6 +92,10 @@
 int  netsnmp_fsys_load( netsnmp_cache *cache, void *data );
 void netsnmp_fsys_free( netsnmp_cache *cache, void *data );
 
-unsigned int netsnmp_fsys_size( netsnmp_fsys_info* );
-unsigned int netsnmp_fsys_used( netsnmp_fsys_info* );
-unsigned int netsnmp_fsys_avail(netsnmp_fsys_info* );
+int netsnmp_fsys_size( netsnmp_fsys_info* );
+int netsnmp_fsys_used( netsnmp_fsys_info* );
+int netsnmp_fsys_avail(netsnmp_fsys_info* );
+
+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* );
diff --git a/include/net-snmp/agent/hardware/sensors.h b/include/net-snmp/agent/hardware/sensors.h
index 66a10bd..d59eca7 100644
--- a/include/net-snmp/agent/hardware/sensors.h
+++ b/include/net-snmp/agent/hardware/sensors.h
@@ -43,6 +43,6 @@
 
 netsnmp_container   *get_sensor_container( void );
 netsnmp_cache       *get_sensor_cache( void );
-netsnmp_sensor_info *sensor_by_name( char *, int );
+netsnmp_sensor_info *sensor_by_name( const char *, int );
 NetsnmpCacheLoad     netsnmp_sensor_load;
 NetsnmpCacheFree     netsnmp_sensor_free;
diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h
index 45ca62b..7995a5b 100644
--- a/include/net-snmp/agent/snmp_agent.h
+++ b/include/net-snmp/agent/snmp_agent.h
@@ -262,7 +262,11 @@
 
     u_long          netsnmp_marker_uptime(marker_t pm);
     u_long          netsnmp_timeval_uptime(struct timeval *tv);
+    const_marker_t  netsnmp_get_agent_starttime(void);
+    uint64_t        netsnmp_get_agent_runtime(void);
+    void            netsnmp_set_agent_starttime(marker_t s);
     u_long          netsnmp_get_agent_uptime(void);
+    void            netsnmp_set_agent_uptime(u_long hsec);
     int             netsnmp_check_transaction_id(int transaction_id);
     int             netsnmp_agent_check_packet(netsnmp_session *,
                                                struct netsnmp_transport_s
diff --git a/agent/mibgroup/utilities/snmp_get_statistic.h b/include/net-snmp/agent/snmp_get_statistic.h
similarity index 100%
rename from agent/mibgroup/utilities/snmp_get_statistic.h
rename to include/net-snmp/agent/snmp_get_statistic.h
diff --git a/include/net-snmp/agent/sysORTable.h b/include/net-snmp/agent/sysORTable.h
index 0608591..bfebad2 100644
--- a/include/net-snmp/agent/sysORTable.h
+++ b/include/net-snmp/agent/sysORTable.h
@@ -25,7 +25,7 @@
 #define REGISTER_SYSOR_TABLE(theoid, len, descr)           \
   do {                                                     \
     struct sysORTable t;                                   \
-    t.OR_descr = descr;                                    \
+    t.OR_descr = NETSNMP_REMOVE_CONST(char *, descr);      \
     t.OR_oid = theoid;                                     \
     t.OR_oidlen = len;                                     \
     t.OR_sess = NULL;                                      \
diff --git a/include/net-snmp/agent/table_container.h b/include/net-snmp/agent/table_container.h
index dc6bfa8..b342110 100644
--- a/include/net-snmp/agent/table_container.h
+++ b/include/net-snmp/agent/table_container.h
@@ -89,6 +89,8 @@
 
     void netsnmp_container_table_row_insert(netsnmp_request_info *request,
                                             netsnmp_index *row);
+    void netsnmp_container_table_row_remove(netsnmp_request_info *request,
+                                            netsnmp_index        *row);
 
 /* ===================================
  * Container Table API: Row operations
diff --git a/include/net-snmp/agent/table_dataset.h b/include/net-snmp/agent/table_dataset.h
index 7d8aeec..9b8a9a3 100644
--- a/include/net-snmp/agent/table_dataset.h
+++ b/include/net-snmp/agent/table_dataset.h
@@ -132,6 +132,16 @@
     netsnmp_table_data_set_storage
         *netsnmp_extract_table_data_set_column(netsnmp_request_info *,
                                                unsigned int);
+    netsnmp_oid_stash_node **
+    netsnmp_table_dataset_get_or_create_stash(netsnmp_agent_request_info *ari,
+                                              netsnmp_table_data_set *tds,
+                                              netsnmp_table_request_info *tri);
+    netsnmp_table_row *
+    netsnmp_table_dataset_get_newrow(netsnmp_request_info *request,
+                                     netsnmp_agent_request_info *reqinfo,
+                                     int rootoid_len,
+                                     netsnmp_table_data_set *datatable,
+                                     netsnmp_table_request_info *table_info);
 
 
 /* ============================
diff --git a/include/net-snmp/agent/table_tdata.h b/include/net-snmp/agent/table_tdata.h
index 28c049d..b0a1689 100644
--- a/include/net-snmp/agent/table_tdata.h
+++ b/include/net-snmp/agent/table_tdata.h
@@ -21,6 +21,7 @@
 #define TABLE_TDATA_TABLE "table_tdata_table"
 
 #define TDATA_FLAG_NO_STORE_INDEXES   0x01
+#define TDATA_FLAG_NO_CONTAINER       0x02 /* user will provide container */
 
     /*
      * The (table-independent) per-row data structure
@@ -94,6 +95,7 @@
     void               *netsnmp_tdata_extract_entry(    netsnmp_request_info *);
 
     void netsnmp_insert_tdata_row(netsnmp_request_info *, netsnmp_tdata_row *);
+    void netsnmp_remove_tdata_row(netsnmp_request_info *, netsnmp_tdata_row *);
 
 
 /* ============================
diff --git a/include/net-snmp/config_api.h b/include/net-snmp/config_api.h
index 80cf5d6..048eed9 100644
--- a/include/net-snmp/config_api.h
+++ b/include/net-snmp/config_api.h
@@ -12,39 +12,61 @@
 extern          "C" {
 #endif
 
+    /* Config Handlers */
+    NETSNMP_IMPORT
     struct config_line *register_config_handler(const char *filePrefix,
                                                 const char *token,
                                                 void (*parser) (const char *, char *),
                                                 void (*releaser) (void),
                                                 const char *usageLine);
+    NETSNMP_IMPORT
+    struct config_line *register_const_config_handler(const char *filePrefix,
+                                  const char *token,
+                                  void (*parser) (const char *, const char *),
+                                  void (*releaser) (void),
+                                  const char *usageLine);
+    NETSNMP_IMPORT
+    struct config_line *register_prenetsnmp_mib_handler(const char *filePrefix,
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+    NETSNMP_IMPORT
+    void            unregister_config_handler(const char *filePrefix, const char *token);
+
+    				/* Defined in mib.c, rather than read_config.c */
+    void            register_mib_handlers(void);
+    void            unregister_all_config_handlers(void);
+
+    /* Application Handlers */
+    NETSNMP_IMPORT
     struct config_line *register_app_config_handler(
                                                 const char *token,
                                                 void (*parser) (const char *, char *),
                                                 void (*releaser) (void),
                                                 const char *usageLine);
 
-/* These two are documented as "register{,_app}_premib_handler() */
-/*?*/    struct config_line *register_prenetsnmp_mib_handler(const char *filePrefix,
+    NETSNMP_IMPORT
+    struct config_line *register_app_prenetsnmp_mib_handler(
                                                 const char *token,
                                                 void (*parser) (const char *, char *),
                                                 void (*releaser) (void),
                                                 const char *usageLine);
-/*?*/    struct config_line *register_app_prenetsnmp_mib_handler(
-                                                const char *token,
-                                                void (*parser) (const char *, char *),
-                                                void (*releaser) (void),
-                                                const char *usageLine);
-                                                            
-    void            unregister_config_handler(const char *filePrefix, const char *token);
+    NETSNMP_IMPORT
     void            unregister_app_config_handler(                    const char *token);
-    void            unregister_all_config_handlers(void);
 
-/*?*/ void register_mib_handlers(void);
+    /* Reading Config Files */
+    NETSNMP_IMPORT
     void            read_configs(void);
+    NETSNMP_IMPORT
     void            read_premib_configs(void);
 
+    /* Help Strings and Errors */
+    NETSNMP_IMPORT
     void            read_config_print_usage(const char *lead);
+    NETSNMP_IMPORT
     void            config_perror(const char *);
+    NETSNMP_IMPORT
     void            config_pwarn(const char *);
 
 #ifdef __cplusplus
@@ -52,13 +74,18 @@
 #endif
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/config_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 #include <net-snmp/library/snmp_api.h>
 
diff --git a/include/net-snmp/data_access/ip_scalars.h b/include/net-snmp/data_access/ip_scalars.h
index 25191fe..f7b2e31 100644
--- a/include/net-snmp/data_access/ip_scalars.h
+++ b/include/net-snmp/data_access/ip_scalars.h
@@ -5,8 +5,10 @@
 extern          "C" {
 #endif
 
-int netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value);
+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_ipv6IpForwarding_get(u_long *value);
 int netsnmp_arch_ip_scalars_ipv6IpForwarding_set(u_long value);
 
 
diff --git a/include/net-snmp/data_access/route.h b/include/net-snmp/data_access/route.h
index 9ba1b19..d944d10 100644
--- a/include/net-snmp/data_access/route.h
+++ b/include/net-snmp/data_access/route.h
@@ -45,7 +45,7 @@
     * define the maximum oid length for a policy, for use by the
     * inetCidrRouteTable. Must be at least 2, for default nullOid case.
     */
-#define NETSNMP_POLICY_OID_MAX_LEN  2
+#define NETSNMP_POLICY_OID_MAX_LEN  3
    oid      *rt_policy;      /* NULL should be interpreted as { 0, 0 } */
    u_char    rt_policy_len;  /* 0-128 oids */
 #endif
diff --git a/include/net-snmp/data_access/systemstats.h b/include/net-snmp/data_access/systemstats.h
index 1baacd5..c72dfbb 100644
--- a/include/net-snmp/data_access/systemstats.h
+++ b/include/net-snmp/data_access/systemstats.h
@@ -36,6 +36,11 @@
     */
    netsnmp_ipstats stats;
 
+   /*
+    * for logging
+    */
+   const char* tableName;
+   
    /** old_stats is used in netsnmp_access_interface_entry_update_stats */
    netsnmp_ipstats *old_stats;
 
@@ -49,6 +54,11 @@
 /*
  * init
  */
+void netsnmp_access_systemstats_init(void);
+
+/*
+ * init
+ */
 netsnmp_container * netsnmp_access_systemstats_container_init(u_int init_flags);
 #define NETSNMP_ACCESS_SYSTEMSTATS_INIT_NOFLAGS               0x0000
 #define NETSNMP_ACCESS_SYSTEMSTATS_INIT_ADDL_IDX_BY_ADDR      0x0001
@@ -74,7 +84,8 @@
  * create/free an entry
  */
 netsnmp_systemstats_entry *
-netsnmp_access_systemstats_entry_create(int version, int if_index);
+netsnmp_access_systemstats_entry_create(int version, int if_index,
+            const char* tableName);
 
 void netsnmp_access_systemstats_entry_free(netsnmp_systemstats_entry * entry);
 
diff --git a/include/net-snmp/library/asn1.h b/include/net-snmp/library/asn1.h
index 46ed441..52ecc3b 100644
--- a/include/net-snmp/library/asn1.h
+++ b/include/net-snmp/library/asn1.h
@@ -1,6 +1,8 @@
 #ifndef ASN1_H
 #define ASN1_H
 
+#include <net-snmp/library/oid.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
@@ -37,18 +39,6 @@
 ******************************************************************/
 
 
-#ifndef MAX_SUBID               /* temporary - duplicate definition protection */
-#ifndef EIGHTBIT_SUBIDS
-    typedef u_long  oid;
-#define MAX_SUBID   0xFFFFFFFF
-#define NETSNMP_PRIo "l"
-#else
-    typedef u_char  oid;
-#define MAX_SUBID   0xFF
-#define NETSNMP_PRIo ""
-#endif
-#endif
-
 #define MIN_OID_LEN	    2
 #define MAX_OID_LEN	    128 /* max subid's in an oid */
 #ifndef MAX_NAME_LEN            /* conflicts with some libraries */
@@ -188,37 +178,56 @@
 
 
     int             asn_check_packet(u_char *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_int(u_char *, size_t *, u_char *, long *,
                                   size_t);
+    NETSNMP_IMPORT
     u_char         *asn_build_int(u_char *, size_t *, u_char, const long *,
                                   size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_unsigned_int(u_char *, size_t *, u_char *,
                                            u_long *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_build_unsigned_int(u_char *, size_t *, u_char,
                                            const u_long *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_string(u_char *, size_t *, u_char *,
                                      u_char *, size_t *);
+    NETSNMP_IMPORT
     u_char         *asn_build_string(u_char *, size_t *, u_char,
                                      const u_char *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_header(u_char *, size_t *, u_char *);
     u_char         *asn_parse_sequence(u_char *, size_t *, u_char *, u_char expected_type,      /* must be this type */
                                        const char *estr);       /* error message prefix */
+    NETSNMP_IMPORT
     u_char         *asn_build_header(u_char *, size_t *, u_char, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_build_sequence(u_char *, size_t *, u_char, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_length(u_char *, u_long *);
+    NETSNMP_IMPORT
     u_char         *asn_build_length(u_char *, size_t *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_objid(u_char *, size_t *, u_char *, oid *,
                                     size_t *);
+    NETSNMP_IMPORT
     u_char         *asn_build_objid(u_char *, size_t *, u_char, oid *,
                                     size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_null(u_char *, size_t *, u_char *);
+    NETSNMP_IMPORT
     u_char         *asn_build_null(u_char *, size_t *, u_char);
+    NETSNMP_IMPORT
     u_char         *asn_parse_bitstring(u_char *, size_t *, u_char *,
                                         u_char *, size_t *);
+    NETSNMP_IMPORT
     u_char         *asn_build_bitstring(u_char *, size_t *, u_char,
                                         const u_char *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_parse_unsigned_int64(u_char *, size_t *, u_char *,
                                              struct counter64 *, size_t);
+    NETSNMP_IMPORT
     u_char         *asn_build_unsigned_int64(u_char *, size_t *, u_char,
                                              const struct counter64 *, size_t);
     u_char         *asn_parse_signed_int64(u_char *, size_t *, u_char *,
diff --git a/include/net-snmp/library/callback.h b/include/net-snmp/library/callback.h
index 55bca19..c25ad4b 100644
--- a/include/net-snmp/library/callback.h
+++ b/include/net-snmp/library/callback.h
@@ -51,21 +51,28 @@
     /*
      * function prototypes 
      */
+    NETSNMP_IMPORT
     void            init_callbacks(void);
 
     int             netsnmp_register_callback(int major, int minor,
                                               SNMPCallback * new_callback,
                                               void *arg, int priority);
+    NETSNMP_IMPORT
     int             snmp_register_callback(int major, int minor,
                                            SNMPCallback * new_callback,
                                            void *arg);
+    NETSNMP_IMPORT
     int             snmp_call_callbacks(int major, int minor,
                                         void *caller_arg);
+    NETSNMP_IMPORT
     int             snmp_callback_available(int major, int minor);      /* is >1 available */
+    NETSNMP_IMPORT
     int             snmp_count_callbacks(int major, int minor); /* ret the number registered */
+    NETSNMP_IMPORT
     int             snmp_unregister_callback(int major, int minor,
                                              SNMPCallback * new_callback,
                                              void *arg, int matchargs);
+    NETSNMP_IMPORT
     void            clear_callback (void);
     int             netsnmp_callback_clear_client_arg(void *, int i, int j);
 
diff --git a/include/net-snmp/library/cert_util.h b/include/net-snmp/library/cert_util.h
new file mode 100644
index 0000000..34a79dc
--- /dev/null
+++ b/include/net-snmp/library/cert_util.h
@@ -0,0 +1,226 @@
+#ifndef NETSNMP_CERT_UTIL_H
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+
+#ifndef HEADER_SSL_H
+#error "must include <openssl/ssl.h> before cert_util.h"
+#endif
+#ifndef HEADER_X509_H
+#error "must include <openssl/x509.h> before cert_util.h"
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+    /*************************************************************************
+     *
+     * netsnmp_cert structures, defines and function definitions
+     *
+     *************************************************************************/
+
+void netsnmp_certs_init(void);
+void netsnmp_certs_agent_init(void);
+void netsnmp_certs_shutdown(void);
+void netsnmp_certs_load(void);
+netsnmp_container *netsnmp_cert_get_trustlist(void);
+
+    typedef struct netsnmp_cert_common_s {
+        char           *dir;
+        char           *filename;
+        
+        u_char          type;
+        u_char          allowed_uses;
+        u_char          _pad[2]; /* for future use */
+    } netsnmp_cert_common;
+
+    typedef struct netsnmp_key_s {
+        netsnmp_cert_common info;
+
+        EVP_PKEY       *okey;
+        struct netsnmp_cert_s   *cert;
+    } netsnmp_key;
+
+    typedef struct netsnmp_cert_s {
+        netsnmp_cert_common info;
+
+        X509           *ocert;
+        netsnmp_key    *key;
+        struct netsnmp_cert_s *issuer_cert;
+
+        char           *issuer;
+        char           *subject;
+        char           *fingerprint;
+        char           *common_name;
+
+        u_char          hash_type;
+        u_char          _pad[3]; /* for future use */
+    } netsnmp_cert;
+
+/** types */
+    enum { NS_CERT_TYPE_UNKNOWN = 0, NS_CERT_TYPE_PEM, NS_CERT_TYPE_DER,
+           NS_CERT_TYPE_PKCS12, NS_CERT_TYPE_KEY };
+
+/** uses */
+#define NS_CERT_IDENTITY       0x0001
+#define NS_CERT_REMOTE_PEER    0x0002
+#define NS_CERT_RESERVED1      0x0004
+#define NS_CERT_CA             0x0008
+
+/** source */
+#define NS_CERTKEY_DEFAULT       0x000 /* get default from DS store */
+#define NS_CERTKEY_FILE          0x001 /* filename/full path */
+#define NS_CERTKEY_FINGERPRINT   0x002 /* public key fingerprint */
+#define NS_CERTKEY_CA            0x004 /* trusted CA */
+#define NS_CERTKEY_SAN_RFC822    0x008 /* subj alt name: rfc822 */
+#define NS_CERTKEY_SAN_DNS       0x010 /* subj alt name: DNS */
+#define NS_CERTKEY_SAN_IPADDR    0x020 /* subj alt name: IP address */
+#define NS_CERTKEY_COMMON_NAME   0x040 /* common name */
+#define NS_CERTKEY_TARGET_PARAM  0x080 /* tlstmParamsTable */
+#define NS_CERTKEY_TARGET_ADDR   0x100 /* tlstmAddrTable */
+#define NS_CERTKEY_MULTIPLE      0x200 /* try multiple sources */
+
+/** RFC 5246 hash algorithms (Section 7.4.1.4.1) */
+#define NS_HASH_NONE        0
+#define NS_HASH_MD5         1
+#define NS_HASH_SHA1        2
+#define NS_HASH_SHA224      3
+#define NS_HASH_SHA256      4
+#define NS_HASH_SHA384      5
+#define NS_HASH_SHA512      6
+#define NS_HASH_MAX         NS_HASH_SHA512
+
+/** SNMP-TLS-TM-MIB */
+#define SNMPTLSFINGERPRINT_MAX_LEN   255
+
+    /*************************************************************************
+     * netsnmp_cert function definitions
+     *************************************************************************/
+
+    netsnmp_cert *netsnmp_cert_find(int what, int where, void *hint);
+
+    int netsnmp_cert_check_vb_fingerprint(const netsnmp_variable_list *var);
+
+    void netsnmp_fp_lowercase_and_strip_colon(char *fp);
+    int netsnmp_cert_parse_hash_type(const char *str);
+    int netsnmp_tls_fingerprint_build(int hash_type, const char *hex_fp,
+                                      u_char **tls_fp, size_t *tls_fp_len,
+                                      int allow_realloc);
+    int netsnmp_tls_fingerprint_parse(const u_char *binary_fp, int fp_len,
+                                      char **fp_str_ptr, u_int *fp_str_len,
+                                      int allow_realloc, u_char *hash_type_ptr);
+
+
+    int netsnmp_cert_trust(SSL_CTX *ctx, netsnmp_cert *thiscert);
+    int netsnmp_cert_trust_ca(SSL_CTX *ctx, netsnmp_cert *thiscertsrootca);
+
+    /*************************************************************************
+     *
+     *  certificate to Transport Security Name mapping (netsnmp_cert_map)
+     *
+     *************************************************************************/
+
+#define TSNM_tlstmCertSpecified                 1
+#define TSNM_tlstmCertSANRFC822Name             2
+#define TSNM_tlstmCertSANDNSName                3
+#define TSNM_tlstmCertSANIpAddress              4
+#define TSNM_tlstmCertSANAny                    5
+#define TSNM_tlstmCertCommonName                6
+#define TSNM_tlstmCert_MAX                      TSNM_tlstmCertCommonName
+
+#define NSCM_FROM_CONFIG                        0x0001
+#define NSCM_FROM_MIB                           0x0002
+#define NSCM_NONVOLATILE                        0x0004
+
+    typedef struct netsnmp_cert_map_s {
+        int             priority;
+        char           *fingerprint;
+        int             mapType;
+        char           *data;
+
+        char            hashType;
+        char            flags;
+
+        X509           *ocert;
+    } netsnmp_cert_map;
+
+    netsnmp_cert_map *netsnmp_cert_map_alloc(char *fp, X509 *ocert);
+    void netsnmp_cert_map_free(netsnmp_cert_map *cert_map);
+    int netsnmp_cert_map_add(netsnmp_cert_map *map);
+    int netsnmp_cert_map_remove(netsnmp_cert_map *map);
+    netsnmp_cert_map *netsnmp_cert_map_find(netsnmp_cert_map *map);
+
+    void netsnmp_cert_map_container_free(netsnmp_container *c);
+    netsnmp_container *netsnmp_cert_map_container_create(int with_fp);
+    netsnmp_container *netsnmp_cert_map_container(void);
+
+    int netsnmp_cert_get_secname_maps(netsnmp_container *cm);
+
+    /*************************************************************************
+     *
+     *  snmpTlstmParamsTable data
+     *
+     *************************************************************************/
+    typedef struct snmpTlstmParams_s {
+        char         *name;
+        char         *fingerprint;
+        char          hashType;
+        u_char        flags;
+        u_char        fingerprint_len;
+    } snmpTlstmParams;
+    
+#define TLSTM_PARAMS_FROM_CONFIG          0x01
+#define TLSTM_PARAMS_FROM_MIB             0x02
+#define TLSTM_PARAMS_NONVOLATILE          0x04
+/** ine TLSTM_PARAMS_XXX                  0x08 */
+
+    snmpTlstmParams *netsnmp_tlstmParams_create(const char *tag, int hashType,
+                                                const char *fp, int fp_len);
+    void netsnmp_tlstmParams_free(snmpTlstmParams *stp);
+    snmpTlstmParams *netsnmp_tlstmParams_restore_common(char **line);
+
+    netsnmp_container *netsnmp_tlstmParams_container(void);
+    int netsnmp_tlstmParams_add(snmpTlstmParams *stp);
+    int netsnmp_tlstmParams_remove(snmpTlstmParams *stp);
+    snmpTlstmParams *netsnmp_tlstmParams_find(snmpTlstmParams *stp);
+
+    /*************************************************************************
+     *
+     *  snmpTlstmAddrTable data
+     *
+     *************************************************************************/
+    typedef struct snmpTlstmAddr_s {
+        char         *name;
+        char         *fingerprint;
+        char         *identity;
+        
+        u_char        hashType;
+        u_char        flags;
+        
+    } snmpTlstmAddr;
+
+#define TLSTM_ADDR_FROM_CONFIG          0x01
+#define TLSTM_ADDR_FROM_MIB             0x02
+#define TLSTM_ADDR_NONVOLATILE          0x04
+/** ine TLSTM_ADDR_XXX                  0x08 */
+
+    int netsnmp_tlstmAddr_restore_common(char **line, char *name,
+                                         size_t *name_len, char *id,
+                                         size_t *id_len, char *fp,
+                                         size_t *fp_len, u_char *ht);
+    netsnmp_container *netsnmp_tlstmAddr_container(void);
+    snmpTlstmAddr *netsnmp_tlstmAddr_find(snmpTlstmAddr *entry);
+    snmpTlstmAddr *netsnmp_tlstmAddr_create(char *targetAddrName);
+    void netsnmp_tlstmAddr_free(snmpTlstmAddr *entry);
+    int netsnmp_tlstmAddr_add(snmpTlstmAddr *entry);
+    int netsnmp_tlstmAddr_remove(snmpTlstmAddr *entry);
+    char *netsnmp_tlstmAddr_get_serverId(const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) */
+
+#endif /* NETSNMP_CERT_UTIL_H */
+
diff --git a/include/net-snmp/library/check_varbind.h b/include/net-snmp/library/check_varbind.h
index 4271f76..1e1615a 100644
--- a/include/net-snmp/library/check_varbind.h
+++ b/include/net-snmp/library/check_varbind.h
@@ -18,21 +18,31 @@
     int netsnmp_check_vb_size_range(const netsnmp_variable_list *var,
                                     size_t low, size_t high );
 
+    NETSNMP_IMPORT
     int netsnmp_check_vb_type_and_size(const netsnmp_variable_list *var,
                                     int type, size_t size);
+    NETSNMP_IMPORT
     int netsnmp_check_vb_type_and_max_size(const netsnmp_variable_list *var,
                                     int type, size_t size);
 
+    NETSNMP_IMPORT
     int netsnmp_check_vb_oid(const netsnmp_variable_list *var);
+    NETSNMP_IMPORT
     int netsnmp_check_vb_int(const netsnmp_variable_list *var);
+    NETSNMP_IMPORT
     int netsnmp_check_vb_uint(const netsnmp_variable_list *var);
+    NETSNMP_IMPORT
     int netsnmp_check_vb_int_range(const netsnmp_variable_list *var, int low,
                                    int high);
 
+    NETSNMP_IMPORT
     int netsnmp_check_vb_truthvalue(const netsnmp_variable_list *var);
 
+    NETSNMP_IMPORT
     int netsnmp_check_vb_rowstatus_value(const netsnmp_variable_list *var);
+    NETSNMP_IMPORT
     int netsnmp_check_vb_rowstatus(const netsnmp_variable_list *var, int old_val);
+    int netsnmp_check_vb_rowstatus_with_storagetype(const netsnmp_variable_list *var, int old_val, int old_storage);
 
     int netsnmp_check_vb_storagetype(const netsnmp_variable_list *var, int old_val);
 
diff --git a/include/net-snmp/library/container.h b/include/net-snmp/library/container.h
index 3241a1c..30b82f1 100644
--- a/include/net-snmp/library/container.h
+++ b/include/net-snmp/library/container.h
@@ -24,9 +24,11 @@
 #error "Please include <net-snmp/net-snmp-config.h> before this file"
 #endif
 
+#include <stdlib.h> /* free() */
 #include <net-snmp/types.h>
 #include <net-snmp/library/factory.h>
 #include <net-snmp/library/snmp_logging.h>
+#include <net-snmp/library/tools.h>
 
 #ifdef  __cplusplus
 extern "C" {
@@ -41,7 +43,14 @@
     struct netsnmp_container_s; /** forward declare */
 
     /*
-     * function returning an int for an operation on a container
+     * function for performing an operation on a container which
+     * returns (maybe the same) container.
+     */
+    typedef struct netsnmp_container_s* (netsnmp_container_mod_op)
+        (struct netsnmp_container_s *, void *context, u_int flags);
+
+    /*
+     * function for setting an option on a container
      */
     typedef int (netsnmp_container_option)(struct netsnmp_container_s *,
                                            int set, u_int flags);
@@ -145,17 +154,15 @@
        /*
         * release memory for an entry from the container
         */
-       netsnmp_container_op    *release;
-
-       /*
-        * Note: do not change the key!  If you need to
-        * change a key, remove the entry, change the key,
-        * and the re-add the entry.
-        */
+       netsnmp_container_op    *release; /* NOTE: deprecated. Use free_item */
+       netsnmp_container_obj_func *free_item;
 
        /*
         * find the entry in the container with the same key
         *
+        * Note: do not change the key!  If you need to
+        * change a key, remove the entry, change the key,
+        * and the re-add the entry.
         */
        netsnmp_container_rtn   *find;
 
@@ -201,6 +208,14 @@
         */
        netsnmp_container_op    *insert_filter;
 
+        /*
+         * OPTIONAL function to duplicate a container. Defaults to a shallow
+         * copy. Only the specified container is copied (i.e. sub-containers
+         * not included).
+         */
+        netsnmp_container_mod_op *duplicate;
+
+
        /*
         * function to compare two object stored in the container.
         *
@@ -229,11 +244,16 @@
 
        /*
         * sort count, for iterators to track (insert/delete
-        * bumps coutner, invalidates iterator
+        * bumps counter, invalidates iterator)
         */
        u_long                          sync;
 
        /*
+        * flags
+        */
+       u_int                           flags;
+
+       /*
         * containers can contain other containers (additional indexes)
         */
        struct netsnmp_container_s *next, *prev;
@@ -244,7 +264,9 @@
      * initialize/free a container of container factories. used by
      * netsnmp_container_find* functions.
      */
+    NETSNMP_IMPORT
     void netsnmp_container_init_list(void);
+    NETSNMP_IMPORT
     void netsnmp_container_free_list(void);
 
     /*
@@ -259,12 +281,14 @@
      * search for and create a container from a list of types or a
      * specific type.
      */
+    NETSNMP_IMPORT
     netsnmp_container * netsnmp_container_find(const char *type_list);
     netsnmp_container * netsnmp_container_get(const char *type);
 
     /*
      * utility routines
      */
+    NETSNMP_IMPORT
     void netsnmp_container_add_index(netsnmp_container *primary,
                                      netsnmp_container *new_index);
 
@@ -275,7 +299,9 @@
      * common comparison routines
      */
     /** first data element is a 'netsnmp_index' */
+    NETSNMP_IMPORT
     int netsnmp_compare_netsnmp_index(const void *lhs, const void *rhs);
+    NETSNMP_IMPORT
     int netsnmp_ncompare_netsnmp_index(const void *lhs, const void *rhs);
 
     /** first data element is a 'char *' */
@@ -289,7 +315,13 @@
     /** no structure, just 'char *' pointers */
     int netsnmp_compare_direct_cstring(const void * lhs, const void * rhs);
 
+    int netsnmp_compare_long(const void * lhs, const void * rhs);
+    int netsnmp_compare_ulong(const void * lhs, const void * rhs);
+    int netsnmp_compare_int32(const void * lhs, const void * rhs);
+    int netsnmp_compare_uint32(const void * lhs, const void * rhs);
+
     /** for_each callback to call free on data item */
+    NETSNMP_IMPORT
     void  netsnmp_container_simple_free(void *data, void *context);
 
 /*
@@ -301,15 +333,15 @@
 #define CONTAINER_SET_OPTIONS(x,o,rc)  do {                             \
         if (NULL==(x)->options)                                         \
             rc = -1;                                                    \
-        else                                                            \
+        else {                                                          \
             rc = (x)->options(x, 1, o);                                 \
+            if (rc != -1 )                                              \
+                (x)->flags |= o;                                        \
+        }                                                               \
     } while(0)
 
 #define CONTAINER_CHECK_OPTION(x,o,rc)    do {                          \
-        if (NULL==(x)->options)                                         \
-            rc = -1;                                                    \
-        else                                                            \
-            rc = (x)->options(x,0, o);                                  \
+        rc = x->flags & 0;                                              \
     } while(0)
 
 
@@ -348,16 +380,33 @@
     int CONTAINER_REMOVE(netsnmp_container *x, const void *k);
 
     /*
+     * duplicate container
+     */
+    netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
+                                     u_int flags);
+
+    /*
      * clear all containers. When clearing the *first* container, and
      * *only* the first container, call the function f for each item.
      * After calling this function, all containers should be empty.
      */
     void CONTAINER_CLEAR(netsnmp_container *x, netsnmp_container_obj_func *f,
                         void *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.
+     */
+    void CONTAINER_FREE_ALL(netsnmp_container *x, void *c);
+
     /*
      * free all containers
      */
     int CONTAINER_FREE(netsnmp_container *x);
+
+    netsnmp_container *SUBCONTAINER_FIND(netsnmp_container *x,
+                                         const char* name);
 #else
     /*------------------------------------------------------------------
      * These functions should EXACTLY match the function version in
@@ -427,6 +476,22 @@
      * container.c. If you change one, change them both.
      */
     NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
+    netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
+                                     u_int flags)
+    {
+        if (NULL == x->duplicate) {
+            snmp_log(LOG_ERR, "container '%s' does not support duplicate\n",
+                     x->container_name ? x->container_name : "");
+            return NULL;
+        }
+        return x->duplicate(x, ctx, flags);
+    }
+
+    /*------------------------------------------------------------------
+     * These functions should EXACTLY match the function version in
+     * container.c. If you change one, change them both.
+     */
+    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
     int CONTAINER_FREE(netsnmp_container *x)
     {
 	int  rc2, rc = 0;
@@ -436,17 +501,17 @@
             x = x->next;
         while(x) {
             netsnmp_container *tmp;
-            const char *name;
+            char *name;
             tmp = x->prev;
             name = x->container_name;
-            if (NULL != x->container_name)
-                SNMP_FREE(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;
@@ -475,6 +540,17 @@
         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.
@@ -502,6 +578,22 @@
     }
 
 #endif
+
+    /*
+     * INTERNAL utility routines for container implementations
+     */
+    void netsnmp_init_container(netsnmp_container         *c,
+                                netsnmp_container_rc      *init,
+                                netsnmp_container_rc      *cfree,
+                                netsnmp_container_size    *size,
+                                netsnmp_container_compare *cmp,
+                                netsnmp_container_op      *ins,
+                                netsnmp_container_op      *rem,
+                                netsnmp_container_rtn     *fnd);
+    /** Duplicate container meta-data. */
+    int netsnmp_container_data_dup(netsnmp_container *dup,
+                                   netsnmp_container *c);
+
     
     /*************************************************************************
      *
@@ -551,12 +643,20 @@
 
        netsnmp_iterator_rtn          *next;
 
+        /*
+         * remove will remove the item at the current position, then back up
+         * the iterator to the previous item. That way next will move to the
+         * item (the one that replaced the removed item.
+         */
+       netsnmp_iterator_rc           *remove;
+
     } netsnmp_iterator;
 
 
 #define ITERATOR_FIRST(x)  x->first(x)
 #define ITERATOR_NEXT(x)   x->next(x)
 #define ITERATOR_LAST(x)   x->last(x)
+#define ITERATOR_REMOVE(x) x->remove(x)
 #define ITERATOR_RELEASE(x) do { x->release(x); x = NULL; } while(0)
     
 #ifdef  __cplusplus
diff --git a/include/net-snmp/library/container_list_ssll.h b/include/net-snmp/library/container_list_ssll.h
index 039ba48..494f213 100644
--- a/include/net-snmp/library/container_list_ssll.h
+++ b/include/net-snmp/library/container_list_ssll.h
@@ -16,6 +16,7 @@
     netsnmp_container *netsnmp_container_get_sorted_singly_linked_list(void);
     netsnmp_container *netsnmp_container_get_singly_linked_list(int fifo);
 
+    NETSNMP_IMPORT
     void netsnmp_container_ssll_init(void);
 
 
diff --git a/include/net-snmp/library/container_null.h b/include/net-snmp/library/container_null.h
index 6489606..a55d342 100644
--- a/include/net-snmp/library/container_null.h
+++ b/include/net-snmp/library/container_null.h
@@ -10,6 +10,7 @@
 
 netsnmp_container *netsnmp_container_get_null(void);
 
+    NETSNMP_IMPORT
     void netsnmp_container_null_init(void);
 
 
diff --git a/include/net-snmp/library/data_list.h b/include/net-snmp/library/data_list.h
index a64e07a..54a3a5d 100644
--- a/include/net-snmp/library/data_list.h
+++ b/include/net-snmp/library/data_list.h
@@ -56,6 +56,7 @@
        Netsnmp_Free_List_Data *data_list_free_ptr;
     } netsnmp_data_list_saveinfo;
 
+    NETSNMP_IMPORT
     netsnmp_data_list *
       netsnmp_create_data_list(const char *, void *, Netsnmp_Free_List_Data* );
     void            netsnmp_data_list_add_node(netsnmp_data_list **head,
@@ -64,17 +65,23 @@
       netsnmp_data_list_add_data(netsnmp_data_list **head,
                                  const char *name, void *data,
                                  Netsnmp_Free_List_Data * beer);
+    NETSNMP_IMPORT
     void           *netsnmp_get_list_data(netsnmp_data_list *head,
                                           const char *node);
+    NETSNMP_IMPORT
     void            netsnmp_free_list_data(netsnmp_data_list *head);    /* single */
+    NETSNMP_IMPORT
     void            netsnmp_free_all_list_data(netsnmp_data_list *head);        /* multiple */
+    NETSNMP_IMPORT
     int             netsnmp_remove_list_node(netsnmp_data_list **realhead,
                                              const char *name);
+    NETSNMP_IMPORT
     netsnmp_data_list *
     netsnmp_get_list_node(netsnmp_data_list *head,
                           const char *name);
 
     /** depreciated: use netsnmp_data_list_add_node() */
+    NETSNMP_IMPORT
     void            netsnmp_add_list_data(netsnmp_data_list **head,
                                           netsnmp_data_list *node);
 
diff --git a/include/net-snmp/library/default_store.h b/include/net-snmp/library/default_store.h
index 92fdebf..fcb87e0 100644
--- a/include/net-snmp/library/default_store.h
+++ b/include/net-snmp/library/default_store.h
@@ -24,6 +24,8 @@
 #ifndef DEFAULT_STORE_H
 #define DEFAULT_STORE_H
 
+#include <net-snmp/net-snmp-config.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
@@ -90,7 +92,7 @@
 #define NETSNMP_DS_LIB_APPEND_LOGFILES     37 /* append, don't overwrite, log files */
 #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_ALLOW_SELF_SIGNED   40 /* Certs for DTLS */
+#define NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES 40 /* don't read host.conf files */
 
     /*
      * library integers 
@@ -150,37 +152,48 @@
 #define NETSNMP_DS_LIB_APPTYPES          20
 #define NETSNMP_DS_LIB_KSM_KEYTAB        21
 #define NETSNMP_DS_LIB_KSM_SERVICE_NAME  22
-/* for the client */
 #define NETSNMP_DS_LIB_X509_CLIENT_PUB   23
-#define NETSNMP_DS_LIB_X509_CLIENT_PRIV  24
-#define NETSNMP_DS_LIB_X509_SERVER_CERTS 25
-/* for the server */
-#define NETSNMP_DS_LIB_X509_SERVER_PUB   26
-#define NETSNMP_DS_LIB_X509_SERVER_PRIV  27
-#define NETSNMP_DS_LIB_X509_CLIENT_CERTS 28
-#define NETSNMP_DS_LIB_SSHTOSNMP_SOCKET  29
+#define NETSNMP_DS_LIB_X509_SERVER_PUB   24
+#define NETSNMP_DS_LIB_SSHTOSNMP_SOCKET  25
+#define NETSNMP_DS_LIB_CERT_EXTRA_SUBDIR 26
+#define NETSNMP_DS_LIB_HOSTNAME          27
+#define NETSNMP_DS_LIB_X509_CRL_FILE     28
+#define NETSNMP_DS_LIB_TLS_ALGORITMS     29
 
     /*
      * end storage definitions 
      */
 
+    NETSNMP_IMPORT
     int             netsnmp_ds_set_boolean(int storeid, int which, int value);
+    NETSNMP_IMPORT
     int             netsnmp_ds_get_boolean(int storeid, int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_toggle_boolean(int storeid, int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_set_int(int storeid, int which, int value);
+    NETSNMP_IMPORT
     int             netsnmp_ds_get_int(int storeid, int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_set_string(int storeid, int which,
                                   const char *value);
+    NETSNMP_IMPORT
     char           *netsnmp_ds_get_string(int storeid, int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_set_void(int storeid, int which, void *value);
+    NETSNMP_IMPORT
     void           *netsnmp_ds_get_void(int storeid, int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_register_config(u_char type, const char *ftype,
                                        const char *token, int storeid,
                                        int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_register_premib(u_char type, const char *ftype,
                                        const char *token, int storeid,
                                        int which);
+    NETSNMP_IMPORT
     int             netsnmp_ds_parse_boolean(char *line);
+    NETSNMP_IMPORT
     void            netsnmp_ds_shutdown(void);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/dir_utils.h b/include/net-snmp/library/dir_utils.h
index a620d00..471bb0b 100644
--- a/include/net-snmp/library/dir_utils.h
+++ b/include/net-snmp/library/dir_utils.h
@@ -15,13 +15,27 @@
 extern "C" {
 #endif
 
+    /*
+     * filter function; return 1 to include file, 0 to exclude
+     */
+#define NETSNMP_DIR_EXCLUDE 0
+#define NETSNMP_DIR_INCLUDE 1
+    typedef int (netsnmp_directory_filter)(const void *text, void *ctx);
+
+
     /*------------------------------------------------------------------
      *
      * Prototypes
      */
-    netsnmp_container * netsnmp_directory_container_read(netsnmp_container *c,
-                                                         const char *dir,
-                                                         u_int flags);
+    netsnmp_container *
+    netsnmp_directory_container_read_some(netsnmp_container *user_container,
+                                          const char *dirname,
+                                          netsnmp_directory_filter *filter,
+                                          void *filter_ctx, u_int flags);
+
+#define netsnmp_directory_container_read(c,d,f) \
+    netsnmp_directory_container_read_some(c,d,NULL,NULL,f);
+
     void netsnmp_directory_container_free(netsnmp_container *c);
 
         
@@ -30,7 +44,15 @@
      *
      * flags
      */
-#define NETSNMP_DIR_RECURSE                           0x1
+#define NETSNMP_DIR_RECURSE                           0x0001
+#define NETSNMP_DIR_RELATIVE_PATH                     0x0002
+#define NETSNMP_DIR_SORTED                            0x0004
+/** don't return null if dir empty */
+#define NETSNMP_DIR_EMPTY_OK                          0x0008
+/** store netsnmp_file instead of filenames */
+#define NETSNMP_DIR_NSFILE                            0x0010
+/** load stats in netsnmp_file */
+#define NETSNMP_DIR_NSFILE_STATS                      0x0020
 
     
         
diff --git a/include/net-snmp/library/fd_event_manager.h b/include/net-snmp/library/fd_event_manager.h
index 14cdf51..ede67b4 100644
--- a/include/net-snmp/library/fd_event_manager.h
+++ b/include/net-snmp/library/fd_event_manager.h
@@ -88,8 +88,10 @@
  *
  * Side Effects: None
  */
+NETSNMP_IMPORT
 void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);
 
+NETSNMP_IMPORT
 void netsnmp_external_event_info2(int *numfds,
                                   netsnmp_large_fd_set *readfds,
                                   netsnmp_large_fd_set *writefds,
@@ -119,7 +121,9 @@
  *
  * Side Effects: None
  */
+NETSNMP_IMPORT
 void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);
+NETSNMP_IMPORT
 void netsnmp_dispatch_external_events2(int *count,
                                        netsnmp_large_fd_set *readfds,
                                        netsnmp_large_fd_set *writefds,
diff --git a/include/net-snmp/library/file_utils.h b/include/net-snmp/library/file_utils.h
index fa9b5a4..9f5cdce 100644
--- a/include/net-snmp/library/file_utils.h
+++ b/include/net-snmp/library/file_utils.h
@@ -13,32 +13,23 @@
      */
     typedef struct netsnmp_file_s {
         
-        /*
-         * file name
-         */
+        /** file name */
         char                   *name;
         
-        /*
-         * file descriptor for the file
-         */
+        /** file descriptor for the file */
         int                     fd;
 
-        /*
-         * filesystem flags
-         */
+        /** filesystem flags */
         int                     fs_flags;
 
-        /*
-         * open/create mode
-         */
+        /** open/create mode */
         mode_t                  mode;
 
-        /*
-         * netsnmp flags
-         */
+        /** netsnmp flags */
         u_int                   ns_flags;
 
-
+        /** file stats */
+        struct stat            *stats;
 
         /*
          * future expansion
@@ -54,6 +45,9 @@
      * Prototypes
      *
      */
+    netsnmp_file *netsnmp_file_new(const char *name, int fs_flags, mode_t mode,
+                                   u_int ns_flags);
+
     netsnmp_file * netsnmp_file_create(void);
     netsnmp_file * netsnmp_file_fill(netsnmp_file * filei, const char* name,
                                      int fs_flags, mode_t mode, u_int ns_flags);
@@ -62,7 +56,11 @@
     int netsnmp_file_open(netsnmp_file * filei);
     int netsnmp_file_close(netsnmp_file * filei);
 
-        
+    /** support netsnmp_file containers */
+    int netsnmp_file_compare_name(netsnmp_file *lhs, netsnmp_file *rhs);
+    void netsnmp_file_container_free(netsnmp_file *file, void *context);
+
+
 
     /*------------------------------------------------------------------
      *
@@ -70,7 +68,8 @@
      *
      */
 #define NETSNMP_FILE_NO_AUTOCLOSE                         0x00000001
-#define NETSNMP_FILE_                                     0x00000002
+#define NETSNMP_FILE_STATS                                0x00000002
+#define NETSNMP_FILE_AUTO_OPEN                            0x00000004
 
     /*------------------------------------------------------------------
      *
diff --git a/include/net-snmp/library/int64.h b/include/net-snmp/library/int64.h
index fdc6805..9c7c894 100644
--- a/include/net-snmp/library/int64.h
+++ b/include/net-snmp/library/int64.h
@@ -13,11 +13,15 @@
     void            multBy10(U64, U64 *);
     void            incrByU16(U64 *, unsigned int);
     void            incrByU32(U64 *, unsigned int);
+    NETSNMP_IMPORT
     void            zeroU64(U64 *);
     int             isZeroU64(const U64 *);
+    NETSNMP_IMPORT
     void            printU64(char *, const U64 *);
+    NETSNMP_IMPORT
     void            printI64(char *, const U64 *);
     int             read64(U64 *, const char *);
+    NETSNMP_IMPORT
     void            u64Subtract(const U64 * pu64one, const U64 * pu64two,
                                 U64 * pu64out);
     void            u64Incr(U64 * pu64out, const U64 * pu64one);
@@ -27,6 +31,7 @@
 
     int             netsnmp_c64_check_for_32bit_wrap(U64 *old_val, U64 *new_val,
                                                      int adjust);
+    NETSNMP_IMPORT
     int             netsnmp_c64_check32_and_update(struct counter64 *prev_val,
                                                    struct counter64 *new_val,
                                                    struct counter64 *old_prev_val,
diff --git a/include/net-snmp/library/keytools.h b/include/net-snmp/library/keytools.h
index 2276216..44acc48 100644
--- a/include/net-snmp/library/keytools.h
+++ b/include/net-snmp/library/keytools.h
@@ -24,21 +24,25 @@
     /*
      * Prototypes.h
      */
+    NETSNMP_IMPORT
     int             generate_Ku(const oid * hashtype, u_int hashtype_len,
-                                u_char * P, size_t pplen,
+                                const u_char * P, size_t pplen,
                                 u_char * Ku, size_t * kulen);
 
+    NETSNMP_IMPORT
     int             generate_kul(const oid * hashtype, u_int hashtype_len,
-                                 u_char * engineID, size_t engineID_len,
-                                 u_char * Ku, size_t ku_len,
+                                 const u_char * engineID, size_t engineID_len,
+                                 const u_char * Ku, size_t ku_len,
                                  u_char * Kul, size_t * kul_len);
 
+    NETSNMP_IMPORT
     int             encode_keychange(const oid * hashtype,
                                      u_int hashtype_len, u_char * oldkey,
                                      size_t oldkey_len, u_char * newkey,
                                      size_t newkey_len, u_char * kcstring,
                                      size_t * kcstring_len);
 
+    NETSNMP_IMPORT
     int             decode_keychange(const oid * hashtype,
                                      u_int hashtype_len, u_char * oldkey,
                                      size_t oldkey_len, u_char * kcstring,
diff --git a/include/net-snmp/library/large_fd_set.h b/include/net-snmp/library/large_fd_set.h
index 7ddf169..5077780 100644
--- a/include/net-snmp/library/large_fd_set.h
+++ b/include/net-snmp/library/large_fd_set.h
@@ -64,8 +64,11 @@
     do { (fdset)->lfs_setptr->fd_count = 0; } while(0)
 
 
+NETSNMP_IMPORT
 void   netsnmp_large_fd_setfd( SOCKET fd, netsnmp_large_fd_set *fdset);
+NETSNMP_IMPORT
 void   netsnmp_large_fd_clr(   SOCKET fd, netsnmp_large_fd_set *fdset);
+NETSNMP_IMPORT
 int    netsnmp_large_fd_is_set(SOCKET fd, netsnmp_large_fd_set *fdset);
 
 #else
@@ -116,6 +119,7 @@
  * The file descriptor set must be initialized separately, e.g. via
  * NETSNMP_LARGE_FD_CLR().
  */
+NETSNMP_IMPORT
 void   netsnmp_large_fd_set_init(   netsnmp_large_fd_set *fdset, int setsize);
 
 /**
@@ -135,12 +139,13 @@
  * @see See also select(2) for more information.
  */
 NETSNMP_IMPORT
-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);
+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);
 
 /** Deallocate the memory allocated by netsnmp_large_fd_set_init. */
+NETSNMP_IMPORT
 void   netsnmp_large_fd_set_cleanup(netsnmp_large_fd_set *fdset);
 
 /**
diff --git a/include/net-snmp/library/lcd_time.h b/include/net-snmp/library/lcd_time.h
index 2c65e2c..da8c3c1 100644
--- a/include/net-snmp/library/lcd_time.h
+++ b/include/net-snmp/library/lcd_time.h
@@ -99,7 +99,7 @@
     /*
      * Prototypes.
      */
-    int             get_enginetime(u_char * engineID, u_int engineID_len,
+    int             get_enginetime(const u_char * engineID, u_int engineID_len,
                                    u_int * engine_boot,
                                    u_int * engine_time,
                                    u_int authenticated);
@@ -111,7 +111,7 @@
                                       u_int * last_engine_time,
                                       u_int authenticated);
 
-    int             set_enginetime(u_char * engineID, u_int engineID_len,
+    int             set_enginetime(const u_char * engineID, u_int engineID_len,
                                    u_int engine_boot, u_int engine_time,
                                    u_int authenticated);
 
@@ -122,9 +122,9 @@
          
          
         Enginetime
-        search_enginetime_list(u_char * engineID, u_int engineID_len);
+        search_enginetime_list(const u_char * engineID, u_int engineID_len);
 
-    int             hash_engineID(u_char * engineID, u_int engineID_len);
+    int             hash_engineID(const u_char * engineID, u_int engineID_len);
 
     void            dump_etimelist_entry(Enginetime e, int count);
     void            dump_etimelist(void);
diff --git a/include/net-snmp/library/libsnmp.h b/include/net-snmp/library/libsnmp.h
index ebd0062..eaf2bbf 100644
--- a/include/net-snmp/library/libsnmp.h
+++ b/include/net-snmp/library/libsnmp.h
@@ -53,11 +53,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -71,9 +67,7 @@
 #endif
 #include <stdio.h>
 #include <ctype.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#else
+#if HAVE_NETDB_H
 #include <netdb.h>
 #endif
 #if HAVE_ARPA_INET_H
diff --git a/include/net-snmp/library/md5.h b/include/net-snmp/library/md5.h
index c995c7e..12b192a 100644
--- a/include/net-snmp/library/md5.h
+++ b/include/net-snmp/library/md5.h
@@ -28,7 +28,7 @@
      * ** Input: MD -- an MDptr
      * ** Initialize the MDstruct prepatory to doing a message digest computation.
      */
-    extern void     MDbegin(MDptr);
+    NETSNMP_IMPORT void MDbegin(MDptr);
 
     /*
      * MDupdate(MD,X,count)
@@ -43,7 +43,7 @@
      * ** every MD computation should end with one call to MDupdate with a
      * ** count less than 512.  Zero is OK for a count.
      */
-    extern int      MDupdate(MDptr, unsigned char *, unsigned int);
+    NETSNMP_IMPORT int MDupdate(MDptr, const unsigned char *, unsigned int);
 
     /*
      * MDprint(MD)
@@ -54,10 +54,10 @@
      */
     extern void     MDprint(MDptr);
 
-    int             MDchecksum(u_char * data, size_t len, u_char * mac,
+    int             MDchecksum(const u_char * data, size_t len, u_char * mac,
                                size_t maclen);
-    int             MDsign(u_char * data, size_t len, u_char * mac,
-                           size_t maclen, u_char * secret,
+    int             MDsign(const u_char * data, size_t len, u_char * mac,
+                           size_t maclen, const u_char * secret,
                            size_t secretlen);
     void            MDget(MDstruct * MD, u_char * buf, size_t buflen);
 
diff --git a/include/net-snmp/library/mib.h b/include/net-snmp/library/mib.h
index 299f310..18d98e1 100644
--- a/include/net-snmp/library/mib.h
+++ b/include/net-snmp/library/mib.h
@@ -117,9 +117,11 @@
     struct variable_list;
     struct enum_list;
 
+    NETSNMP_IMPORT
     void            print_ascii_dump(FILE *);
     void            register_mib_handlers(void);
     void            netsnmp_set_mib_directory(const char *dir);
+    NETSNMP_IMPORT
     char            *netsnmp_get_mib_directory(void);
     void            netsnmp_fixup_mib_directory(void);
     void            netsnmp_mibindex_load( void );
@@ -128,31 +130,41 @@
     int             sprint_realloc_description(u_char ** buf, size_t * buf_len,
                                 size_t * out_len, int allow_realloc,
                                 oid * objid, size_t objidlen, int width);
+    NETSNMP_IMPORT
     int             get_wild_node(const char *, oid *, size_t *);
+    NETSNMP_IMPORT
     int             get_node(const char *, oid *, size_t *);
+    NETSNMP_IMPORT
     struct tree    *get_tree(const oid *, size_t, struct tree *);
+    NETSNMP_IMPORT
     struct tree    *get_tree_head(void);
     void            set_function(struct tree *);
 
+    NETSNMP_IMPORT
     int             parse_one_oid_index(oid ** oidStart, size_t * oidLen,
                                         netsnmp_variable_list * data,
                                         int complete);
+    NETSNMP_IMPORT
     int             parse_oid_indexes(oid * oidIndex, size_t oidLen,
                                       netsnmp_variable_list * data);
+    NETSNMP_IMPORT
     int             build_oid_noalloc(oid * in, size_t in_len,
                                       size_t * out_len, oid * prefix,
                                       size_t prefix_len,
                                       netsnmp_variable_list * indexes);
+    NETSNMP_IMPORT
     int             build_oid(oid ** out, size_t * out_len, oid * prefix,
                               size_t prefix_len,
                               netsnmp_variable_list * indexes);
     int             build_oid_segment(netsnmp_variable_list * var);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_variable(u_char ** buf, size_t * buf_len,
                                    size_t * out_len, int allow_realloc,
                                    const oid * objid, size_t objidlen,
                                    const netsnmp_variable_list * variable);
 
+    NETSNMP_IMPORT
 #ifndef NETSNMP_DISABLE_MIB_LOADING
     struct tree    *
 #else
@@ -166,6 +178,7 @@
                                                       const oid * objid,
                                                       size_t objidlen);
 
+    NETSNMP_IMPORT
     void
                     netsnmp_sprint_realloc_objid(u_char ** buf,
                                                  size_t * buf_len,
@@ -175,15 +188,18 @@
                                                  const oid * objid,
                                                  size_t objidlen);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_value(u_char ** buf, size_t * buf_len,
                                  size_t * out_len, int allow_realloc,
                                  const oid * objid, size_t objidlen,
                                  const netsnmp_variable_list * variable);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_objid(u_char ** buf, size_t * buf_len,
                                  size_t * out_len, int allow_realloc,
                                  const oid * objid, size_t objidlen);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_by_type(u_char ** buf, size_t * buf_len,
                                            size_t * out_len,
                                            int allow_realloc,
@@ -192,12 +208,14 @@
                                            const char *hint,
                                            const char *units);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_hexstring(u_char ** buf,
                                              size_t * buf_len,
                                              size_t * out_len,
                                              int allow_realloc,
                                              const u_char *, size_t);
 
+    NETSNMP_IMPORT
     int             sprint_realloc_asciistring(u_char ** buf,
                                                size_t * buf_len,
                                                size_t * out_len,
@@ -416,6 +434,7 @@
                                  const struct enum_list *, const char *,
                                  const char *);
 
+    NETSNMP_IMPORT
     int             snprint_bitstring(char *buf, size_t buf_len,
                                       const netsnmp_variable_list *,
                                       const struct enum_list *, const char *,
@@ -448,23 +467,35 @@
                                    const char *);
 #endif
 
+    NETSNMP_IMPORT
     void            print_oid_report(FILE *);
+    NETSNMP_IMPORT
     void            print_oid_report_enable_labeledoid(void);
+    NETSNMP_IMPORT
     void            print_oid_report_enable_oid(void);
+    NETSNMP_IMPORT
     void            print_oid_report_enable_suffix(void);
+    NETSNMP_IMPORT
     void            print_oid_report_enable_symbolic(void);
+    NETSNMP_IMPORT
     void            print_oid_report_enable_mibchildoid(void);
 
     const char     *parse_octet_hint(const char *hint, const char *value,
 	                             unsigned char **new_val, int *new_val_len);
 
+    NETSNMP_IMPORT
     void            clear_tree_flags(register struct tree *tp);
 
+    NETSNMP_IMPORT
     char           *snmp_out_toggle_options(char *);
+    NETSNMP_IMPORT
     void            snmp_out_toggle_options_usage(const char *, FILE *);
+    NETSNMP_IMPORT
     char           *snmp_in_toggle_options(char *);
     char           *snmp_in_options(char *, int, char * const *);
+    NETSNMP_IMPORT
     void            snmp_in_toggle_options_usage(const char *, FILE *);
+    NETSNMP_IMPORT
     u_char          mib_to_asn_type(int mib_type);
 
 
diff --git a/include/net-snmp/library/mt_support.h b/include/net-snmp/library/mt_support.h
index c17c729..4e35d33 100644
--- a/include/net-snmp/library/mt_support.h
+++ b/include/net-snmp/library/mt_support.h
@@ -63,9 +63,13 @@
 #endif /*  HAVE_PTHREAD_H  */
 
 
+NETSNMP_IMPORT
 int             snmp_res_init(void);
+NETSNMP_IMPORT
 int             snmp_res_lock(int groupID, int resourceID);
+NETSNMP_IMPORT
 int             snmp_res_unlock(int groupID, int resourceID);
+NETSNMP_IMPORT
 int             snmp_res_destroy_mutex(int groupID, int resourceID);
 
 #else /*  NETSNMP_REENTRANT  */
diff --git a/include/net-snmp/library/oid.h b/include/net-snmp/library/oid.h
new file mode 100644
index 0000000..e7adf41
--- /dev/null
+++ b/include/net-snmp/library/oid.h
@@ -0,0 +1,18 @@
+#ifndef NETSNMP_LIBRARY_OID_H
+#define NETSNMP_LIBRARY_OID_H
+
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+#ifndef EIGHTBIT_SUBIDS
+typedef u_long oid;
+#define MAX_SUBID   0xFFFFFFFFUL
+#define NETSNMP_PRIo "l"
+#else
+typedef uint8_t oid;
+#define MAX_SUBID   0xFF
+#define NETSNMP_PRIo ""
+#endif
+
+#endif /* NETSNMP_LIBRARY_OID_H */
diff --git a/include/net-snmp/library/oid_stash.h b/include/net-snmp/library/oid_stash.h
index eeab490..290bb40 100644
--- a/include/net-snmp/library/oid_stash.h
+++ b/include/net-snmp/library/oid_stash.h
@@ -38,6 +38,7 @@
        NetSNMPStashDump *dumpfn;
     } netsnmp_oid_stash_save_info;
 
+    NETSNMP_IMPORT
     int             netsnmp_oid_stash_add_data(netsnmp_oid_stash_node **root,
 					       const oid * lookup,
                                                size_t lookup_len,
@@ -48,9 +49,11 @@
     netsnmp_oid_stash_node
         *netsnmp_oid_stash_get_node(netsnmp_oid_stash_node *root,
                                     const oid * lookup, size_t lookup_len);
+    NETSNMP_IMPORT
     void           *netsnmp_oid_stash_get_data(netsnmp_oid_stash_node *root,
 					       const oid * lookup,
                                                size_t lookup_len);
+    NETSNMP_IMPORT
     netsnmp_oid_stash_node *
     netsnmp_oid_stash_getnext_node(netsnmp_oid_stash_node *root,
                                    oid * lookup, size_t lookup_len);
@@ -65,6 +68,7 @@
                                  oid *curoid, size_t curoid_len);
 
     /* frees all data in the stash and cleans it out.  Sets root = NULL */
+    NETSNMP_IMPORT
     void netsnmp_oid_stash_free(netsnmp_oid_stash_node **root,
                                 NetSNMPStashFreeNode *freefn);
                                 
diff --git a/include/net-snmp/library/openssl_aes.h b/include/net-snmp/library/openssl_aes.h
new file mode 100644
index 0000000..bddf083
--- /dev/null
+++ b/include/net-snmp/library/openssl_aes.h
@@ -0,0 +1,140 @@
+/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
+/* ====================================================================
+ * Copyright (c) 1998-2002 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ */
+
+#ifndef HEADER_AES_H
+#define HEADER_AES_H
+
+#ifdef OPENSSL_NO_AES
+#error AES is disabled.
+#endif
+
+#include <stddef.h>
+
+#define AES_ENCRYPT	1
+#define AES_DECRYPT	0
+
+/* Because array size can't be a const in C, the following two are macros.
+   Both sizes are in bytes. */
+#define AES_MAXNR 14
+#define AES_BLOCK_SIZE 16
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* This should be a hidden type, but EVP requires that the size be known */
+struct aes_key_st {
+#ifdef AES_LONG
+    unsigned long rd_key[4 *(AES_MAXNR + 1)];
+#else
+    unsigned int rd_key[4 *(AES_MAXNR + 1)];
+#endif
+    int rounds;
+};
+typedef struct aes_key_st AES_KEY;
+
+const char *AES_options(void);
+
+int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+	AES_KEY *key);
+int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+	AES_KEY *key);
+
+void AES_encrypt(const unsigned char *in, unsigned char *out,
+	const AES_KEY *key);
+void AES_decrypt(const unsigned char *in, unsigned char *out,
+	const AES_KEY *key);
+
+void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
+	const AES_KEY *key, const int enc);
+void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, const int enc);
+void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, int *num, const int enc);
+void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, int *num, const int enc);
+void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, int *num, const int enc);
+void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, int *num);
+void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char ivec[AES_BLOCK_SIZE],
+	unsigned char ecount_buf[AES_BLOCK_SIZE],
+	unsigned int *num);
+/* NB: the IV is _two_ blocks long */
+void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
+		     size_t length, const AES_KEY *key,
+		     unsigned char *ivec, const int enc);
+/* NB: the IV is _four_ blocks long */
+void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
+			size_t length, const AES_KEY *key,
+			const AES_KEY *key2, const unsigned char *ivec,
+			const int enc);
+
+int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
+		unsigned char *out,
+		const unsigned char *in, unsigned int inlen);
+int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
+		unsigned char *out,
+		const unsigned char *in, unsigned int inlen);
+
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* !HEADER_AES_H */
diff --git a/include/net-snmp/library/openssl_des.h b/include/net-snmp/library/openssl_des.h
new file mode 100644
index 0000000..44e7baf
--- /dev/null
+++ b/include/net-snmp/library/openssl_des.h
@@ -0,0 +1,236 @@
+/* crypto/des/des.h */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+/* Copied roughly from opensslconf.h which it's a little more complex */
+#define DES_LONG unsigned long
+
+#ifndef HEADER_NEW_DES_H
+#define HEADER_NEW_DES_H
+
+#ifdef OPENSSL_NO_DES
+#error DES is disabled.
+#endif
+
+#ifdef OPENSSL_BUILD_SHLIBCRYPTO
+# undef OPENSSL_EXTERN
+# define OPENSSL_EXTERN OPENSSL_EXPORT
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char DES_cblock[8];
+typedef /* const */ unsigned char const_DES_cblock[8];
+/* With "const", gcc 2.8.1 on Solaris thinks that DES_cblock *
+ * and const_DES_cblock * are incompatible pointer types. */
+
+typedef struct DES_ks
+    {
+    union
+	{
+	DES_cblock cblock;
+	/* make sure things are correct size on machines with
+	 * 8 byte longs */
+	DES_LONG deslong[2];
+	} ks[16];
+    } DES_key_schedule;
+
+#ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
+# ifndef OPENSSL_ENABLE_OLD_DES_SUPPORT
+#  define OPENSSL_ENABLE_OLD_DES_SUPPORT
+# endif
+#endif
+
+#define DES_KEY_SZ 	(sizeof(DES_cblock))
+#define DES_SCHEDULE_SZ (sizeof(DES_key_schedule))
+
+#define DES_ENCRYPT	1
+#define DES_DECRYPT	0
+
+#define DES_CBC_MODE	0
+#define DES_PCBC_MODE	1
+
+#define DES_ecb2_encrypt(i,o,k1,k2,e) \
+	DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
+
+#define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
+	DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
+
+#define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
+	DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
+
+#define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
+	DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
+
+const char *DES_options(void);
+void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
+		      DES_key_schedule *ks1,DES_key_schedule *ks2,
+		      DES_key_schedule *ks3, int enc);
+DES_LONG DES_cbc_cksum(const unsigned char *input,DES_cblock *output,
+		       long length,DES_key_schedule *schedule,
+		       const_DES_cblock *ivec);
+/* DES_cbc_encrypt does not update the IV!  Use DES_ncbc_encrypt instead. */
+void DES_cbc_encrypt(const unsigned char *input,unsigned char *output,
+		     long length,DES_key_schedule *schedule,DES_cblock *ivec,
+		     int enc);
+void DES_ncbc_encrypt(const unsigned char *input,unsigned char *output,
+		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
+		      int enc);
+void DES_xcbc_encrypt(const unsigned char *input,unsigned char *output,
+		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
+		      const_DES_cblock *inw,const_DES_cblock *outw,int enc);
+void DES_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
+		     long length,DES_key_schedule *schedule,DES_cblock *ivec,
+		     int enc);
+void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output,
+		     DES_key_schedule *ks,int enc);
+
+/* 	This is the DES encryption function that gets called by just about
+	every other DES routine in the library.  You should not use this
+	function except to implement 'modes' of DES.  I say this because the
+	functions that call this routine do the conversion from 'char *' to
+	long, and this needs to be done to make sure 'non-aligned' memory
+	access do not occur.  The characters are loaded 'little endian'.
+	Data is a pointer to 2 unsigned long's and ks is the
+	DES_key_schedule to use.  enc, is non zero specifies encryption,
+	zero if decryption. */
+void DES_encrypt1(DES_LONG *data,DES_key_schedule *ks, int enc);
+
+/* 	This functions is the same as DES_encrypt1() except that the DES
+	initial permutation (IP) and final permutation (FP) have been left
+	out.  As for DES_encrypt1(), you should not use this function.
+	It is used by the routines in the library that implement triple DES.
+	IP() DES_encrypt2() DES_encrypt2() DES_encrypt2() FP() is the same
+	as DES_encrypt1() DES_encrypt1() DES_encrypt1() except faster :-). */
+void DES_encrypt2(DES_LONG *data,DES_key_schedule *ks, int enc);
+
+void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
+		  DES_key_schedule *ks2, DES_key_schedule *ks3);
+void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
+		  DES_key_schedule *ks2, DES_key_schedule *ks3);
+void DES_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, 
+			  long length,
+			  DES_key_schedule *ks1,DES_key_schedule *ks2,
+			  DES_key_schedule *ks3,DES_cblock *ivec,int enc);
+void DES_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out,
+			   long length,
+			   DES_key_schedule *ks1,DES_key_schedule *ks2,
+			   DES_key_schedule *ks3,
+			   DES_cblock *ivec1,DES_cblock *ivec2,
+			   int enc);
+void DES_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out,
+			    long length,DES_key_schedule *ks1,
+			    DES_key_schedule *ks2,DES_key_schedule *ks3,
+			    DES_cblock *ivec,int *num,int enc);
+void DES_ede3_cfb_encrypt(const unsigned char *in,unsigned char *out,
+			  int numbits,long length,DES_key_schedule *ks1,
+			  DES_key_schedule *ks2,DES_key_schedule *ks3,
+			  DES_cblock *ivec,int enc);
+void DES_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out,
+			    long length,DES_key_schedule *ks1,
+			    DES_key_schedule *ks2,DES_key_schedule *ks3,
+			    DES_cblock *ivec,int *num);
+#if 0
+void DES_xwhite_in2out(const_DES_cblock *DES_key,const_DES_cblock *in_white,
+		       DES_cblock *out_white);
+#endif
+
+int DES_enc_read(int fd,void *buf,int len,DES_key_schedule *sched,
+		 DES_cblock *iv);
+int DES_enc_write(int fd,const void *buf,int len,DES_key_schedule *sched,
+		  DES_cblock *iv);
+char *DES_fcrypt(const char *buf,const char *salt, char *ret);
+char *DES_crypt(const char *buf,const char *salt);
+void DES_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
+		     long length,DES_key_schedule *schedule,DES_cblock *ivec);
+void DES_pcbc_encrypt(const unsigned char *input,unsigned char *output,
+		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
+		      int enc);
+DES_LONG DES_quad_cksum(const unsigned char *input,DES_cblock output[],
+			long length,int out_count,DES_cblock *seed);
+int DES_random_key(DES_cblock *ret);
+void DES_set_odd_parity(DES_cblock *key);
+int DES_check_key_parity(const_DES_cblock *key);
+int DES_is_weak_key(const_DES_cblock *key);
+/* DES_set_key (= set_key = DES_key_sched = key_sched) calls
+ * DES_set_key_checked if global variable DES_check_key is set,
+ * DES_set_key_unchecked otherwise. */
+int DES_set_key(const_DES_cblock *key,DES_key_schedule *schedule);
+int DES_key_sched(const_DES_cblock *key,DES_key_schedule *schedule);
+int DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule);
+void DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule *schedule);
+void DES_string_to_key(const char *str,DES_cblock *key);
+void DES_string_to_2keys(const char *str,DES_cblock *key1,DES_cblock *key2);
+void DES_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length,
+		       DES_key_schedule *schedule,DES_cblock *ivec,int *num,
+		       int enc);
+void DES_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,
+		       DES_key_schedule *schedule,DES_cblock *ivec,int *num);
+
+int DES_read_password(DES_cblock *key, const char *prompt, int verify);
+int DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, const char *prompt,
+	int verify);
+
+#define DES_fixup_key_parity DES_set_odd_parity
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/net-snmp/library/openssl_md5.h b/include/net-snmp/library/openssl_md5.h
new file mode 100644
index 0000000..1e85f31
--- /dev/null
+++ b/include/net-snmp/library/openssl_md5.h
@@ -0,0 +1,116 @@
+/* crypto/md5/md5.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_MD5_H
+#define HEADER_MD5_H
+
+#include <stddef.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#ifdef OPENSSL_NO_MD5
+#error MD5 is disabled.
+#endif
+
+/*
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * ! MD5_LONG has to be at least 32 bits wide. If it's wider, then !
+ * ! MD5_LONG_LOG2 has to be defined along.			   !
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+
+#if defined(__LP32__)
+#define MD5_LONG unsigned long
+#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
+#define MD5_LONG unsigned long
+#define MD5_LONG_LOG2 3
+/*
+ * _CRAY note. I could declare short, but I have no idea what impact
+ * does it have on performance on none-T3E machines. I could declare
+ * int, but at least on C90 sizeof(int) can be chosen at compile time.
+ * So I've chosen long...
+ *					<appro@fy.chalmers.se>
+ */
+#else
+#define MD5_LONG unsigned int
+#endif
+
+#define MD5_CBLOCK	64
+#define MD5_LBLOCK	(MD5_CBLOCK/4)
+#define MD5_DIGEST_LENGTH 16
+
+typedef struct MD5state_st
+	{
+	MD5_LONG A,B,C,D;
+	MD5_LONG Nl,Nh;
+	MD5_LONG data[MD5_LBLOCK];
+	unsigned int num;
+	} MD5_CTX;
+
+int MD5_Init(MD5_CTX *c);
+int MD5_Update(MD5_CTX *c, const void *data, size_t len);
+int MD5_Final(unsigned char *md, MD5_CTX *c);
+unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
+void MD5_Transform(MD5_CTX *c, const unsigned char *b);
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/net-snmp/library/openssl_sha.h b/include/net-snmp/library/openssl_sha.h
new file mode 100644
index 0000000..ec2ff09
--- /dev/null
+++ b/include/net-snmp/library/openssl_sha.h
@@ -0,0 +1,199 @@
+/* crypto/sha/sha.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_SHA_H
+#define HEADER_SHA_H
+
+#include <stddef.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#if defined(OPENSSL_NO_SHA) || (defined(OPENSSL_NO_SHA0) && defined(OPENSSL_NO_SHA1))
+#error SHA is disabled.
+#endif
+
+#if defined(OPENSSL_FIPS)
+#define FIPS_SHA_SIZE_T size_t
+#endif
+
+/*
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
+ * ! SHA_LONG_LOG2 has to be defined along.                        !
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+
+#if defined(__LP32__)
+#define SHA_LONG unsigned long
+#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
+#define SHA_LONG unsigned long
+#define SHA_LONG_LOG2 3
+#else
+#define SHA_LONG unsigned int
+#endif
+
+#define SHA_LBLOCK	16
+#define SHA_CBLOCK	(SHA_LBLOCK*4)	/* SHA treats input data as a
+					 * contiguous array of 32 bit
+					 * wide big-endian values. */
+#define SHA_LAST_BLOCK  (SHA_CBLOCK-8)
+#define SHA_DIGEST_LENGTH 20
+
+typedef struct SHAstate_st
+	{
+	SHA_LONG h0,h1,h2,h3,h4;
+	SHA_LONG Nl,Nh;
+	SHA_LONG data[SHA_LBLOCK];
+	unsigned int num;
+	} SHA_CTX;
+
+#ifndef OPENSSL_NO_SHA0
+int SHA_Init(SHA_CTX *c);
+int SHA_Update(SHA_CTX *c, const void *data, size_t len);
+int SHA_Final(unsigned char *md, SHA_CTX *c);
+unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md);
+void SHA_Transform(SHA_CTX *c, const unsigned char *data);
+#endif
+#ifndef OPENSSL_NO_SHA1
+int SHA1_Init(SHA_CTX *c);
+int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
+int SHA1_Final(unsigned char *md, SHA_CTX *c);
+unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
+void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
+#endif
+
+#define SHA256_CBLOCK	(SHA_LBLOCK*4)	/* SHA-256 treats input data as a
+					 * contiguous array of 32 bit
+					 * wide big-endian values. */
+#define SHA224_DIGEST_LENGTH	28
+#define SHA256_DIGEST_LENGTH	32
+
+typedef struct SHA256state_st
+	{
+	SHA_LONG h[8];
+	SHA_LONG Nl,Nh;
+	SHA_LONG data[SHA_LBLOCK];
+	unsigned int num,md_len;
+	} SHA256_CTX;
+
+#ifndef OPENSSL_NO_SHA256
+int SHA224_Init(SHA256_CTX *c);
+int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
+int SHA224_Final(unsigned char *md, SHA256_CTX *c);
+unsigned char *SHA224(const unsigned char *d, size_t n,unsigned char *md);
+int SHA256_Init(SHA256_CTX *c);
+int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
+int SHA256_Final(unsigned char *md, SHA256_CTX *c);
+unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md);
+void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
+#endif
+
+#define SHA384_DIGEST_LENGTH	48
+#define SHA512_DIGEST_LENGTH	64
+
+#ifndef OPENSSL_NO_SHA512
+/*
+ * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
+ * being exactly 64-bit wide. See Implementation Notes in sha512.c
+ * for further details.
+ */
+#define SHA512_CBLOCK	(SHA_LBLOCK*8)	/* SHA-512 treats input data as a
+					 * contiguous array of 64 bit
+					 * wide big-endian values. */
+#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
+#define SHA_LONG64 unsigned __int64
+#define U64(C)     C##UI64
+#elif defined(__arch64__)
+#define SHA_LONG64 unsigned long
+#define U64(C)     C##UL
+#else
+#define SHA_LONG64 unsigned long long
+#define U64(C)     C##ULL
+#endif
+
+typedef struct SHA512state_st
+	{
+	SHA_LONG64 h[8];
+	SHA_LONG64 Nl,Nh;
+	union {
+		SHA_LONG64	d[SHA_LBLOCK];
+		unsigned char	p[SHA512_CBLOCK];
+	} u;
+	unsigned int num,md_len;
+	} SHA512_CTX;
+#endif
+
+#ifndef OPENSSL_NO_SHA512
+int SHA384_Init(SHA512_CTX *c);
+int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
+int SHA384_Final(unsigned char *md, SHA512_CTX *c);
+unsigned char *SHA384(const unsigned char *d, size_t n,unsigned char *md);
+int SHA512_Init(SHA512_CTX *c);
+int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
+int SHA512_Final(unsigned char *md, SHA512_CTX *c);
+unsigned char *SHA512(const unsigned char *d, size_t n,unsigned char *md);
+void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/net-snmp/library/parse.h b/include/net-snmp/library/parse.h
index f5b0cd6..8726cc7 100644
--- a/include/net-snmp/library/parse.h
+++ b/include/net-snmp/library/parse.h
@@ -193,28 +193,43 @@
     void            unload_all_mibs(void);
     int             add_mibfile(const char*, const char*, FILE *);
     int             which_module(const char *);
+    NETSNMP_IMPORT
     char           *module_name(int, char *);
+    NETSNMP_IMPORT
     void            print_subtree(FILE *, struct tree *, int);
+    NETSNMP_IMPORT
     void            print_ascii_dump_tree(FILE *, struct tree *, int);
+    NETSNMP_IMPORT
     struct tree    *find_tree_node(const char *, int);
+    NETSNMP_IMPORT
     const char     *get_tc_descriptor(int);
+    NETSNMP_IMPORT
     const char     *get_tc_description(int);
+    NETSNMP_IMPORT
     struct tree    *find_best_tree_node(const char *, struct tree *,
                                         u_int *);
     /*
      * backwards compatability 
      */
+    NETSNMP_IMPORT
     struct tree    *find_node(const char *, struct tree *);
     struct tree    *find_node2(const char *, const char *); 
+    NETSNMP_IMPORT
     struct module  *find_module(int);
     void            adopt_orphans(void);
+    NETSNMP_IMPORT
     char           *snmp_mib_toggle_options(char *options);
+    NETSNMP_IMPORT
     void            snmp_mib_toggle_options_usage(const char *lead,
                                                   FILE * outf);
+    NETSNMP_IMPORT
     void            print_mib(FILE *);
+    NETSNMP_IMPORT
     void            print_mib_tree(FILE *, struct tree *, int);
     int             get_mib_parse_error_count(void);
+    NETSNMP_IMPORT
     int             snmp_get_token(FILE * fp, char *token, int maxtlen);
+    NETSNMP_IMPORT
     struct tree    *find_best_tree_node(const char *name,
                                         struct tree *tree_top,
                                         u_int * match);
diff --git a/include/net-snmp/library/read_config.h b/include/net-snmp/library/read_config.h
index dd28411..08eca9b 100644
--- a/include/net-snmp/library/read_config.h
+++ b/include/net-snmp/library/read_config.h
@@ -43,50 +43,88 @@
     };
 
 
+    NETSNMP_IMPORT
     int             netsnmp_config(char *);     /* parse a simple line: token=values */
+    NETSNMP_IMPORT
     void            netsnmp_config_remember(char *);    /* process later, during snmp_init() */
     void            netsnmp_config_process_memories(void);      /* run all memories through parser */
-    void            read_config(const char *, struct config_line *, int);
-    void            read_config_files(int);
+    int             read_config(const char *, struct config_line *, int);
+    int             read_config_files(int);
+    NETSNMP_IMPORT
     void            free_config(void);
 #if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2&& __GNUC_MINOR__ < 8)
+    NETSNMP_IMPORT
     void            netsnmp_config_error(const char *, ...);
     void            netsnmp_config_warn(const char *, ...);
 #else
+    NETSNMP_IMPORT
     void            netsnmp_config_error(const char *, ...)
 	__attribute__((__format__(__printf__, 1, 2)));
     void            netsnmp_config_warn(const char *, ...)
 	__attribute__((__format__(__printf__, 1, 2)));
 #endif
 
+    NETSNMP_IMPORT
     char           *skip_white(char *);
+    NETSNMP_IMPORT
+    const char     *skip_white_const(const char *);
+    NETSNMP_IMPORT
     char           *skip_not_white(char *);
+    NETSNMP_IMPORT
+    const char     *skip_not_white_const(const char *);
+    NETSNMP_IMPORT
     char           *skip_token(char *);
+    NETSNMP_IMPORT
+    const char     *skip_token_const(const char *);
+    NETSNMP_IMPORT
     char           *copy_nword(char *, char *, int);
+    NETSNMP_IMPORT
+    const char     *copy_nword_const(const char *, char *, int);
+    NETSNMP_IMPORT
     char           *copy_word(char *, char *);  /* do not use */
-    void            read_config_with_type(const char *, const char *);
+    NETSNMP_IMPORT
+    int             read_config_with_type(const char *, const char *);
+    NETSNMP_IMPORT
     char           *read_config_save_octet_string(char *saveto,
                                                   const u_char * str,
                                                   size_t len);
-    char           *read_config_read_octet_string(char *readfrom,
+    NETSNMP_IMPORT
+    char           *read_config_read_octet_string(const char *readfrom,
                                                   u_char ** str,
                                                   size_t * len);
+    NETSNMP_IMPORT
+    const char     *read_config_read_octet_string_const(const char *readfrom,
+                                                        u_char ** str,
+                                                        size_t * len);
+    NETSNMP_IMPORT
     char           *read_config_read_objid(char *readfrom, oid ** objid,
                                            size_t * len);
+    const char     *read_config_read_objid_const(const char *readfrom,
+                                                 oid ** objid,
+                                                 size_t * len);
+    NETSNMP_IMPORT
     char           *read_config_save_objid(char *saveto, oid * objid,
                                            size_t len);
+    NETSNMP_IMPORT
     char           *read_config_read_data(int type, char *readfrom,
                                           void *dataptr, size_t * len);
+    NETSNMP_IMPORT
     char           *read_config_read_memory(int type, char *readfrom,
                                             char *dataptr, size_t * len);
+    NETSNMP_IMPORT
     char           *read_config_store_data(int type, char *storeto,
                                            void *dataptr, size_t * len);
     char           *read_config_store_data_prefix(char prefix, int type,
                                                   char *storeto,
                                                   void *dataptr, size_t len);
+    int  read_config_files_of_type(int when, struct config_files *ctmp);
+    NETSNMP_IMPORT
     void            read_config_store(const char *type, const char *line);
+    NETSNMP_IMPORT
     void            read_app_config_store(const char *line);
+    NETSNMP_IMPORT
     void            snmp_save_persistent(const char *type);
+    NETSNMP_IMPORT
     void            snmp_clean_persistent(const char *type);
     struct config_line *read_config_get_handlers(const char *type);
 
@@ -104,13 +142,17 @@
                                                    **mem);
 
     void            set_configuration_directory(const char *dir);
+    NETSNMP_IMPORT
     const char     *get_configuration_directory(void);
     void            set_persistent_directory(const char *dir);
     const char     *get_persistent_directory(void);
     void            set_temp_file_pattern(const char *pattern);
+    NETSNMP_IMPORT
     const char     *get_temp_file_pattern(void);
+    NETSNMP_IMPORT
     void            handle_long_opt(const char *myoptarg);
 
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/scapi.h b/include/net-snmp/library/scapi.h
index d927044..f4b63f5 100644
--- a/include/net-snmp/library/scapi.h
+++ b/include/net-snmp/library/scapi.h
@@ -35,6 +35,7 @@
     int             sc_get_proper_priv_length(const oid * privtype,
                                               u_int privtype_len);
 
+    NETSNMP_IMPORT
     int             sc_init(void);
     int             sc_shutdown(int majorID, int minorID, void *serverarg,
                                 void *clientarg);
@@ -43,20 +44,20 @@
 
     int             sc_generate_keyed_hash(const oid * authtype,
                                            size_t authtypelen,
-                                           u_char * key, u_int keylen,
-                                           u_char * message, u_int msglen,
+                                           const u_char * key, u_int keylen,
+                                           const u_char * message, u_int msglen,
                                            u_char * MAC, size_t * maclen);
 
     int             sc_check_keyed_hash(const oid * authtype,
-                                        size_t authtypelen, u_char * key,
-                                        u_int keylen, u_char * message,
-                                        u_int msglen, u_char * MAC,
+                                        size_t authtypelen, const u_char * key,
+                                        u_int keylen, const u_char * message,
+                                        u_int msglen, const u_char * MAC,
                                         u_int maclen);
 
     int             sc_encrypt(const oid * privtype, size_t privtypelen,
                                u_char * key, u_int keylen,
                                u_char * iv, u_int ivlen,
-                               u_char * plaintext, u_int ptlen,
+                               const u_char * plaintext, u_int ptlen,
                                u_char * ciphertext, size_t * ctlen);
 
     int             sc_decrypt(const oid * privtype, size_t privtypelen,
@@ -66,7 +67,7 @@
                                u_char * plaintext, size_t * ptlen);
 
     int             sc_hash(const oid * hashtype, size_t hashtypelen,
-                            u_char * buf, size_t buf_len,
+                            const u_char * buf, size_t buf_len,
                             u_char * MAC, size_t * MAC_len);
 
     int             sc_get_transform_type(oid * hashtype,
diff --git a/include/net-snmp/library/snmp-tc.h b/include/net-snmp/library/snmp-tc.h
index d957bbe..a355dd0 100644
--- a/include/net-snmp/library/snmp-tc.h
+++ b/include/net-snmp/library/snmp-tc.h
@@ -18,6 +18,7 @@
                                           u_char utc_offset_hours,
                                           u_char utc_offset_minutes);
 
+    NETSNMP_IMPORT
     u_char         *date_n_time(const time_t *, size_t *);
     time_t          ctime_to_timet(const char *);
 
@@ -52,7 +53,11 @@
 #define ST_PERMANENT	4
 #define ST_READONLY	5
 
+    NETSNMP_IMPORT
     char            check_rowstatus_transition(int old_val, int new_val);
+    NETSNMP_IMPORT
+    char            check_rowstatus_with_storagetype_transition(int old_val, int new_val, int old_storage);
+    NETSNMP_IMPORT
     char            check_storage_transition(int old_val, int new_val);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmp.h b/include/net-snmp/library/snmp.h
index 3bb55bf..5daf166 100644
--- a/include/net-snmp/library/snmp.h
+++ b/include/net-snmp/library/snmp.h
@@ -277,6 +277,7 @@
 #define SNMP_SEC_MODEL_SNMPv1		1
 #define SNMP_SEC_MODEL_SNMPv2c		2
 #define SNMP_SEC_MODEL_USM		3
+#define SNMP_SEC_MODEL_TSM              4
 #define SNMP_SEC_MODEL_SNMPv2p		256
 
 #define SNMP_SEC_LEVEL_NOAUTH		1
@@ -319,11 +320,15 @@
 #define SNMPADMINLENGTH 255
 
 
+    NETSNMP_IMPORT
     char           *uptime_string(u_long, char *);
     char           *uptime_string_n(u_long, char *, size_t);
-    void            xdump(const u_char *, size_t, const char *);
+    NETSNMP_IMPORT
+    void            xdump(const void *, size_t, const char *);
+    NETSNMP_IMPORT
     u_char         *snmp_parse_var_op(u_char *, oid *, size_t *, u_char *,
                                       size_t *, u_char **, size_t *);
+    NETSNMP_IMPORT
     u_char         *snmp_build_var_op(u_char *, oid *, size_t *, u_char,
                                       size_t, u_char *, size_t *);
 
diff --git a/include/net-snmp/library/snmpAAL5PVCDomain.h b/include/net-snmp/library/snmpAAL5PVCDomain.h
index 88516cb..325109a 100644
--- a/include/net-snmp/library/snmpAAL5PVCDomain.h
+++ b/include/net-snmp/library/snmpAAL5PVCDomain.h
@@ -11,6 +11,10 @@
 #include <sys/socket.h>
 #endif
 
+#ifndef linux
+    config_error(AAL5 PVC support unavailable for this platform -Linux only-);
+#endif
+
 #include <atm.h>
 
 #include <net-snmp/library/snmp_transport.h>
diff --git a/include/net-snmp/library/snmpCallbackDomain.h b/include/net-snmp/library/snmpCallbackDomain.h
index 4a4e1a8..e1be70b 100644
--- a/include/net-snmp/library/snmpCallbackDomain.h
+++ b/include/net-snmp/library/snmpCallbackDomain.h
@@ -11,6 +11,7 @@
 
 #ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
 
+#include <net-snmp/types.h>
 #include <net-snmp/library/snmp_transport.h>
 
 typedef struct netsnmp_callback_pass_s {
@@ -38,6 +39,7 @@
 int             netsnmp_callback_check_packet(u_char * pkt, size_t len);
 netsnmp_pdu    *netsnmp_callback_create_pdu(netsnmp_transport *transport,
                                             void *opaque, size_t olength);
+NETSNMP_IMPORT
 netsnmp_session *netsnmp_callback_open(int attach_to,
                                        int (*return_func) (int op,
                                                            netsnmp_session
@@ -55,6 +57,7 @@
                                                            *,
                                                            netsnmp_pdu *,
                                                            int));
+NETSNMP_IMPORT
 void             netsnmp_clear_callback_list(void);
 
 #else
diff --git a/include/net-snmp/library/snmpDTLSUDPDomain.h b/include/net-snmp/library/snmpDTLSUDPDomain.h
index 192dd17..2135da3 100644
--- a/include/net-snmp/library/snmpDTLSUDPDomain.h
+++ b/include/net-snmp/library/snmpDTLSUDPDomain.h
@@ -1,34 +1,26 @@
 #ifndef _SNMPDTLSUDPDOMAIN_H
 #define _SNMPDTLSUDPDOMAIN_H
 
-#ifdef __cplusplus
-extern          "C" {
-#endif
-
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
-
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#define TRANSPORT_DOMAIN_DTLS_UDP_IP	1,3,6,1,4,1,8072,3,3,8
-NETSNMP_IMPORT oid netsnmpDTLSUDPDomain[];
+config_require(UDP)
+config_require(TLSBase)
 
-netsnmp_transport *netsnmp_dtlsudp_transport(struct sockaddr_in *addr, int local);
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_transport.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
 
-/*
- * Convert a "traditional" peername into a sockaddr_in structure which is
- * written to *addr.  Returns 1 if the conversion was successful, or 0 if it
- * failed.  
- */
+#define TRANSPORT_DOMAIN_DTLS_UDP_IP	1,3,6,1,6,1,9
+NETSNMP_IMPORT oid netsnmpDTLSUDPDomain[7];
+NETSNMP_IMPORT size_t netsnmpDTLSUDPDomain_len;
 
-int             netsnmp_sockaddr_in(struct sockaddr_in *addr,
-                                    const char *peername, int remote_port);
+netsnmp_transport *netsnmp_dtlsudp_transport(struct sockaddr_in *addr,
+                                             int local);
 
 
 /*
@@ -37,18 +29,6 @@
 
 void            netsnmp_dtlsudp_agent_config_tokens_register(void);
 
-void            netsnmp_dtlsudp_parse_security(const char *token, char *param);
-
-int             netsnmp_dtlsudp_getSecName(void *opaque, int olength,
-                                       const char *community,
-                                       size_t community_len,
-                                       char **secname,
-                                       char **contextName);
-
-int             netsnmp_sock_buffer_set(int s, int optname, int local,
-                                        int size);
-
-
 /*
  * "Constructor" for transport domain object.  
  */
diff --git a/include/net-snmp/library/snmpIPXDomain.h b/include/net-snmp/library/snmpIPXDomain.h
index 304b360..11c2beb 100644
--- a/include/net-snmp/library/snmpIPXDomain.h
+++ b/include/net-snmp/library/snmpIPXDomain.h
@@ -11,6 +11,9 @@
 #include <netipx/ipx.h>
 #endif
 
+#ifndef linux
+    config_error(IPX support unavailable for this platform -Linux only-);
+#endif
 
 netsnmp_transport *netsnmp_ipx_transport(struct sockaddr_ipx *addr, int local);
 
diff --git a/include/net-snmp/library/snmpIPv4BaseDomain.h b/include/net-snmp/library/snmpIPv4BaseDomain.h
new file mode 100644
index 0000000..7871dc4
--- /dev/null
+++ b/include/net-snmp/library/snmpIPv4BaseDomain.h
@@ -0,0 +1,37 @@
+/* IPV4 base transport support functions
+ */
+#ifndef SNMPIPV4BASE_H
+#define SNMPIPV4BASE_H
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * Prototypes
+ */
+
+    char *netsnmp_ipv4_fmtaddr(const char *prefix, netsnmp_transport *t,
+                               void *data, int len);
+
+/*
+ * Convert a "traditional" peername into a sockaddr_in structure which is
+ * written to *addr_  Returns 1 if the conversion was successful, or 0 if it
+ * failed
+ */
+
+    int netsnmp_sockaddr_in(struct sockaddr_in *addr, const char *peername,
+                            int remote_port);
+    int netsnmp_sockaddr_in2(struct sockaddr_in *addr, const char *inpeername,
+                             const char *default_target);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* SNMPIPV4BASE_H */
diff --git a/include/net-snmp/library/snmpIPv6BaseDomain.h b/include/net-snmp/library/snmpIPv6BaseDomain.h
new file mode 100644
index 0000000..545c8f0
--- /dev/null
+++ b/include/net-snmp/library/snmpIPv6BaseDomain.h
@@ -0,0 +1,34 @@
+/* IPV6 base transport support functions
+ */
+#ifndef SNMPIPV6BASE_H
+#define SNMPIPV6BASE_H
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * Prototypes
+ */
+
+    NETSNMP_IMPORT
+    char *netsnmp_ipv6_fmtaddr(const char *prefix, netsnmp_transport *t,
+                               void *data, int len);
+    NETSNMP_IMPORT
+    int netsnmp_sockaddr_in6_2(struct sockaddr_in6 *addr,
+                               const char *inpeername,
+                               const char *default_target);
+    int netsnmp_sockaddr_in6(struct sockaddr_in6 *addr,
+                             const char *inpeername, int remote_port);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* SNMPIPV6BASE_H */
+
diff --git a/include/net-snmp/library/snmpSSHDomain.h b/include/net-snmp/library/snmpSSHDomain.h
index 6610818..2bd44e9 100644
--- a/include/net-snmp/library/snmpSSHDomain.h
+++ b/include/net-snmp/library/snmpSSHDomain.h
@@ -1,34 +1,34 @@
 #ifndef _SNMPSSHDOMAIN_H
 #define _SNMPSSHDOMAIN_H
 
+config_require(IPv4Base)
+config_require(SocketBase)
+
 #ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
 
+#include <net-snmp/library/snmp_transport.h>
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
-
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
 /*
  * The SNMP over SSH over IPv4 transport domain is identified by
  * transportDomainSshIpv4 as defined in RFC 3419.
  */
 
 #define TRANSPORT_DOMAIN_SSH_IP		1,3,6,1,2,1,100,1,100
-NETSNMP_IMPORT oid netsnmp_snmpSSHDomain[];
+NETSNMP_IMPORT const oid netsnmp_snmpSSHDomain[];
+enum { netsnmp_snmpSSHDomain_len = 9 };
 
 netsnmp_transport *netsnmp_ssh_transport(struct sockaddr_in *addr, int local);
 
 /*
- * "Constructor" for transport domain object.  
+ * "Constructor" for transport domain object.
  */
 
 void            netsnmp_ssh_ctor(void);
diff --git a/include/net-snmp/library/snmpSTDDomain.h b/include/net-snmp/library/snmpSTDDomain.h
index 77be22b..3e9a59f 100644
--- a/include/net-snmp/library/snmpSTDDomain.h
+++ b/include/net-snmp/library/snmpSTDDomain.h
@@ -3,13 +3,12 @@
 
 #ifdef NETSNMP_TRANSPORT_STD_DOMAIN
 
+#include <net-snmp/library/snmp_transport.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
-
 /*
  * The SNMP over STD over IPv4 transport domain is identified by
  * transportDomainStdIpv4 as defined in RFC 3419.
diff --git a/include/net-snmp/library/snmpSocketBaseDomain.h b/include/net-snmp/library/snmpSocketBaseDomain.h
new file mode 100644
index 0000000..71d86c8
--- /dev/null
+++ b/include/net-snmp/library/snmpSocketBaseDomain.h
@@ -0,0 +1,25 @@
+#ifndef SNMPSOCKETBASEDOMAIN_H
+#define SNMPSOCKETBASEDOMAIN_H
+
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * Prototypes
+ */
+    int netsnmp_socketbase_close(netsnmp_transport *t);
+    int netsnmp_sock_buffer_set(int s, int optname, int local, int size);
+    int netsnmp_set_non_blocking_mode(int sock, int non_blocking_mode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SNMPSOCKETBASEDOMAIN_H */
diff --git a/include/net-snmp/library/snmpTCPBaseDomain.h b/include/net-snmp/library/snmpTCPBaseDomain.h
new file mode 100644
index 0000000..9c81a90
--- /dev/null
+++ b/include/net-snmp/library/snmpTCPBaseDomain.h
@@ -0,0 +1,22 @@
+#ifndef SNMPTCPBASEDOMAIN_H
+#define SNMPTCPBASEDOMAIN_H
+
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * Prototypes
+ */
+    int netsnmp_tcpbase_recv(netsnmp_transport *t, void *buf, int size,
+                             void **opaque, int *olength);
+    int netsnmp_tcpbase_send(netsnmp_transport *t, void *buf, int size,
+                             void **opaque, int *olength);
+        
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SNMPTCPBASEDOMAIN_H */
diff --git a/include/net-snmp/library/snmpTCPDomain.h b/include/net-snmp/library/snmpTCPDomain.h
index f465b79..c45856b 100644
--- a/include/net-snmp/library/snmpTCPDomain.h
+++ b/include/net-snmp/library/snmpTCPDomain.h
@@ -1,22 +1,22 @@
 #ifndef _SNMPTCPDOMAIN_H
 #define _SNMPTCPDOMAIN_H
 
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+config_require(IPv4Base)
+config_require(SocketBase)
+config_require(TCPBase)
+
 #ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
 
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
-
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
 /*
  * The SNMP over TCP over IPv4 transport domain is identified by
  * transportDomainTcpIpv4 as defined in RFC 3419.
diff --git a/include/net-snmp/library/snmpTCPIPv6Domain.h b/include/net-snmp/library/snmpTCPIPv6Domain.h
index b9de9eb..3bca22b 100644
--- a/include/net-snmp/library/snmpTCPIPv6Domain.h
+++ b/include/net-snmp/library/snmpTCPIPv6Domain.h
@@ -1,13 +1,20 @@
 #ifndef _SNMPTCPIPV6DOMAIN_H
 #define _SNMPTCPIPV6DOMAIN_H
 
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+config_require(IPv6Base)
+config_require(SocketBase)
+config_require(TCPBase)
+
+#include <net-snmp/library/snmpIPv6BaseDomain.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
-
 /*
  * The SNMP over TCP over IPv6 transport domain is identified by
  * transportDomainTcpIpv4 as defined in RFC 3419.
@@ -23,7 +30,7 @@
  * "Constructor" for transport domain object.  
  */
 
-void            netsnmp_tcp6_ctor(void);
+NETSNMP_IMPORT void     netsnmp_tcpipv6_ctor(void);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmpTLSBaseDomain.h b/include/net-snmp/library/snmpTLSBaseDomain.h
new file mode 100644
index 0000000..ec77a73
--- /dev/null
+++ b/include/net-snmp/library/snmpTLSBaseDomain.h
@@ -0,0 +1,84 @@
+#ifndef _SNMPTLSBASEDOMAIN_H
+#define _SNMPTLSBASEDOMAIN_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/library/container.h>
+
+/* OpenSSL Includes */
+#include "openssl/bio.h"
+#include "openssl/ssl.h"
+#include "openssl/err.h"
+
+/*
+ * Prototypes
+ */
+
+    void netsnmp_tlsbase_ctor(void);
+    void netsnmp_init_tlsbase(void);
+    const char * _x509_get_error(int x509failvalue, const char *location);
+    void _openssl_log_error(int rc, SSL *con, const char *location);
+
+    /* will likely go away */
+    SSL_CTX *get_client_ctx(void);
+    SSL_CTX *get_server_ctx(void);
+
+#define NETSNMP_TLSBASE_IS_CLIENT     0x01
+#define NETSNMP_TLSBASE_CERT_FP_VERIFIED 0x02
+
+    /*
+     * _Internal_ structures
+     */
+    typedef struct _netsnmpTLSBaseData_s {
+       int                        flags;
+       SSL_CTX                   *ssl_context;
+       SSL                       *ssl;
+       BIO                       *sslbio;
+       BIO                       *accept_bio;
+       BIO                       *accepted_bio;
+       char                      *securityName;
+       char                      *addr_string;
+       struct sockaddr_in         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
+    typedef struct _netsnmp_verify_info_s {
+       int flags;
+    } _netsnmp_verify_info;
+
+    SSL_CTX *sslctx_client_setup(const SSL_METHOD *,
+                                 _netsnmpTLSBaseData *tlsbase);
+    SSL_CTX *sslctx_server_setup(const SSL_METHOD *);
+
+    int netsnmp_tlsbase_verify_server_cert(SSL *ssl,
+                                           _netsnmpTLSBaseData *tlsdata);
+    int netsnmp_tlsbase_verify_client_cert(SSL *ssl,
+                                           _netsnmpTLSBaseData *tlsdata);
+    int netsnmp_tlsbase_extract_security_name(SSL *ssl, _netsnmpTLSBaseData *tlsdata);
+    _netsnmpTLSBaseData *netsnmp_tlsbase_allocate_tlsdata(netsnmp_transport *t,
+                                                          int isserver);
+    int netsnmp_tlsbase_wrapup_recv(netsnmp_tmStateReference *tmStateRef,
+                                    _netsnmpTLSBaseData *tlsdata,
+                                    void **opaque, int *olength);
+    int netsnmp_tlsbase_config(struct netsnmp_transport_s *t,
+                               const char *token, const char *value);
+
+    int netsnmp_tlsbase_session_init(struct netsnmp_transport_s *,
+                                     struct snmp_session *sess);
+    int tls_get_verify_info_index(void);
+
+    void netsnmp_tlsbase_free_tlsdata(_netsnmpTLSBaseData *tlsbase);
+#ifdef __cplusplus
+}
+#endif
+#endif/*_SNMPTLSBASEDOMAIN_H*/
diff --git a/include/net-snmp/library/snmpTLSTCPDomain.h b/include/net-snmp/library/snmpTLSTCPDomain.h
new file mode 100644
index 0000000..4f27662
--- /dev/null
+++ b/include/net-snmp/library/snmpTLSTCPDomain.h
@@ -0,0 +1,39 @@
+#ifndef _SNMPTLSTCPDOMAIN_H
+#define _SNMPTLSTCPDOMAIN_H
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+config_require(IPv4Base)
+config_require(SocketBase)
+config_require(TLSBase)
+
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#define TRANSPORT_DOMAIN_TLS_TCP_IP	1,3,6,1,6,1,8
+NETSNMP_IMPORT oid netsnmpTLSTCPDomain[7];
+NETSNMP_IMPORT size_t netsnmpTLSTCPDomain_len;
+
+netsnmp_transport *netsnmp_tlstcp_transport(const char *addr_string, int local);
+
+/*
+ * Register any configuration tokens specific to the agent.  
+ */
+
+void            netsnmp_tlstcp_agent_config_tokens_register(void);
+
+/*
+ * "Constructor" for transport domain object.  
+ */
+
+void            netsnmp_tlstcp_ctor(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif/*_SNMPTLSTCPDOMAIN_H*/
diff --git a/include/net-snmp/library/snmpUDPBaseDomain.h b/include/net-snmp/library/snmpUDPBaseDomain.h
new file mode 100644
index 0000000..b9d2c34
--- /dev/null
+++ b/include/net-snmp/library/snmpUDPBaseDomain.h
@@ -0,0 +1,40 @@
+#ifndef SNMPUDPBASEDOMAIN_H
+#define SNMPUDPBASEDOMAIN_H
+
+config_require(SocketBase)
+
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * "Constructor" for transport domain object.  
+ */
+
+    void netsnmp_udp_base_ctor(void);
+
+/*
+ * Prototypes
+ */
+    void _netsnmp_udp_sockopt_set(int fd, int local);
+    int netsnmp_udpbase_recv(netsnmp_transport *t, void *buf, int size,
+                             void **opaque, int *olength);
+    int netsnmp_udpbase_send(netsnmp_transport *t, void *buf, int size,
+                             void **opaque, int *olength);
+
+#if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
+    int netsnmp_udpbase_recvfrom(int s, void *buf, int len,
+                                 struct sockaddr *from, socklen_t *fromlen,
+                                 struct sockaddr *dstip, socklen_t *dstlen,
+                                 int *if_index);
+    int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index,
+                               struct sockaddr *remote, void *data, int len);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SNMPUDPBASEDOMAIN_H */
diff --git a/include/net-snmp/library/snmpUDPDomain.h b/include/net-snmp/library/snmpUDPDomain.h
index 4ed7558..3a09dfd 100644
--- a/include/net-snmp/library/snmpUDPDomain.h
+++ b/include/net-snmp/library/snmpUDPDomain.h
@@ -15,36 +15,28 @@
 #include <netinet/in.h>
 #endif
 
+config_require(UDPIPv4Base)
+#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
+
 netsnmp_transport *netsnmp_udp_transport(struct sockaddr_in *addr, int local);
 
 
 /*
- * Convert a "traditional" peername into a sockaddr_in structure which is
- * written to *addr.  Returns 1 if the conversion was successful, or 0 if it
- * failed.  
- */
-
-int             netsnmp_sockaddr_in(struct sockaddr_in *addr,
-                                    const char *peername, int remote_port);
-
-
-/*
  * Register any configuration tokens specific to the agent.  
  */
 
+NETSNMP_IMPORT
 void            netsnmp_udp_agent_config_tokens_register(void);
 
+NETSNMP_IMPORT
 void            netsnmp_udp_parse_security(const char *token, char *param);
 
+NETSNMP_IMPORT
 int             netsnmp_udp_getSecName(void *opaque, int olength,
                                        const char *community,
                                        size_t community_len,
-                                       char **secname,
-                                       char **contextName);
-
-int             netsnmp_sock_buffer_set(int s, int optname, int local,
-                                        int size);
-
+                                       const char **secname,
+                                       const char **contextName);
 
 /*
  * "Constructor" for transport domain object.  
@@ -56,12 +48,12 @@
  * protected-ish functions used by other core-code
  */
 char *netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int len);
-#if defined(linux) && defined(IP_PKTINFO) || \
-    defined(IP_RECVDSTADDR) && !defined(_MSC_VER)
+#if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
 int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from,
-                         socklen_t *fromlen, struct in_addr *dstip);
-int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
-                       void *data, int len);
+                         socklen_t *fromlen, struct sockaddr *dstip,
+                         socklen_t *dstlen, int *if_index);
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, int if_index,
+					   struct sockaddr *remote, void *data, int len);
 #endif
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmpUDPIPv4BaseDomain.h b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h
new file mode 100644
index 0000000..6f7f2c2
--- /dev/null
+++ b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h
@@ -0,0 +1,43 @@
+/* UDPIPV4 base transport support functions
+ */
+#ifndef SNMPUDPIPV4BASE_H
+#define SNMPUDPIPV4BASE_H
+
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+config_require(UDPBase)
+config_require(IPv4Base)
+
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpUDPBaseDomain.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+/*
+ * Prototypes
+ */
+
+    netsnmp_transport *netsnmp_udpipv4base_transport(struct sockaddr_in *addr,
+                                                     int local);
+
+#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);
+    int netsnmp_udpipv4_sendto(int fd, struct in_addr *srcip, int if_index,
+                               struct sockaddr *remote, void *data, int len);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* SNMPUDPIPV4BASE_H */
diff --git a/include/net-snmp/library/snmpUDPIPv6Domain.h b/include/net-snmp/library/snmpUDPIPv6Domain.h
index 6824a5c..16fd819 100644
--- a/include/net-snmp/library/snmpUDPIPv6Domain.h
+++ b/include/net-snmp/library/snmpUDPIPv6Domain.h
@@ -1,12 +1,18 @@
 #ifndef _SNMPUDPIPV6DOMAIN_H
 #define _SNMPUDPIPV6DOMAIN_H
 
+#include <net-snmp/types.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
+
+config_require(IPv6Base)
+config_require(UDPBase)
+
+#include <net-snmp/library/snmpIPv6BaseDomain.h>
 
 /*
  * The SNMP over UDP over IPv6 transport domain is identified by
@@ -23,13 +29,14 @@
 /*
  * Convert a "traditional" peername into a sockaddr_in6 structure which is
  * written to *addr.  Returns 1 if the conversion was successful, or 0 if it
- * failed.  
+ * failed.
  */
 
 int             netsnmp_sockaddr_in6(struct sockaddr_in6 *addr,
                                      const char *peername,
                                      int remote_port);
 
+NETSNMP_IMPORT
 void            netsnmp_udp6_agent_config_tokens_register(void);
 NETSNMP_IMPORT
 void            netsnmp_udp6_parse_security(const char *token,
@@ -38,14 +45,15 @@
 NETSNMP_IMPORT
 int             netsnmp_udp6_getSecName(void *opaque, int olength,
                                         const char *community,
-                                        int community_len, char **secname,
-                                        char **contextName);
+                                        int community_len,
+                                        const char **secname,
+                                        const char **contextName);
 
 /*
- * "Constructor" for transport domain object.  
+ * "Constructor" for transport domain object.
  */
 
-void            netsnmp_udp6_ctor(void);
+NETSNMP_IMPORT void netsnmp_udpipv6_ctor(void);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmpUnixDomain.h b/include/net-snmp/library/snmpUnixDomain.h
index 5d9e60c..91e7f63 100644
--- a/include/net-snmp/library/snmpUnixDomain.h
+++ b/include/net-snmp/library/snmpUnixDomain.h
@@ -3,8 +3,8 @@
 
 #ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
 
-#ifdef __cplusplus
-extern          "C" {
+#if defined(cygwin) || defined(mingw32) || defined(mingw32msvc)
+    config_error(Unix domain protocol support unavailable for this platform)
 #endif
 
 #if HAVE_SYS_SOCKET_H
@@ -15,7 +15,12 @@
 #endif
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/asn1.h>
+
+config_require(SocketBase)
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
 
 /*
  * The SNMP over local socket transport domain is identified by
@@ -31,8 +36,8 @@
 void netsnmp_unix_parse_security(const char *token, char *param);
 int netsnmp_unix_getSecName(void *opaque, int olength,
                             const char *community,
-                            size_t community_len, char **secName,
-                            char **contextName);
+                            size_t community_len, const char **secName,
+                            const char **contextName);
 
 
 /*
diff --git a/include/net-snmp/library/snmp_alarm.h b/include/net-snmp/library/snmp_alarm.h
index f97a712..1167e2c 100644
--- a/include/net-snmp/library/snmp_alarm.h
+++ b/include/net-snmp/library/snmp_alarm.h
@@ -12,6 +12,7 @@
      * alarm flags 
      */
 #define SA_REPEAT 0x01          /* keep repeating every X seconds */
+#define SA_FIRED 0x10          /* Being processed in run_alarms */
 
     struct snmp_alarm {
         struct timeval  t;
@@ -27,8 +28,10 @@
     /*
      * the ones you should need 
      */
+    NETSNMP_IMPORT
     void            snmp_alarm_unregister(unsigned int clientreg);
     void	    snmp_alarm_unregister_all(void);
+    NETSNMP_IMPORT
     unsigned int    snmp_alarm_register(unsigned int when,
                                         unsigned int flags,
                                         SNMPAlarmCallback * thecallback,
@@ -45,17 +48,20 @@
     /*
      * the ones you shouldn't 
      */
-    void            init_snmp_alarm(void);
+    NETSNMP_IMPORT void init_snmp_alarm(void);
     int             init_alarm_post_config(int majorid, int minorid,
                                            void *serverarg,
                                            void *clientarg);
     void            sa_update_entry(struct snmp_alarm *alrm);
     struct snmp_alarm *sa_find_next(void);
-    void            run_alarms(void);
+    NETSNMP_IMPORT void run_alarms(void);
     RETSIGTYPE      alarm_handler(int a);
     void            set_an_alarm(void);
+    int             netsnmp_get_next_alarm_time(struct timeval *alarm_tm,
+                                                const struct timeval *now);
     int             get_next_alarm_delay_time(struct timeval *delta);
 
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmp_api.h b/include/net-snmp/library/snmp_api.h
index d0bc907..def02b9 100644
--- a/include/net-snmp/library/snmp_api.h
+++ b/include/net-snmp/library/snmp_api.h
@@ -26,6 +26,7 @@
 
 #include <net-snmp/types.h>
 #include <net-snmp/varbind_api.h>
+#include <net-snmp/output_api.h>
 #include <net-snmp/pdu_api.h>
 #include <net-snmp/session_api.h>
 
@@ -114,8 +115,6 @@
 #endif
 #define SNMP_DEFAULT_PRIV_PROTOLEN  USM_LENGTH_OID_TRANSFORM
 
-    NETSNMP_IMPORT const char *snmp_api_errstring(int);
-    NETSNMP_IMPORT void     snmp_perror(const char *);
     NETSNMP_IMPORT void     snmp_set_detail(const char *);
 
 #define SNMP_MAX_MSG_SIZE          1472 /* ethernet MTU minus IP/UDP header */
@@ -257,8 +256,11 @@
 #define SNMPERR_PROTOCOL		(-64)
 #define SNMPERR_OID_NONINCREASING       (-65)
 #define SNMPERR_JUST_A_CONTEXT_PROBE    (-66)
+#define SNMPERR_TRANSPORT_NO_CONFIG     (-67)
+#define SNMPERR_TRANSPORT_CONFIG_ERROR  (-68)
+#define SNMPERR_TLS_NO_CERTIFICATE      (-69)
 
-#define SNMPERR_MAX			(-66)
+#define SNMPERR_MAX			(-69)
 
 
     /*
@@ -327,20 +329,27 @@
 
     long            snmp_get_next_msgid(void);
     long            snmp_get_next_reqid(void);
+    NETSNMP_IMPORT
     long            snmp_get_next_sessid(void);
+    NETSNMP_IMPORT
     long            snmp_get_next_transid(void);
 
+    NETSNMP_IMPORT
     int             snmp_oid_compare(const oid *, size_t, const oid *,
                                      size_t);
     int             snmp_oid_ncompare(const oid *, size_t, const oid *,
                                       size_t, size_t);
+    NETSNMP_IMPORT
     int             snmp_oidtree_compare(const oid *, size_t, const oid *,
                                          size_t);
+    NETSNMP_IMPORT
     int             snmp_oidsubtree_compare(const oid *, size_t, const oid *,
                                          size_t);
+    NETSNMP_IMPORT
     int             netsnmp_oid_compare_ll(const oid * in_name1,
                                            size_t len1, const oid * in_name2,
                                            size_t len2, size_t *offpt);
+    NETSNMP_IMPORT
     int             netsnmp_oid_equals(const oid *, size_t, const oid *,
                                        size_t);
     int             netsnmp_oid_tree_equals(const oid *, size_t, const oid *,
@@ -348,8 +357,10 @@
     NETSNMP_IMPORT
     int             netsnmp_oid_is_subtree(const oid *, size_t, const oid *,
                                            size_t);
+    NETSNMP_IMPORT
     int             netsnmp_oid_find_prefix(const oid * in_name1, size_t len1,
                                             const oid * in_name2, size_t len2);
+    NETSNMP_IMPORT
     void            init_snmp(const char *);
     u_char         *snmp_pdu_build(netsnmp_pdu *, u_char *, size_t *);
 #ifdef NETSNMP_USE_REVERSE_ASNENCODING
@@ -373,13 +384,24 @@
                                    size_t * length);
     u_char         *snmpv3_scopedPDU_parse(netsnmp_pdu *pdu, u_char * cp,
                                            size_t * length);
+    NETSNMP_IMPORT
+    void            snmp_store_needed(const char *type);
+    NETSNMP_IMPORT
+    void            snmp_store_if_needed(void);
+    NETSNMP_IMPORT
     void            snmp_store(const char *type);
+    NETSNMP_IMPORT
     void            snmp_shutdown(const char *type);
+    NETSNMP_IMPORT
     int             snmp_add_var(netsnmp_pdu *, const oid *, size_t, char,
                                  const char *);
+    NETSNMP_IMPORT
     oid            *snmp_duplicate_objid(const oid * objToCopy, size_t);
+    NETSNMP_IMPORT
     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);
     int             create_user_from_session(netsnmp_session * session);
@@ -410,6 +432,7 @@
      * Extended open; fpre_parse has changed.  
      */
 
+    NETSNMP_IMPORT
     netsnmp_session *snmp_open_ex(netsnmp_session *,
                                   int (*fpre_parse) (netsnmp_session *,
                                                      struct
@@ -433,17 +456,16 @@
      * See snmp_debug.h and snmp_debug.c instead.
      */
 
+    NETSNMP_IMPORT
     void            snmp_set_do_debugging(int);
+    NETSNMP_IMPORT
     int             snmp_get_do_debugging(void);
 
 
-
-    void            snmp_sess_error(void *, int *, int *, char **);
+    NETSNMP_IMPORT
     void            netsnmp_sess_log_error(int priority,
                                            const char *prog_string,
                                            netsnmp_session * ss);
-    void            snmp_sess_perror(const char *prog_string,
-                                     netsnmp_session * ss);
     const char *    snmp_pdu_type(int type);
 
     /*
@@ -451,10 +473,19 @@
      * pointer.  
      */
 
+    NETSNMP_IMPORT
     struct netsnmp_transport_s *snmp_sess_transport(void *);
     void            snmp_sess_transport_set(void *,
 					    struct netsnmp_transport_s *);
 
+    NETSNMP_IMPORT int
+    netsnmp_sess_config_transport(struct netsnmp_container_s *transport_configuration,
+                                  struct netsnmp_transport_s *transport);
+
+    NETSNMP_IMPORT int
+    netsnmp_sess_config_and_open_transport(netsnmp_session *in_session,
+                                           struct netsnmp_transport_s *transport);
+
     /*
      * EXTENDED SESSION API ------------------------------------------ 
      * 
@@ -503,6 +534,7 @@
                                   int (*fpost_parse) (netsnmp_session *,
                                                       netsnmp_pdu *, int));
 
+    NETSNMP_IMPORT
     netsnmp_session *snmp_add(netsnmp_session *,
                               struct netsnmp_transport_s *,
                               int (*fpre_parse) (netsnmp_session *,
@@ -510,6 +542,7 @@
                                                  *, void *, int),
                               int (*fpost_parse) (netsnmp_session *,
                                                   netsnmp_pdu *, int));
+    NETSNMP_IMPORT
     netsnmp_session *snmp_add_full(netsnmp_session * in_session,
                                    struct netsnmp_transport_s *transport,
                                    int (*fpre_parse) (netsnmp_session *,
@@ -619,7 +652,38 @@
 #define  STAT_TARGET_STATS_START             STAT_SNMPUNAVAILABLECONTEXTS
 #define  STAT_TARGET_STATS_END               STAT_SNMPUNKNOWNCONTEXTS
 
-#define  MAX_STATS                           43
+    /*
+     * TSM counters
+     */
+#define  STAT_TSM_SNMPTSMINVALIDCACHES             43
+#define  STAT_TSM_SNMPTSMINADEQUATESECURITYLEVELS  44
+#define  STAT_TSM_SNMPTSMUNKNOWNPREFIXES           45
+#define  STAT_TSM_SNMPTSMINVALIDPREFIXES           46
+#define  STAT_TSM_STATS_START                 STAT_TSM_SNMPTSMINVALIDCACHES
+#define  STAT_TSM_STATS_END                   STAT_TSM_SNMPTSMINVALIDPREFIXES
+
+    /*
+     * TLSTM counters
+     */
+#define  STAT_TLSTM_SNMPTLSTMSESSIONOPENS                      47
+#define  STAT_TLSTM_SNMPTLSTMSESSIONCLIENTCLOSES               48
+#define  STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS                 49
+#define  STAT_TLSTM_SNMPTLSTMSESSIONACCEPTS                    50
+#define  STAT_TLSTM_SNMPTLSTMSESSIONSERVERCLOSES               51
+#define  STAT_TLSTM_SNMPTLSTMSESSIONNOSESSIONS                 52
+#define  STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCLIENTCERTIFICATES  53
+#define  STAT_TLSTM_SNMPTLSTMSESSIONUNKNOWNSERVERCERTIFICATE   54
+#define  STAT_TLSTM_SNMPTLSTMSESSIONINVALIDSERVERCERTIFICATES  55
+#define  STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES              56
+
+#define  STAT_TLSTM_STATS_START                 STAT_TLSTM_SNMPTLSTMSESSIONOPENS
+#define  STAT_TLSTM_STATS_END          STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES
+
+    /* this previously was end+1; don't know why the +1 is needed;
+       XXX: check the code */
+#define  NETSNMP_STAT_MAX_STATS              (STAT_TLSTM_STATS_END+1)
+/** backwards compatability */
+#define MAX_STATS NETSNMP_STAT_MAX_STATS
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmp_assert.h b/include/net-snmp/library/snmp_assert.h
index 51cb754..8f52a69 100644
--- a/include/net-snmp/library/snmp_assert.h
+++ b/include/net-snmp/library/snmp_assert.h
@@ -23,43 +23,105 @@
 #  endif /* __STDC__ */
 #endif /* __STRING */
 
-#define netsnmp_static_assert(x) \
-    do { switch(0) { case (x): case 0: ; } } while(0)
-
-
 /*
  * always use assert if requested
  */
 #ifdef NETSNMP_USE_ASSERT
 /*   void netsnmp_assert( int );*/
 #   define netsnmp_assert(x)  assert( x )
+#   define netsnmp_assert_or_return(x, y)  assert( x )
+#   define netsnmp_assert_or_msgreturn(x, y, z)  assert( x )
 #else
 /*
  *  if asserts weren't requested, just log, unless NETSNMP_NO_DEBUGGING specified
  */
 #   ifndef NETSNMP_NO_DEBUGGING
 #      ifdef  NETSNMP_FUNCTION
-#         define netsnmp_assert(x)  do { \
-                 if ( x ) \
-                    ; \
-                 else \
-                    snmp_log(LOG_ERR,"netsnmp_assert %s failed %s:%d %s()\n", \
-                             __STRING(x),__FILE__,__LINE__, \
-                             NETSNMP_FUNCTION); \
-              }while(0)
+#          define NETSNMP_FUNC_FMT " %s()\n"
+#          define NETSNMP_FUNC_PARAM NETSNMP_FUNCTION
 #      else
-#         define netsnmp_assert(x)  do { \
-                 if( x )\
-                    ; \
-                 else \
-                    snmp_log(LOG_ERR,"netsnmp_assert %s failed %s:%d\n", \
-                             __STRING(x),__FILE__,__LINE__); \
-              }while(0)
+#          define NETSNMP_FUNC_FMT "%c"
+#          define NETSNMP_FUNC_PARAM '\n'
 #      endif
+#
+#      define netsnmp_assert(x)  do { \
+              if ( x ) \
+                 ; \
+              else \
+                 snmp_log(LOG_ERR, \
+                          "netsnmp_assert %s failed %s:%d" NETSNMP_FUNC_FMT, \
+                          __STRING(x),__FILE__,__LINE__, \
+                          NETSNMP_FUNC_PARAM); \
+           }while(0)
+#      define netsnmp_assert_or_return(x, y)  do {        \
+              if ( x ) \
+                 ; \
+              else { \
+                 snmp_log(LOG_ERR, \
+                          "netsnmp_assert %s failed %s:%d" NETSNMP_FUNC_FMT, \
+                          __STRING(x),__FILE__,__LINE__, \
+                          NETSNMP_FUNC_PARAM); \
+                 return y; \
+              } \
+           }while(0)
+#      define netsnmp_assert_or_msgreturn(x, y, z)  do {       \
+              if ( x ) \
+                 ; \
+              else { \
+                 snmp_log(LOG_ERR, \
+                          "netsnmp_assert %s failed %s:%d" NETSNMP_FUNC_FMT, \
+                          __STRING(x),__FILE__,__LINE__, \
+                          NETSNMP_FUNC_PARAM); \
+                 snmp_log(LOG_ERR, y); \
+                 return z; \
+              } \
+           }while(0)
 #   else /* NO DEBUGGING */
 #      define netsnmp_assert(x)
+#      define netsnmp_assert_or_return(x, y)  do {        \
+                 if ( x ) \
+                    ; \
+                 else { \
+                    return y; \
+                 } \
+              }while(0)
+#      define netsnmp_assert_or_msgreturn(x, y, z)  do {       \
+                 if ( x ) \
+                    ; \
+                 else { \
+                    return z; \
+                 } \
+              }while(0)
 #   endif /* NO DEBUGGING */
 #endif /* not NETSNMP_USE_ASSERT */
 
 
+#define netsnmp_static_assert(x) \
+    do { switch(0) { case (x): case 0: ; } } while(0)
+
+
+/*
+ *  EXPERIMENTAL macros. May be removed without warning in future
+ * releases. Use at your own risk
+ *
+ * The series of uppercase letters at or near the end of these macros give
+ * an indication of what they do. The letters used are:
+ *
+ *   L  : log a message
+ *   RN : return NULL
+ *   RE : return a specific hardcoded error appropriate for the condition
+ *   RV : return user specified value
+ *
+ */
+#define netsnmp_malloc_check_LRN(ptr)           \
+    netsnmp_assert_or_return( (ptr) != NULL, NULL)
+#define netsnmp_malloc_check_LRE(ptr)           \
+    netsnmp_assert_or_return( (ptr) != NULL, SNMPERR_MALLOC)
+#define netsnmp_malloc_check_LRV(ptr, val)                          \
+    netsnmp_assert_or_return( (ptr) != NULL, val)
+
+#define netsnmp_require_ptr_LRV( ptr, val ) \
+    netsnmp_assert_or_return( (ptr) != NULL, val)
+
+
 #endif /* SNMP_ASSERT_H */
diff --git a/include/net-snmp/library/snmp_client.h b/include/net-snmp/library/snmp_client.h
index 1e16ce6..c023253 100644
--- a/include/net-snmp/library/snmp_client.h
+++ b/include/net-snmp/library/snmp_client.h
@@ -29,6 +29,7 @@
 #include <net-snmp/types.h>
 #include <net-snmp/varbind_api.h>
 #include <net-snmp/pdu_api.h>
+#include <net-snmp/output_api.h>
 #include <net-snmp/session_api.h>
 
 #ifdef __cplusplus
@@ -53,41 +54,111 @@
         netsnmp_pdu    *pdu;
     };
 
+    NETSNMP_IMPORT
     void            snmp_replace_var_types(netsnmp_variable_list * vbl,
                                            u_char old_type,
                                            u_char new_type);
+    NETSNMP_IMPORT
     void            snmp_reset_var_buffers(netsnmp_variable_list * var);
     void            snmp_reset_var_types(netsnmp_variable_list * vbl,
                                          u_char new_type);
+    NETSNMP_IMPORT
     int             count_varbinds(netsnmp_variable_list * var_ptr);
+    NETSNMP_IMPORT
     int             count_varbinds_of_type(netsnmp_variable_list * var_ptr,
                                            u_char type);
     netsnmp_variable_list *find_varbind_of_type(netsnmp_variable_list *
                                                 var_ptr, u_char type);
+    NETSNMP_IMPORT
     netsnmp_variable_list *find_varbind_in_list(netsnmp_variable_list *vblist,
-                                                oid *name, size_t len);
+                                                const oid *name, size_t len);
 
     netsnmp_pdu    *snmp_split_pdu(netsnmp_pdu *, int skipCount,
                                    int copyCount);
 
     unsigned long   snmp_varbind_len(netsnmp_pdu *pdu);
+    NETSNMP_IMPORT
     int             snmp_clone_var(netsnmp_variable_list *,
                                    netsnmp_variable_list *);
-    const char     *snmp_errstring(int);
+    NETSNMP_IMPORT
     int             snmp_synch_response_cb(netsnmp_session *,
                                            netsnmp_pdu *, netsnmp_pdu **,
                                            snmp_callback);
+    NETSNMP_IMPORT
     int             snmp_clone_mem(void **, const void *, unsigned);
 
 
+NETSNMP_IMPORT
 void              netsnmp_query_set_default_session(netsnmp_session *);
+NETSNMP_IMPORT
 netsnmp_session * netsnmp_query_get_default_session_unchecked( void );
+NETSNMP_IMPORT
 netsnmp_session * netsnmp_query_get_default_session( void );
+NETSNMP_IMPORT
 int netsnmp_query_get(     netsnmp_variable_list *, netsnmp_session *);
+NETSNMP_IMPORT
 int netsnmp_query_getnext( netsnmp_variable_list *, netsnmp_session *);
+NETSNMP_IMPORT
 int netsnmp_query_walk(    netsnmp_variable_list *, netsnmp_session *);
+NETSNMP_IMPORT
 int netsnmp_query_set(     netsnmp_variable_list *, netsnmp_session *);
 
+/** **************************************************************************
+ *
+ * state machine
+ *
+ */
+    /** forward declare */
+    struct netsnmp_state_machine_step_s;
+    struct netsnmp_state_machine_input_s;
+
+    /** state machine process */
+    typedef int (netsnmp_state_machine_func)(struct netsnmp_state_machine_input_s *input,
+                                             struct netsnmp_state_machine_step_s *step);
+
+    typedef struct netsnmp_state_machine_step_s {
+
+        const char   *name; /* primarily for logging/debugging */
+        u_int         sm_flags;
+        
+        netsnmp_state_machine_func *run;
+        int                         result; /* return code for this step */
+        
+        
+        struct netsnmp_state_machine_step_s *on_success;
+        struct netsnmp_state_machine_step_s *on_error;
+        
+        /*
+         * user fields (not touched by state machine functions)
+         */
+        u_int         flags;
+        void         *step_context;
+        
+    } netsnmp_state_machine_step;
+
+    typedef struct netsnmp_state_machine_input_s {
+        const char                  *name;
+        int                          steps_so_far;
+        netsnmp_state_machine_step  *steps;
+        netsnmp_state_machine_step  *cleanup;
+        netsnmp_state_machine_step  *last_run;
+
+        /*
+         * user fields (not touched by state machine functions)
+         */
+        void         *input_context;
+
+    } netsnmp_state_machine_input;
+
+
+    NETSNMP_IMPORT int
+    netsnmp_state_machine_run( netsnmp_state_machine_input *input );
+
+    NETSNMP_IMPORT int
+    netsnmp_row_create(netsnmp_session *sess, netsnmp_variable_list *vars,
+                       int row_status_index);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmp_debug.h b/include/net-snmp/library/snmp_debug.h
index 765cc44..a3969f6 100644
--- a/include/net-snmp/library/snmp_debug.h
+++ b/include/net-snmp/library/snmp_debug.h
@@ -15,46 +15,59 @@
      */
 
 
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+#define NETSNMP_ATTRIBUTE_FORMAT(type, formatArg, firstArg)
+#else
+#define NETSNMP_ATTRIBUTE_FORMAT(type, formatArg, firstArg) \
+  __attribute__((__format__( __ ## type ## __, formatArg, firstArg )))
+#endif
+
     /*
      * These functions should not be used, if at all possible.  Instead, use
      * the macros below. 
      */
-#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
-    void            debugmsg(const char *token, const char *format, ...);
-    void            debugmsgtoken(const char *token, const char *format,
-                                  ...);
-    void            debug_combo_nc(const char *token, const char *format,
-                                   ...);
-#else
+    NETSNMP_IMPORT
     void            debugmsg(const char *token, const char *format, ...)
-                        __attribute__ ((__format__ (__printf__, 2, 3)));
+                        NETSNMP_ATTRIBUTE_FORMAT(printf, 2, 3);
+    NETSNMP_IMPORT
     void            debugmsgtoken(const char *token, const char *format,
                                   ...)
-                        __attribute__ ((__format__ (__printf__, 2, 3)));
+                        NETSNMP_ATTRIBUTE_FORMAT(printf, 2, 3);
     void            debug_combo_nc(const char *token, const char *format,
                                    ...)
-                        __attribute__ ((__format__ (__printf__, 2, 3)));
-#endif
+                        NETSNMP_ATTRIBUTE_FORMAT(printf, 2, 3);
+
+#undef NETSNMP_ATTRIBUTE_FORMAT
+
+    NETSNMP_IMPORT
     void            debugmsg_oid(const char *token, const oid * theoid,
                                  size_t len);
+    NETSNMP_IMPORT
     void            debugmsg_suboid(const char *token, const oid * theoid,
                                     size_t len);
+    NETSNMP_IMPORT
     void            debugmsg_var(const char *token,
                                  netsnmp_variable_list * var);
+    NETSNMP_IMPORT
     void            debugmsg_oidrange(const char *token,
                                       const oid * theoid, size_t len,
                                       size_t var_subid, oid range_ubound);
-    void            debugmsg_hex(const char *token, u_char * thedata,
+    NETSNMP_IMPORT
+    void            debugmsg_hex(const char *token, const u_char * thedata,
                                  size_t len);
-    void            debugmsg_hextli(const char *token, u_char * thedata,
+    NETSNMP_IMPORT
+    void            debugmsg_hextli(const char *token, const u_char * thedata,
                                     size_t len);
+    NETSNMP_IMPORT
     void            debug_indent_add(int amount);
+    NETSNMP_IMPORT
     int             debug_indent_get(void);
     /*
      * What is said above is true for this function as well. Further this
      * function is deprecated and only provided for backwards compatibility.
      * Please use "%*s", debug_indent_get(), "" if you used this one before.
      */
+    NETSNMP_IMPORT
     const char     *debug_indent(void);
 
     /*
@@ -135,8 +148,11 @@
 #ifdef  NETSNMP_FUNCTION
 #define __DBGTRACE       __DBGMSGT(("trace","%s(): %s, %d:\n",\
 				NETSNMP_FUNCTION,__FILE__,__LINE__))
+#define __DBGTRACETOK(x) __DBGMSGT((x,"%s(): %s, %d:\n",       \
+                                    NETSNMP_FUNCTION,__FILE__,__LINE__))
 #else
 #define __DBGTRACE       __DBGMSGT(("trace"," %s, %d:\n", __FILE__,__LINE__))
+#define __DBGTRACETOK(x) __DBGMSGT((x," %s, %d:\n", __FILE__,__LINE__))
 #endif
 
 #define __DBGMSGL(x)     __DBGTRACE, debugmsg x
@@ -184,89 +200,27 @@
 
 /******************* End   private macros ************************/
 /*****************************************************************/
+#endif /* NETSNMP_NO_DEBUGGING */
 
-/*****************************************************************/
-/********************Start public  macros ************************/
-
-#define DEBUGMSG(x)        do {if (_DBG_IF_) {debugmsg x;} }while(0)
-#define DEBUGMSGT(x)       do {if (_DBG_IF_) {__DBGMSGT(x);} }while(0)
-#define DEBUGTRACE         do {if (_DBG_IF_) {__DBGTRACE;} }while(0)
-#define DEBUGMSGL(x)       do {if (_DBG_IF_) {__DBGMSGL(x);} }while(0)
-#define DEBUGMSGTL(x)      do {if (_DBG_IF_) {__DBGMSGTL(x);} }while(0)
-#define DEBUGMSGOID(x)     do {if (_DBG_IF_) {__DBGMSGOID(x);} }while(0)
-#define DEBUGMSGSUBOID(x)  do {if (_DBG_IF_) {__DBGMSGSUBOID(x);} }while(0)
-#define DEBUGMSGVAR(x)     do {if (_DBG_IF_) {__DBGMSGVAR(x);} }while(0)
-#define DEBUGMSGOIDRANGE(x) do {if (_DBG_IF_) {__DBGMSGOIDRANGE(x);} }while(0)
-#define DEBUGMSGHEX(x)     do {if (_DBG_IF_) {__DBGMSGHEX(x);} }while(0)
-#define DEBUGMSGHEXTLI(x)  do {if (_DBG_IF_) {__DBGMSGHEXTLI(x);} }while(0)
-#define DEBUGINDENTADD(x)  do {if (_DBG_IF_) {__DBGINDENTADD(x);} }while(0)
-#define DEBUGINDENTMORE()  do {if (_DBG_IF_) {__DBGINDENTMORE();} }while(0)
-#define DEBUGINDENTLESS()  do {if (_DBG_IF_) {__DBGINDENTLESS();} }while(0)
-#define DEBUGPRINTINDENT(token) \
-	do {if (_DBG_IF_) {__DBGPRINTINDENT(token);} }while(0)
-
-
-#define DEBUGDUMPHEADER(token,x) \
-	do {if (_DBG_IF_) {__DBGDUMPHEADER(token,x);} }while(0)
-
-#define DEBUGDUMPSECTION(token,x) \
-	do {if (_DBG_IF_) {__DBGDUMPSECTION(token,x);} }while(0)
-
-#define DEBUGDUMPSETUP(token,buf,len) \
-	do {if (_DBG_IF_) {__DBGDUMPSETUP(token,buf,len);} }while(0)
-
-#define DEBUGMSG_NC(x)  do { __DBGMSG_NC(x); }while(0)
-#define DEBUGMSGT_NC(x) do { __DBGMSGT_NC(x); }while(0)
-
-#else                           /* NETSNMP_NO_DEBUGGING := enable streamlining of the code */
-
-#define DEBUGMSG(x)
-#define DEBUGMSGT(x)
-#define DEBUGTRACE
-#define DEBUGMSGL(x)
-#define DEBUGMSGTL(x)
-#define DEBUGMSGOID(x)
-#define DEBUGMSGSUBOID(x)
-#define DEBUGMSGVAR(x)
-#define DEBUGMSGOIDRANGE(x)
-#define DEBUGMSGHEX(x)
-#define DEBUGIF(x)        if(0)
-#define DEBUGDUMP(t,b,l,p)
-#define DEBUGINDENTMORE()
-#define DEBUGINDENTLESS()
-#define DEBUGINDENTADD(x)
-#define DEBUGMSGHEXTLI(x)
-#define DEBUGPRINTINDENT(token)
-#define DEBUGDUMPHEADER(token,x)
-#define DEBUGDUMPSECTION(token,x)
-#define DEBUGDUMPSETUP(token, buf, len)
-
-#define DEBUGMSG_NC(x)
-#define DEBUGMSGT_NC(x)
-
+#ifdef __cplusplus
+}
 #endif
 
+    /* Public macros moved to top-level API header file */
+#include <net-snmp/output_api.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    void            snmp_debug_init(void);
+
 #define MAX_DEBUG_TOKENS 256
 #define MAX_DEBUG_TOKEN_LEN 128
 #define DEBUG_TOKEN_DELIMITER ","
 #define DEBUG_ALWAYS_TOKEN "all"
 
-    /*
-     * setup routines:
-     * 
-     * debug_register_tokens(char *):     registers a list of tokens to
-     * print debugging output for.
-     * 
-     * debug_is_token_registered(char *): returns SNMPERR_SUCCESS or SNMPERR_GENERR
-     * if a token has been registered or
-     * not (and debugging output is "on").
-     * snmp_debug_init(void):             registers .conf handlers.
-     */
-    void            debug_register_tokens(char *tokens);
-    int             debug_is_token_registered(const char *token);
-    void            snmp_debug_init(void);
-    void            snmp_set_do_debugging(int);
-    int             snmp_get_do_debugging(void);
+#ifndef NETSNMP_NO_DEBUGGING
 
 /*
  * internal:
@@ -280,7 +234,9 @@
 
 NETSNMP_IMPORT int                 debug_num_tokens;
 NETSNMP_IMPORT netsnmp_token_descr dbg_tokens[MAX_DEBUG_TOKENS];
-    
+
+#endif /* NETSNMP_NO_DEBUGGING */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmp_enum.h b/include/net-snmp/library/snmp_enum.h
index 4167d28..237891d 100644
--- a/include/net-snmp/library/snmp_enum.h
+++ b/include/net-snmp/library/snmp_enum.h
@@ -63,8 +63,10 @@
      * find a list, and then operate on that list
      *   ( direct methods further below if you already have the list pointer)
      */
+    NETSNMP_IMPORT
     char           *se_find_label_in_slist(const char *listname,
                                            int value);
+    NETSNMP_IMPORT
     int             se_find_value_in_slist(const char *listname,
                                            const char *label);
     int             se_find_free_value_in_slist(const char *listname);
@@ -73,6 +75,7 @@
      * ownership of the memory pointed to by label to the list:
      * clear_snmp_enum() deallocates that memory.
      */
+    NETSNMP_IMPORT
     int             se_add_pair_to_slist(const char *listname, char *label,
                                          int value);
 
@@ -94,6 +97,7 @@
                                        const char *token, const char *type);
     void            se_store_list(unsigned int major, unsigned int minor,
                                   const char *type);
+    void            se_clear_slist(const char *listname);
     void            se_store_slist(const char *listname, const char *type);
     int             se_store_slist_callback(int majorID, int minorID,
                                            void *serverargs, void *clientargs);
@@ -102,6 +106,7 @@
      * Deallocate the memory allocated by init_snmp_enum(): remove all key/value
      * pairs stored by se_add_*() calls.
      */
+    NETSNMP_IMPORT
     void            clear_snmp_enum(void);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmp_logging.h b/include/net-snmp/library/snmp_logging.h
index 550e664..1d7921b 100644
--- a/include/net-snmp/library/snmp_logging.h
+++ b/include/net-snmp/library/snmp_logging.h
@@ -1,9 +1,8 @@
 #ifndef SNMP_LOGGING_H
 #define SNMP_LOGGING_H
 
-#ifdef __cplusplus
-extern          "C" {
-#endif
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
 
 #if HAVE_SYSLOG_H
 #include <syslog.h>
@@ -11,6 +10,10 @@
 #include <stdio.h>
 #include <stdarg.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
 #ifndef LOG_ERR
 #define LOG_EMERG       0       /* system is unusable */
 #define LOG_ALERT       1       /* action must be taken immediately */
@@ -40,46 +43,27 @@
     } while(0)
 
     void            init_snmp_logging(void);
-    void            shutdown_snmp_logging(void);
-    int             snmp_get_do_logging(void);
+    NETSNMP_IMPORT
     void            snmp_disable_syslog(void);
     void            snmp_disable_filelog(void);
+    NETSNMP_IMPORT
     void            snmp_disable_stderrlog(void);
     void            snmp_disable_calllog(void);
-    void            snmp_disable_log(void);
+    NETSNMP_IMPORT
     void            snmp_enable_syslog(void);
+    NETSNMP_IMPORT
     void            snmp_enable_syslog_ident(const char *ident,
                                              const int   facility);
+    NETSNMP_IMPORT
     void            snmp_enable_filelog(const char *logfilename,
                                         int dont_zero_log);
+    NETSNMP_IMPORT
     void            snmp_enable_stderrlog(void);
     void            snmp_enable_calllog(void);
 
+    NETSNMP_IMPORT
     int             snmp_stderrlog_status(void);
 
-#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
-    int             snmp_log(int priority, const char *format, ...);
-#else
-    int             snmp_log(int priority, const char *format, ...)
-                    	__attribute__ ((__format__ (__printf__, 2, 3)));
-#endif
-    int             snmp_vlog(int priority, const char *format,
-                              va_list ap);
-    /*
-     * 0 - successful message formatting 
-     */
-    /*
-     * -1 - Could not format log-string 
-     */
-    /*
-     * -2 - Could not allocate memory for log-message 
-     */
-    /*
-     * -3 - Log-message too long! 
-     */
-
-    void            snmp_log_perror(const char *s);
-
 
 #define NETSNMP_LOGHANDLER_STDOUT	1
 #define NETSNMP_LOGHANDLER_STDERR	2
@@ -88,9 +72,13 @@
 #define NETSNMP_LOGHANDLER_CALLBACK	5
 #define NETSNMP_LOGHANDLER_NONE		6
 
+    NETSNMP_IMPORT
     void netsnmp_set_line_buffering(FILE *stream);
+    NETSNMP_IMPORT
     int snmp_log_options(char *optarg, int argc, char *const *argv);
+    NETSNMP_IMPORT
     void snmp_log_options_usage(const char *lead, FILE *outf);
+    NETSNMP_IMPORT
     char *snmp_log_syslogname(const char *syslogname);
     typedef struct netsnmp_log_handler_s netsnmp_log_handler; 
     typedef int (NetsnmpLogHandler)(netsnmp_log_handler*, int, const char *);
@@ -116,13 +104,21 @@
 	netsnmp_log_handler	*next, *prev;
     };
 
+NETSNMP_IMPORT
 netsnmp_log_handler *get_logh_head( void );
+NETSNMP_IMPORT
 netsnmp_log_handler *netsnmp_register_loghandler( int type, int pri );
 netsnmp_log_handler *netsnmp_find_loghandler( const char *token );
 int netsnmp_add_loghandler(    netsnmp_log_handler *logh );
+NETSNMP_IMPORT
 int netsnmp_remove_loghandler( netsnmp_log_handler *logh );
 int netsnmp_enable_loghandler( const char *token );
 int netsnmp_disable_loghandler( const char *token );
+NETSNMP_IMPORT
+void netsnmp_enable_this_loghandler( netsnmp_log_handler *logh );
+NETSNMP_IMPORT
+void netsnmp_disable_this_loghandler( netsnmp_log_handler *logh );
+NETSNMP_IMPORT
 void netsnmp_logging_restart(void);
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmp_openssl.h b/include/net-snmp/library/snmp_openssl.h
index 8092f74..b291736 100644
--- a/include/net-snmp/library/snmp_openssl.h
+++ b/include/net-snmp/library/snmp_openssl.h
@@ -11,6 +11,35 @@
 
     void netsnmp_init_openssl(void);
 
+    /*
+     * cert fields
+     */
+    void netsnmp_openssl_cert_dump_names(X509 *ocert);
+    void netsnmp_openssl_cert_dump_extensions(X509 *ocert);
+
+    char *netsnmp_openssl_cert_get_commonName(X509 *, char **buf, int *len);
+    char *netsnmp_openssl_cert_get_subjectName(X509 *, char **buf, int *len);
+    char *netsnmp_openssl_cert_get_fingerprint(X509 *ocert, int alg);
+    int netsnmp_openssl_cert_get_hash_type(X509 *ocert);
+
+    int netsnmp_openssl_cert_issued_by(X509 *issuer, X509 *cert);
+
+    char *netsnmp_openssl_extract_secname(netsnmp_cert_map *cert_map,
+                                          netsnmp_cert_map *peer_cert);
+
+    char *netsnmp_openssl_cert_get_subjectAltName(X509 *, char **buf, int *len);
+
+    /*
+     * ssl cert chains
+     */
+    netsnmp_container *netsnmp_openssl_get_cert_chain(SSL *ssl);
+
+    /*
+     * misc
+     */
+    void netsnmp_openssl_err_log(const char *prefix);
+    void netsnmp_openssl_null_checks(SSL *ssl, int *nullAuth, int *nullCipher);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmp_parse_args.h b/include/net-snmp/library/snmp_parse_args.h
index c0fe71e..e468335 100644
--- a/include/net-snmp/library/snmp_parse_args.h
+++ b/include/net-snmp/library/snmp_parse_args.h
@@ -4,13 +4,85 @@
 extern "C" {
 #endif
 
+/**
+ * @file snmp_parse_args.h
+ *
+ * Support for initializing variables of type netsnmp_session from command
+ * line arguments
+ */
+
+/** 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
+ *  anyway, typically used when the function is called from an internal
+ *  config-line handler
+ */
+#define NETSNMP_PARSE_ARGS_NOZERO       0x0002
+
+/**
+ * Parsing of command line arguments succeeded and application is expected
+ * to continue with normal operation.
+ */
+#define NETSNMP_PARSE_ARGS_SUCCESS       0
+/**
+  * Parsing of command line arguments succeeded, but the application is expected
+  * to exit with zero exit code. For example, '-V' parameter has been found.
+  */
+#define NETSNMP_PARSE_ARGS_SUCCESS_EXIT  -2
+/**
+ * Parsing of command line arguments failed and application is expected to show
+ * usage (i.e. list of parameters) and exit with nozero exit code. 
+ */
+#define NETSNMP_PARSE_ARGS_ERROR_USAGE   -1
+/**
+ * Parsing of command line arguments failed and application is expected to exit
+ * with nozero exit code.  netsnmp_parse_args() has already printed what went
+ * wrong.
+ */
+#define NETSNMP_PARSE_ARGS_ERROR         -3
+    
+/**
+ *  Parse an argument list and initialize \link netsnmp_session
+ *  session\endlink
+ *  from it.
+ *  @param argc Number of elements in argv
+ *  @param argv string array of at least argc elements
+ *  @param session
+ *  @param localOpts Additional option characters to accept
+ *  @param proc function pointer used to process any unhandled arguments
+ *  @param flags flags directing how to handle the string
+ *
+ *  @retval 0 (= #NETSNMP_PARSE_ARGS_SUCCESS) on success
+ *  @retval #NETSNMP_PARSE_ARGS_SUCCESS_EXIT when the application is expected
+ *  to exit with zero exit code (e.g. '-V' option was found)
+ *  @retval #NETSNMP_PARSE_ARGS_ERROR_USAGE when the function failed to parse
+ *  the command line and the application is expected to show it's usage
+ *  @retval #NETSNMP_PARSE_ARGS_ERROR when the function failed to parse
+ *  the command line and it has already printed enough information for the user
+ *  and no other output is needed
+ *
+ *  The proc function is called with argc, argv and the currently processed
+ *  option as arguments
+ */
+NETSNMP_IMPORT int
+netsnmp_parse_args(int argc, char **argv, netsnmp_session *session,
+                   const char *localOpts, void (*proc)(int, char *const *, int),
+                   int flags);
+
+/**
+ *  Calls \link netsnmp_parse_args()
+ *  netsnmp_parse_args(argc, argv, session, localOpts, proc, 0)\endlink
+ */
+NETSNMP_IMPORT
 int
 snmp_parse_args(int argc, char **argv, netsnmp_session *session,
 		const char *localOpts, void (*proc)(int, char *const *, int));
 
+NETSNMP_IMPORT
 void
 snmp_parse_args_descriptions(FILE *);
 
+NETSNMP_IMPORT
 void
 snmp_parse_args_usage(FILE *);
 
diff --git a/include/net-snmp/library/snmp_secmod.h b/include/net-snmp/library/snmp_secmod.h
index 6a687df..5bacad7 100644
--- a/include/net-snmp/library/snmp_secmod.h
+++ b/include/net-snmp/library/snmp_secmod.h
@@ -10,8 +10,9 @@
 /* Locally defined security models.
  * (Net-SNMP enterprise number = 8072)*256 + local_num
  */
-#define NETSNMP_KSM_SECURITY_MODEL     2066432
-#define NETSNMP_TSM_SECURITY_MODEL     2066434
+#define NETSNMP_SEC_MODEL_KSM     2066432
+#define NETSNMP_KSM_SECURITY_MODEL     NETSNMP_SEC_MODEL_KSM
+#define NETSNMP_TSM_SECURITY_MODEL     SNMP_SEC_MODEL_TSM
 
 struct snmp_secmod_def;
 
@@ -93,6 +94,8 @@
 typedef int     (SecmodDiscoveryMethod) (void *slp,
                                          netsnmp_session *session);
 
+typedef int     (SecmodSessionSetup) (netsnmp_session *in_session,
+                                      netsnmp_session *out_session);
 /*
  * definition of a security module
  */
@@ -107,6 +110,7 @@
      */
     SecmodSessionCallback *session_open;        /* called in snmp_sess_open()  */
     SecmodSessionCallback *session_close;       /* called in snmp_sess_close() */
+    SecmodSessionSetup    *session_setup;
 
     /*
      * pdu manipulation routines 
@@ -153,6 +157,7 @@
 /*
  * find a security service definition 
  */
+NETSNMP_IMPORT
 struct snmp_secmod_def *find_sec_mod(int);
 /*
  * register a security service 
@@ -163,6 +168,7 @@
 /*
  * clears the sec_mod list
  */
+NETSNMP_IMPORT
 void            clear_sec_mod(void);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmp_service.h b/include/net-snmp/library/snmp_service.h
index 5a4565d..711f676 100644
--- a/include/net-snmp/library/snmp_service.h
+++ b/include/net-snmp/library/snmp_service.h
@@ -7,7 +7,7 @@
 
 /* Default port handling */
 
-extern int
+NETSNMP_IMPORT int
 netsnmp_register_default_domain(const char* application, const char* domain);
 
 extern const char*
@@ -19,7 +19,7 @@
 extern void
 netsnmp_clear_default_domain(void);
 
-extern int
+NETSNMP_IMPORT int
 netsnmp_register_default_target(const char* application, const char* domain,
 				const char* target);
 
@@ -29,7 +29,7 @@
 extern void
 netsnmp_clear_default_target(void);
 
-extern void
+NETSNMP_IMPORT void
 netsnmp_register_service_handlers(void);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmp_transport.h b/include/net-snmp/library/snmp_transport.h
index cd4ec37..d89f9c0 100644
--- a/include/net-snmp/library/snmp_transport.h
+++ b/include/net-snmp/library/snmp_transport.h
@@ -1,7 +1,12 @@
 #ifndef _SNMP_TRANSPORT_H
 #define _SNMP_TRANSPORT_H
 
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
 #include <sys/types.h>
+
 #include <net-snmp/library/asn1.h>
 
 #ifdef __cplusplus
@@ -22,6 +27,7 @@
 #define         NETSNMP_TRANSPORT_FLAG_TMSTATE   0x08  /* indicates opaque is a
                                                           TSM tmStateReference */
 #define		NETSNMP_TRANSPORT_FLAG_EMPTY_PKT 0x10
+#define		NETSNMP_TRANSPORT_FLAG_OPENED	 0x20  /* f_open called */
 #define		NETSNMP_TRANSPORT_FLAG_HOSTNAME	 0x80  /* for fmtaddr hook */
 
 /*  The standard SNMP domains.  */
@@ -47,9 +53,15 @@
 
 typedef struct netsnmp_addr_pair_s {
    struct sockaddr_in remote_addr;
-   struct in_addr local_addr;
+   struct sockaddr_in local_addr;
 } netsnmp_addr_pair;
 
+typedef struct netsnmp_indexed_addr_pair_s {
+   struct sockaddr_in remote_addr;
+   struct sockaddr_in local_addr;
+    int if_index;
+} netsnmp_indexed_addr_pair;
+
 typedef struct netsnmp_tmStateReference_s {
    oid    transportDomain[MAX_OID_LEN];
    size_t transportDomainLen;
@@ -58,16 +70,18 @@
    int    requestedSecurityLevel;
    int    transportSecurityLevel;
    char   sameSecurity;
-   int    sessionID;
+   char   sessionID[8];
    
    char   have_addresses;
-   netsnmp_addr_pair addresses;
+   netsnmp_indexed_addr_pair addresses;
 
    void *otherTransportOpaque; /* XXX: May have mem leak issues */
 } netsnmp_tmStateReference;
 
 /*  Structure which defines the transport-independent API.  */
 
+struct snmp_session;
+
 typedef struct netsnmp_transport_s {
     /*  The transport domain object identifier.  */
 
@@ -115,14 +129,34 @@
 				 int, void **, int *);
     int             (*f_close)  (struct netsnmp_transport_s *);
 
+    /* Optional: opening can occur during creation if more appropriate */
+   struct netsnmp_transport_s * (*f_open)   (struct netsnmp_transport_s *);
+
     /*  This callback is only necessary for stream-oriented transports.  */
 
     int             (*f_accept) (struct netsnmp_transport_s *);
 
     /*  Optional callback to format a transport address.  */
 
-    char           *(*f_fmtaddr)(struct netsnmp_transport_s *, void *,
-				 int);
+    char           *(*f_fmtaddr)(struct netsnmp_transport_s *, void *, int);
+
+    /*  Optional callback to support extra configuration token/value pairs */
+    /*  return non-zero on error */
+    int            (*f_config)(struct netsnmp_transport_s *, const char *,
+                               const char *);
+
+    /*  Optional callback that is called after the first transport is
+        cloned to the second */
+    int            (*f_copy)(struct netsnmp_transport_s *,
+                             struct netsnmp_transport_s *);
+
+    /*  Setup initial session config if special things are needed */
+   int             (*f_setup_session)(struct netsnmp_transport_s *,
+                                      struct snmp_session *);
+  
+    /* allocated host name identifier; used by configuration system
+       to load localhost.conf for host-specific configuration */
+    u_char         *identifier; /* udp:localhost:161 -> "localhost" */
 } netsnmp_transport;
 
 typedef struct netsnmp_transport_list_s {
@@ -150,9 +184,17 @@
 
 } netsnmp_tdomain;
 
+void init_snmp_transport(void);
 
 /*  Some utility functions.  */
 
+char *netsnmp_transport_peer_string(netsnmp_transport *t, void *data, int len);
+
+int netsnmp_transport_send(netsnmp_transport *t, void *data, int len,
+                           void **opaque, int *olength);
+int netsnmp_transport_recv(netsnmp_transport *t, void *data, int len,
+                           void **opaque, int *olength);
+
 int netsnmp_transport_add_to_list(netsnmp_transport_list **transport_list,
 				  netsnmp_transport *transport);
 int netsnmp_transport_remove_from_list(netsnmp_transport_list **transport_list,
@@ -169,6 +211,7 @@
 
 /*  Free an netsnmp_transport.  */
 
+NETSNMP_IMPORT
 void            netsnmp_transport_free(netsnmp_transport *t);
 
 
@@ -180,6 +223,7 @@
  * *out_len.
  */
 
+NETSNMP_IMPORT
 int             netsnmp_tdomain_support(const oid *in_oid, size_t in_len,
 					const oid **out_oid, size_t *out_len);
 
@@ -187,35 +231,52 @@
     
 int             netsnmp_tdomain_unregister(netsnmp_tdomain *domain);
 
+NETSNMP_IMPORT
 void            netsnmp_clear_tdomain_list(void);
 
 void            netsnmp_tdomain_init(void);
 
+NETSNMP_IMPORT
 netsnmp_transport *netsnmp_tdomain_transport(const char *str,
 					     int local,
 					     const char *default_domain);
 
+NETSNMP_IMPORT
 netsnmp_transport *netsnmp_tdomain_transport_full(const char *application,
 						  const char *str,
 						  int local,
 						  const char *default_domain,
 						  const char *default_target);
 
+NETSNMP_IMPORT
 netsnmp_transport *netsnmp_tdomain_transport_oid(const oid * dom,
 						 size_t dom_len,
 						 const u_char * o,
 						 size_t o_len,
 						 int local);
 
+NETSNMP_IMPORT
 netsnmp_transport*
 netsnmp_transport_open_client(const char* application, const char* str);
 
+NETSNMP_IMPORT
 netsnmp_transport*
 netsnmp_transport_open_server(const char* application, const char* str);
 
 netsnmp_transport*
 netsnmp_transport_open(const char* application, const char* str, int local);
 
+typedef struct netsnmp_transport_config_s {
+   char *key;
+   char *value;
+} netsnmp_transport_config;
+    
+NETSNMP_IMPORT    
+int netsnmp_transport_config_compare(netsnmp_transport_config *left,
+                                     netsnmp_transport_config *right);
+NETSNMP_IMPORT
+netsnmp_transport_config *netsnmp_transport_create_config(char *key,
+                                                          char *value);
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmpksm.h b/include/net-snmp/library/snmpksm.h
index 0284727..c75e5ef 100644
--- a/include/net-snmp/library/snmpksm.h
+++ b/include/net-snmp/library/snmpksm.h
@@ -13,7 +13,7 @@
                                           snmp_secmod_outgoing_params *);
     int             ksm_process_in_msg(struct snmp_secmod_incoming_params
                                        *);
-    void            init_usm(void);
+    void            init_ksm(void);
 
     /*
      * This is the "key usage" that is used by the new crypto API.  It's used
diff --git a/include/net-snmp/library/snmptsm.h b/include/net-snmp/library/snmptsm.h
index edd5a19..a7c8d93 100644
--- a/include/net-snmp/library/snmptsm.h
+++ b/include/net-snmp/library/snmptsm.h
@@ -13,7 +13,7 @@
                                           snmp_secmod_outgoing_params *);
     int             tsm_process_in_msg(struct snmp_secmod_incoming_params
                                        *);
-    void            init_usm(void);
+    void            init_tsm(void);
 
     #define NETSNMP_TM_SAME_SECURITY_NOT_REQUIRED 0
     #define NETSNMP_TM_USE_SAME_SECURITY          1
@@ -21,7 +21,6 @@
     /* basically we store almost nothing else but a tm ref */
     typedef struct netsnmp_tsmSecurityReference_s {
        netsnmp_tmStateReference *tmStateRef;
-       int securityLevel;
     } netsnmp_tsmSecurityReference;
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmpusm.h b/include/net-snmp/library/snmpusm.h
index 18cf119..d1ced90 100644
--- a/include/net-snmp/library/snmpusm.h
+++ b/include/net-snmp/library/snmpusm.h
@@ -28,7 +28,7 @@
 #define USM_MD5_AND_SHA_AUTH_LEN        12      /* bytes */
 #define USM_MAX_AUTHSIZE                USM_MD5_AND_SHA_AUTH_LEN
 
-#define USM_SEC_MODEL_NUMBER            3
+#define USM_SEC_MODEL_NUMBER            SNMP_SEC_MODEL_USM
 
     /*
      * Structures.
@@ -180,6 +180,7 @@
                                                     u_int time_uint,
                                                     int *error);
 
+    SecmodSessionCallback usm_open_session;
     SecmodOutMsg    usm_secmod_generate_out_msg;
     SecmodOutMsg    usm_secmod_generate_out_msg;
     SecmodInMsg     usm_secmod_process_in_msg;
@@ -200,49 +201,63 @@
                                        void **, netsnmp_session *, u_char);
 
     int             usm_check_secLevel(int level, struct usmUser *user);
+    NETSNMP_IMPORT
     struct usmUser *usm_get_userList(void);
+    NETSNMP_IMPORT
     struct usmUser *usm_get_user(u_char * engineID, size_t engineIDLen,
                                  char *name);
     struct usmUser *usm_get_user_from_list(u_char * engineID,
                                            size_t engineIDLen, char *name,
                                            struct usmUser *userList,
                                            int use_default);
+    NETSNMP_IMPORT
     struct usmUser *usm_add_user(struct usmUser *user);
     struct usmUser *usm_add_user_to_list(struct usmUser *user,
                                          struct usmUser *userList);
+    NETSNMP_IMPORT
     struct usmUser *usm_free_user(struct usmUser *user);
+    NETSNMP_IMPORT
     struct usmUser *usm_create_user(void);
+    NETSNMP_IMPORT
     struct usmUser *usm_create_initial_user(const char *name,
                                             const oid * authProtocol,
                                             size_t authProtocolLen,
                                             const oid * privProtocol,
                                             size_t privProtocolLen);
+    NETSNMP_IMPORT
     struct usmUser *usm_cloneFrom_user(struct usmUser *from,
                                        struct usmUser *to);
+    NETSNMP_IMPORT
     struct usmUser *usm_remove_user(struct usmUser *user);
     struct usmUser *usm_remove_user_from_list(struct usmUser *user,
                                               struct usmUser **userList);
     char           *get_objid(char *line, oid ** optr, size_t * len);
+    NETSNMP_IMPORT
     void            usm_save_users(const char *token, const char *type);
     void            usm_save_users_from_list(struct usmUser *user,
                                              const char *token,
                                              const char *type);
     void            usm_save_user(struct usmUser *user, const char *token,
                                   const char *type);
+    NETSNMP_IMPORT
     SNMPCallback    usm_store_users;
-    struct usmUser *usm_read_user(char *line);
+    struct usmUser *usm_read_user(const char *line);
+    NETSNMP_IMPORT
     void            usm_parse_config_usmUser(const char *token,
                                              char *line);
 
     void            usm_set_password(const char *token, char *line);
+    NETSNMP_IMPORT
     void            usm_set_user_password(struct usmUser *user,
                                           const char *token, char *line);
     void            init_usm(void);
+    NETSNMP_IMPORT
     void            init_usm_conf(const char *app);
     int             init_usm_post_config(int majorid, int minorid,
                                          void *serverarg, void *clientarg);
     int             deinit_usm_post_config(int majorid, int minorid, void *serverarg,
 					   void *clientarg);
+    NETSNMP_IMPORT
     void            clear_user_list(void);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/snmpv3.h b/include/net-snmp/library/snmpv3.h
index f3d295f..633ea57 100644
--- a/include/net-snmp/library/snmpv3.h
+++ b/include/net-snmp/library/snmpv3.h
@@ -20,6 +20,7 @@
 
 #define	DEFAULT_NIC "eth0"
 
+    NETSNMP_IMPORT
     int             setup_engineID(u_char ** eidp, const char *text);
     void            engineID_conf(const char *word, char *cptr);
     void            engineBoots_conf(const char *, char *);
@@ -27,8 +28,10 @@
     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,
                                             void *serverarg,
@@ -40,18 +43,25 @@
     void            shutdown_snmpv3(const char *type);
     int             snmpv3_store(int majorID, int minorID, void *serverarg,
                                  void *clientarg);
+    NETSNMP_IMPORT
     u_long          snmpv3_local_snmpEngineBoots(void);
     int             snmpv3_clone_engineID(u_char **, size_t *, u_char *,
                                           size_t);
+    NETSNMP_IMPORT
     size_t          snmpv3_get_engineID(u_char * buf, size_t buflen);
+    NETSNMP_IMPORT
     u_char         *snmpv3_generate_engineID(size_t *);
+    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);
+    NETSNMP_IMPORT
     int             parse_secLevel_conf(const char* word, char *cptr);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/system.h b/include/net-snmp/library/system.h
index 03c2b07..f3ec24c 100644
--- a/include/net-snmp/library/system.h
+++ b/include/net-snmp/library/system.h
@@ -47,6 +47,7 @@
      * Returns: -1 : fork failed
      *           0 : No errors
      */
+    NETSNMP_IMPORT
     int netsnmp_daemonize(int quit_immediately, int stderr_log);
 
     /*
@@ -79,24 +80,41 @@
         struct direct   dirstr; /* Directory structure to return */
     } DIR;
 
+    NETSNMP_IMPORT
     DIR            *opendir(const char *filename);
+    NETSNMP_IMPORT
     struct direct  *readdir(DIR * dirp);
+    NETSNMP_IMPORT
     int             closedir(DIR * dirp);
 #endif /* HAVE_READDIR */
 
 #ifndef HAVE_GETTIMEOFDAY
+    NETSNMP_IMPORT
     int             gettimeofday(struct timeval *, struct timezone *tz);
 #endif
 
-#endif				/* MSVC_PERL */
+#endif                         /* MSVC_PERL */
 
-#ifndef HAVE_STRNCASECMP
+/*
+ * Note: when compiling Net-SNMP with dmalloc enabled on a system without
+ * strcasecmp() or strncasecmp(), the macro HAVE_STRNCASECMP is
+ * not defined but strcasecmp() and strncasecmp() are defined as macros in
+ * <dmalloc.h>. In order to prevent a compilation error, do not declare
+ * strcasecmp() or strncasecmp() when the <dmalloc.h> header has been included.
+ */
+#if !defined(HAVE_STRNCASECMP) && !defined(strcasecmp)
+    NETSNMP_IMPORT
     int             strcasecmp(const char *s1, const char *s2);
+#endif
+#if !defined(HAVE_STRNCASECMP) && !defined(strncasecmp)
+    NETSNMP_IMPORT
     int             strncasecmp(const char *s1, const char *s2, size_t n);
 #endif
 
 #ifdef WIN32
+    NETSNMP_IMPORT
     char           *winsock_startup(void);
+    NETSNMP_IMPORT
     void            winsock_cleanup(void);
 #define SOCK_STARTUP winsock_startup()
 #define SOCK_CLEANUP winsock_cleanup()
@@ -109,23 +127,29 @@
 
     /* Simply resolve a hostname and return first IPv4 address.
      * Returns -1 on error */
+    NETSNMP_IMPORT
     int             netsnmp_gethostbyname_v4(const char* name,
                                              in_addr_t *addr_out);
 
+    NETSNMP_IMPORT
     in_addr_t       get_myaddr(void);
+    NETSNMP_IMPORT
     long            get_uptime(void);
 
 #ifndef HAVE_STRDUP
     char           *strdup(const char *);
 #endif
 #ifndef HAVE_SETENV
+    NETSNMP_IMPORT
     int             setenv(const char *, const char *, int);
 #endif
 
-    int             calculate_time_diff(struct timeval *,
-                                        struct timeval *);
-    u_int           calculate_sectime_diff(struct timeval *now,
-                                           struct timeval *then);
+    NETSNMP_IMPORT
+    int             calculate_time_diff(const struct timeval *,
+                                        const struct timeval *);
+    NETSNMP_IMPORT
+    u_int           calculate_sectime_diff(const struct timeval *now,
+                                           const struct timeval *then);
 
 #ifndef HAVE_STRCASESTR
     char           *strcasestr(const char *, const char *);
@@ -140,16 +164,20 @@
     NETSNMP_IMPORT uint64_t strtoull(const char *, char **, int);
 #endif
 #ifndef HAVE_STRTOK_R
+    NETSNMP_IMPORT
     char           *strtok_r(char *, const char *, char **);
 #endif
 #ifndef HAVE_SNPRINTF
     int             snprintf(char *, size_t, const char *, ...);
 #endif
 
+    NETSNMP_IMPORT
     int             mkdirhier(const char *pathname, mode_t mode,
                               int skiplast);
+    NETSNMP_IMPORT
     const char     *netsnmp_mktemp(void);
 #ifndef HAVE_STRLCPY
+    NETSNMP_IMPORT
     size_t            strlcpy(char *, const char *, size_t);
 #endif
 #ifndef HAVE_STRLCAT
@@ -161,7 +189,9 @@
                                         const char *ospmrelprefix);
     int             netsnmp_os_kernel_width(void);
 
+    NETSNMP_IMPORT
     int             netsnmp_str_to_uid(const char *useroruid);
+    NETSNMP_IMPORT
     int             netsnmp_str_to_gid(const char *grouporgid);
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/library/testing.h b/include/net-snmp/library/testing.h
new file mode 100644
index 0000000..aabe52f
--- /dev/null
+++ b/include/net-snmp/library/testing.h
@@ -0,0 +1,16 @@
+#ifndef NETSNMP_LIBRARY_TESTING_H
+#define NETSNMP_LIBRARY_TESTING_H
+
+/* These are macros used for the net-snmp testing infrastructure; see
+   the "testing" subdirectory of the source code for details. */
+
+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 OKF(isok, description) { printf("%s %d - \n", ((isok) ? "ok" : "not ok"), ++__test_counter); printf description; printf("\n"); }
+
+#define PLAN(number) { printf("1..%d\n", number); __did_plan = 1;}
+
+#endif /* NETSNMP_LIBRARY_TESTING_H */
diff --git a/include/net-snmp/library/tools.h b/include/net-snmp/library/tools.h
index 93e05b0..9ac4fa5 100644
--- a/include/net-snmp/library/tools.h
+++ b/include/net-snmp/library/tools.h
@@ -199,6 +199,7 @@
      * Prototypes.
      */
 
+    NETSNMP_IMPORT
     int             snmp_realloc(u_char ** buf, size_t * buf_len);
 
     void            free_zero(void *buf, size_t size);
@@ -208,6 +209,12 @@
     NETSNMP_IMPORT
     void           *netsnmp_memdup(const void * from, size_t size);
 
+    NETSNMP_IMPORT
+    u_int           netsnmp_binary_to_hex(u_char ** dest, size_t *dest_len,
+                                          int allow_realloc,
+                                          const u_char * input, size_t len);
+
+    NETSNMP_IMPORT
     u_int           binary_to_hex(const u_char * input, size_t len,
                                   char **output);
                     /* preferred */
@@ -215,39 +222,53 @@
                                          size_t * offset, int allow_realloc,
                                          const char *hex, const char *delim);
                     /* calls netsnmp_hex_to_binary w/delim of " " */
+    NETSNMP_IMPORT
     int             snmp_hex_to_binary(u_char ** buf, size_t * buf_len,
                                        size_t * offset, int allow_realloc,
                                        const char *hex);
                     /* handles odd lengths */
+    NETSNMP_IMPORT
     int             hex_to_binary2(const u_char * input, size_t len,
                                    char **output);
 
+    NETSNMP_IMPORT
     int             snmp_decimal_to_binary(u_char ** buf, size_t * buf_len,
                                            size_t * out_len,
                                            int allow_realloc,
                                            const char *decimal);
 #define snmp_cstrcat(b,l,o,a,s) snmp_strcat(b,l,o,a,(const u_char *)s)
+    NETSNMP_IMPORT
     int             snmp_strcat(u_char ** buf, size_t * buf_len,
                                 size_t * out_len, int allow_realloc,
                                 const u_char * s);
+    NETSNMP_IMPORT
     char           *netsnmp_strdup_and_null(const u_char * from,
                                             size_t from_len);
 
+    NETSNMP_IMPORT
     void            dump_chunk(const char *debugtoken, const char *title,
                                const u_char * buf, int size);
     char           *dump_snmpEngineID(const u_char * buf, size_t * buflen);
 
+    /** A pointer to an opaque time marker value. */
     typedef void   *marker_t;
-    marker_t        atime_newMarker(void);
-    void            atime_setMarker(marker_t pm);
-    long            atime_diff(marker_t first, marker_t second);
-    u_long          uatime_diff(marker_t first, marker_t second);       /* 1/1000th sec */
-    u_long          uatime_hdiff(marker_t first, marker_t second);      /* 1/100th sec */
-    int             atime_ready(marker_t pm, int deltaT);
-    int             uatime_ready(marker_t pm, unsigned int deltaT);
+    typedef const void* const_marker_t;
 
-    int             marker_tticks(marker_t pm);
-    int             timeval_tticks(struct timeval *tv);
+    NETSNMP_IMPORT
+    marker_t        atime_newMarker(void);
+    NETSNMP_IMPORT
+    void            atime_setMarker(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);
+    int             uatime_ready(const_marker_t pm, unsigned int delta_ms);
+
+    int             marker_tticks(const_marker_t pm);
+    int             timeval_tticks(const struct timeval *tv);
     NETSNMP_IMPORT
     char            *netsnmp_getenv(const char *name);
     NETSNMP_IMPORT
diff --git a/include/net-snmp/library/ucd_compat.h b/include/net-snmp/library/ucd_compat.h
index 73979d3..329d435 100644
--- a/include/net-snmp/library/ucd_compat.h
+++ b/include/net-snmp/library/ucd_compat.h
@@ -13,22 +13,34 @@
         /*
          * from snmp_api.h 
          */
+NETSNMP_IMPORT
 void            snmp_set_dump_packet(int);
+NETSNMP_IMPORT
 int             snmp_get_dump_packet(void);
+NETSNMP_IMPORT
 void            snmp_set_quick_print(int);
+NETSNMP_IMPORT
 int             snmp_get_quick_print(void);
+NETSNMP_IMPORT
 void            snmp_set_suffix_only(int);
+NETSNMP_IMPORT
 int             snmp_get_suffix_only(void);
+NETSNMP_IMPORT
 void            snmp_set_full_objid(int);
 int             snmp_get_full_objid(void);
+NETSNMP_IMPORT
 void            snmp_set_random_access(int);
+NETSNMP_IMPORT
 int             snmp_get_random_access(void);
 
         /*
          * from parse.h 
          */
+NETSNMP_IMPORT
 void            snmp_set_mib_warnings(int);
+NETSNMP_IMPORT
 void            snmp_set_mib_errors(int);
+NETSNMP_IMPORT
 void            snmp_set_save_descriptions(int);
 void            snmp_set_mib_comment_term(int);
 void            snmp_set_mib_parse_label(int);
diff --git a/include/net-snmp/library/vacm.h b/include/net-snmp/library/vacm.h
index a34dc69..a5be6ac 100644
--- a/include/net-snmp/library/vacm.h
+++ b/include/net-snmp/library/vacm.h
@@ -126,12 +126,15 @@
         struct vacm_viewEntry *next;
     };
 
+    NETSNMP_IMPORT
     void            vacm_destroyViewEntry(const char *, oid *, size_t);
+    NETSNMP_IMPORT
     void            vacm_destroyAllViewEntries(void);
 
 #define VACM_MODE_FIND                0
 #define VACM_MODE_IGNORE_MASK         1
 #define VACM_MODE_CHECK_SUBTREE       2
+    NETSNMP_IMPORT
     struct vacm_viewEntry *vacm_getViewEntry(const char *, oid *, size_t,
                                              int);
     /*
@@ -140,6 +143,7 @@
      * Returns NULL if that entry does not exist.
      */
 
+    NETSNMP_IMPORT
     int vacm_checkSubtree(const char *, oid *, size_t);
 
     /*
@@ -155,6 +159,7 @@
      *                         disallowed portions.
      */
 
+    NETSNMP_IMPORT
     void
                     vacm_scanViewInit(void);
     /*
@@ -164,6 +169,7 @@
      */
 
 
+    NETSNMP_IMPORT
     struct vacm_viewEntry *vacm_scanViewNext(void);
     /*
      * Returns a pointer to the next viewEntry.
@@ -174,6 +180,7 @@
      * view_scanInit() starts the scan over.
      */
 
+    NETSNMP_IMPORT
     struct vacm_viewEntry *vacm_createViewEntry(const char *, oid *,
                                                 size_t);
     /*
@@ -182,22 +189,34 @@
      * The status of this entry is created as invalid.
      */
 
+    NETSNMP_IMPORT
     void            vacm_destroyGroupEntry(int, const char *);
+    NETSNMP_IMPORT
     void            vacm_destroyAllGroupEntries(void);
+    NETSNMP_IMPORT
     struct vacm_groupEntry *vacm_createGroupEntry(int, const char *);
+    NETSNMP_IMPORT
     struct vacm_groupEntry *vacm_getGroupEntry(int, const char *);
+    NETSNMP_IMPORT
     void            vacm_scanGroupInit(void);
+    NETSNMP_IMPORT
     struct vacm_groupEntry *vacm_scanGroupNext(void);
 
+    NETSNMP_IMPORT
     void            vacm_destroyAccessEntry(const char *, const char *,
                                             int, int);
+    NETSNMP_IMPORT
     void            vacm_destroyAllAccessEntries(void);
+    NETSNMP_IMPORT
     struct vacm_accessEntry *vacm_createAccessEntry(const char *,
                                                     const char *, int,
                                                     int);
+    NETSNMP_IMPORT
     struct vacm_accessEntry *vacm_getAccessEntry(const char *,
                                                  const char *, int, int);
+    NETSNMP_IMPORT
     void            vacm_scanAccessInit(void);
+    NETSNMP_IMPORT
     struct vacm_accessEntry *vacm_scanAccessNext(void);
 
     void            vacm_destroySecurityEntry(const char *);
@@ -205,6 +224,7 @@
     struct vacm_securityEntry *vacm_getSecurityEntry(const char *);
     void            vacm_scanSecurityInit(void);
     struct vacm_securityEntry *vacm_scanSecurityEntry(void);
+    NETSNMP_IMPORT
     int             vacm_is_configured(void);
 
     void            vacm_save(const char *token, const char *type);
@@ -217,16 +237,23 @@
     void            vacm_save_group(struct vacm_groupEntry *group_entry,
                                     const char *token, const char *type);
 
-    void            vacm_parse_config_view(const char *token, char *line);
-    void            vacm_parse_config_group(const char *token, char *line);
+    NETSNMP_IMPORT
+    void            vacm_parse_config_view(const char *token, const char *line);
+    NETSNMP_IMPORT
+    void            vacm_parse_config_group(const char *token,
+                                            const char *line);
+    NETSNMP_IMPORT
     void            vacm_parse_config_access(const char *token,
-                                             char *line);
+                                             const char *line);
+    NETSNMP_IMPORT
     void            vacm_parse_config_auth_access(const char *token,
-                                             char *line);
+                                                  const char *line);
 
+    NETSNMP_IMPORT
     int             store_vacm(int majorID, int minorID, void *serverarg,
                                void *clientarg);
 
+    NETSNMP_IMPORT
     struct vacm_viewEntry *netsnmp_view_get(struct vacm_viewEntry *head,
                                             const char *viewName,
                                             oid * viewSubtree,
diff --git a/include/net-snmp/library/winpipe.h b/include/net-snmp/library/winpipe.h
index c1dd93f..90fd723 100644
--- a/include/net-snmp/library/winpipe.h
+++ b/include/net-snmp/library/winpipe.h
@@ -35,6 +35,7 @@
 #ifndef WINPIPE_H
 #define WINPIPE_H
 
+NETSNMP_IMPORT
 int create_winpipe_transport(int *pipefds);
 
 #endif
diff --git a/include/net-snmp/library/winservice.h b/include/net-snmp/library/winservice.h
index 1c4763a..76080d6 100644
--- a/include/net-snmp/library/winservice.h
+++ b/include/net-snmp/library/winservice.h
@@ -95,17 +95,6 @@
   VOID DisplayError (LPCTSTR pszTitle, int quite);
 
   /*
-   * To update windows service status to SCM 
-   */
-  static BOOL UpdateServiceStatus (DWORD dwStatus, DWORD dwErrorCode,
-				   DWORD dwWaitHint);
-
-  /*
-   * To Report current service status to SCM 
-   */
-  static BOOL ReportCurrentServiceStatus (VOID);
-
-  /*
    * Service Main function,  Which will spawn a thread, and calls the
    * Service run part
    */
diff --git a/include/net-snmp/mib_api.h b/include/net-snmp/mib_api.h
index 7068bfb..3b54e83 100644
--- a/include/net-snmp/mib_api.h
+++ b/include/net-snmp/mib_api.h
@@ -12,48 +12,73 @@
 #endif
 
     /* Initialisation and Shutdown */
+    NETSNMP_IMPORT
+    int             add_mibdir(const char *);
+
+    NETSNMP_IMPORT
     void            netsnmp_init_mib(void);
 #ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+    NETSNMP_IMPORT
     void            init_mib(void);
+    NETSNMP_IMPORT
     void            init_mib_internals(void);
 #endif
+    NETSNMP_IMPORT
     void            shutdown_mib(void);
 
      /* Reading and Parsing MIBs */
-    int             add_mibdir(const char *);
     NETSNMP_IMPORT
     struct tree    *netsnmp_read_module(const char *);
 #ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+    NETSNMP_IMPORT
     struct tree    *read_module(const char *);
 #endif
+
+    NETSNMP_IMPORT
     struct tree    *read_mib(const char *);
+    NETSNMP_IMPORT
     struct tree    *read_all_mibs(void);
+
+    NETSNMP_IMPORT
     void            add_module_replacement(const char *, const char *,
                                            const char *, int);
 
          /* from ucd-compat.h */
+    NETSNMP_IMPORT
     void            snmp_set_mib_warnings(int);
+    NETSNMP_IMPORT
     void            snmp_set_mib_errors(int);
+    NETSNMP_IMPORT
     void            snmp_set_save_descriptions(int);
 
 
      /* Searching the MIB Tree */
-    oid            *snmp_parse_oid(const char *, oid *, size_t *);
+    NETSNMP_IMPORT
     int             read_objid(const char *, oid *, size_t *);
+    NETSNMP_IMPORT
+    oid            *snmp_parse_oid(const char *, oid *, size_t *);
+    NETSNMP_IMPORT
     int             get_module_node(const char *, const char *, oid *, size_t *);
 
      /* Output */
+    NETSNMP_IMPORT
     void            print_mib(FILE * fp);
 
+    NETSNMP_IMPORT
     void            print_objid(const oid * objid, size_t objidlen);
+    NETSNMP_IMPORT
     void           fprint_objid(FILE * fp,
                                 const oid * objid, size_t objidlen);
+    NETSNMP_IMPORT
     int           snprint_objid(char *buf, size_t buf_len,
                                 const oid * objid, size_t objidlen);
 
+    NETSNMP_IMPORT
     void            print_description(oid * objid, size_t objidlen, int width);
+    NETSNMP_IMPORT
     void           fprint_description(FILE * fp,
                                 oid * objid, size_t objidlen, int width);
+    NETSNMP_IMPORT
     int           snprint_description(char *buf, size_t buf_len,
                                 oid * objid, size_t objidlen, int width);
 
@@ -62,13 +87,18 @@
 #endif
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/mib_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 
 #include <net-snmp/library/snmp_api.h>
diff --git a/include/net-snmp/net-snmp-config.h.in b/include/net-snmp/net-snmp-config.h.in
index 0ee6052..2a22c00 100644
--- a/include/net-snmp/net-snmp-config.h.in
+++ b/include/net-snmp/net-snmp-config.h.in
@@ -1,6 +1,10 @@
 /* include/net-snmp/net-snmp-config.h.in.  Generated from configure.ac by autoheader.  */
 /* 
  * net-snmp configuration header file
+ *
+ * NOTE: DO NOT EDIT include/net-snmp/net-snmp-config.h.in as your changes
+ *       will be overwritten. This content is in acconfig.h and merged
+ *       into include/net-snmp/net-snmp-config.h.in by autoheader.
  */
 /* Portions of this file are subject to the following copyright(s).  See
  * the Net-SNMP's COPYING file for more details and other copyrights
@@ -95,6 +99,12 @@
 /* Define to 1 if you have the `cgetnext' function. */
 #undef HAVE_CGETNEXT
 
+/* Define to 1 if you have the `chown' function. */
+#undef HAVE_CHOWN
+
+/* Define to 1 if you have the `closedir' function. */
+#undef HAVE_CLOSEDIR
+
 /* Define to 1 if the system has the type `Counter64'. */
 #undef HAVE_COUNTER64
 
@@ -121,6 +131,9 @@
 /* Define to 1 if you have the <dmalloc.h> header file. */
 #undef HAVE_DMALLOC_H
 
+/* Set if the dpkg-query command is available */
+#undef HAVE_DPKG_QUERY
+
 /* Define to 1 if you have the <err.h> header file. */
 #undef HAVE_ERR_H
 
@@ -166,6 +179,9 @@
 /* Define to 1 if you have the `gethostbyname' function. */
 #undef HAVE_GETHOSTBYNAME
 
+/* Define to 1 if you have the `gethostbyname2' function. */
+#undef HAVE_GETHOSTBYNAME2
+
 /* Define to 1 if you have the `gethostname' function. */
 #undef HAVE_GETHOSTNAME
 
@@ -178,6 +194,9 @@
 /* Define to 1 if you have the `getmntent' function. */
 #undef HAVE_GETMNTENT
 
+/* Define to 1 if you have the `getopt' function. */
+#undef HAVE_GETOPT
+
 /* Define to 1 if you have the <getopt.h> header file. */
 #undef HAVE_GETOPT_H
 
@@ -205,6 +224,9 @@
 /* Define to 1 if you have the `if_freenameindex' function. */
 #undef HAVE_IF_FREENAMEINDEX
 
+/* Define to 1 if you have the `if_indextoname' function. */
+#undef HAVE_IF_INDEXTONAME
+
 /* Define to 1 if you have the `if_nameindex' function. */
 #undef HAVE_IF_NAMEINDEX
 
@@ -220,6 +242,12 @@
 /* Define to 1 if you have the <inet/mib2.h> header file. */
 #undef HAVE_INET_MIB2_H
 
+/* Define to 1 if you have the `inet_ntop' function. */
+#undef HAVE_INET_NTOP
+
+/* Define to 1 if you have the `inet_pton' function. */
+#undef HAVE_INET_PTON
+
 /* Define to 1 if you have the `initgroups' function. */
 #undef HAVE_INITGROUPS
 
@@ -244,6 +272,15 @@
 /* Define to 1 if you have the <iphlpapi.h> header file. */
 #undef HAVE_IPHLPAPI_H
 
+/* Set if IP_PKTINFO is usable */
+#undef HAVE_IP_PKTINFO
+
+/* 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
 
@@ -283,6 +320,9 @@
 /* Define to 1 if you have the `mld' library (-lmld). */
 #undef HAVE_LIBMLD
 
+/* Define to 1 if <netlink/netlink.h> provides the libnl3 API */
+#undef HAVE_LIBNL3
+
 /* define if you have libnm */
 #undef HAVE_LIBNM
 
@@ -310,6 +350,9 @@
 /* Define to 1 if you have the `ssl' library (-lssl). */
 #undef HAVE_LIBSSL
 
+/* Define to 1 if your `ssl' library supports DTLS (-lssl). */
+#undef HAVE_LIBSSL_DTLS
+
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
@@ -331,6 +374,9 @@
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
 /* Define to 1 if the system has the type `long long int'. */
 #undef HAVE_LONG_LONG_INT
 
@@ -373,6 +419,9 @@
 /* Define to 1 if you have the <mtab.h> header file. */
 #undef HAVE_MTAB_H
 
+/* Define to 1 if you have the <nbutil.h> header file. */
+#undef HAVE_NBUTIL_H
+
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
@@ -499,6 +548,9 @@
 /* Define to 1 if the system has the type `off64_t'. */
 #undef HAVE_OFF64_T
 
+/* Define to 1 if you have the `opendir' function. */
+#undef HAVE_OPENDIR
+
 /* Define to 1 if you have the <openssl/aes.h> header file. */
 #undef HAVE_OPENSSL_AES_H
 
@@ -637,9 +689,15 @@
 /* Define to 1 if you have the `sighold' function. */
 #undef HAVE_SIGHOLD
 
+/* Define if SIGHUP is defined in <signal.h>. */
+#undef HAVE_SIGHUP
+
 /* Define to 1 if you have the `signal' function. */
 #undef HAVE_SIGNAL
 
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
 /* Define to 1 if you have the `sigset' function. */
 #undef HAVE_SIGSET
 
@@ -814,9 +872,6 @@
 /* Define to 1 if `m_mbufs' is member of `struct mbstat'. */
 #undef HAVE_STRUCT_MBSTAT_M_MBUFS
 
-/* Define to 1 if `msg_control' is member of `struct msghdr'. */
-#undef HAVE_STRUCT_MSGHDR_MSG_CONTROL
-
 /* Define to 1 if `n_value' is member of `struct nlist64'. */
 #undef HAVE_STRUCT_NLIST64_N_VALUE
 
@@ -869,6 +924,9 @@
 /* Define to 1 if `f_files' is member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FILES
 
+/* Define to 1 if `f_flags' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FLAGS
+
 /* Define to 1 if `f_frsize' is member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FRSIZE
 
@@ -887,6 +945,9 @@
 /* Define to 1 if `tcp_rcvmemdrop' is member of `struct tcpstat'. */
 #undef HAVE_STRUCT_TCPSTAT_TCP_RCVMEMDROP
 
+/* Define to 1 if `tz_dsttime' is member of `struct timezone'. */
+#undef HAVE_STRUCT_TIMEZONE_TZ_DSTTIME
+
 /* Define to 1 if `tm_gmtoff' is member of `struct tm'. */
 #undef HAVE_STRUCT_TM_TM_GMTOFF
 
@@ -905,7 +966,7 @@
 /* Define to 1 if `udps_opackets' is member of `struct udpstat'. */
 #undef HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS
 
-/* Define to 1 if `pgswapin' is member of `struct uvmexp'. */
+/* Define to 1 if `pgswapin' is a member of `struct uvmexp'. */
 #undef HAVE_STRUCT_UVMEXP_PGSWAPIN
 
 /* Define to 1 if you have the `sysconf' function. */
@@ -1048,6 +1109,9 @@
 /* Define to 1 if you have the <sys/tcpipstats.h> header file. */
 #undef HAVE_SYS_TCPIPSTATS_H
 
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#undef HAVE_SYS_TIMEB_H
+
 /* Define to 1 if you have the <sys/timeout.h> header file. */
 #undef HAVE_SYS_TIMEOUT_H
 
@@ -1102,6 +1166,9 @@
 /* Define to 1 if you have the `times' function. */
 #undef HAVE_TIMES
 
+/* Define if a timezone variable is declared in <sys/time.h> */
+#undef HAVE_TIMEZONE_VARIABLE
+
 /* Define to 1 if you have the <ufs/ffs/fs.h> header file. */
 #undef HAVE_UFS_FFS_FS_H
 
@@ -1196,6 +1263,9 @@
 /* Define if static inline functions are unsupported */
 #undef NETSNMP_BROKEN_INLINE
 
+/* "Define if crytography support is possible" */
+#undef NETSNMP_CAN_DO_CRYPTO
+
 /* sysctl works to get boottime, etc... */
 #undef NETSNMP_CAN_USE_SYSCTL
 
@@ -1271,6 +1341,9 @@
 /* umask permissions to set up persistent files with */
 #undef NETSNMP_PERSISTENT_MASK
 
+/* Size prefix to use to printf a uint32_t */
+#undef NETSNMP_PRI32
+
 /* Size prefix to use to printf a size_t or ssize_t */
 #undef NETSNMP_PRIz
 
@@ -1284,6 +1357,9 @@
 /* Pattern of temporary files */
 #undef NETSNMP_TEMP_FILE_PATTERN
 
+/* "Define if internal cryptography code should be used" */
+#undef NETSNMP_USE_INTERNAL_CRYPTO
+
 /* define if you are using the MD5 code ... */
 #undef NETSNMP_USE_INTERNAL_MD5
 
@@ -1299,7 +1375,7 @@
 /* Define if you are using the codeS11 library ... */
 #undef NETSNMP_USE_PKCS11
 
-/* Define this if you have lim_sensors v3 or later */
+/* Define this if you have lm_sensors v3 or later */
 #undef NETSNMP_USE_SENSORS_V3
 
 /* Should we compile to use special opaque types: float, double, counter64,
@@ -1359,6 +1435,9 @@
 /* The size of `short', as computed by sizeof. */
 #undef SIZEOF_SHORT
 
+/* The size of `sockaddr_un.sun_path', as computed by sizeof. */
+#undef SIZEOF_SOCKADDR_UN_SUN_PATH
+
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at runtime.
@@ -1516,7 +1595,7 @@
 
 /* If you have openssl 0.9.7 or above, you likely have AES support. */
 #undef NETSNMP_USE_OPENSSL
-#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_OPENSSL_AES_H) && defined(HAVE_AES_CFB128_ENCRYPT)
+#if (defined(NETSNMP_USE_OPENSSL) && defined(HAVE_OPENSSL_AES_H) && defined(HAVE_AES_CFB128_ENCRYPT)) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 #define HAVE_AES 1
 #endif
 
@@ -1732,7 +1811,7 @@
 #ifdef WIN32
 #define NETSNMP_OSTYPE NETSNMP_WIN32ID
 #endif
-#if defined(aix3) || defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix3) || defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
 #define NETSNMP_OSTYPE NETSNMP_AIXID
 #endif
 #if defined(darwin) && (darwin >= 8)
@@ -1859,7 +1938,7 @@
 
 /*  This is defined if support for the TLS transport domain is
     available.   */
-#undef NETSNMP_TRANSPORT_TLS_DOMAIN
+#undef NETSNMP_TRANSPORT_TLSBASE_DOMAIN
 
 /*  This is defined if support for the Alias transport domain is
     available.   */
@@ -1873,9 +1952,16 @@
     available.   */
 #undef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
 
+/*  This is defined if support for the TLS/TCP transport domain is
+    available.   */
+#undef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
 /*  This is defined if support for stdin/out transport domain is available.   */
 #undef NETSNMP_TRANSPORT_STD_DOMAIN
 
+/*  This is defined if support for the IPv4Base transport domain is available.   */
+#undef NETSNMP_TRANSPORT_IPV4BASE_DOMAIN
+
 /* define this if the USM security module is available */
 #undef NETSNMP_SECMOD_USM
 
diff --git a/include/net-snmp/net-snmp-includes.h b/include/net-snmp/net-snmp-includes.h
index 3aea094..cd37407 100644
--- a/include/net-snmp/net-snmp-includes.h
+++ b/include/net-snmp/net-snmp-includes.h
@@ -38,11 +38,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
diff --git a/include/net-snmp/openssl_md5.h b/include/net-snmp/openssl_md5.h
new file mode 100644
index 0000000..1e85f31
--- /dev/null
+++ b/include/net-snmp/openssl_md5.h
@@ -0,0 +1,116 @@
+/* crypto/md5/md5.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_MD5_H
+#define HEADER_MD5_H
+
+#include <stddef.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#ifdef OPENSSL_NO_MD5
+#error MD5 is disabled.
+#endif
+
+/*
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * ! MD5_LONG has to be at least 32 bits wide. If it's wider, then !
+ * ! MD5_LONG_LOG2 has to be defined along.			   !
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+
+#if defined(__LP32__)
+#define MD5_LONG unsigned long
+#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
+#define MD5_LONG unsigned long
+#define MD5_LONG_LOG2 3
+/*
+ * _CRAY note. I could declare short, but I have no idea what impact
+ * does it have on performance on none-T3E machines. I could declare
+ * int, but at least on C90 sizeof(int) can be chosen at compile time.
+ * So I've chosen long...
+ *					<appro@fy.chalmers.se>
+ */
+#else
+#define MD5_LONG unsigned int
+#endif
+
+#define MD5_CBLOCK	64
+#define MD5_LBLOCK	(MD5_CBLOCK/4)
+#define MD5_DIGEST_LENGTH 16
+
+typedef struct MD5state_st
+	{
+	MD5_LONG A,B,C,D;
+	MD5_LONG Nl,Nh;
+	MD5_LONG data[MD5_LBLOCK];
+	unsigned int num;
+	} MD5_CTX;
+
+int MD5_Init(MD5_CTX *c);
+int MD5_Update(MD5_CTX *c, const void *data, size_t len);
+int MD5_Final(unsigned char *md, MD5_CTX *c);
+unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
+void MD5_Transform(MD5_CTX *c, const unsigned char *b);
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/net-snmp/output_api.h b/include/net-snmp/output_api.h
index be2ce0c..3bf3172 100644
--- a/include/net-snmp/output_api.h
+++ b/include/net-snmp/output_api.h
@@ -1,5 +1,5 @@
-#ifndef NET_SNMP_LOGGING_API_H
-#define NET_SNMP_LOGGING_API_H
+#ifndef NET_SNMP_OUTPUT_API_H
+#define NET_SNMP_OUTPUT_API_H
 
     /**
      *  Library API routines concerned with logging and message output
@@ -7,17 +7,145 @@
      */
 
 #include <net-snmp/types.h>
+#include <stdarg.h>	/* for va_list */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    /* Error reporting */
+    NETSNMP_IMPORT
+    void    snmp_error(netsnmp_session *sess, int *clib_errorno,
+                           int *snmp_errorno, char **errstring);
+    NETSNMP_IMPORT
+    void    snmp_sess_error(      void *sess, int *clib_errorno,
+                           int *snmp_errorno, char **errstring);
+
+    NETSNMP_IMPORT
+    const char *snmp_api_errstring(int snmp_errorno);  /*  library errors */
+    NETSNMP_IMPORT
+    const char     *snmp_errstring(int snmp_errorno);  /* protocol errors */
+
+    NETSNMP_IMPORT
+    void    snmp_perror(const char *msg);   /* for parsing errors only */
+
+    NETSNMP_IMPORT
+    void    snmp_sess_perror(const char *msg, netsnmp_session *sess);
+                                       /* for all other SNMP library errors */
+    NETSNMP_IMPORT
+    void    snmp_log_perror(const char *msg);
+                                       /* for system library errors */
+
+    /* Logging messages */
+
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+#define _LOG_ATTR
+#else
+#define _LOG_ATTR   __attribute__ ((__format__ (__printf__, 2, 3)))
+#endif
+
+    NETSNMP_IMPORT
+    int  snmp_log( int priority, const char *format, ...) _LOG_ATTR;
+    NETSNMP_IMPORT
+    int  snmp_vlog(int priority, const char *format, va_list ap);
+    NETSNMP_IMPORT
+    int  snmp_get_do_logging(    void);
+    NETSNMP_IMPORT
+    void netsnmp_logging_restart(void);
+    NETSNMP_IMPORT
+    void snmp_disable_log(       void);
+    NETSNMP_IMPORT
+    void shutdown_snmp_logging(  void);
+
+#undef _LOG_ATTR
+
+    /* Debug messages */
+#ifndef NETSNMP_NO_DEBUGGING
+#include <net-snmp/library/snmp_debug.h>	/* for internal macros */
+#define DEBUGMSG(x)        do {if (_DBG_IF_) {debugmsg x;} }while(0)
+#define DEBUGMSGT(x)       do {if (_DBG_IF_) {__DBGMSGT(x);} }while(0)
+#define DEBUGTRACE         do {if (_DBG_IF_) {__DBGTRACE;} }while(0)
+#define DEBUGTRACETOK(x)   do {if (_DBG_IF_) {__DBGTRACETOK(x);} }while(0)
+#define DEBUGMSGL(x)       do {if (_DBG_IF_) {__DBGMSGL(x);} }while(0)
+#define DEBUGMSGTL(x)      do {if (_DBG_IF_) {__DBGMSGTL(x);} }while(0)
+#define DEBUGMSGOID(x)     do {if (_DBG_IF_) {__DBGMSGOID(x);} }while(0)
+#define DEBUGMSGSUBOID(x)  do {if (_DBG_IF_) {__DBGMSGSUBOID(x);} }while(0)
+#define DEBUGMSGVAR(x)     do {if (_DBG_IF_) {__DBGMSGVAR(x);} }while(0)
+#define DEBUGMSGOIDRANGE(x) do {if (_DBG_IF_) {__DBGMSGOIDRANGE(x);} }while(0)
+#define DEBUGMSGHEX(x)     do {if (_DBG_IF_) {__DBGMSGHEX(x);} }while(0)
+#define DEBUGMSGHEXTLI(x)  do {if (_DBG_IF_) {__DBGMSGHEXTLI(x);} }while(0)
+#define DEBUGINDENTADD(x)  do {if (_DBG_IF_) {__DBGINDENTADD(x);} }while(0)
+#define DEBUGINDENTMORE()  do {if (_DBG_IF_) {__DBGINDENTMORE();} }while(0)
+#define DEBUGINDENTLESS()  do {if (_DBG_IF_) {__DBGINDENTLESS();} }while(0)
+#define DEBUGPRINTINDENT(token) \
+	do {if (_DBG_IF_) {__DBGPRINTINDENT(token);} }while(0)
+#define DEBUGDUMPHEADER(token,x) \
+	do {if (_DBG_IF_) {__DBGDUMPHEADER(token,x);} }while(0)
+#define DEBUGDUMPSECTION(token,x) \
+	do {if (_DBG_IF_) {__DBGDUMPSECTION(token,x);} }while(0)
+#define DEBUGDUMPSETUP(token,buf,len) \
+	do {if (_DBG_IF_) {__DBGDUMPSETUP(token,buf,len);} }while(0)
+#define DEBUGMSG_NC(x)  do { __DBGMSG_NC(x); }while(0)
+#define DEBUGMSGT_NC(x) do { __DBGMSGT_NC(x); }while(0)
+
+#else        /* NETSNMP_NO_DEBUGGING := enable streamlining of the code */
+
+#define DEBUGMSG(x)
+#define DEBUGMSGT(x)
+#define DEBUGTRACE
+#define DEBUGTRACETOK(x)
+#define DEBUGMSGL(x)
+#define DEBUGMSGTL(x)
+#define DEBUGMSGOID(x)
+#define DEBUGMSGSUBOID(x)
+#define DEBUGMSGVAR(x)
+#define DEBUGMSGOIDRANGE(x)
+#define DEBUGMSGHEX(x)
+#define DEBUGIF(x)        if(0)
+#define DEBUGDUMP(t,b,l,p)
+#define DEBUGINDENTMORE()
+#define DEBUGINDENTLESS()
+#define DEBUGINDENTADD(x)
+#define DEBUGMSGHEXTLI(x)
+#define DEBUGPRINTINDENT(token)
+#define DEBUGDUMPHEADER(token,x)
+#define DEBUGDUMPSECTION(token,x)
+#define DEBUGDUMPSETUP(token, buf, len)
+
+#define DEBUGMSG_NC(x)
+#define DEBUGMSGT_NC(x)
+
+#endif    /* NETSNMP_NO_DEBUGGING */
+
+    NETSNMP_IMPORT
+    void            debug_register_tokens(const char *tokens);
+    NETSNMP_IMPORT
+    int             debug_is_token_registered(const char *token);
+    NETSNMP_IMPORT
+    void            snmp_set_do_debugging(int);
+    NETSNMP_IMPORT
+    int             snmp_get_do_debugging(void);
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/output_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 
+#ifdef __cplusplus
+}
+#endif
+
+#include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_client.h>
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/library/snmp_logging.h>
@@ -26,4 +154,4 @@
 #define ERROR_MSG(string)	snmp_set_detail(string)
 #endif
 
-#endif                          /* NET_SNMP_LOGGING_API_H */
+#endif                          /* NET_SNMP_OUTPUT_API_H */
diff --git a/include/net-snmp/pdu_api.h b/include/net-snmp/pdu_api.h
index 87c1011..125595d 100644
--- a/include/net-snmp/pdu_api.h
+++ b/include/net-snmp/pdu_api.h
@@ -11,9 +11,13 @@
 extern          "C" {
 #endif
 
+NETSNMP_IMPORT
 netsnmp_pdu    *snmp_pdu_create(int type);
+NETSNMP_IMPORT
 netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *pdu);
+NETSNMP_IMPORT
 netsnmp_pdu    *snmp_fix_pdu(  netsnmp_pdu *pdu, int idx);
+NETSNMP_IMPORT
 void            snmp_free_pdu( netsnmp_pdu *pdu);
 
 #ifdef __cplusplus
@@ -21,13 +25,18 @@
 #endif
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/pdu_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 
 #include <net-snmp/library/snmp_api.h>
diff --git a/include/net-snmp/session_api.h b/include/net-snmp/session_api.h
index 907b7b9..88dbc41 100644
--- a/include/net-snmp/session_api.h
+++ b/include/net-snmp/session_api.h
@@ -12,6 +12,7 @@
 extern          "C" {
 #endif
 
+    NETSNMP_IMPORT
     void            snmp_sess_init(netsnmp_session *);
 
     /*
@@ -24,6 +25,7 @@
      * the pointer passed to snmp_open()).  On any error, NULL is returned
      * and snmp_errno is set to the appropriate error code.
      */
+    NETSNMP_IMPORT
     netsnmp_session *snmp_open(netsnmp_session *);
 
     /*
@@ -36,7 +38,9 @@
      *
      * snmp_close_sessions() does the same thing for all open sessions
      */
+    NETSNMP_IMPORT
     int             snmp_close(netsnmp_session *);
+    NETSNMP_IMPORT
     int             snmp_close_sessions(void);
 
 
@@ -53,6 +57,7 @@
      * On any error, 0 is returned.
      * The pdu is freed by snmp_send() unless a failure occured.
      */
+    NETSNMP_IMPORT
     int             snmp_send(netsnmp_session *, netsnmp_pdu *);
 
     /*
@@ -71,6 +76,7 @@
      * On any error, 0 is returned.
      * The pdu is freed by snmp_send() unless a failure occured.
      */
+    NETSNMP_IMPORT
     int             snmp_async_send(netsnmp_session *, netsnmp_pdu *,
                                     netsnmp_callback, void *);
 
@@ -85,6 +91,7 @@
      * is passed to the callback routine for that session.  If the callback
      * routine returns successfully, the pdu and it's request are deleted.
      */
+    NETSNMP_IMPORT
     void            snmp_read(fd_set *);
 
     /*
@@ -92,9 +99,11 @@
      * large file descriptor set instead of a pointer to a regular file
      * descriptor set.
      */
+    NETSNMP_IMPORT
     void            snmp_read2(netsnmp_large_fd_set *);
 
 
+    NETSNMP_IMPORT
     int             snmp_synch_response(netsnmp_session *, netsnmp_pdu *,
                                         netsnmp_pdu **);
 
@@ -125,6 +134,7 @@
      * snmp_select_info returns the number of open sockets.  (i.e. The number
      * of sessions open)
      */
+    NETSNMP_IMPORT
     int             snmp_select_info(int *, fd_set *, struct timeval *,
                                      int *);
 
@@ -133,9 +143,18 @@
      * pointer to a large file descriptor set instead of a pointer to a
      * regular file descriptor set.
      */
+    NETSNMP_IMPORT
     int             snmp_select_info2(int *, netsnmp_large_fd_set *,
                                       struct timeval *, int *);
 
+#define NETSNMP_SELECT_NOFLAGS  0x00
+#define NETSNMP_SELECT_NOALARMS 0x01
+    NETSNMP_IMPORT
+    int             snmp_sess_select_info_flags(void *, int *, fd_set *,
+                                                struct timeval *, int *, int);
+    int             snmp_sess_select_info2_flags(void *, int *,
+                                                 netsnmp_large_fd_set *,
+                                                 struct timeval *, int *, int);
 
     /*
      * void snmp_timeout();
@@ -149,16 +168,10 @@
      * callback for the session is used to alert the user of the timeout.
      */
 
+    NETSNMP_IMPORT
     void            snmp_timeout(void);
 
     /*
-     * snmp_error - return error data
-     * Inputs :  address of errno, address of snmp_errno, address of string
-     * Caller must free the string returned after use.
-     */
-    void            snmp_error(netsnmp_session *, int *, int *, char **);
-
-    /*
      * single session API.
      *
      * These functions perform similar actions as snmp_XX functions,
@@ -196,8 +209,11 @@
      *  4. Replace snmp_send(ss,pdu) with snmp_sess_send(sessp,pdu)
      */
 
+    NETSNMP_IMPORT
     void           *snmp_sess_open(netsnmp_session *);
+    NETSNMP_IMPORT
     void           *snmp_sess_pointer(netsnmp_session *);
+    NETSNMP_IMPORT
     netsnmp_session *snmp_sess_session(void *);
     NETSNMP_IMPORT
     netsnmp_session *snmp_sess_session_lookup(void *);
@@ -207,27 +223,36 @@
      * use return value from snmp_sess_open as void * parameter 
      */
 
+    NETSNMP_IMPORT
     int             snmp_sess_send(void *, netsnmp_pdu *);
+    NETSNMP_IMPORT
     int             snmp_sess_async_send(void *, netsnmp_pdu *,
                                          netsnmp_callback, void *);
+    NETSNMP_IMPORT
     int             snmp_sess_select_info(void *, int *, fd_set *,
                                           struct timeval *, int *);
+    NETSNMP_IMPORT
     int             snmp_sess_select_info2(void *, int *,
 					   netsnmp_large_fd_set *,
                                            struct timeval *, int *);
     /*
      * Returns 0 if success, -1 if fail.
      */
+    NETSNMP_IMPORT
     int             snmp_sess_read(void *, fd_set *);
     /*
      * Similar to snmp_sess_read(), but accepts a pointer to a large file
      * descriptor set instead of a pointer to a file descriptor set.
      */
+    NETSNMP_IMPORT
     int             snmp_sess_read2(void *,
                                     netsnmp_large_fd_set *);
+    NETSNMP_IMPORT
     void            snmp_sess_timeout(void *);
+    NETSNMP_IMPORT
     int             snmp_sess_close(void *);
 
+    NETSNMP_IMPORT
     int             snmp_sess_synch_response(void *, netsnmp_pdu *,
                                              netsnmp_pdu **);
 
@@ -237,13 +262,18 @@
 
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/session_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 
 #include <net-snmp/library/snmp_api.h>
diff --git a/include/net-snmp/system/cygwin.h b/include/net-snmp/system/cygwin.h
index 14ae8ae..a9b76fb 100644
--- a/include/net-snmp/system/cygwin.h
+++ b/include/net-snmp/system/cygwin.h
@@ -7,7 +7,6 @@
 #include <stdint.h>	/* uint32_t */
 #endif
 
-#undef HAVE_WINSOCK_H
 #undef bsdlike
 #undef MBSTAT_SYMBOL
 #undef TOTAL_MEMORY_SYMBOL
diff --git a/include/net-snmp/system/darwin.h b/include/net-snmp/system/darwin.h
index 6750cf1..6eaf09f 100644
--- a/include/net-snmp/system/darwin.h
+++ b/include/net-snmp/system/darwin.h
@@ -5,3 +5,9 @@
  * At least, as of 5.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
new file mode 100644
index 0000000..2333015
--- /dev/null
+++ b/include/net-snmp/system/darwin10.h
@@ -0,0 +1,161 @@
+/*
+ * 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 10
+#ifndef darwin10
+#   define darwin10 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_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
+
+/*
+ * 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.
+ */
+#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/darwin11.h b/include/net-snmp/system/darwin11.h
new file mode 100644
index 0000000..24fed93
--- /dev/null
+++ b/include/net-snmp/system/darwin11.h
@@ -0,0 +1,161 @@
+/*
+ * 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 11
+#ifndef darwin11
+#   define darwin11 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_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
+
+/*
+ * 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.
+ */
+#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/darwin12.h b/include/net-snmp/system/darwin12.h
new file mode 100644
index 0000000..fd66147
--- /dev/null
+++ b/include/net-snmp/system/darwin12.h
@@ -0,0 +1,161 @@
+/*
+ * 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 12
+#ifndef darwin12
+#   define darwin12 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_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
+
+/*
+ * 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.
+ */
+#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 b1553de..f8f521e 100644
--- a/include/net-snmp/system/darwin7.h
+++ b/include/net-snmp/system/darwin7.h
@@ -12,3 +12,9 @@
 
 #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 174fa78..c38283e 100644
--- a/include/net-snmp/system/darwin8.h
+++ b/include/net-snmp/system/darwin8.h
@@ -99,3 +99,9 @@
  */
 /* #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 b556d90..bcbd067 100644
--- a/include/net-snmp/system/darwin9.h
+++ b/include/net-snmp/system/darwin9.h
@@ -153,3 +153,9 @@
 #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/mingw32.h b/include/net-snmp/system/mingw32.h
index 29d09a4..68a3a76 100644
--- a/include/net-snmp/system/mingw32.h
+++ b/include/net-snmp/system/mingw32.h
@@ -16,6 +16,15 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  
  */
+
+/*
+ * Make the getnameinfo() function available.
+ * Note: according to MSDN getnameinfo() is available in ws2_32 on Windows 2000
+ * and above. MinGW only makes getnameinfo() visible when setting _WIN32_WINNT
+ * to 0x0501 (Windows XP) or higher, which is a bug in the MinGW 5.1.6 headers.
+ */
+#define _WIN32_WINNT 0x0501
+
 #include <net-snmp/system/generic.h>
 
 #ifdef HAVE_STDINT_H
@@ -30,10 +39,7 @@
 #undef HAVE_SIGNAL
 
 /* Define if you have the gettimeofday function.  */
-/* Only when compiling Perl module                */
-#ifdef MINGW_PERL
 #define HAVE_GETTIMEOFDAY 1
-#endif
 
 /* Define if you have the gethostbyname function.  */
 #define HAVE_GETHOSTBYNAME 1
@@ -44,6 +50,9 @@
 /* Define if you have raise() instead of alarm() */
 #define HAVE_RAISE 1
 
+/* Define if you have the socket function.  */
+#define HAVE_SOCKET 1
+
 /* Define to 1 if you have the `execv' function. */
 #undef HAVE_EXECV
 
@@ -72,15 +81,13 @@
 #define	F_SETFL		4
 #define	O_NONBLOCK	0x4000  /* non blocking I/O (POSIX style) */
 
+#ifndef HAVE_STRUCT_TIMEZONE_TZ_DSTTIME
 /*
- * I dunno why. It's just not there. Define struct timezone.
- * If other systems need this it could be moved to system.h
- * and the proper checking done at config time. Right now I have
- * just put it here to keep the MinGW out of the main tree as much
- * as possible.
+ * Older MinGW versions do not have struct timezone, so define it here.
  */
 struct timezone {
 	int tz_minuteswest;
 	int tz_dsttime;
 };
+#endif
 
diff --git a/include/net-snmp/system/netbsd.h b/include/net-snmp/system/netbsd.h
index c67260d..1f22a44 100644
--- a/include/net-snmp/system/netbsd.h
+++ b/include/net-snmp/system/netbsd.h
@@ -34,8 +34,36 @@
 
 #define UDP_ADDRESSES_IN_HOST_ORDER 1
 
+#ifdef netbsdelf6
+#define netbsd6
+#define netbsdelf5
+#endif
+#ifdef netbsdelf5
+#define netbsd5
+#define netbsdelf4
+#endif
+#ifdef netbsdelf4
+#define netbsd4
+#define netbsdelf3
+#endif
+#ifdef netbsdelf3
+#define netbsd3
+#endif
+
+#if defined(netbsd6) && !defined(netbsd5)
+#define netbsd5 netbsd5
+#endif
+#if defined(netbsd5) && !defined(netbsd4)
+#define netbsd4 netbsd4
+#endif
+#if defined(netbsd4) && !defined(netbsd3)
+#define netbsd3 netbsd3
+#endif
+#if defined(netbsd3) && !defined(netbsd2)
+#define netbsd2 netbsd2
+#endif
 #ifndef netbsd1
-# define netbsd1 netbsd1
+#define netbsd1 netbsd1
 #endif
 
 #if __NetBSD_Version__ >= 499005800
diff --git a/include/net-snmp/system/nto-qnx6.h b/include/net-snmp/system/nto-qnx6.h
new file mode 100644
index 0000000..1965111
--- /dev/null
+++ b/include/net-snmp/system/nto-qnx6.h
@@ -0,0 +1,35 @@
+#include "bsd.h"
+
+#include <sys/param.h>
+
+#define PCB_TABLE 1
+#undef TCP_SYMBOL
+#define TCP_SYMBOL "tcbtable"
+#undef TCP_TTL_SYMBOL
+#define TCP_TTL_SYMBOL "ip_defttl"
+#undef UDB_SYMBOL
+#define UDB_SYMBOL "udbtable"
+#undef NPROC_SYMBOL
+#undef PROC_SYMBOL
+
+#define MBPOOL_SYMBOL	"mbpool"
+#define MCLPOOL_SYMBOL	"mclpool"
+
+/*
+ * inp_next symbol 
+ */
+#undef INP_NEXT_SYMBOL
+#define INP_NEXT_SYMBOL inp_queue.cqe_next
+#undef INP_PREV_SYMBOL
+#define INP_PREV_SYMBOL inp_queue.cqe_prev
+#define HAVE_INPCBTABLE 1
+
+#undef IFADDR_SYMBOL
+#define IFADDR_SYMBOL "in_ifaddrhead"
+
+#define UTMP_FILE _PATH_UTMP
+
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+
+/* define the extra mib modules that are supported */
+/* #define NETSNMP_INCLUDE_HOST_RESOURCES */
diff --git a/include/net-snmp/types.h b/include/net-snmp/types.h
index 2930cc4..1862e99 100644
--- a/include/net-snmp/types.h
+++ b/include/net-snmp/types.h
@@ -15,11 +15,7 @@
                          * For 'timeval' 
                          */
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -62,22 +58,12 @@
 #include <netinet/in.h>		/* For definition of in_addr_t */
 #endif
 
+#include <net-snmp/library/oid.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef MAX_SUBID               /* temporary - duplicate definition protection */
-#ifndef EIGHTBIT_SUBIDS
-typedef u_long  oid;
-#define MAX_SUBID   0xFFFFFFFFUL
-#define NETSNMP_PRIo "l"
-#else
-typedef u_char  oid;
-#define MAX_SUBID   0xFF
-#define NETSNMP_PRIo ""
-#endif
-#endif
-
 #ifndef HAVE_SOCKLEN_T
 typedef u_int socklen_t;
 #endif
@@ -281,6 +267,9 @@
                                           netsnmp_pdu *, void *);
 typedef int     (*netsnmp_callback) (int, netsnmp_session *, int,
                                           netsnmp_pdu *, void *);
+
+struct netsnmp_container_s;
+
 /** @struct snmp_session
  * The snmp session structure.
  */
@@ -400,6 +389,11 @@
     void           *securityInfo;
 
     /**
+     * transport specific configuration 
+     */
+   struct netsnmp_container_s *transport_configuration;
+
+    /**
      * use as you want data 
      *
      *     used by 'SNMP_FLAGS_RESP_CALLBACK' handling in the agent
diff --git a/include/net-snmp/varbind_api.h b/include/net-snmp/varbind_api.h
index 924977e..7f48503 100644
--- a/include/net-snmp/varbind_api.h
+++ b/include/net-snmp/varbind_api.h
@@ -12,54 +12,72 @@
 #endif
 
     /* Creation */
+    NETSNMP_IMPORT
     netsnmp_variable_list *
        snmp_pdu_add_variable(netsnmp_pdu *pdu,
                                  const oid * name, size_t name_length,
                                  u_char type,
                                  const void * value, size_t len);
+    NETSNMP_IMPORT
     netsnmp_variable_list *
        snmp_varlist_add_variable(netsnmp_variable_list ** varlist,
                                  const oid * name, size_t name_length,
                                  u_char type,
                                  const void * value, size_t len);
+    NETSNMP_IMPORT
     netsnmp_variable_list *
        snmp_add_null_var(netsnmp_pdu *pdu,
                                  const oid * name, size_t name_length);
+    NETSNMP_IMPORT
     netsnmp_variable_list *
        snmp_clone_varbind(netsnmp_variable_list * varlist);
 
     /* Setting Values */
-    int             snmp_set_var_value(netsnmp_variable_list * var,
-                                       const void * value, size_t len);
+    NETSNMP_IMPORT
     int             snmp_set_var_objid(netsnmp_variable_list * var,
                                        const oid * name, size_t name_length);
+    NETSNMP_IMPORT
+    int             snmp_set_var_value(netsnmp_variable_list * var,
+                                       const void * value, size_t len);
+    NETSNMP_IMPORT
     int             snmp_set_var_typed_value(netsnmp_variable_list * var,
                                        u_char type,
                                        const void * value, size_t len);
+    NETSNMP_IMPORT
     int             snmp_set_var_typed_integer(netsnmp_variable_list * var,
                                        u_char type, long val);
 
      /* Output */
+    NETSNMP_IMPORT
     void            print_variable(const oid * objid, size_t objidlen,
                                    const netsnmp_variable_list * variable);
+    NETSNMP_IMPORT
     void           fprint_variable(FILE * fp,
                                    const oid * objid, size_t objidlen,
                                    const netsnmp_variable_list * variable);
+    NETSNMP_IMPORT
     int           snprint_variable(char *buf, size_t buf_len,
                                    const oid * objid, size_t objidlen,
                                    const netsnmp_variable_list * variable);
 
+    NETSNMP_IMPORT
     void             print_value(const oid * objid, size_t objidlen,
                                  const netsnmp_variable_list * variable);
+    NETSNMP_IMPORT
     void            fprint_value(FILE * fp,
                                  const oid * objid, size_t objidlen,
                                  const netsnmp_variable_list * variable);
+    NETSNMP_IMPORT
     int            snprint_value(char *buf, size_t buf_len,
                                  const oid * objid, size_t objidlen,
                                  const netsnmp_variable_list * variable);
 
+           /* See mib_api.h for {,f,sn}print_objid */
+
     /* Deletion */
+    NETSNMP_IMPORT
     void            snmp_free_var(    netsnmp_variable_list *var);     /* frees just this one */
+    NETSNMP_IMPORT
     void            snmp_free_varbind(netsnmp_variable_list *varlist); /* frees all in list */
 
 #ifdef __cplusplus
@@ -67,13 +85,18 @@
 #endif
 
     /*
-     *  For the initial release, this will just refer to the
-     *  relevant UCD header files.
-     *    In due course, the routines relevant to this area of the
-     *  API will be identified, and listed here directly.
+     *    Having extracted the main ("public API") calls relevant
+     *  to this area of the Net-SNMP project, the next step is to
+     *  identify the related "public internal API" routines.
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     *    In due course, these should probably be gathered
+     *  together into a companion 'library/varbind_api.h' header file.
+     *  [Or some suitable name]
+     *
+     *    But for the time being, the expectation is that the
+     *  traditional headers that provided the above definitions
+     *  will probably also cover the relevant internal API calls.
+     *  Hence they are listed here:
      */
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_client.h>
diff --git a/include/net-snmp/version.h b/include/net-snmp/version.h
index 17b2e45..1c36ffe 100644
--- a/include/net-snmp/version.h
+++ b/include/net-snmp/version.h
@@ -9,6 +9,7 @@
     extern const char *NetSnmpVersionInfo;
 #endif
 
+    NETSNMP_IMPORT
     const char     *netsnmp_get_version(void);
 
 #ifdef __cplusplus
diff --git a/local/Makefile.in b/local/Makefile.in
index 6d5cbe0..df81db0 100644
--- a/local/Makefile.in
+++ b/local/Makefile.in
@@ -16,10 +16,11 @@
 #
 SNMPCONFPATH=@SNMPCONFPATH@
 PERSISTENT_DIRECTORY=@PERSISTENT_DIRECTORY@
-PERLSCRIPTS=snmpcheck tkmib mib2c fixproc ipf-mod.pl snmpconf traptoemail
+PERLSCRIPTS=snmpcheck tkmib mib2c fixproc ipf-mod.pl snmpconf traptoemail snmp-bridge-mib net-snmp-cert
 SHELLSCRIPTS=mib2c-update
 SCRIPTSMADEFORPERL=snmpcheck.made tkmib.made mib2c.made fixproc.made \
-	ipf-mod.pl.made snmpconf.made traptoemail.made
+	ipf-mod.pl.made snmpconf.made traptoemail.made snmp-bridge-mib.made \
+	net-snmp-cert.made
 DATASRCS=mib2c.conf mib2c.iterate.conf mib2c.iterate_access.conf \
 	mib2c.create-dataset.conf mib2c.mfd.conf \
 	mib2c.array-user.conf mib2c.column_enums.conf \
@@ -107,6 +108,13 @@
 	  touch mib2c.made; \
         fi
 
+net-snmp-cert.made: $(srcdir)/net-snmp-cert
+	if test "x$(PERL)" != "x" ; then \
+	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%;s#/usr/local/share/snmp#$(snmplibdir)#;' ${srcdir}/net-snmp-cert > net-snmp-cert.made; \
+	else \
+	  touch net-snmp-cert.made; \
+        fi
+
 
 ipf-mod.pl.made: $(srcdir)/ipf-mod.pl
 	if test "x$(PERL)" != "x" ; then \
@@ -136,6 +144,13 @@
 	  touch traptoemail.made; \
         fi
 
+snmp-bridge-mib.made: $(srcdir)/snmp-bridge-mib
+	if test "x$(PERL)" != "x" ; then \
+	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%' ${srcdir}/snmp-bridge-mib > snmp-bridge-mib.made; \
+	else \
+	  touch snmp-bridge-mib.made; \
+        fi
+
 localinstall: $(SCRIPTSMADEFORPERL)
 	@if test "x$(PERL)" != "x" ; then \
 	  for i in $(PERLSCRIPTS) ; do $(INSTALL) $$i.made $(INSTALL_PREFIX)$(bindir)/$$i ; echo "install:  installed $$i in $(INSTALL_PREFIX)$(bindir)" ; done ; \
diff --git a/local/Version-Munge.pl b/local/Version-Munge.pl
index 249cfec..7f6f29c 100755
--- a/local/Version-Munge.pl
+++ b/local/Version-Munge.pl
@@ -71,7 +71,7 @@
 	     { type => 'configure',
 	       expr => 'AC_INIT\\(\\[Net-SNMP\\], \\[([^\\]]+)\\]',
 	       repl => 'AC_INIT([Net-SNMP], [$VERSION]',
-	       files => [qw(configure.in)],
+	       files => [qw(configure.ac)],
 	       exec => 'autoconf',
 	       exfiles => [qw(configure)],
 	     },
diff --git a/local/certgen-test.pl b/local/certgen-test.pl
new file mode 100644
index 0000000..b335428
--- /dev/null
+++ b/local/certgen-test.pl
@@ -0,0 +1,66 @@
+#!/usr/bin/perl
+
+system("rm -rf /tmp/.snmp1");
+system("rm -rf /tmp/.snmp2");
+
+system("cp net-snmp-cert ~/bin");
+
+$str = "\ngenca (in -C /tmp/.snmp1) : ca-snmp\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert genca -I -C /tmp/.snmp1 --cn ca-snmp --email ca\@ca.com --host host.a.b.com  --san DNS:ca.a.b.com --san EMAIL:ca\@ca.com");
+
+print "\nusing -C /tmp/.snmp2 for all following tests\n";
+$str = "\ngenca: ca-snmp\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert genca -I -C /tmp/.snmp2 --cn ca-snmp --email ca\@ca.com --host host.a.b.com  --san DNS:ca.a.b.com --san EMAIL:ca\@ca.com");
+
+$str = "\ngenca: ca-snmp-2 (signed w/ ca-snmp)\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert genca -I -C /tmp/.snmp2 --with-ca ca-snmp --cn ca-snmp-2 --email ca2\@ca.com --host host2.a.b.com  --san DNS:ca2.a.b.com --san EMAIL:ca2\@ca.com");
+
+$str = "\ngencsr: snmpapp\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert gencsr -I -C /tmp/.snmp2 -t snmpapp --cn 'admin' --email admin@net-snmp.org --host admin-host.net-snmp.org  --san EMAIL:a\@b.com --san IP:1.2.3.4 --san DNS:admin.a.b.org");
+
+$str = "\nsigncsr: snmpapp w/ca-snmp\n\n";
+print("$str");
+die("died: $str\n") if system("net-snmp-cert signcsr -I -C /tmp/.snmp2 --with-ca ca-snmp --csr snmpapp  --install");
+
+$str = "\nsigncsr: snmpapp w/ca-snmp-2\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert signcsr -I -C /tmp/.snmp2 --with-ca ca-snmp-2 --csr snmpapp --san EMAIL:noinstall\@b.com --san IP:5.6.7.8");
+
+$str = "\ngencert: snmptrapd (self-signed)\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert gencert -I -C /tmp/.snmp2 -t snmptrapd --cn 'NOC' --email 'noc\@net-snmp.org' --host noc-host.net-snmp.org  --san DNS:noc.a.b.org --san 'EMAIL:noc\@net-snmp.org'");
+
+$str = "\ngencert: snmpd (signed w/ ca-snmp-2)\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert gencert -I -C /tmp/.snmp2 -t snmpd --with-ca ca-snmp-2 --email snmpd\@net-snmp.org --host snmpd-host.net-snmp.org  --san DNS:snmpd.a.b.org --san EMAIL:snmpd\@net-snmp.org");
+
+system("cp net-snmp-cert.conf /tmp/.snmp2");
+
+$str = "\ngenca (in -C /tmp/.snmp2 -i CA-identity)\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert genca -I -C /tmp/.snmp2 -i CA-identity");
+
+$str = "\ngencert (in -C /tmp/.snmp2 -i nocadm -t snmp-identity)\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert gencert -I -C /tmp/.snmp2 -t snmp-identity -i nocadm --with-ca CA-identity");
+
+
+$str = "\nshow CAs\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert -C /tmp/.snmp2 showca --issuer --subject");
+
+$str = "show Certs\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert -C /tmp/.snmp2 showcert --issuer --subject");
+
+$str = "show CAs fingerprint\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert -C /tmp/.snmp2 showca --fingerprint --brief");
+
+$str = "\nshow Certs fingerprint\n\n";
+print("$str");
+die("$str\n") if system("net-snmp-cert -C /tmp/.snmp2 showcert --fingerprint --brief");
diff --git a/local/mib2c b/local/mib2c
index 5fa5cc9..2016f06 100755
--- a/local/mib2c
+++ b/local/mib2c
@@ -51,6 +51,7 @@
 $quiet=0;
 $strict_unk_token = 0;
 $noindent = 0;
+$nosed = 0;
 $currentline = 0;
 $currentlevel = -1;
 %assignments;
@@ -73,6 +74,7 @@
     print "  -d\t\tdebugging output (don't do it.  trust me.)\n\n";
     print "  -S VAR=VAL\tSet \$VAR variable to \$VAL\n\n";
     print "  -i\t\tDon't run indent on the resulting code\n\n";
+    print "  -s\t\tDon't look for mibNode.sed and run sed on the resulting code\n\n";
     print "  mibNode\tThe name of the top level mib node you want to\n\t\tgenerate code for.  By default, the code will be stored in\n\t\tmibNode.c and mibNode.h (use the -f flag to change this)\n\n";
     1;
 }	
@@ -99,6 +101,8 @@
         $quiet = 1;
       } elsif (/^-i/) {
         $noindent = 1;
+      } elsif (/^-s/) {
+        $nosed = 1;
       } elsif (/^-h/) {
         usage && exit(1);
       } elsif (/^-f/) {
@@ -231,6 +235,15 @@
 process("-balanced");
 $fh->close;
 
+if (-f "$outputName.sed" && !$nosed) {
+  foreach $i (keys(%written)) {
+    next if ($i eq "-");
+    next if (!($i =~ /\.[ch]$/));
+    print STDERR "running sed --in-place=.orig --file=$outputName.sed $i\n" if (!$quiet);
+    system("sed --in-place=.orig --file=$outputName.sed $i");
+  }
+}
+
 if (!$noindent) {
   foreach $i (keys(%written)) {
     next if ($i eq "-");
@@ -290,9 +303,11 @@
 #   $var.creatable     -- 1 if a column object can be created as part of a new row, 0 if not
 #   $var.noaccess      -- 1 if not-accessible, 0 if not
 #   $var.accessible    -- 1 if accessible, 0 if not
+#   $var.storagetype   -- 1 if an object is a StorageType object, 0 if not
 #   $var.rowstatus     -- 1 if an object is a RowStatus object, 0 if not
-#     'settable', 'creatable' and 'rowstatus' can also be used with table variables
-#     to indicate whether it contains writable, creatable or RowStatus column objects
+#     'settable', 'creatable', 'lastchange', 'storagetype' and 'rowstatus' can
+#     also be used with table variables to indicate whether it contains
+#     writable, creatable, LastChange, StorageType or RowStatus column objects
 #
 #   $var.hasdefval     -- returns 1 if var has a DEFVAL clause
 #   $var.defval        -- node's DEFVAL
@@ -347,6 +362,7 @@
     $it =~ s/\$(\w+)\.(enums)/(%{$SNMP::MIB{$vars{$1}}{'enums'}} == 0) ? 0 : 1/eg;
     $it =~ s/\$(\w+)\.(enumrange)/%{$SNMP::MIB{$vars{$1}}{'enums'}}/eg;
     $it =~ s/\$(\w+)\.(rowstatus)/(($SNMP::MIB{$vars{$1}}{syntax} =~ \/(RowStatus)\/)?1:0)/eg;
+    $it =~ s/\$(\w+)\.(storagetype)/(($SNMP::MIB{$vars{$1}}{syntax} =~ \/(StorageType)\/)?1:0)/eg;
     if ( $it =~ /\$(\w+)\.(\w+)/ ) {
       warn "Possible unknown variable attribute \$$1.$2 at $currentfile:$currentline\n";
     }
diff --git a/local/mib2c-conf.d/mfd-interface.m2c b/local/mib2c-conf.d/mfd-interface.m2c
index a7d1892..42351c9 100644
--- a/local/mib2c-conf.d/mfd-interface.m2c
+++ b/local/mib2c-conf.d/mfd-interface.m2c
@@ -252,7 +252,7 @@
                              0);
 
     /*  Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     tbl_info->min_column = $context.uc_MIN_COL;
     tbl_info->max_column = $context.uc_MAX_COL;
 
@@ -605,7 +605,7 @@
                              netsnmp_agent_request_info *agtreq_info,
                              netsnmp_request_info *requests)
 {
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     int rc, packet_rc;
 
@@ -779,7 +779,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc = SNMP_ERR_NOERROR;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_object_lookup","called\n"));
@@ -944,7 +944,7 @@
                          netsnmp_agent_request_info *agtreq_info,
                          netsnmp_request_info *requests)
 {
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info * tri;
     u_char                     * old_string;
@@ -1100,7 +1100,7 @@
                          netsnmp_agent_request_info *agtreq_info,
                          netsnmp_request_info *requests)
 {
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info * tri;
     int                          rc;
@@ -1147,7 +1147,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_check_dependencies","called\n"));
 
@@ -1217,7 +1217,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_undo_setup","called\n"));
@@ -1281,7 +1281,7 @@
                              netsnmp_agent_request_info *agtreq_info,
                              netsnmp_request_info *requests)
 {
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     int rc;
 
@@ -1369,7 +1369,7 @@
                          netsnmp_agent_request_info *agtreq_info,
                          netsnmp_request_info *requests)
 {
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info * tri;
     int                          rc = SNMP_ERR_NOERROR;
@@ -1415,7 +1415,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_commit","called\n"));
@@ -1448,7 +1448,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
 
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_undo_commit","called\n"));
@@ -1529,7 +1529,7 @@
                          netsnmp_request_info *requests)
 {
     int                    rc;
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     netsnmp_table_request_info * tri;
 
@@ -1586,7 +1586,7 @@
 @   if $m2c_irreversible_commit == 1@
     int                    rc;
 @   end@
-    ${context}_rowreq_ctx *rowreq_ctx =
+    ${context}_rowreq_ctx *rowreq_ctx = (${context}_rowreq_ctx*)
                   netsnmp_container_table_row_extract(requests);
     
     DEBUGMSGTL(("internal:${context}:_mfd_${context}_irreversible:commit","called\n"));
@@ -1667,7 +1667,7 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx = CONTAINER_FIND(${context}_if_ctx.container, &oid_idx);
+    rowreq_ctx = (${context}_rowreq_ctx*)CONTAINER_FIND(${context}_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
diff --git a/local/mib2c-conf.d/mfd-persistence.m2i b/local/mib2c-conf.d/mfd-persistence.m2i
index c9b152f..7796cf2 100644
--- a/local/mib2c-conf.d/mfd-persistence.m2i
+++ b/local/mib2c-conf.d/mfd-persistence.m2i
@@ -162,7 +162,7 @@
      * be treated a little differently. Specifically, you will need
      * (4 * len) + 4 [3 ASCII chars per byte + 1 for ., + 4 for len].
      *
-     * 3) Also, remeber to add space for the identifier and seperator
+     * 3) Also, remember to add space for the identifier and separator
      * characters (for example, each column is prefixed by the
      * column number and a semicolon. To allow for the maximum
      * column values, 12 bytes [11 for oid + 1 for ':'] per
diff --git a/local/mib2c-update b/local/mib2c-update
index 223ec63..42017e5 100755
--- a/local/mib2c-update
+++ b/local/mib2c-update
@@ -39,7 +39,7 @@
 
 error()
 {
-    echo "ERROR: $@" >2
+    echo "ERROR: $@" >&2
 }
 
 die()
@@ -308,8 +308,16 @@
     . $HOME/.mib2c-updaterc
 fi
 
-if [ -f .mib2c-updaterc ]; then
-    . .mib2c-updaterc
+if [ -f $PWD/.mib2c-updaterc ]; then
+    . $PWD/.mib2c-updaterc
+else
+   echo "creating example .mib2c-udpaterc. edit as needed and re-run "
+   echo "mib2c-update."
+   
+   echo "UPDATE_OID=ipAddressTable" >> .mib2c-updaterc
+   echo "UPDATE_CONF=mib2c.mfd.conf" >> .mib2c-updaterc
+   echo "UPDATE_MIB2C_OPTS=" >> .mib2c-updaterc
+   echo "#UPDATE_NOPROBE=1" >> .mib2c-updaterc
 fi
 
 check_setup
diff --git a/local/mib2c.access_functions.conf b/local/mib2c.access_functions.conf
index c209b29..9d54f14 100644
--- a/local/mib2c.access_functions.conf
+++ b/local/mib2c.access_functions.conf
@@ -116,7 +116,7 @@
 
 /** Create a data_context for non-existent rows that SETs are performed on.
  *  return a void * pointer which will be passed to subsequent get_XXX
- *  and set_XXX functions for data retrival and modification during
+ *  and set_XXX functions for data retrieval and modification during
  *  this SET request.
  *
  *  The indexes are encoded (in order) into the index_data pointer,
diff --git a/local/mib2c.conf b/local/mib2c.conf
index 329e71e..c71968c 100644
--- a/local/mib2c.conf
+++ b/local/mib2c.conf
@@ -5,12 +5,12 @@
 You requested mib2c to be run on the following part of the MIB tree:
   OID:                       	    $name
   numeric translation:       	    $name.objectID
-@eval $num = count_scalars@
-  number of scalars within:         $num
-@eval $num = count_tables@
-  number of tables within:          $num
-@eval $num = count_notifications@
-  number of notifications within:   $num
+@eval $numS = count_scalars@
+  number of scalars within:         $numS
+@eval $numT = count_tables@
+  number of tables within:          $numT
+@eval $numN = count_notifications@
+  number of notifications within:   $numN
 
 First, do you want to generate code that is compatible with the
 ucd-snmp 4.X line of code, or code for the newer Net-SNMP 5.X code
@@ -31,7 +31,32 @@
 @elsif $ans != 2@
 Invalid answer.
 @else@
-@if count_scalars() > 0@
+  @if $numS > 0 && $numT > 0@
+**********************************************************************
+		 MIXED MIB TEMPLATE
+**********************************************************************
+The portion of the MIB tree that you have selected contains both
+scalar objects and MIB tables.  The automatically generated Net-SNMP
+style code cannot handle both of these simultaneously (though you
+could generate the two files separately, and then merge the two).
+
+Which code do you want to generate:
+
+  1) Scalar objects
+  2) MIB tables
+
+    @prompt $ans Select your choice : @
+    @if $ans == 1 @
+      @eval $numT = 0@
+    @elsif $ans == 2@
+      @eval $numS = 0@
+    @else@
+Invalid answer
+      @eval $numS = 0@
+      @eval $numT = 0@
+    @end@
+  @end@
+@if $numS > 0@
 
 **********************************************************************
 		 GENERATING CODE FOR SCALAR OBJECTS:
@@ -63,191 +88,190 @@
   @end@
 @end@ # scalars
 
-@if count_tables() > 0@
+@if $numT > 0@
 **********************************************************************
 		     GENERATING CODE FOR TABLES:
 **********************************************************************
 
-  Your tables will likely either fall into one of two categories:
+  The Net-SNMP agent API is extremely extensive and, in fact, lets
+  each programmer write agent code according to the style that works
+  best for them based on their experience and their preference.  We're
+  going to ask you a serious of questions that will help mib2c
+  generate code that best suits *your* needs, as the programmer that
+  will be responsible for taking the code and further refining it.  If
+  you don't like how the results look, you are always welcome to
+  re-run mib2c and select a different set of options.
 
-    1) tables where the list of rows is external to the agent.
-       This is suited to MIBs which monitor or manipulate external
-       data (perhaps extracted from the operating system kernel
-       or other system interfaces), and where rows are typically
-       created or destroyed independently of the SNMP agent.
+    There are essentially two tasks involved in processing requests
+  for OIDs within a MIB table - firstly identifying the relevant row
+  of the table for a given request, and then returning (or updating)
+  the appropriate column value within that row.  Many MIB tables model
+  the state of some external system (the kernel, a device, processes,
+  etc), and the MIB implementation module (the code we're about to
+  produce a template for) acts as an interface between this underlying
+  system and the SNMP side.  Other tables hold data internally that is
+  only available within the agent itself, or at least the master copy
+  of the data is held within the agent.
 
-    2) tables where the list of rows is held by the agent itself.
-       This is particularly suited to tables that are primarily
-       manipulated via SNMP, or where the rows of the table are
-       relatively static.
+    There are a number of different code templates that can be used to
+  implement MIB tables, using various approaches to these two tasks.
 
-    3) Do not generate code for the tables.
+  There are three basic approaches to identifying the relevant row:
 
-  @prompt $ans Select the option that best fits you: @
-  @if $ans != 3@
-    @if $ans == 1@
+    1) Pass the request through to the table-specific code, and
+       identify the requested row there (for both GET and GETNEXT
+       requests).  This is typically the most efficient way to get
+       up-to-date information, but relies on suitable
+       (programmer-provided) code within the MIB handler.
+       Most importantly, you should be an expert to use this choice.
 
-      This style of table tends to use the iterator helper to instrument
-      the external data, so it can be represented by an SNMP table.
-      The main characteristic of this helper is the use of a pair
-      of "iteration hook" routines to loop through the rows in turn
-      (in the most natural order for the underlying data).
-        There are a couple of different template configurations that
-      can be used as a framework for this:
+       This will produce code based on the table_dataset handler.
 
-      1) One based around a single handler, that includes code to handle
-         both GET and SET requests, as well as row creation and deletion.
-         This template defines a suitable data structure, and implements
-         the table as an internally-held linked list, but both of these
-         are mainly for illustration, and could reasonably be replaced by
-         code more appropriate for the table being implemented.
-           The same template can be generated using
-                 mib2c -c mib2c.iterate.conf $name
- 
-      2) An alternative framework, designed as an API wrapper on top of
-         the basic iterator helper, that seeks to separate the standard
-         processing of the syntax of a MIB table (which can be generated
-         automaticall), from the semantics of a given table (which cannot).
-           It generates a number of separate code files, but typically
-         only one or two of these will need to be edited.  These contain
-         separate 'get_column()' and 'set_column()' functions for each
-         column in the table, plus some other routines for manipulating
-         rows (plus the standard iterator hook routines).
-           The same templates can be generated using
-                 mib2c -c mib2c.iterate_access.conf $name
-         (See the agent/mibgroup/example/netSnmpHostsTable.c file for example)
+    2) Have table-specific code to provide information about which
+       rows exist in the table (by iterating through them in turn),
+       but utilise standard helper code to select the appropriate
+       row for a given request.  This is particularly suitable for
+       tables where the data is naturally stored in a "random" order
+       (or differently to the MIB table index), or where rows are
+       frequently added to or removed from the table.
 
-      3) An API layer (not based on the iterator helper) that attempts
-         to reduce the amount of SNMP specific knowledge required to
-         implement a module. It provides more APIs than 2, which are
-         (hopefully) smaller and more specific, with less SNMP terminology.
-           This API is also known as "MIBs for Dummies".  Numerous tables
-         in the Net-SNMP agent have been re-written to use this API.
-           The same templates can be generated using
-                 mib2c -c mib2c.mfd.conf $name
-         (See the agent/mibgroup/if-mib/ifTable/ifTable*.c files for examples)
+         However searching for the requested row is not very efficient,
+       and performance can be slow - particularly for large tables with
+       many rows.
 
-      4) Do not generate code for the tables.
+    3) Hold a locally cached copy of the contents of the table (or at
+       least a cache of which rows are valid), and utilise standard
+       helper code to select the appropriate row.  This is
+       significantly faster than the iterator-based approach, but
+       cached data is inevitably slightly "stale" with respect to the
+       data from the underlying system being managed.  This approach,
+       since it relies on caching of data, is also results in a larger
+       memory footprint.  It is less appropriate for tables where rows
+       are frequently added or removed externally to the agent (i.e.,
+       not via SNMP requests).
 
-      If you are unsure which option to pick, choices 2) or 3) are perhaps
-      more suited for those less familiar with the concepts behind the SNMP
-      protocol operations, while choice 1) gives more control over exactly
-      what is done.
+       This approach can also be used where _all_ use of the table is
+       via SNMP, and there is no external "underlying system".  In
+       this case, the local cache is the canonical version of the
+       table.
 
-     @prompt $ans Select the API style you wish to use: @
-     @if $ans != 5@
-       @if $ans == 1@
-         using the mib2c.iterate.conf configuration file to generate your code.
-         @run mib2c.iterate.conf@
-       @elsif $ans == 2@
-         using the mib2c.iterate_access.conf configuration file to
-         generate your code.
-         @run mib2c.iterate_access.conf@
-       @elsif $ans == 3@
-         using the mib2c.mfd.conf configuration file to
-         generate your code.
-         @run mib2c.mfd.conf@
-       @else@
-         WARNING: Unknown response.  Skipping code generation for tables.
-       @end@
-     @end@
+    4) Do not generate code for the tables.
+
+  @prompt $ans1 Select the option that best fits your requirements: @
+
+  @if ($ans1 == 2) || ($ans1 == 3)@
+
+  Having identified the appropriate row for a given request, there are
+  three basic styles of code for returning (or updating) the requested
+  column value from within this row:
+
+    1) A single handler routine, which contains all the code needed to
+       handle GET and SET requests for each of the column objects.
+
+@if $ans1 == 2@
+       The code typically looks like a single function with a large 'case'
+       statement covering each of the columns.
+
+       This will produce code based on the 'iterator' hepler.
+@end@
+
+    2) A set of individual routines, each of which is concerned
+       with a particular aspect of processing the request.
+    @if $ans1 == 2 @
+       Each column object within the table has one routine for
+       retrieving the current value, and another for setting a new one.
+
+       This will produce code based on the 'iterate_access' hepler.
     @else@
-      @if $ans == 2@
-      This style of table holds a list of the table rows internally
-      within the agent itself.  Typically this will tend to include
-      the column values for each particular row, and that is the
-      model used by the generated template code.  But it should usually
-      be possible to read in some or all of the column values from an
-      external source, should this be necessary for a particular MIB table.
-        There are a number of different template configurations that
-      can be used as a framework for this:
-      
-
-      1) dataset storage: The data for the table is stored completely
-         within the agent, and the user-visible code does not need to
-         be concerned with the internal representation of an individual
-         row.  This is most suited to MIB tables that are purely internal
-         to the agent, rather than modelling external data, or using
-         existing data structures.
-           The same template can be generated using
-                 mib2c -c mib2c.create-dataset.conf $name
-
-      2) row-data storage: The data for the table is held by the agent,
-         but using an arbitrary (user-provided) data structure for the
-         representation of an individual row. This is suited for MIB
-         tables where there is a natural existing data structure,
-         or where the contents of the table may need to be interpreted
-         for some additional purpose, other than simply implementing
-         the table for SNMP requests.
-           The same template can be generated using
-                 mib2c -c mib2c.table_data.conf $name
-
-      3) container storage: This is very similar to the previous row-data
-         mechanism, but uses a different (and slightly more efficient)
-         internal representation.  The main practical effect is to
-         introduce a slight constraint on the form of the per-row data
-         structure.
-           The same template can be generated using
-                 mib2c -c mib2c.container.conf $name
-
-      All three of these templates generate a single code file, and
-      use a "single handler" format for the driving code.
-
-      4) sorted array:  The data for the table is stored in a sorted
-         array.
-         (manually mib2c -c mib2c.array-user.conf ${name})
-
-      5) Net-SNMP container: (Also known as "MIBs for Dummies", or MFD.)
-         The data for the table is stored via a
-         generic interface. Various types of containers may be
-         selected, including linked lists or binary arrays.
-         (manually mib2c -c mib2c.mfd.conf ${name})
-
-      6) Do not generate code for the tables.
-
-      All APIs are fully functional with little-to-no required code
-      to make the table operational on your end once the template
-      code is produced.  The MFD and dataset APIs are a bit better
-      documented, but the sorted array is probably better tested
-      as it was used heavily in the net-policy sourceforge project.
-      The MFD API is the successor to the array-user API, and several
-      tables in the Net-SNMP agent have been re-written to use it.
-      The dataset API is used inside the snmptrapd application for
-      logging incoming traps.
-
-      @prompt $ans Select the API style you wish to use: @
-      @if $ans != 6@
-        @if $ans == 1@
-          using the mib2c.create-dataset.conf configuration file
-          to generate your code.
-          @run mib2c.create-dataset.conf@
-        @elsif $ans == 2@
-          using the mib2c.table_data.conf configuration file to
-          generate your code.
-          @run mib2c.table_data.conf@
-        @elsif $ans == 3@
-          using the mib2c.container.conf configuration file to
-          generate your code.
-          @run mib2c.container.conf@
-        @elsif $ans == 4@
-          using the mib2c.array-user.conf configuration file to
-          generate your code.
-          @run mib2c.array-user.conf@
-        @elsif $ans == 5@
-          using the mib2c.mfd.conf configuration file to generate your code.
-          @run mib2c.mfd.conf@
-        @else@
-          WARNING: Unknown response.  Skipping code generation for tables.
-        @end@
-      @else@
-        WARNING: Unknown response.  Skipping code generation for tables.
-      @end@
+       There is one routine for reporting values for GET requests,
+       and one routine for each stage of processing a SET request.
     @end@
+
+    3) A (different) set of individual routines, each of which is
+       smaller and more tightly focused than the code generated by
+       style 2.  The aim here is to reduce the amount of SNMP specific
+       knowledge required to implement a module, and hide much of the
+       SNMP terminology and processing within standard generated code
+       (which can simply be used sight unseen).
+@if $name !~ /Table$/i@
+         However this style of code can only be generated when mib2c
+       is run on an individual MIB table.  To use this approach, you
+       will need to re-invoke mib2c with the name of a single MIB table.
+@end@
+
+       This will produce code based on the 'mfd' hepler ('MIB for Dummies').
+
+    4) Do not generate code for the tables.
+
+   (In all cases, GETNEXT requests are automatically converted
+    into the equivalent GET request, so the MIB specific code
+    need only be concerned with GET and SET requests.).
+       
+  @prompt $ans2 Select the code style you wish to use: @
   @end@
- @end@ # != 3
+
+  @eval $template = NONE@
+  @if $ans1 == 1@
+     @eval $template = "create-dataset"@
+
+  @elsif $ans1 == 2@
+   @if $ans2 == 1@
+     @eval $template = iterate@
+   @elsif $ans2 == 2@
+     @eval $template = iterate_access@
+   @elsif $ans2 == 3@
+     @eval $template = mfd@
+   @elsif $ans2 != 4@
+     WARNING: Unknown response.  Skipping code generation for tables.
+   @end@
+
+  @elsif $ans1 == 3@
+   @if $ans2 == 1@
+     There are actually two alternative templates that use this
+     style of code - differing primarily in the data structure
+     used for representing a row of the table
+
+      1) The first is well suited for situations where there is a
+         natural existing data structure, or where the contents of
+         the table may need to be interpreted for some additional
+         purpose, other than simply implementing the table in SNMP.
+
+         This will produce code based on the 'table_data' hepler.
+
+      2) The second is slightly more efficient, but introduces some
+         minor constraints on the form of the per-row data structure.
+
+         This will produce code based on the 'container' hepler.
+
+      @prompt $ans3 Select the row representation you wish to use: @
+
+      @if $ans3 == 1@
+       @eval $template = table_data@
+      @elsif $ans3 == 2@
+       @eval $template = container@
+      @else@
+     WARNING: Unknown response.  Skipping code generation for tables.
+      @end@
+   @elsif $ans2 == 2@
+     @eval $template = "array-user"@
+   @elsif $ans2 == 3@
+     @eval $template = mfd@
+   @else@
+     WARNING: Unknown response.  Skipping code generation for tables.
+   @end@
+
+  @elsif $ans1 != 4@
+     WARNING: Unknown response.  Skipping code generation for tables.
+  @end@
+
+  @if $template ne NONE@
+     The same template code can be generated using
+                 mib2c -c mib2c.${template}.conf $name
+     @run mib2c.${template}.conf@
+  @end@
 @end@ # tables
 
-@if count_notifications() > 0@
+@if $numN > 0@
 **********************************************************************
 		 GENERATING CODE FOR NOTIFICATIONS:
 **********************************************************************
diff --git a/local/mib2c.iterate.conf b/local/mib2c.iterate.conf
index e409ba9..3a2b5f7 100644
--- a/local/mib2c.iterate.conf
+++ b/local/mib2c.iterate.conf
@@ -1,4 +1,38 @@
 ## -*- c -*-
+#
+@if "$cache" eq "" @
+@open -@
+This framework can work in one of two ways:
+
+  1)  Hold a local cached copy of some external data
+      which is then used to service incoming requests.
+
+  2)  Query the external data directly for each request.
+
+The first is typically more efficient, but results in
+slightly "stale" data (depending on the expiration timeout
+for the cache) and greater memory usage.  The second can
+provide more up-to-date information, but at the cost of
+higher processing overheads.
+
+Which is more appropriate for your needs?
+    @prompt $ans Select your choice : @
+    @if $ans == 1 @
+      @eval $cache = 1@
+    @elsif $ans == 2@
+      @eval $cache = 0@
+    @else@
+Invalid answer - generating caching code
+      @eval $cache = 1@
+    @end@
+@else@       #  -S cache={something}
+    @if "$cache" ne "1" && "$cache" ne "0" @
+@open -@
+Invalid value for 'cache' ($cache) - generating caching code
+      @eval $cache = 1@
+    @end@
+@end@
+
 ######################################################################
 ## Do the .h file
 ######################################################################
@@ -17,7 +51,7 @@
 Netsnmp_Node_Handler ${i}_handler;
 Netsnmp_First_Data_Point  ${i}_get_first_data_point;
 Netsnmp_Next_Data_Point   ${i}_get_next_data_point;
-@if "$cache" ne "" @
+@if "$cache" == 1 @
 NetsnmpCacheLoad ${i}_load;
 NetsnmpCacheFree ${i}_free;
 #define $i.uc_TIMEOUT  60
@@ -105,7 +139,7 @@
     iinfo->table_reginfo        = table_info;
     
     netsnmp_register_table_iterator( reg, iinfo );
-@if "$cache" ne "" @
+@if "$cache" == 1 @
     netsnmp_inject_handler_before( reg, 
         netsnmp_get_cache_handler($i.uc_TIMEOUT,
                                   ${i}_load, ${i}_free,
@@ -213,7 +247,7 @@
     SNMP_FREE( entry );   /* XXX - release any other internal resources */
 }
 
-@if "$cache" ne "" @
+@if "$cache" == 1 @
 /* Example cache handling - set up linked list from a suitable file */
 int
 ${i}_load( netsnmp_cache *cache, void *vmagic ) {
diff --git a/local/mib2c.iterate_access.conf b/local/mib2c.iterate_access.conf
index 90b8508..a38ac20 100644
--- a/local/mib2c.iterate_access.conf
+++ b/local/mib2c.iterate_access.conf
@@ -114,7 +114,7 @@
                              0);
 
     /** Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     @eval $minv = 0xffffffff@
     @eval $maxv = 0@
     @foreach $c column@
diff --git a/local/mib2c.notify.conf b/local/mib2c.notify.conf
index 6c1eb1a..77f3330 100644
--- a/local/mib2c.notify.conf
+++ b/local/mib2c.notify.conf
@@ -30,7 +30,8 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "${name}.h"
 
-static const oid snmptrap_oid[] = {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0};
+extern const oid snmptrap_oid[];
+extern const size_t snmptrap_oid_len;
 
 @foreach $i notifications@
 int
@@ -51,7 +52,7 @@
      * Set the snmpTrapOid.0 value
      */
     snmp_varlist_add_variable(&var_list,
-        snmptrap_oid, OID_LENGTH(snmptrap_oid),
+        snmptrap_oid, snmptrap_oid_len,
         ASN_OBJECT_ID,
         ${i}_oid, sizeof(${i}_oid));
     
diff --git a/local/mib2c.raw-table.conf b/local/mib2c.raw-table.conf
index 5c4d416..bd88fdb 100644
--- a/local/mib2c.raw-table.conf
+++ b/local/mib2c.raw-table.conf
@@ -58,7 +58,7 @@
     @end@
 
     /* Column values */
-    @foreach $c column@
+    @foreach $c nonindex@
     @if $c.readable@
      @if $c.needlength@
     $c.decl $c[NNN];
diff --git a/local/mib2c.table_data.conf b/local/mib2c.table_data.conf
index 775c021..2cc665c 100644
--- a/local/mib2c.table_data.conf
+++ b/local/mib2c.table_data.conf
@@ -1,4 +1,32 @@
 ## -*- c -*-
+#
+@if "$cache" eq "" @
+@open -@
+This framework can work in one of two ways:
+
+  1)  Hold a local cached copy of some external data
+      which is then used to service incoming requests.
+
+  2)  Hold the data for the table solely within the agent
+
+Which is more appropriate for your needs?
+    @prompt $ans Select your choice : @
+    @if $ans == 1 @
+      @eval $cache = 1@
+    @elsif $ans == 2@
+      @eval $cache = 0@
+    @else@
+Invalid answer - generating caching code
+      @eval $cache = 1@
+    @end@
+@else@       #  -S cache={something}
+    @if "$cache" ne "1" && "$cache" ne "0" @
+@open -@
+Invalid value for 'cache' ($cache) - generating caching code
+      @eval $cache = 1@
+    @end@
+@end@
+
 ######################################################################
 ## Do the .h file
 ######################################################################
@@ -15,7 +43,7 @@
 @foreach $i table@
 void initialize_table_$i(void);
 Netsnmp_Node_Handler ${i}_handler;
-@if "$cache" ne "" @
+@if "$cache" == 1 @
 NetsnmpCacheLoad ${i}_load;
 NetsnmpCacheFree ${i}_free;
 #define $i.uc_TIMEOUT  60
@@ -75,7 +103,7 @@
     netsnmp_handler_registration    *reg;
     netsnmp_tdata                   *table_data;
     netsnmp_table_registration_info *table_info;
-@if "$cache" ne "" @
+@if "$cache" == 1 @
     netsnmp_cache                   *cache;
 @end@
 
@@ -92,7 +120,25 @@
               );
 
     table_data = netsnmp_tdata_create_table( "$i", 0 );
+    if (NULL == table_data) {
+        snmp_log(LOG_ERR,"error creating tdata table for $i\n");
+        return;
+    }
+@if "$cache" == 1 @
+    cache = netsnmp_cache_create($i.uc_TIMEOUT,
+                                  ${i}_load, ${i}_free,
+                                  ${i}_oid, ${i}_oid_len);
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,"error creating cache for $i\n");
+    }
+    else
+        cache->magic = (void *)table_data;
+@end@
     table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error creating table info for $i\n");
+        return;
+    }
     netsnmp_table_helper_add_indexes(table_info,
     @foreach $idx index@
                            $idx.type,  /* index: $idx */
@@ -103,12 +149,10 @@
     table_info->max_column = COLUMN_$last_column.uc;
     
     netsnmp_tdata_register( reg, table_data, table_info );
-@if "$cache" ne "" @
-    cache = netsnmp_cache_create($i.uc_TIMEOUT,
-                                  ${i}_load, ${i}_free,
-                                  ${i}_oid, ${i}_oid_len);
-    cache->magic = (void *)table_data;
-    netsnmp_inject_handler_before( reg, netsnmp_cache_handler_GET(cache), TABLE_TDATA_NAME);
+@if "$cache" == 1 @
+    if (cache) 
+        netsnmp_inject_handler_before( reg, netsnmp_cache_handler_GET(cache),
+                                       TABLE_TDATA_NAME);
 @end@
 
     /* Initialise the contents of the table here */
@@ -176,6 +220,8 @@
         return NULL;
     }
     row->data = entry;
+
+    DEBUGMSGT(("${i}:entry:create", "row 0x%x\n", (uintptr_t)row));
   @foreach $idx index@
    @if $idx.needlength@
     memcpy(entry->$idx, $idx, ${idx}_len);
@@ -189,7 +235,8 @@
                                  sizeof(entry->$idx));
    @end@
   @end@
-    netsnmp_tdata_add_row( table_data, row );
+    if (table_data)
+        netsnmp_tdata_add_row( table_data, row );
     return row;
 }
 
@@ -201,13 +248,19 @@
 
     if (!row)
         return;    /* Nothing to remove */
-    entry = (struct ${i}_entry *)
+
+    DEBUGMSGT(("${i}:entry:remove", "row 0x%x\n", (uintptr_t)row));
+
+    entry = (struct ${i}_entry *)row->data;
+    SNMP_FREE( entry );   /* XXX - release any other internal resources */
+
+    if (table_data)
         netsnmp_tdata_remove_and_delete_row( table_data, row );
-    if (entry)
-        SNMP_FREE( entry );   /* XXX - release any other internal resources */
+    else
+        netsnmp_tdata_delete_row( row );    
 }
 
-@if "$cache" ne "" @
+@if "$cache" == 1 @
 /* Example cache handling - set up table_data list from a suitable file */
 int
 ${i}_load( netsnmp_cache *cache, void *vmagic ) {
diff --git a/local/net-snmp-cert b/local/net-snmp-cert
new file mode 100755
index 0000000..852a47f
--- /dev/null
+++ b/local/net-snmp-cert
@@ -0,0 +1,2690 @@
+#!/usr/bin/perl
+
+use strict;
+use 5.8.0;
+
+use Getopt::Long qw(:config gnu_getopt no_ignore_case pass_through);
+use Cwd qw(getcwd realpath);
+use File::Basename;
+use File::Copy;
+use File::Path;
+use Sys::Hostname;
+use Carp;
+
+our @CC = (
+["AF","AFGHANISTAN"],
+["AX","ÅLAND ISLANDS"],
+["AL","ALBANIA"],
+["DZ","ALGERIA"],
+["AS","AMERICAN SAMOA"],
+["AD","ANDORRA"],
+["AO","ANGOLA"],
+["AI","ANGUILLA"],
+["AQ","ANTARCTICA"],
+["AG","ANTIGUA AND BARBUDA"],
+["AR","ARGENTINA"],
+["AM","ARMENIA"],
+["AW","ARUBA"],
+["AU","AUSTRALIA"],
+["AT","AUSTRIA"],
+["AZ","AZERBAIJAN"],
+["BS","BAHAMAS"],
+["BH","BAHRAIN"],
+["BD","BANGLADESH"],
+["BB","BARBADOS"],
+["BY","BELARUS"],
+["BE","BELGIUM"],
+["BZ","BELIZE"],
+["BJ","BENIN"],
+["BM","BERMUDA"],
+["BT","BHUTAN"],
+["BO","BOLIVIA, PLURINATIONAL STATE OF"],
+["BA","BOSNIA AND HERZEGOVINA"],
+["BW","BOTSWANA"],
+["BV","BOUVET ISLAND"],
+["BR","BRAZIL"],
+["IO","BRITISH INDIAN OCEAN TERRITORY"],
+["BN","BRUNEI DARUSSALAM"],
+["BG","BULGARIA"],
+["BF","BURKINA FASO"],
+["BI","BURUNDI"],
+["KH","CAMBODIA"],
+["CM","CAMEROON"],
+["CA","CANADA"],
+["CV","CAPE VERDE"],
+["KY","CAYMAN ISLANDS"],
+["CF","CENTRAL AFRICAN REPUBLIC"],
+["TD","CHAD"],
+["CL","CHILE"],
+["CN","CHINA"],
+["CX","CHRISTMAS ISLAND"],
+["CC","COCOS (KEELING) ISLANDS"],
+["CO","COLOMBIA"],
+["KM","COMOROS"],
+["CG","CONGO"],
+["CD","CONGO, THE DEMOCRATIC REPUBLIC OF THE"],
+["CK","COOK ISLANDS"],
+["CR","COSTA RICA"],
+["CI","CÔTE D'IVOIRE"],
+["HR","CROATIA"],
+["CU","CUBA"],
+["CY","CYPRUS"],
+["CZ","CZECH REPUBLIC"],
+["DK","DENMARK"],
+["DJ","DJIBOUTI"],
+["DM","DOMINICA"],
+["DO","DOMINICAN REPUBLIC"],
+["EC","ECUADOR"],
+["EG","EGYPT"],
+["SV","EL SALVADOR"],
+["GQ","EQUATORIAL GUINEA"],
+["ER","ERITREA"],
+["EE","ESTONIA"],
+["ET","ETHIOPIA"],
+["FK","FALKLAND ISLANDS (MALVINAS)"],
+["FO","FAROE ISLANDS"],
+["FJ","FIJI"],
+["FI","FINLAND"],
+["FR","FRANCE"],
+["GF","FRENCH GUIANA"],
+["PF","FRENCH POLYNESIA"],
+["TF","FRENCH SOUTHERN TERRITORIES"],
+["GA","GABON"],
+["GM","GAMBIA"],
+["GE","GEORGIA"],
+["DE","GERMANY"],
+["GH","GHANA"],
+["GI","GIBRALTAR"],
+["GR","GREECE"],
+["GL","GREENLAND"],
+["GD","GRENADA"],
+["GP","GUADELOUPE"],
+["GU","GUAM"],
+["GT","GUATEMALA"],
+["GG","GUERNSEY"],
+["GN","GUINEA"],
+["GW","GUINEA-BISSAU"],
+["GY","GUYANA"],
+["HT","HAITI"],
+["HM","HEARD ISLAND AND MCDONALD ISLANDS"],
+["VA","HOLY SEE (VATICAN CITY STATE)"],
+["HN","HONDURAS"],
+["HK","HONG KONG"],
+["HU","HUNGARY"],
+["IS","ICELAND"],
+["IN","INDIA"],
+["ID","INDONESIA"],
+["IR","IRAN, ISLAMIC REPUBLIC OF"],
+["IQ","IRAQ"],
+["IE","IRELAND"],
+["IM","ISLE OF MAN"],
+["IL","ISRAEL"],
+["IT","ITALY"],
+["JM","JAMAICA"],
+["JP","JAPAN"],
+["JE","JERSEY"],
+["JO","JORDAN"],
+["KZ","KAZAKHSTAN"],
+["KE","KENYA"],
+["KI","KIRIBATI"],
+["KP","KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"],
+["KR","KOREA, REPUBLIC OF"],
+["KW","KUWAIT"],
+["KG","KYRGYZSTAN"],
+["LA","LAO PEOPLE'S DEMOCRATIC REPUBLIC"],
+["LV","LATVIA"],
+["LB","LEBANON"],
+["LS","LESOTHO"],
+["LR","LIBERIA"],
+["LY","LIBYAN ARAB JAMAHIRIYA"],
+["LI","LIECHTENSTEIN"],
+["LT","LITHUANIA"],
+["LU","LUXEMBOURG"],
+["MO","MACAO"],
+["MK","MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"],
+["MG","MADAGASCAR"],
+["MW","MALAWI"],
+["MY","MALAYSIA"],
+["MV","MALDIVES"],
+["ML","MALI"],
+["MT","MALTA"],
+["MH","MARSHALL ISLANDS"],
+["MQ","MARTINIQUE"],
+["MR","MAURITANIA"],
+["MU","MAURITIUS"],
+["YT","MAYOTTE"],
+["MX","MEXICO"],
+["FM","MICRONESIA, FEDERATED STATES OF"],
+["MD","MOLDOVA, REPUBLIC OF"],
+["MC","MONACO"],
+["MN","MONGOLIA"],
+["ME","MONTENEGRO"],
+["MS","MONTSERRAT"],
+["MA","MOROCCO"],
+["MZ","MOZAMBIQUE"],
+["MM","MYANMAR"],
+["NA","NAMIBIA"],
+["NR","NAURU"],
+["NP","NEPAL"],
+["NL","NETHERLANDS"],
+["AN","NETHERLANDS ANTILLES"],
+["NC","NEW CALEDONIA"],
+["NZ","NEW ZEALAND"],
+["NI","NICARAGUA"],
+["NE","NIGER"],
+["NG","NIGERIA"],
+["NU","NIUE"],
+["NF","NORFOLK ISLAND"],
+["MP","NORTHERN MARIANA ISLANDS"],
+["NO","NORWAY"],
+["OM","OMAN"],
+["PK","PAKISTAN"],
+["PW","PALAU"],
+["PS","PALESTINIAN TERRITORY, OCCUPIED"],
+["PA","PANAMA"],
+["PG","PAPUA NEW GUINEA"],
+["PY","PARAGUAY"],
+["PE","PERU"],
+["PH","PHILIPPINES"],
+["PN","PITCAIRN"],
+["PL","POLAND"],
+["PT","PORTUGAL"],
+["PR","PUERTO RICO"],
+["QA","QATAR"],
+["RE","RÉUNION"],
+["RO","ROMANIA"],
+["RU","RUSSIAN FEDERATION"],
+["RW","RWANDA"],
+["BL","SAINT BARTHÉLEMY"],
+["SH","SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA"],
+["KN","SAINT KITTS AND NEVIS"],
+["LC","SAINT LUCIA"],
+["MF","SAINT MARTIN"],
+["PM","SAINT PIERRE AND MIQUELON"],
+["VC","SAINT VINCENT AND THE GRENADINES"],
+["WS","SAMOA"],
+["SM","SAN MARINO"],
+["ST","SAO TOME AND PRINCIPE"],
+["SA","SAUDI ARABIA"],
+["SN","SENEGAL"],
+["RS","SERBIA"],
+["SC","SEYCHELLES"],
+["SL","SIERRA LEONE"],
+["SG","SINGAPORE"],
+["SK","SLOVAKIA"],
+["SI","SLOVENIA"],
+["SB","SOLOMON ISLANDS"],
+["SO","SOMALIA"],
+["ZA","SOUTH AFRICA"],
+["GS","SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"],
+["ES","SPAIN"],
+["LK","SRI LANKA"],
+["SD","SUDAN"],
+["SR","SURINAME"],
+["SJ","SVALBARD AND JAN MAYEN"],
+["SZ","SWAZILAND"],
+["SE","SWEDEN"],
+["CH","SWITZERLAND"],
+["SY","SYRIAN ARAB REPUBLIC"],
+["TW","TAIWAN, PROVINCE OF CHINA"],
+["TJ","TAJIKISTAN"],
+["TZ","TANZANIA, UNITED REPUBLIC OF"],
+["TH","THAILAND"],
+["TL","TIMOR-LESTE"],
+["TG","TOGO"],
+["TK","TOKELAU"],
+["TO","TONGA"],
+["TT","TRINIDAD AND TOBAGO"],
+["TN","TUNISIA"],
+["TR","TURKEY"],
+["TM","TURKMENISTAN"],
+["TC","TURKS AND CAICOS ISLANDS"],
+["TV","TUVALU"],
+["UG","UGANDA"],
+["UA","UKRAINE"],
+["AE","UNITED ARAB EMIRATES"],
+["GB","UNITED KINGDOM"],
+["US","UNITED STATES"],
+["UM","UNITED STATES MINOR OUTLYING ISLANDS"],
+["UY","URUGUAY"],
+["UZ","UZBEKISTAN"],
+["VU","VANUATU"],
+["VE","VENEZUELA, BOLIVARIAN REPUBLIC OF"],
+["VN","VIET NAM"],
+["VG","VIRGIN ISLANDS, BRITISH"],
+["VI","VIRGIN ISLANDS, U.S."],
+["WF","WALLIS AND FUTUNA"],
+["EH","WESTERN SAHARA"],
+["YE","YEMEN"],
+["ZM","ZAMBIA"],
+["ZW","ZIMBABWE"],
+);
+
+package NetSNMP::Term;
+# gratefully taken from Wayne Thompson's Term::Complete
+# if newer CORE modules could be used this could be removed
+our($complete, $exit, $done, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore, $stty, $tty_safe_restore);
+our($tty_saved_state) = '';
+CONFIG: {
+  $exit   = "\003";
+  $done   = "\004";
+  $kill   = "\025";
+  $erase1 =   "\177";
+  $erase2 =   "\010";
+  foreach my $s (qw(/bin/stty /usr/bin/stty)) {
+    if (-x $s) {
+      $tty_raw_noecho = "$s raw -echo";
+      $tty_restore    = "$s -raw echo";
+      $tty_safe_restore = $tty_restore;
+      $stty = $s;
+      last;
+    }
+  }
+}
+
+sub Complete {
+  my($prompt, $dflt, $help, $match, @cmp_lst);
+  my (%help, $cmp, $test, $l, @match);
+  my ($return, $r, $exitting) = ("", 0, 0);
+  my $tab;
+
+  $prompt = shift;
+  $dflt = shift;
+  $help = shift;
+  $match = shift;
+
+  if (ref $_[0] and ref($_[0][0])) {
+    @cmp_lst = @{$_[0]};
+  } else {
+    @cmp_lst = @_;
+  }
+  @cmp_lst = map {if (ref($_)) { $help{$_->[0]}=$_->[1]; $_->[0]} else {$_;}} @cmp_lst;
+
+  # Attempt to save the current stty state, to be restored later
+  if (defined $stty && defined $tty_saved_state && $tty_saved_state eq '') {
+    $tty_saved_state = qx($stty -g 2>/dev/null);
+    if ($?) {
+      # stty -g not supported
+      $tty_saved_state = undef;
+    } else {
+      $tty_saved_state =~ s/\s+$//g;
+      $tty_restore = qq($stty "$tty_saved_state" 2>/dev/null);
+    }
+  }
+  system $tty_raw_noecho if defined $tty_raw_noecho;
+ LOOP: {
+    local $_;
+    print($prompt, $return);
+    while (($_ = getc(STDIN)) ne "\r") {
+    CASE: {
+	# (TAB) attempt completion
+	$_ eq "\t" && do {
+	  if ($tab) {
+	    print(join("\r\n", '', map {exists $help{$_} ? sprintf("\t%-10.10s - %s", $_, $help{$_}) :
+					  "\t$_"} grep(/^\Q$return/, @cmp_lst)), "\r\n");
+	    $tab--;
+	    redo LOOP;
+	  }
+	  @match = grep(/^\Q$return/, @cmp_lst);
+	  unless ($#match < 0) {
+	    $l = length($test = shift(@match));
+	    foreach $cmp (@match) {
+	      until (substr($cmp, 0, $l) eq substr($test, 0, $l)) {
+		$l--;
+	      }
+	    }
+	    print("\a");
+	    print($test = substr($test, $r, $l - $r));
+	    $r = length($return .= $test);
+	  }
+	  $tab++;
+	  last CASE;
+	};
+
+	# (^C) exit
+	$_ eq $exit && do {
+	  print("\r\naborting application...\r\n");
+	  $exitting++;
+	  undef $return;
+	  last LOOP;
+	};
+
+	# (^D) done
+	$_ eq $done && do {
+	  undef $return;
+	  last LOOP;
+	};
+
+	# (?) show help if available
+	$_ eq '?' && do {
+	  print("\r\n$help\r\n");
+	  if (exists $help{$return}) {
+	    print("\t$return - $help{$return}\r\n");
+	  } else {
+	    print(join("\r\n", map {exists $help{$_} ? "\t$_ - $help{$_}" :
+				      "\t$_"} grep(/^\Q$return/, @cmp_lst)), "\r\n");
+	  }
+	  redo LOOP;
+	};
+
+	# (^U) kill
+	$_ eq $kill && do {
+	  if ($r) {
+	    $r	= 0;
+	    $return	= "";
+	    print("\r\n");
+	    redo LOOP;
+	  }
+	  last CASE;
+	};
+
+	# (DEL) || (BS) erase
+	($_ eq $erase1 || $_ eq $erase2) && do {
+	  if ($r) {
+	    print("\b \b");
+	    chop($return);
+	    $r--;
+	  }
+	  last CASE;
+	};
+
+	# printable char
+	ord >= 32 && do {
+	  $return .= $_;
+	  $r++;
+	  print;
+	  last CASE;
+	};
+      }
+    }
+
+    if (defined $return) {
+      if (length($return) == 0 or $return eq $dflt) {
+	$return = $dflt;
+      } elsif ($match == $NetSNMP::Cert::MATCH and scalar(grep {/^$return$/} @cmp_lst) != 1 or
+	       $match == $NetSNMP::Cert::PREMATCH and scalar(grep {$return=~/$_/} @cmp_lst) != 1) {
+	$r	= 0;
+	$return	= "";
+	print("\r\nChoose a valid option, or ^D to exit\r\n");
+	redo LOOP;
+      }
+    }
+  }
+ DONE:
+  # system $tty_restore if defined $tty_restore;
+  if (defined $tty_saved_state && defined $tty_restore && defined $tty_safe_restore) {
+    system $tty_restore;
+    if ($?) {
+      # tty_restore caused error
+      system $tty_safe_restore;
+    }
+  }
+
+  exit(1) if $exitting;
+  print("\n");
+  return $return;
+}
+
+package NetSNMP::Cert;
+
+our $VERSION      = '0.2.9';
+
+our $PROG         = ::basename($0);
+our $DEBUG        = 0;
+our $OK           = 0;
+our $ERR          = -1;
+
+# user input param
+our $MATCH        = 1;
+our $PREMATCH     = 2;
+
+# Load LWP if possible to import cert from URL
+eval('use LWP::UserAgent;');
+our $haveUserAgent = ($@ ? 0 : 1);
+
+# required executables
+our $OPENSSL     = $ENV{NET_SNMP_CRT_OPENSSL}  || 'openssl';
+our $CFGTOOL     = $ENV{NET_SNMP_CRT_CFGTOOL}  || 'net-snmp-config';
+
+# default app config file
+our $CFGFILE     = $ENV{NET_SNMP_CRT_CFGFILE}  || 'net-snmp-cert.conf';
+
+# default OpenSSL config files
+our $SSLCFGIN    = $ENV{NET_SNMP_CRT_SSLCFGIN} || 'openssl.in';
+our $SSLCFGOUT   = $ENV{NET_SNMP_CRT_SSLCFGIN} || '.openssl.conf';
+our $SSLCFG      = $ENV{NET_SNMP_CRT_SSLCFG};
+
+# default cmd logs
+our $OUTLOG      = $ENV{NET_SNMP_CRT_OUTLOG}   || '.cmd.out.log';
+our $ERRLOG      = $ENV{NET_SNMP_CRT_ERRLOG}   || '.cmd.err.log';
+
+# default cert dirs
+our $TLSDIR      = $ENV{NET_SNMP_CRT_TLSDIR}   || 'tls';
+our $CRTDIR      = $ENV{NET_SNMP_CRT_CRTDIR}   || 'certs';
+our $NEWCRTDIR   = $ENV{NET_SNMP_CRT_NEWCRTDIR}|| 'newcerts';
+our $CADIR       = $ENV{NET_SNMP_CRT_CADIR}    || 'ca-certs';
+our $PRIVDIR     = $ENV{NET_SNMP_CRT_PRIVDIR}  || 'private';
+
+our $SERIAL      = $ENV{NET_SNMP_CRT_SERIAL}   || '.serial';
+our $INDEX       = $ENV{NET_SNMP_CRT_INDEX}    || '.index';
+
+our $DEFCADAYS   = $ENV{NET_SNMP_CRT_DEFCADAYS} || 1825;
+our $DEFCRTDAYS  = $ENV{NET_SNMP_CRT_DEFCRTDAYS}|| 365;
+
+our @TLSDIRS     = ($CRTDIR, $NEWCRTDIR, $CADIR, $PRIVDIR);
+
+our @CRTSUFFIXES = qw(.pem .csr .der .crt);
+
+our @X509FMTS = qw(text modulus serial subject_hash issuer_hash hash subject
+		    purpose issuer startdate enddate dates fingerprint C);
+
+sub dprint {
+  my $str = shift;
+  my $opts = shift;
+  my $dlevel = shift || 1;
+  my $flag = (defined $opts ? int($opts->{'debug'} >= $dlevel) : 1);
+  my ($pkg, $file, $line, $sub) = caller(1);
+  my ($pkg0, $file0, $line0) = caller(0);
+  print("${sub}():$line0: $str") if $flag;
+}
+
+sub dwarn {
+  my $str = shift;
+  my $opts = shift;
+  my $dlevel = shift || 1;
+  my $flag = (defined $opts ? $opts->{'debug'} >= $dlevel : 1);
+  my ($pkg, $file, $line, $sub) = caller(1);
+  my ($pkg0, $file0, $line0) = caller(0);
+  warn("${sub}():$line0: $str") if $flag;
+}
+
+sub vprint {
+  my $str = shift;
+  my $opts = shift;
+  my $flag = (defined $opts ? $opts->{'verbose'} : 1);
+  my $debug = (defined $opts ? $opts->{'debug'} : 1);
+  my ($pkg, $file, $line, $sub) = caller(1);
+  my ($pkg0, $file0, $line0) = caller(0);
+  $str = ($debug ? "${sub}():$line0: $str" : "$str");
+  print("$str") if $flag;
+}
+
+sub vwarn {
+  my $str = shift;
+  my $opts = shift;
+  my $flag = (defined $opts ? $opts->{'verbose'} : 1);
+  my ($pkg, $file, $line, $sub) = caller(1);
+  my ($pkg0, $file0, $line0) = caller(0);
+  warn("${sub}():$line0: $str") if $flag;
+}
+
+sub rsystem {
+  my $cmd = shift;
+  my $flag = shift;
+
+  # if not running as root try to use sudo
+  if ($>) {
+    $cmd = "sudo $flag $cmd";
+  } else {
+    if ($flag =~ /-b/) {
+      $cmd = "$cmd \&";
+    }
+  }
+  die("cmd failed($!): $cmd\n") if system("$cmd");
+}
+
+sub usystem {
+  my $cmd = shift;
+  my $opts = shift;
+  my $ret;
+
+  unlink $NetSNMP::Cert::OUTLOG if -e $NetSNMP::Cert::OUTLOG;
+  unlink $NetSNMP::Cert::ERRLOG if -e $NetSNMP::Cert::ERRLOG;
+
+  $ret = system("$cmd");
+
+  if ($ret) {
+    if ($opts->{'verbose'}) {
+      system("cat $NetSNMP::Cert::OUTLOG") if -r $NetSNMP::Cert::OUTLOG;
+      system("cat $NetSNMP::Cert::ERRLOG") if -r $NetSNMP::Cert::ERRLOG;
+    }
+    die("cmd failed($!): $cmd\n");
+  }
+}
+
+sub home_dir {
+  my $cdir = ::getcwd();
+
+  chdir("~");
+  my $dir = ::getcwd();
+  chdir($cdir);
+
+  return $dir;
+}
+
+sub find_bin_dir {
+  # This code finds the path to the currently invoked program and
+  my $dir;
+
+  $0 =~ m%^(([^/]*)(.*)/)([^/]+)$%;
+  if ($1) {
+    if ($2) {
+      # Invoked using a relative path.  CD there and use pwd.
+      $dir = `cd $1 && pwd`;
+      chomp $dir;
+    } else {
+      # Invoked using an absolute path; that's it!
+      $dir = $3;
+    }
+  } else {
+    # No path.  Look in PATH for the first instance.
+    foreach my $p (split /:/, $ENV{PATH}) {
+      $p ||= '.';
+      -x "$p/$4" or next;
+      $dir = $p;
+    }
+  }
+  $dir or die "Cannot locate program '$0'!";
+}
+
+sub fq_rel_path {
+  my $path = shift;
+  my $cwd = ::getcwd();
+  my $rdir = shift || $cwd;
+
+  chdir($rdir) or die("can't change directory: $rdir");
+  # get fully qualified path
+  if ($path !~ m|^/|) {
+    my $pwd = `pwd`; chomp $pwd;
+    $path = "$pwd/$path";
+    $path = ::realpath($path) if -e $path;
+  }
+  chdir($cwd) or die("can't change directory: $cwd");
+
+  return $path;
+}
+
+sub dir_empty
+  {
+    my $path = shift;
+    opendir(DIR, $path);
+    foreach (readdir(DIR)) {
+      next if /^\.\.?$/;
+      closedir(DIR);
+      return 0;
+    }
+    closedir(DIR);
+    return 1;
+  }
+
+sub make_dirs {
+  my $opts = shift;
+  my $dir = shift;
+  my $mode = shift;
+  my @dirs = @_;
+
+  my $wd = ::getcwd();
+
+  NetSNMP::Cert::dprint("make dirs [$dir:@dirs] from $wd\n", $opts);
+
+  ::mkpath($dir, $opts->{'debug'}, $mode) or die("error - can't make $dir")
+    if defined $dir and not -d $dir;
+
+  foreach my $subdir (@dirs) {
+    my $d = "$subdir";
+    $d = "$dir/$d" if defined $dir;
+    NetSNMP::Cert::dprint("making directory: $d\n", $opts) unless -d $d;
+    mkdir($d, $mode) or die("error - can't make $d") unless -d $d;
+  }
+}
+
+sub is_url {
+  my $url = shift;
+
+  return $url =~ /^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$/;
+}
+
+sub in_set {
+  my $elem = shift;
+  my $set = shift;
+  for my $e (eval($set)) {
+    return 1 if $e == $elem;
+  }
+  return 0;
+}
+
+sub in_arr {
+  my $elem = shift;
+  my $arr = shift;
+  for my $e (@{$arr}) {
+    return 1 if $e eq $elem;
+  }
+  return 0;
+}
+
+sub map_bool {
+  my $val = shift;
+
+  return 1 if $val =~ /^true$/i;
+  return 0 if $val =~ /^false$/i;
+  return $val;
+}
+
+sub version {
+  my $ret = (@_ ? shift : 1);
+  print "$NetSNMP::Cert::PROG: $NetSNMP::Cert::VERSION\n";
+  exit($ret);
+}
+
+sub GetOptsFromArray {
+  my $args = shift;
+  local *ARGV;
+  @ARGV = @$args;
+  my $ret = ::GetOptions(@_);
+  @$args = @ARGV; # GetOptions strips out the ones it handles and leaves others
+  return $ret;
+}
+sub pull_cmd {
+  my $args = shift;
+  my $cmd;
+
+  foreach (@{$args}) {
+    if (/^(gence?rt|genca|gencsr|signcsr|showcas?|showce?rts?|import)$/) {
+      $cmd = $1;
+    }
+  }
+
+  @{$args} = grep {!/^$cmd$/} @{$args};
+
+  return $cmd;
+}
+
+
+sub usage {
+  my $ret = (@_ ? shift : 1);
+  my $arg = shift;
+
+  print "Command not implmeneted yet: $arg\n" if $ret == 2;
+  print "Unknown: $arg\n" if $ret == 3;
+  print "\n   NAME:\n";
+  print "     $NetSNMP::Cert::PROG: [$NetSNMP::Cert::VERSION] - ";
+  print "Net-SNMP Certificate Management Tool\n";
+  print "\n   DESCRIPTION:\n";
+  print "     net-snmp-cert creates, signs, installs and displays X.509\n";
+  print "     certificates used in the operation of Net-SNMP/(D)TLS.\n";
+  print "\n   SYNOPSIS:\n";
+  print "     net-snmp-cert [--help|-?]\n";
+  print "     net-snmp-cert [--version|-V]\n";
+  print "     net-snmp-cert genca    [<flags>] [<dn-opts>] [--with-ca <ca>]\n";
+  print "     net-snmp-cert gencert  [<flags>] [<dn-opts>] [--with-ca <ca>]\n";
+  print "     net-snmp-cert gencsr   [<flags>] [<dn-opts>] [--from-crt <crt>]\n";
+  print "     net-snmp-cert signcsr  [<flags>] [--install] --csr <csr> --with-ca <ca>\n";
+  print "     net-snmp-cert showca   [<flags>] [<format-opts>] [<file>|<search-tag>]\n";
+  print "     net-snmp-cert showcert [<flags>] [<format-opts>] [<file>|<search-tag>]\n";
+  print "     net-snmp-cert import   [<flags>] <file|url> [<key>]\n";
+  print "\n   COMMANDS:\n";
+  print "     genca    -- generate a signed CA certificate suitable for signing other\n";
+  print "                 certificates. default: self-signed unless --with-ca <ca> supplied\n\n";
+  print "     gencert  -- generate a signed certificate suitable for identification, or\n";
+  print "                 validation. default: self-signed unless --with-ca <ca> supplied\n\n";
+  print "     gencsr   -- generate a certificate signing request. will create a new\n";
+  print "                 key and certificate unless --from-crt <crt> supplied\n\n";
+  print "     signcsr  -- sign a certificate signing request specified by --csr <csr>\n";
+  print "                 with the CA certificate specified by --with-ca <ca>\n";
+  print "     import   -- import an identity or CA certificate, optionally import <key>\n";
+  print "                 if an URL is passed, will attempt to import certificate from site\n";
+  print "     showca,\n";
+  print "     showcert -- show CA or identity certificate(s). may pass fully qualified\n";
+  print "                 file or directory name, or a search-tag which prefix matches\n";
+  print "                 installed CA or identity certificate file name(s)\n";
+  print "                 see FORMAT OPTIONS to specify output format\n\n";
+  print "\n   FLAGS:\n";
+  print "     -?, --help            -- show this text and exit\n";
+  print "     -V, --version         -- show version string and exit\n";
+  print "     -D, --debug           -- raise debug level (-D -D for higher level)\n";
+  print "     -F, --force           -- force overwrite of existing output files\n";
+  print "     -I, --nointeractive   -- non-interactive run (default interactive)\n";
+  print "     -Q, --noverbose       -- non-verbose output (default verbose)\n";
+  print "     -C, --cfgdir   <dir>  -- configuration dir (see man(5) snmp_config)\n";
+  print "     -T, --tlsdir   <dir>  -- root for cert storage (default <cfgdir>/tls)\n";
+  print "     -f, --cfgfile  <file> -- config (default <cfgdir>/net-snmp-cert.conf)\n";
+  print "     -i, --identity <id>   -- identity to use from config\n";
+  print "     -t, --tag      <tag>  -- application tag (default 'snmp')\n";
+  print "     --<cfg-param>[=<val>] -- additional config params\n";  
+  print "\n   CERTIFICATE OPTIONS (<cert-opts>):\n";
+  print "     -a, --with-ca <ca>    -- CA certificate used to sign request\n";
+  print "     -A, --ca <ca>         -- explicit output CA certificate\n";
+  print "     -r, --csr <csr>       -- certificate signing request\n";
+  print "     -x, --from-crt <crt>  -- input certificate for current operation\n";
+  print "     -X, --crt <crt>       -- explicit output certificate\n";
+  print "     -y, --install         -- install result in local repository\n";
+  print "\n   DISTINGUISHED NAME OPTIONS (<dn-opts>):\n";
+  print "     -e, --email <email>       -- email name\n";
+  print "     -h, --host <host>         -- DNS host name, or IP address\n";
+  print "     -d, --days <days>         -- number of days certificate is valid\n";
+  print "     -n, --cn <cn>             -- common name (CN)\n";
+  print "     -o, --org <org>           -- organiztion name\n";
+  print "     -u, --unit <unit>         -- organiztion unit name\n";
+  print "     -c, --country <country>   -- country code (e.g., US)\n";
+  print "     -p, --province <province> -- province name (synomynous w/ state)\n";
+  print "     -p, --state <state>       -- state name (synomynous w/ province)\n";
+  print "     -l, --locality <locality> -- locality name (e.g, town)\n";
+  print "     -s, --san <san>           -- subjectAltName, repeat for each <san>\n";
+  print "                               -- <san> value format (<FMT>:<VAL>):\n";
+  print "                               --   dirName:/usr/share/snmp/tls\n";
+  print "                               --   DNS:net-snmp.org\n";
+  print "                               --   email:admin\@net-snmp.org\n";
+  print "                               --   IP:192.168.1.1\n";
+  print "                               --   RID:1.1.3.6\n";
+  print "                               --   URI:http://net-snmp.org\n";
+  print "\n   FORMAT OPTIONS (<format-opts>): \n";
+  print "     --brief        -- minimized output (values only where applicable)\n";
+  print "     --text         -- full text description\n";
+  print "     --subject      -- subject description\n";
+  print "     --subject_hash -- hash of subject for indexing\n";
+  print "     --issuer       -- issuer description\n";
+  print "     --issuer_hash  -- hash of issuer for indexing\n";
+  print "     --fingerprint  -- SHA1 digest of DER\n";
+  print "     --serial       -- serial number\n";
+  print "     --modulus      -- modulus of the public key\n";
+  print "     --dates        -- start and end dates\n";
+  print "     --purpose      -- displays allowed uses\n";
+  print "     --C            -- C code description\n";
+  print "\n   EXAMPLES: \n";
+  print "     net-snmp-cert genca --cn ca-net-snmp.org --days 1000\n";
+  print "     net-snmp-cert genca -f .snmp/net-snmp-cert.conf -i nocadm -I\n";
+  print "     net-snmp-cert gencert -t snmpd --cn host.net-snmp.org\n";
+  print "     net-snmp-cert gencsr -t snmpapp\n";
+  print "     net-snmp-cert signcsr --csr snmpapp --with-ca ca-net-snmp.org\n";
+  print "     net-snmp-cert showcerts --subject --issuer --dates snmpapp\n";
+  print "     net-snmp-cert showcas --fingerprint ca-net-snmp.org --brief\n";
+  print "     net-snmp-cert import ca-third-party.crt\n";
+  print "     net-snmp-cert import signed-request.crt signed-request.key\n\n";
+
+  exit $ret;
+}
+
+sub set_default {
+  my $opts = shift;
+  my $config = shift;
+  my $field = shift;
+  my $val = shift;
+
+  if (not defined $opts->{$field}) {
+    my $cval = $config->inherit($field);
+    $opts->{$field} = (defined $cval ? $cval : $val);
+  }
+}
+
+sub cfg_path {
+  my $path;
+
+  $path = `$NetSNMP::Cert::CFGTOOL --snmpconfpath`;
+  chomp $path;
+  return (wantarray ? split(':', $path) : $path);
+}
+
+sub find_cfgfile {
+  my $dir = shift;
+  my $file = shift;
+
+  if (defined $dir and -d $dir and 
+      defined $file and $file !~ /^[\.\/]/) {
+    return fq_rel_path("$dir/$file") if -f "$dir/$file";
+  }
+
+  if (defined $file) {
+    if (-f $file) {
+      return fq_rel_path($file);
+    } else {
+      return $file; # file is not found, complain later
+    }
+  }
+
+  my @path = cfg_path();
+  unshift(@path, $dir) if defined $dir;
+  while (@path) {
+    my $p = pop(@path);
+    next if $p eq '/var/lib/snmp';
+    if (-r "$p/$NetSNMP::Cert::CFGFILE") {
+      return fq_rel_path("$p/$NetSNMP::Cert::CFGFILE");
+    }
+  }
+
+  return $file;
+}
+
+sub find_cfgdir {
+  my $dir = shift;
+  my $file = shift;
+
+  if (defined $dir) {
+    $dir = NetSNMP::Cert::fq_rel_path($dir);
+    return $dir;
+  }
+
+  if (defined $file and -f $file) {
+    $dir = ::dirname($file);
+    return NetSNMP::Cert::fq_rel_path($dir);
+  } else {
+    my @path = cfg_path();
+    # search first for writeable tls dir
+    # for root search top down, for user bottom up
+    while (@path) {
+      $dir = ($> ? pop(@path): shift(@path));
+      next if $dir eq '/var/lib/snmp';
+      return $dir if -d "$dir/$NetSNMP::Cert::TLSDIR" and -w "$dir/$NetSNMP::Cert::TLSDIR";
+    }
+    @path = cfg_path();
+    # if no tls dir found, pick first writable config dir
+    # for root search top down, for user bottom up
+    while (@path) {
+      $dir = ($> ? pop(@path): shift(@path));
+      next if $dir eq '/var/lib/snmp';
+      return $dir if -d $dir and -w $dir;
+    }
+    my $home = $ENV{HOME} || die "Unable to determine home directory: set \$HOME\n";
+    return ($> ? "$home/.snmp" : "/usr/share/snmp"); # XXX hack - no dirs existed or were writable
+  }
+  # this should never happen
+  return undef;
+}
+
+sub find_certs {
+  my $opts = shift;
+  my $dir = shift || 'certs';
+  my $targ = shift;
+  my $suffix_regex;
+  my $cwd = ::getcwd();
+
+  if ($dir eq 'csrs') {
+    $dir = $NetSNMP::Cert::NEWCRTDIR;
+    $suffix_regex = '\.csr|\.pem';
+  } else {
+    $suffix_regex = '\.crt|\.pem';
+  }
+
+  NetSNMP::Cert::dprint("find_certs(1:$cwd):$dir:$targ:$suffix_regex\n", $opts);
+
+  if ($targ =~ /\.?\//) {
+    # see if targ could be file - calc orig. rel. path
+    my $arg = NetSNMP::Cert::fq_rel_path($targ, $opts->{'rdir'});
+    NetSNMP::Cert::dprint("find_certs(2):$dir:$targ:$arg\n", $opts);
+    # targ is a file name - use it
+    return (wantarray ? ($arg) : $arg) if -f $arg;
+    # else mark as dir if it is
+    $targ = "$arg" if -d $arg;
+  }
+
+  $targ =~ s/\/*$/\// if -d $targ;
+
+  NetSNMP::Cert::dprint("find_certs(3):$dir:$targ\n", $opts);
+
+  # find certs in targ if a dir (in tlsdir, or relative)
+  $dir = $1 if $targ =~ s/^(\S+)\/([^\/\s]*)$/$2/ and -d $1;
+
+  NetSNMP::Cert::dprint("find_certs(4):${dir}:$targ:$cwd\n", $opts);
+
+  my @certs;
+  my $glob = "$dir/$targ";
+  foreach (<$dir/*>) {
+    NetSNMP::Cert::dprint("checking($dir:$targ): $_\n", $opts);
+    next unless /^$dir\/$targ(.*$suffix_regex)?$/;
+    # return exact match if not wantarray()
+    return $_ if (not wantarray()) and /^$dir\/$targ($suffix_regex)?$/;
+    NetSNMP::Cert::dprint("pushing: $_\n", $opts);
+    push(@certs, $_);
+  }
+
+  return (wantarray ? @certs : $certs[0]);
+}
+
+sub check_output_file {
+  my $opts = shift;
+  my $file = shift;
+  my $interactive = shift;
+  my $force = shift;
+  my $continue = 1;
+
+  if (-w $file) {
+    if ($interactive and not $force) {
+      print "Output file ($file) exists; will be overwritten\nContinue [y/N]: ";
+      $continue = <STDIN>; chomp $continue;
+      $continue = 0 if $continue =~ /^\s*$|^no?\s*$/i;
+    } else {
+      if ($force) {
+	NetSNMP::Cert::vprint("Output file ($file) exists; overwriting...\n", $opts);
+      } else {
+	NetSNMP::Cert::vprint("Output file ($file) exists; exiting...\n", $opts);
+	$continue = 0;
+      }
+    }
+  } elsif (-e $file) {
+    NetSNMP::Cert::vprint("Output file ($file) not writable; exiting...\n", $opts);
+    $continue = 0;
+  }
+  exit(1) unless $continue;
+}
+
+sub is_server {
+  my $tag = shift;
+  return 1 if $tag eq 'snmpd' or $tag eq 'snmptrapd';
+  return 0;
+}
+
+sub is_ca_cert {
+  my $crt = shift;
+  my $output = `openssl x509 -in '$crt' -text -noout`;
+  return ($output =~ /^\s*CA:TRUE\s*$/m ? 1 : 0);
+}
+
+sub x509_format {
+  my $opts = shift;
+  my $fmt;
+
+  foreach my $f (@NetSNMP::Cert::X509FMTS) {
+    $fmt .= " -$f" if defined $opts->{$f};
+  }
+
+  return $fmt;
+}
+
+sub make_openssl_conf {
+  my $file = shift;
+  return if -r $file;
+
+  open(F, ">$file") or die("could not open $file");
+
+  print F <<'END';
+#
+# Net-SNMP (D)TLS OpenSSL configuration file.
+#
+
+rdir            = .
+dir		= $ENV::DIR
+RANDFILE	= $rdir/.rand
+MD		= sha1
+KSIZE		= 2048
+CN		= net-snmp.org
+EMAIL		= admin@net-snmp.org
+COUNTRY	        = US
+STATE		= CA
+LOCALITY	= Davis
+ORG		= Net-SNMP
+ORG_UNIT	= Development
+SAN             = email:copy
+DAYS            = 365
+CRLDAYS         = 30
+
+default_days	= $ENV::DAYS		# how long to certify for
+default_crl_days= $ENV::CRLDAYS		# how long before next CRL
+default_md	= $ENV::MD		# which md to use.
+
+database	= $dir/.index		# database index file.
+serial		= $dir/.serial 		# The current serial number
+certs		= $rdir/certs		# identity certs
+new_certs_dir	= $dir/newcerts	# default place for new certs.
+ca_certs_dir	= $rdir/ca-certs	# default place for new certs.
+key_dir		= $rdir/private
+
+crl_dir		= $dir/crl		# crl's
+crlnumber	= $dir/.crlnumber	# the current crl number
+					# must be commented out to leave V1 CRL
+crl		= $crl_dir/crl.pem	# The current CRL
+
+preserve	= no			# keep passed DN ordering
+unique_subject	= yes			# Set to 'no' to allow creation of
+					# certificates with same subject.
+# Extra OBJECT IDENTIFIER info:
+oid_section		= new_oids
+
+[ new_oids ]
+
+# Add new OIDs in here for use by 'ca' and 'req'.
+# Add a simple OID like this:
+# testoid1=1.2.3.4
+# Use config file substitution like this:
+# testoid2=${testoid1}.5.6
+
+####################################################################
+[ ca ]
+default_ca	= CA_default		# The default ca section
+
+####################################################################
+[ CA_default ]
+# certificate	= $ca_certs_dir/$ENV::TAG.crt 	# CA certificate so sign with
+name_opt 	= ca_default		# Subject Name options
+cert_opt 	= ca_default		# Certificate field options
+policy		= policy_match
+copy_extensions = copy                  # copy v3 extensions (subjectAltName)
+subjectAltName  = copy
+
+# For the CA policy
+[ policy_match ]
+countryName		= match
+stateOrProvinceName	= match
+organizationName	= match
+organizationalUnitName	= optional
+commonName		= supplied
+emailAddress		= optional
+
+# For the 'anything' policy
+# At this point in time, you must list all acceptable 'object'
+# types.
+[ policy_anything ]
+countryName		= optional
+stateOrProvinceName	= optional
+localityName		= optional
+organizationName	= optional
+organizationalUnitName	= optional
+commonName		= supplied
+emailAddress		= optional
+
+####################################################################
+[ req ]
+default_bits		= $ENV::KSIZE
+default_md		= $ENV::MD
+distinguished_name	= req_distinguished_name
+string_mask 		= MASK:0x2002
+req_extensions          = v3_req
+x509_extensions         = v3_user_create
+
+[ req_distinguished_name ]
+countryName			= Country Name (2 letter code)
+countryName_default		= $ENV::COUNTRY
+countryName_min			= 2
+countryName_max			= 2
+
+stateOrProvinceName		= State or Province Name (full name)
+stateOrProvinceName_default	= $ENV::STATE
+
+localityName			= Locality Name (eg, city)
+localityName_default		= $ENV::LOCALITY
+
+0.organizationName		= Organization Name (eg, company)
+0.organizationName_default	= $ENV::ORG
+
+organizationalUnitName		= Organizational Unit Name (eg, section)
+organizationalUnitName_default	= $ENV::ORG_UNIT
+
+commonName			= Common Name (eg, your name or your server\'s hostname)
+commonName_max			= 64
+commonName_default              = $ENV::CN
+
+emailAddress			= Email Address
+emailAddress_max		= 64
+emailAddress_default            = $ENV::EMAIL
+
+[ v3_req ]
+
+# Extensions to add to a certificate request
+basicConstraints = CA:FALSE
+
+# Import the email address and/or specified SANs.
+%[subjectAltName = $ENV::SAN]
+
+[ v3_user_create ]
+
+# Extensions to add to a certificate request
+basicConstraints = CA:FALSE
+#keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# PKIX recommendation.
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer:always
+
+# Import the email address and/or specified SANs.
+%[subjectAltName = $ENV::SAN]
+
+[ v3_ca_create ]
+# Extensions to add to a CA certificate
+basicConstraints = CA:TRUE
+# This will be displayed in Netscape's comment listbox.
+nsComment = "OpenSSL Generated Certificate (net-snmp)"
+
+# PKIX recommendation.
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer:always
+
+# Import the email address and/or specified SANs.
+%[subjectAltName = $ENV::SAN]
+
+[ v3_ca_sign ]
+# Extensions to add when 'ca' signs a request.
+basicConstraints = CA:FALSE
+# This will be displayed in Netscape's comment listbox.
+nsComment = "OpenSSL Generated Certificate (net-snmp)"
+
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer:always
+
+[ v3_ca_sign_ca ]
+# Extensions to add when 'ca' signs a ca request.
+basicConstraints = CA:TRUE
+
+# This will be displayed in Netscape's comment listbox.
+nsComment = "OpenSSL Generated Certificate (net-snmp)"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer:always
+
+END
+
+}
+
+
+package NetSNMP::Cert::Obj;
+
+sub new {
+  my $class = shift;
+  my $cfield = shift;
+  my $parent = shift;
+  my $ind = shift;
+  my $this = {};
+  bless($this, $class);
+
+  # initialize hash of keys which are dynamically created or internal
+  $this->{'AUTOKEYS'}{'AUTOKEYS'}++;
+
+  # store a reference to ourselves so our children can find us
+  $this->autoSet('CFIELD', $cfield);
+  $this->autoSet($cfield , $this);
+  $this->autoSet('CHILDREN', []);
+  $this->autoSet('INDEX', $ind) if defined $ind;
+
+  if (defined $parent) {
+    # cache 'APP' in all objs for easy reference
+    $this->autoSet('APP', $parent->inherit('APP'));
+    my $app = $this->{'APP'};
+
+    die("net-snmp-cert: error: no NetSNMP::Cert::App context provided")
+      if not defined $app or not ref $app eq 'NetSNMP::Cert::App';
+    # save children for list traversal
+    push(@{$parent->{'CHILDREN'}}, $this) unless $parent eq $this;
+  } else {
+    # we are the top of the list
+    $parent = $this;
+  }
+  $this->autoSet('PARENT' , $parent);
+
+  return $this;
+}
+
+sub autoSet {
+  my $this = shift;
+  my $key = shift;
+  if (@_) {
+    my $val = shift;
+    $this->{'AUTOKEYS'}{$key}++;
+    $this->{$key} = $val;
+  }
+  return exists $this->{'AUTOKEYS'}{$key};
+}
+
+sub inherit {
+  my $this = shift;
+  my $field = shift;
+  my $id;
+
+  # cmd opts override config settings
+  if (exists $this->{'APP'} and exists $this->{'APP'}{'OPTS'}) {
+    my $opts = $this->{'APP'}{'OPTS'};
+    $id = $opts->{'identity'};
+    return $opts->{$field} if defined $opts->{$field};
+  }
+
+  if (defined $id and exists $this->{'identity'} and
+      exists $this->{'identity'}{$id} and
+      exists $this->{'identity'}{$id}{$field}) {
+    return $this->{'identity'}{$id}{$field};
+  }
+
+  # return our field if we have it
+  return $this->{$field} if defined $this->{$field};
+
+  # terminate recursion at top and return undef if not found
+  return undef if not defined $this->{'PARENT'} or $this->{'PARENT'} eq $this;
+
+  # recurse to parent
+  $this->{'PARENT'}->inherit($field);
+}
+
+sub resolve {
+  my $this = shift;
+  my $opts = $this->inherit('OPTS');
+  my $val = shift;
+
+  NetSNMP::Cert::dprint("resolving: $val\n", $opts);
+
+  $val =~ s/(\$(\w+))/$this->inherit($2) or die("unresolved reference in config: $1")/ge;
+  $val =~ s/(\&\{(.*?)\})/$2/gee;
+
+  NetSNMP::Cert::dprint("resolved: $val\n", $opts);
+
+  return $val
+}
+
+sub delete {
+  my $this = shift;
+  my $opts = $this->inherit('OPTS');
+
+  NetSNMP::Cert::dprint("Obj::delete: ($this) [$this->{CFIELD}]\n", $opts);
+
+  my $parent = $this->{'PARENT'};
+  my @children = @{$this->{'CHILDREN'}};
+
+  foreach my $child (@children) {
+    $child->delete();
+  }
+
+  NetSNMP::Cert::dwarn("Obj: children not freed\n", $opts) if @{$this->{'CHILDREN'}};
+
+  # delete all our self-references
+  delete($this->{$this->{'CFIELD'}}) if exists $this->{'CFIELD'};
+  delete($this->{'PARENT'});
+  delete($this->{'CHILDREN'});
+
+  $parent->disown($this) if defined $parent and ref($parent) =~ /NetSNMP::Cert/;
+}
+
+sub disown {
+  my $this = shift;
+  my $thechild = shift;
+  my $opts = $this->inherit('OPTS');
+  my $ind = 0;
+
+  NetSNMP::Cert::dprint("Obj::disown: ($this) [$this->{CFIELD}] disowning ($thechild) [$thechild->{CFIELD}]\n", $opts);
+
+  foreach my $child (@{$this->{'CHILDREN'}}) {
+    last if $child eq $thechild;
+    $ind++;
+  }
+  if ($ind < @{$this->{'CHILDREN'}}) {
+    splice(@{$this->{'CHILDREN'}}, $ind, 1);
+  } else {
+    NetSNMP::Cert::dwarn("Child ($thechild) not found in object ($this)\n", $opts);
+  }
+}
+
+sub disabled {
+  my $this = shift;
+  return (exists $this->{'disable'} ? $this->{'disable'} : 0);
+}
+
+my %cfg = (
+	   'name' => 1,
+	   'type' => 2,
+	   'id' => 6,
+	  );
+
+sub cfgsort {
+  my $self = shift;
+  my $a = shift;
+  my $b = shift;
+  return -1 if exists $cfg{$a} and not exists $cfg{$b};
+  return 1 if exists $cfg{$b} and not exists $cfg{$a};
+  return $cfg{$a} <=> $cfg{$b} if exists $cfg{$a} and exists $cfg{$b};
+  return -1 if !ref($self->{$a}) and ref($self->{$b});
+  return 1 if !ref($self->{$b}) and ref($self->{$a});
+  return -1 if ref($self->{$a}) =~ /NetSNMP::Cert/ and ref($self->{$b}) !~ /NetSNMP::Cert/;
+  return 1 if ref($self->{$b}) =~ /NetSNMP::Cert/ and ref($self->{$a}) !~ /NetSNMP::Cert/;
+  return 0;
+}
+
+sub dump {
+  my $self = shift;
+  my $indent = shift;
+  my $self_str = $self->{'CFIELD'};
+  my @data_keys =  grep {!$self->autoSet($_)} keys %$self;
+  my @lines;
+
+  push(@lines, "\n" . ' ' x $indent . "$self_str = {\n") if defined $indent;
+
+  {
+    my $indent = (defined $indent ? $indent + 3 : 0);
+    foreach my $key (sort {cfgsort($self,$NetSNMP::Cert::Obj::a,
+				   $NetSNMP::Cert::Obj::b)} (sort @data_keys)) {
+      if (ref($self->{$key}) =~ /NetSNMP::Cert/) {
+	push(@lines, $self->{$key}->dump($indent));
+      } elsif (ref($self->{$key}) =~ /ARRAY/) {
+	push(@lines, "\n") if ref(${$self->{$key}}[0]) !~ /NetSNMP::Cert/;
+	foreach my $elem (@{$self->{$key}}) {
+	  if (ref($elem) =~ /NetSNMP::Cert/) {
+	    push(@lines, $elem->dump($indent));
+	  } else {
+	    push(@lines, ' ' x $indent . "$key = $elem\n");
+	  }
+	}
+      } else {
+	my $str = $key . (defined $self->{$key} ? " = $self->{$key}\n" : "\n");
+	push(@lines, ' ' x $indent . $str);
+      }
+    }
+  }
+
+  push(@lines, ' ' x $indent . "}; # end $self_str\n") if defined $indent;
+  return @lines;
+}
+
+sub DESTROY {
+  my $this = shift;
+
+  print("Obj::DESTROY $this [", ref $this, "]\n") if $NetSNMP::Cert::DEBUG >= 3;
+}
+
+package NetSNMP::Cert::App;
+use vars qw(@ISA);
+
+@ISA = qw(NetSNMP::Cert::Obj);
+
+sub new {
+  my $class = shift;
+
+  # the app is god, it is its own parent
+  my $this = $class->SUPER::new('APP');
+
+  bless($this, $class);
+
+  # verify required tools or die
+  $this->checkReqs();
+
+  # internal intitialization
+  $this->initOpts();
+
+  # make a new empty config and init (not parsed)
+  $this->{'config'} = new NetSNMP::Cert::Config($this);
+
+  return $this;
+}
+
+sub checkReqs {
+  my $app = shift;
+
+  die("$NetSNMP::Cert::OPENSSL does not exist or is not executable")
+    if system("$NetSNMP::Cert::OPENSSL version > /dev/null 2>&1");
+
+  my $ossl_ver = `$NetSNMP::Cert::OPENSSL version`; chomp $ossl_ver;
+  $ossl_ver =~ s/^OpenSSL\s+([\d\.]+).*$/$1/;
+  my $ossl_min_ver = $NetSNMP::Cert::OPENSSL_MIN_VER;
+
+  die("$NetSNMP::Cert::OPENSSL (v$ossl_ver): must be $ossl_min_ver or later")
+    if ($ossl_ver cmp $ossl_min_ver) < 0;
+
+  die("$NetSNMP::Cert::CFGTOOL not found: please install")
+    if system("$NetSNMP::Cert::CFGTOOL > /dev/null 2>&1");
+}
+
+sub initOpts {
+  my $app = shift;
+  my $opts = {};
+  $app->autoSet('OPTS', $opts);
+
+  # Define directories we need.
+  $opts->{'bindir'} = NetSNMP::Cert::find_bin_dir();
+
+  $opts->{'out'} = "> $NetSNMP::Cert::OUTLOG";
+  $opts->{'err'} = "2> $NetSNMP::Cert::ERRLOG";
+
+  # set up paths for app install and runtime env
+  $ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
+  $ENV{PATH} = "$opts->{'bindir'}:$ENV{PATH}";
+
+  # default all privs to -rw-------
+  umask(077);
+}
+
+sub init {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+  my $config = $app->{'config'};
+  my @args = @_;   # pass external args (typically ARGV)
+
+  # parse command line
+  $app->parseArgs(@args);
+
+  # lazy config parsing postponed until here, will not reparse
+  $config->parse();
+
+  # set defaults here if not already set in cmdline or config
+  # guided interactive mode by default
+  NetSNMP::Cert::set_default($opts, $config, 'interactive', 1);
+  # verbose output
+  NetSNMP::Cert::set_default($opts, $config, 'verbose', 1);
+
+  # find tlsdir/subdirs or make it
+  $opts->{'tlsdir'} = $app->createTlsDir();
+}
+
+sub parseArgs {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+  my @args = @_;
+
+  NetSNMP::Cert::GetOptsFromArray(\@args, $opts, 'help|?', 'version|V',
+		      'interactive!', 'I', 'verbose!', 'Q', 'force|F',
+		      'cfgfile|f=s', 'cfgdir|C=s', 'tlsdir|tlsDir|T=s',
+		      'tag|t=s', 'identity|i=s', 'debug|D+',);
+
+  NetSNMP::Cert::version(0) if $opts->{'version'};
+
+  NetSNMP::Cert::usage(0) if $opts->{'help'};
+
+  # pull out the cmd - getOpts should leave it untouched for us
+  $opts->{'cmd'} = NetSNMP::Cert::pull_cmd(\@args);
+
+  # save extra args for command specific processing
+  $opts->{'cmdargs'} = [@args];
+
+  # Check debug option first
+  $NetSNMP::Cert::DEBUG = $opts->{'debug'};
+  $opts->{'err'} = $opts->{'out'} = "" if $opts->{'debug'};
+  $opts->{'interactive'} = not $opts->{'I'} if defined $opts->{'I'};
+  $opts->{'verbose'} = not $opts->{'Q'} if defined $opts->{'Q'};
+
+  # search for cfgdir and cfgfile based on opts and confpath
+  $opts->{'cfgdir'} = NetSNMP::Cert::find_cfgdir($opts->{'cfgdir'},
+						 $opts->{'cfgfile'});
+  $opts->{'cfgfile'} = NetSNMP::Cert::find_cfgfile($opts->{'cfgdir'},
+						   $opts->{'cfgfile'});
+}
+
+sub createTlsDir {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+  my $config = $app->{'config'};
+  my $dir;
+  my $file;
+  my $cmd;
+
+  $dir = $config->inherit('tlsDir');
+
+  if (not defined $dir) {
+    my $cfgdir = $opts->{'cfgdir'};
+    die("undefined cfgdir: unable to creat tlsdir: exiting...\n") unless defined $cfgdir;
+    $dir = "$cfgdir/$NetSNMP::Cert::TLSDIR";
+  }
+
+  NetSNMP::Cert::dprint("tlsDir is: $dir\n", $opts);
+  $dir = NetSNMP::Cert::fq_rel_path($dir);
+  NetSNMP::Cert::dprint("tlsDir is: $dir\n", $opts);
+
+  NetSNMP::Cert::dprint("tlsDir not found, creating\n", $opts) unless -d $dir;
+  NetSNMP::Cert::make_dirs($opts, $dir, 0700, @NetSNMP::Cert::TLSDIRS);
+
+  my $ssl_cfg_in = NetSNMP::Cert::fq_rel_path($NetSNMP::Cert::SSLCFGIN,$dir);
+
+  # Existing openssl.conf tmpl will be preserved
+  if (-f $ssl_cfg_in) {
+    NetSNMP::Cert::dwarn("OpenSSL template exists: preserving...", $opts);
+  }
+
+  if (not -f $ssl_cfg_in) {
+    NetSNMP::Cert::dprint("make_openssl_conf($ssl_cfg_in)", $opts);
+    NetSNMP::Cert::make_openssl_conf($ssl_cfg_in);
+    chmod(0600, $ssl_cfg_in);
+  }
+
+  NetSNMP::Cert::dprint("createTlsDir: done\n", $opts);
+  return $dir;
+}
+
+my @interactive_ops = (['gencert', "Generate a signed certificate"],
+	   ['genca', "Generate a CA certificate"],
+	   ['gencsr', "Generate a Certificate Signing Request"],
+	   ['signcsr', "Sign a Certificate Signing Request"],
+	  );
+
+sub run {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+  my $cmd = $opts->{'cmd'};
+
+  # must have a command in non-Interactive mode
+  NetSNMP::Cert::usage(3) if !$opts->{'interactive'} and !$opts->{'cmd'};
+
+  #  change dir tls dir - the cwd for all commands - save cwd first
+  $opts->{'rdir'} = ::getcwd();
+  chdir($opts->{'tlsdir'}) or die("could'nt change directory: $opts->{tlsdir}");
+  # display context
+  NetSNMP::Cert::dprint("PATH: $ENV{PATH}\n\n", $opts);
+  NetSNMP::Cert::dprint("config file: $opts->{cfgfile}\n", $opts);
+  NetSNMP::Cert::dprint("config dir:  $opts->{cfgdir}\n", $opts);
+  NetSNMP::Cert::dprint("tls dir:     $opts->{tlsdir}\n", $opts);
+
+  my $cmdstr = join(' ', $cmd, @{$opts->{'cmdargs'}});
+  NetSNMP::Cert::dprint("command:     $cmdstr\n", $opts);
+
+  NetSNMP::Cert::GetOptsFromArray(\@{$opts->{'cmdargs'}}, $opts,
+				  'with-ca|a=s', 'ca|A=s','csr|r=s',
+				  'from-crt|x=s', 'crt|X=s', 'days|d=s',
+				  'cn|n=s', 'email|e=s', 'host|h=s',
+				  'san|s=s@', 'org|o=s', 'unit|u=s',
+				  'country|c=s', 'state|province|p=s',
+				  'locality|l=s', 'brief|b',
+				  @NetSNMP::Cert::X509FMTS);
+
+  # process extra args; --<cfg-name>[=<val>]
+  $app->processExtraArgs();
+
+  # If in interactive mode - fill missing info by interviewing user
+  if (not defined $cmd or grep {/$cmd/} map {$_->[0]} @interactive_ops) {
+    $app->userInput() if $opts->{interactive};
+    $cmd = $opts->{'cmd'}; # may have changed
+  }
+
+  # resolve input args to filenames
+  $app->resolveCrtArgs();
+
+  # use env. or merge template for OpenSSL config
+  $NetSNMP::Cert::SSLCFG ||= $app->opensslCfg();
+
+  if ($cmd =~ /^genca$/) {
+    NetSNMP::Cert::usage(1) if defined $opts->{'from-crt'} or defined $opts->{'csr'};
+    $app->genCa($opts->{'with-ca'});
+  } elsif ($cmd =~ /^gence?rt$/) {
+    NetSNMP::Cert::usage(1) if defined $opts->{'from-crt'} or defined $opts->{'csr'};
+    $app->genCert($opts->{'with-ca'});
+  } elsif ($cmd =~ /^gencsr$/) {
+    NetSNMP::Cert::usage(1) if defined $opts->{'with-ca'} or defined $opts->{'crt'};
+    $app->genCsr();
+  } elsif ($cmd =~ /^signcsr$/) {
+    NetSNMP::Cert::usage(1) unless defined $opts->{'with-ca'} and defined $opts->{'csr'};
+    $app->signCsr();
+  } elsif ($cmd =~ /^show(ce?rts?)?$/) {
+    $app->show('certs');
+  } elsif ($cmd =~ /^showcas?$/) {
+    $app->show('ca-certs');
+  } elsif ($cmd =~ /^import$/) {
+    $app->import();
+  } else {
+    NetSNMP::Cert::usage();
+  }
+}
+
+sub processExtraArgs {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+  my @args;
+
+  NetSNMP::Cert::dprint("processing extra args...\n", $opts);
+
+  while (@{$opts->{'cmdargs'}}) {
+    my $arg = shift(@{$opts->{'cmdargs'}});
+    NetSNMP::Cert::dprint("found: arg --> $arg\n", $opts);
+    if ($arg =~ /^-+(\w+)(?:=(.*?))?\s*$/) {
+      NetSNMP::Cert::dprint("found: arg($1) val($2)\n", $opts);
+      if (exists $opts->{$1}) {
+   	NetSNMP::Cert::vwarn("option ($1) already set: overwriting\n", $opts);
+      } 
+      $opts->{$1} = (defined $2 ? $2 : 1);
+    } else {
+      push(@args, $arg);
+    }
+  }
+  @{$opts->{'cmdargs'}} = @args;
+}
+
+sub resolveCrtArgs {
+  my $app = shift;
+  my $opts = $app->{'OPTS'};
+
+  # find ca, crt, csr args if present and return fully qualified path
+  if (defined $opts->{'with-ca'}) {
+    my $ca;
+    $ca = NetSNMP::Cert::find_certs($opts, 'ca-certs', $opts->{'with-ca'});
+    die("unable to locate CA certificate ($opts->{'with-ca'})\n") unless -e $ca;
+    die("unable read CA certificate ($opts->{'with-ca'})\n") unless -r $ca;
+    $opts->{'with-ca'} = $ca;
+  }
+
+  if (defined $opts->{'from-crt'}) {
+    my $crt;
+    $crt = NetSNMP::Cert::find_certs($opts, 'certs', $opts->{'from-crt'});
+    die("unable to locate certificate ($opts->{'from-crt'})\n") unless -e $crt;
+    die("unable read certificate ($opts->{'from-crt'})\n") unless -r $crt;
+    $opts->{'from-crt'} = $crt;
+  }
+
+  if (defined $opts->{'csr'}) {
+    my $csr;
+    $csr = NetSNMP::Cert::find_certs($opts, 'csrs', $opts->{'csr'});
+    die("unable to locate CSR certificate ($opts->{csr})\n") unless -e $csr;
+    die("unable read CSR certificate ($opts->{csr})\n") unless -r $csr;
+    $opts->{'csr'} = $csr;
+  }
+}
+
+sub opensslCfg {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $san = $config->inherit('san') || $config->inherit('subjectAltName');
+  my $ssl_cfg_in = NetSNMP::Cert::fq_rel_path($NetSNMP::Cert::SSLCFGIN);
+  my $ssl_cfg_out = NetSNMP::Cert::fq_rel_path($NetSNMP::Cert::SSLCFGOUT);
+
+  if (not -f $ssl_cfg_in) {
+    NetSNMP::Cert::vwarn("OpenSSL template not found: $ssl_cfg_in\n", $opts);
+    die("no OpenSSL template");
+  }
+
+  open(IN, $ssl_cfg_in) or die("unable to open OpenSSL template: $ssl_cfg_in\n");
+  open(OUT, ">$ssl_cfg_out") or die("unable to open OpenSSL config: $ssl_cfg_out\n");
+
+  print OUT "#######################################################\n";
+  print OUT "#####    Warning: Do Not Edit - Generated File    #####\n";
+  print OUT "#######################################################\n";
+  while (<IN>) {
+    if ($san) {
+      s/\%\[([^\]]*?)\]/$1/;
+    } else {
+      s/\%\[([^\]]*?)\]//;
+    }
+    print OUT $_;
+  }
+  close(IN);
+  close(OUT);
+
+  return $ssl_cfg_out;
+}
+
+sub opensslEnv {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+
+  my $cn = shift;
+  my $days = shift;
+  my $dir = shift || ".";
+  # XXX - need to handle config'd identity here
+  my $name = $config->inherit("name");
+  my $host = $config->inherit("host");
+  my $email = $config->inherit("email");
+  my $country = $config->inherit("country");
+  my $state = $config->inherit("state");
+  my $locality = $config->inherit("locality");
+  my $org = $config->inherit("org");
+  my $org_unit = $config->inherit("unit") || $config->inherit("orgUnit");
+  my $san;
+  my $san_arr_ref;
+  my $md = $config->inherit("msgDigest");
+  my $ksize = $config->inherit("keySize");
+
+  my $env;
+
+  $env .= " KSIZE=$ksize" if defined $ksize;
+  $env .= " DAYS=$days" if defined $days;
+  $env .= " MD=$md" if defined $md;
+
+  $env .= " DIR='$dir'" if defined $dir;
+
+  $env .= " EMAIL=$email" if defined $email;
+  $env .= " CN='$cn'" if defined $cn;
+  $env .= " ORG='$org'" if defined $org;
+  $env .= " ORG_UNIT='$org_unit'" if defined $org_unit;
+  $env .= " COUNTRY=$country" if defined $country;
+  $env .= " STATE=$state" if defined $state;
+  $env .= " LOCALITY=$locality" if defined $locality;
+
+  $san_arr_ref = $config->inherit('subjectAltName');
+  $san = join('\,\ ', @{$san_arr_ref}) if ref $san_arr_ref;
+  $san_arr_ref = $config->inherit('san');
+  $san .= join('\,\ ', @{$san_arr_ref}) if ref $san_arr_ref;
+  $san =~ s/EMAIL:/email:/g;
+  $env .= " SAN=$san" if defined $san;
+
+  NetSNMP::Cert::dprint("opensslEnv: $env\n", $opts);
+
+  return $env;
+}
+our @san_prefix = (['dirName:', "e.g., dirName:/usr/share/snmp/tls"],
+		   ['DNS:', "e.g., DNS:test.net-snmp.org)"],
+		   ['email:', "e.g., email:admin\@net-snmp.org"],
+		   ['IP:', "e.g., IP:192.168.1.1"],
+		   ['RID:', "e.g., RID:1.1.3.6.20"],
+		   ['URI:', "e.g., URI:http://www.net-snmp.org"]);
+
+sub userInputDN {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $prompt;
+  my $ret;
+  my $host = $config->inherit("host") || ::hostname();
+  my $email = $config->inherit('email') || getlogin() . "\@$host";
+
+ # get EMAIL
+  $prompt = "Enter Email";
+  $ret = $email;
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "\tEmail Address - (e.g., <name>@<domain>)");
+  $email = $opts->{'email'} = $ret if defined $ret;
+  # get CN
+  $prompt = "Enter Common Name";
+  $ret = ($opts->{'cmd'} eq 'genca' ? "ca-$host" : $email);
+  $ret = $config->inherit('cn') || $config->inherit('commonName') || $ret;
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "\tCommon Name - (e.g., net-snmp.org)");
+  $opts->{'cn'} = $ret if defined $ret;
+  # get ORG
+  $prompt = "Enter Organization";
+  $ret = $config->inherit('org') || 'Net-SNMP';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "\tOrganization - (e.g., Net-SNMP)");
+  $opts->{'org'} = $ret if defined $ret;
+  # get ORG_UNIT
+  $prompt = "Enter Organizational Unit";
+  $ret = $config->inherit('unit') || 'Development';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "\tOrganizational Unit - (e.g., Development)");
+  $opts->{'unit'} = $ret if defined $ret;
+  # get COUNTRY
+  $prompt = "Enter Country Code";
+  $ret = $config->inherit('country') || 'US';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "Country Code, 2 letters (<tab> for options)",
+				 $NetSNMP::Cert::MATCH, \@CC);
+  $opts->{'country'} = $ret if defined $ret;
+  # get STATE(Province)
+  $prompt = "Enter State or Province";
+  $ret = $config->inherit('state') || 'CA';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "\tState or Province - (e.g., CA)");
+  $opts->{'state'} = $ret if defined $ret;
+  # get LOCALITY
+  $prompt = "Enter Locality";
+  $ret = $config->inherit('locality') || 'Davis';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret, "\tLocality - (e.g., Davis)");
+  $opts->{'locality'} = $ret if defined $ret;
+  # get SAN (loop)
+  if (!$config->{'brief'}) {
+      print "Enter Subject Alt Names.  Examples:\n";
+      foreach my $pair (@san_prefix) {
+	  printf("\t%-10.10s %s\n", $pair->[0], $pair->[1]);
+      }
+  }
+  do {
+    $ret = 'done';
+    $prompt = "Enter Subject Alt Name (enter 'done' when finished) [$ret]: ";
+    $ret = NetSNMP::Term::Complete ($prompt, $ret,
+			    "\tSubject Alt Name - (<type>:<val>)",
+			     $NetSNMP::Cert::PREMATCH, \@san_prefix);
+    push(@{$opts->{'san'}}, $ret) if defined $ret and $ret ne 'done';
+  } while (defined $ret and $ret ne 'done');
+}
+
+our @snmp_apps = (['snmp', 'Generic Certificate'],
+		  ['snmpapp','Client Certificate'],
+		  ['snmpd','Agent Certificate'],
+		  ['snmptrapd','Trap-agent Certificate']);
+
+sub userInputTag {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $ret;
+  my $prompt;
+
+  print "Application Tag:\n\tused to name the certificate and dictate its filename\n";
+  print "\tIt may also associate it with a particular application (eg \"snmpd\")\n";
+  print "\tif 'none', a name will be generated from other parameters\n";
+  print "\tenter <tab><tab> for typical options, or enter new name\n";
+  $prompt = "Enter Application Tag";
+  $ret = $config->inherit('tag') || 'none';
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "Application Tag assocaiated with certificate",
+				 (not $NetSNMP::Cert::MATCH), \@snmp_apps);
+  $opts->{'tag'} = $ret if defined $ret and $ret ne 'none';
+}
+
+sub userInput {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $prompt;
+  my $ret;
+
+  print "Choose an operation:\n";
+  foreach my $op (@interactive_ops) {
+    print "\t$op->[0]\t-  $op->[1]\n";
+  }
+
+  $prompt = "Operation";
+  $ret = $config->inherit('cmd') || $interactive_ops[0][0];
+  $prompt .= (defined $ret ? " [$ret]: " : ": ");
+  $ret = NetSNMP::Term::Complete($prompt, $ret,
+				 "Certifciate Operation to perform",
+				 $NetSNMP::Cert::MATCH, \@interactive_ops);
+
+  $opts->{'cmd'} = $ret;
+
+  if ($ret =~ /^gencert$/) {
+    # get tag
+    $app->userInputTag();
+    # get DN
+    $app->userInputDN();
+    # self-signed/CA-signed(ca-cert)
+  } elsif ($ret =~ /^genca$/) {
+    # get DN
+    $app->userInputDN();
+  } elsif ($ret =~ /^gencsr$/) {
+    # get tag
+    $app->userInputTag();
+    # get DN
+    $app->userInputDN();
+  } elsif ($ret =~ /^signcsr$/) {
+    # get csr
+    $prompt = "Choose Certificate Signing Request";
+    $ret = $config->inherit('csr');
+    $prompt .= (defined $ret ? " [$ret]: " : ": ");
+    $ret = NetSNMP::Term::Complete($prompt, $ret);
+    $opts->{'csr'} = $ret if defined $ret;
+    # get ca
+    $prompt = "Choose CA Certificate";
+    $ret = $config->inherit('with-ca');
+    $prompt .= (defined $ret ? " [$ret]: " : ": ");
+    $ret = NetSNMP::Term::Complete($prompt, $ret);
+    $opts->{'with-ca'} = $ret if defined $ret;
+  } else {
+    NetSNMP::Cert::vwarn("aborting operation: exiting...\n", $opts);
+    exit(1);
+  }
+}
+
+sub createCaDir {
+  my $app = shift;
+  my $dir = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $file;
+  my $cmd;
+
+  NetSNMP::Cert::make_dirs($opts, $dir, 0700,'newcerts','private');
+
+  $file = "$dir/$NetSNMP::Cert::SERIAL";
+  if (not -f $file) {
+    $cmd = "echo '01' > '$file'";
+    NetSNMP::Cert::dprint("$cmd\n", $opts);
+    NetSNMP::Cert::usystem($cmd, $opts);
+    chmod(0600, $file);
+  }
+
+  $file = "$dir/$NetSNMP::Cert::INDEX";
+  if (not -f $file) {
+    $cmd = "touch '$file'";
+    NetSNMP::Cert::dprint("$cmd\n", $opts);
+    NetSNMP::Cert::usystem($cmd, $opts);
+    chmod(0600, $file);
+  }
+}
+
+sub genCa {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $host = $config->inherit('host') || ::hostname();
+  my $days = $config->inherit('days') || $config->inherit('caDays') || 
+             $NetSNMP::Cert::DEFCADAYS;
+  my $cn = $config->inherit('cn') || $config->inherit('commonName') ||
+           "ca-$host";
+  my $ca = $config->inherit('with-ca');
+  my $tag = $config->inherit('tag') || $cn;
+
+  # create CA dir
+  my $dir = ".ca/$tag";
+  $app->createCaDir($dir);
+
+  my $outCrt = "$NetSNMP::Cert::CADIR/$tag.crt";
+  my $outKey = "$NetSNMP::Cert::PRIVDIR/$tag.key";
+
+  # set command env
+  my $env = $app->opensslEnv($cn, $days);
+
+  NetSNMP::Cert::check_output_file($opts, $outCrt,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+  NetSNMP::Cert::check_output_file($opts, $outKey,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+
+  my $cmd = "$env openssl req -extensions v3_ca_create -new -days $days -batch -config $NetSNMP::Cert::SSLCFG -keyout '$outKey'";
+  $cmd .= " -nodes";
+
+  if (defined $ca) {
+    # we have to gen a csr and then sign it, must preserve CA:TRUE
+    my $outCsr = "$NetSNMP::Cert::NEWCRTDIR/$tag.csr";
+    NetSNMP::Cert::check_output_file($opts, $outCsr,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+    $cmd .= " -out '$outCsr'";
+
+    NetSNMP::Cert::dprint("genCa (gencsr): $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+
+    my $ca_base = ::basename($ca, @NetSNMP::Cert::CRTSUFFIXES);
+    NetSNMP::Cert::dprint("ca_base: $ca_base\n", $opts);
+
+    # set command env
+    $env = $app->opensslEnv($cn, $days, ".ca/$ca_base");
+
+    $cmd = "$env openssl ca -extensions v3_ca_sign_ca -days $days -cert '$ca' -keyfile '$NetSNMP::Cert::PRIVDIR/$ca_base.key' -in '$outCsr' -batch -config $NetSNMP::Cert::SSLCFG -out '$outCrt'";
+
+    NetSNMP::Cert::dprint("genCa (signcsr): $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+  } else {
+    $cmd .= " -x509 -out '$outCrt'";
+
+    NetSNMP::Cert::dprint("genCa: $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+  }
+
+  NetSNMP::Cert::vprint("CA Generated:\n", $opts);
+  NetSNMP::Cert::vprint("  $outCrt\n", $opts);
+  NetSNMP::Cert::vprint("  $outKey\n", $opts);
+}
+
+sub genCert {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $host = $config->inherit("host") || ::hostname();
+  my $email = $config->inherit("email") || getlogin() . "\@$host";
+  my $days = $config->inherit('days') || $config->inherit('crtDays') || $NetSNMP::Cert::DEFCRTDAYS;
+  my $cn = $config->inherit('cn') || $config->inherit('commonName');
+  my $ca = $config->inherit('with-ca');
+  my $cmd;
+
+  my $tag = $opts->{'tag'} || 'snmp';
+  $cn ||= (NetSNMP::Cert::is_server($tag) ? $host : $email);
+
+  my $env = $app->opensslEnv($cn, $days);
+
+  my $outCrt = "$NetSNMP::Cert::CRTDIR/$tag.crt";
+  my $outKey = "$NetSNMP::Cert::PRIVDIR/$tag.key";
+
+  NetSNMP::Cert::check_output_file($opts, $outCrt,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+  NetSNMP::Cert::check_output_file($opts, $outKey,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+
+  $cmd = "$env openssl req -extensions v3_user_create -new -days $days -keyout '$outKey' -batch -config $NetSNMP::Cert::SSLCFG";
+  $cmd .= " -nodes";
+
+  if (defined $ca) {
+    my $outCsr = "$NetSNMP::Cert::NEWCRTDIR/$tag.csr";
+    NetSNMP::Cert::check_output_file($opts, $outCsr,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+    $cmd .= " -out '$outCsr'";
+
+    NetSNMP::Cert::dprint("genCert (gencsr): $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+
+    # XXX cleanup this temp CSR
+    my $ca_base = ::basename($ca, @NetSNMP::Cert::CRTSUFFIXES);
+    NetSNMP::Cert::dprint("ca_base: $ca_base\n", $opts);
+
+    # set command env
+    $env = $app->opensslEnv($cn, $days, ".ca/$ca_base");
+
+    $cmd = "$env openssl ca -extensions v3_ca_sign -days $days -cert '$ca' -keyfile '$NetSNMP::Cert::PRIVDIR/$ca_base.key' -in '$outCsr' -batch -config $NetSNMP::Cert::SSLCFG -out '$outCrt'";
+
+    NetSNMP::Cert::dprint("gencert (signcsr): $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+  } else {
+    $cmd .= " -x509 -out '$outCrt'";
+
+    NetSNMP::Cert::dprint("genCert: $cmd\n", $opts);
+    NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+  }
+
+  NetSNMP::Cert::vprint("Certificate Generated:\n", $opts);
+  NetSNMP::Cert::vprint("  $outCrt\n", $opts);
+  NetSNMP::Cert::vprint("  $outKey\n", $opts);
+}
+
+sub genCsr {
+  my $app = shift;
+  my $isCa = shift; # XXX - not implemented yet
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $host = $config->inherit("host") || ::hostname();
+  my $email = $config->inherit("email") || getlogin() . "\@$host";
+  my $days = $config->inherit('days') || $config->inherit('crtDays') || $NetSNMP::Cert::DEFCRTDAYS;
+  my $cn = $config->inherit('cn') || $config->inherit('commonName');
+  my $tag = $config->inherit('tag');
+  my $inCrt = $config->inherit('from-crt') || $config->inherit('fromCert');
+  my $outCsr;
+  my $csrKey;
+
+  if (defined $inCrt) {
+    $inCrt = NetSNMP::Cert::find_certs($opts, 'certs', $inCrt);
+    my $crt = ::basename($inCrt, @NetSNMP::Cert::CRTSUFFIXES);
+    $csrKey = "$NetSNMP::Cert::PRIVDIR/$crt.key";
+    $tag ||= $crt;
+  } else {
+    $tag ||= 'snmp';
+    $csrKey ||= "$NetSNMP::Cert::PRIVDIR/$tag.key";
+  }
+
+  $outCsr = "$NetSNMP::Cert::NEWCRTDIR/$tag.csr";
+
+  $cn ||= (NetSNMP::Cert::is_server($tag) ? $host : $email);
+
+  my $env = $app->opensslEnv($cn, $days);
+
+  NetSNMP::Cert::check_output_file($opts, $outCsr,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+  NetSNMP::Cert::check_output_file($opts, $csrKey,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+
+  my $cmd = (defined $inCrt ?
+  "$env openssl x509 -x509toreq -in $inCrt -out '$outCsr' -signkey '$csrKey' -nodes -days $days -batch -config $NetSNMP::Cert::SSLCFG" :
+  "$env openssl req -new -nodes -days $days -batch -keyout '$csrKey' -out '$outCsr' -config $NetSNMP::Cert::SSLCFG");
+
+  $cmd .= ($isCa ? " -extensions v3_ca_create" : " -extensions v3_user_create");
+
+  NetSNMP::Cert::dprint("genCsr: $cmd\n", $opts);
+
+  NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+
+  NetSNMP::Cert::vprint("Certificate Signing Request Generated:\n", $opts);
+  NetSNMP::Cert::vprint("  $outCsr\n", $opts);
+  NetSNMP::Cert::vprint("  $csrKey\n", $opts);
+}
+
+sub signCsr {
+  my $app = shift;
+  my $isCa = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $host = $config->inherit("host") || ::hostname();
+  my $email = $config->inherit("email") || getlogin() . "\@$host";
+  my $days = $config->inherit('days') || $config->inherit('crtDays') || $NetSNMP::Cert::DEFCRTDAYS;
+  my $cn = $config->inherit('cn') || $config->inherit('commonName');
+  my $tag = $config->inherit('tag') || 'snmp';
+  my $install = $config->inherit('install');
+
+  $cn = (NetSNMP::Cert::is_server($tag) ? $host : $email);
+
+  my $ca = $opts->{'with-ca'};
+  NetSNMP::Cert::dprint("ca: $ca\n", $opts);
+  my $ca_base = ::basename($ca, @NetSNMP::Cert::CRTSUFFIXES);
+  NetSNMP::Cert::dprint("ca_base: $ca_base\n", $opts);
+  my $ca_key = "$NetSNMP::Cert::PRIVDIR/$ca_base.key"; 
+
+  my $csr = $opts->{'csr'};
+  NetSNMP::Cert::dprint("csr: $csr\n", $opts);
+  my $csr_base = ::basename($csr, @NetSNMP::Cert::CRTSUFFIXES);
+  NetSNMP::Cert::dprint("csr_base: $csr_base\n", $opts);
+  my $outdir = ($install ? $NetSNMP::Cert::CRTDIR : $NetSNMP::Cert::NEWCRTDIR);
+  my $outCrt = "$outdir/$csr_base.crt";
+
+  my $env = $app->opensslEnv($cn, $days, ".ca/$ca_base");
+
+  NetSNMP::Cert::check_output_file($opts, $outCrt,
+				   $config->inherit('interactive'),
+				   $config->inherit('force'));
+
+  # XXX - handle keyfile search??
+  my $cmd = "$env openssl ca -batch -days $days -extensions v3_ca_sign -cert '$ca' -keyfile '$ca_key' -in '$csr' -out '$outCrt' -config $NetSNMP::Cert::SSLCFG";
+
+  # $cmd .= ($isCa ? " -extensions v3_ca_sign_ca" : " -extensions v3_ca_sign");
+
+  NetSNMP::Cert::dprint("signCsr: $cmd\n", $opts);
+
+  NetSNMP::Cert::usystem("$cmd $opts->{out} $opts->{err}", $opts);
+
+  NetSNMP::Cert::vprint("Signed Certificate Signing Request:\n", $opts);
+  NetSNMP::Cert::vprint("  $csr\n", $opts);
+  NetSNMP::Cert::vprint("with CA:\n", $opts);
+  NetSNMP::Cert::vprint("  $ca\n", $opts);
+  NetSNMP::Cert::vprint("  $ca_key\n", $opts);
+  NetSNMP::Cert::vprint("Generated Certificate:\n", $opts);
+  NetSNMP::Cert::vprint("  $outCrt\n", $opts);
+}
+
+sub show {
+  my $app = shift;
+  my $type = shift || 'certs';
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $stag = shift(@{$opts->{'cmdargs'}});
+  my $fmt = NetSNMP::Cert::x509_format($opts) || '-subject';
+  my $brief = $config->inherit('brief');
+  my $output;
+  my $cmd;
+
+  my $cwd = ::getcwd();
+  NetSNMP::Cert::dprint("show ($cwd):$type:$stag:$fmt\n", $opts);
+  NetSNMP::Cert::vprint("$opts->{'tlsdir'}:\n", $opts) unless $brief;
+
+  foreach my $c (NetSNMP::Cert::find_certs($opts, $type, $stag)) {
+    print "\n$c:\n" unless $brief;
+    $cmd = "openssl x509 -in '$c' -noout $fmt";
+    NetSNMP::Cert::dprint("show: $cmd\n", $opts);
+
+    $output = `$cmd`; chomp $output;
+    NetSNMP::Cert::vwarn("show-$type failed ($?): $output\n", $opts) if $?;
+
+    $output =~ s/^[^\n=]+=// if $brief;
+
+    print "$output\n";
+    print "\n" unless $brief;
+  }
+}
+
+sub import_file {
+  my ($file, $suffix, $targ, $rdir, $tag) = @_;
+
+  if (NetSNMP::Cert::is_url($file)) {
+    if ($NetSNMP::Cert::haveUserAgent) {
+
+      require File::Temp;
+      import File::Temp qw(tempfile);
+
+      my ($fh, $newfilename) = tempfile(SUFFIX => $suffix);
+      return if (!$fh || !$newfilename);
+      my $ua = LWP::UserAgent->new;
+      my $response = $ua->get($file);
+      if ($response->is_success) {
+	print $fh $response->decoded_content();
+      } else {
+	NetSNMP::Cert::vwarn("failed to download a certificate from $file");
+	return;
+      }
+      $fh->close;
+      $file = $newfilename;
+    } else {
+      NetSNMP::Cert::vwarn("LWP::UserAgent not installed: unable to import certificate");
+      return;
+    }
+  }
+
+  $file = NetSNMP::Cert::fq_rel_path($file, $rdir);
+  die("file unreadable: $file\n") unless -r $file;
+
+
+  if (! $targ) {
+    $targ = (NetSNMP::Cert::is_ca_cert($file) ? $NetSNMP::Cert::CADIR : $NetSNMP::Cert::CRTDIR);
+  }
+
+  $targ .= "/" . $tag . $suffix if ($tag);
+  ::copy($file, $targ);
+}
+
+
+sub import {
+  my $app = shift;
+  my $config = $app->{'config'};
+  my $opts = $app->{'OPTS'};
+  my $carg = shift(@{$opts->{'cmdargs'}});
+  my $karg = shift(@{$opts->{'cmdargs'}});
+  my $targ;
+
+  if (not defined $carg) {
+    NetSNMP::Cert::vwarn("import: no certificate supplied\n", $opts);
+    NetSNMP::Cert::usage(1);
+  }
+
+  import_file($carg, '.crt', '',,
+	      $opts->{'rdir'}, $opts->{'tag'});
+
+  return unless defined $karg;
+
+  import_file($karg, '.key', 'private',,
+	      $opts->{'rdir'}, $opts->{'tag'});
+}
+
+
+package NetSNMP::Cert::Config;
+use vars qw(@ISA);
+@ISA = qw(NetSNMP::Cert::Obj);
+
+sub new {
+  my $class = shift;
+  my $parent = shift;
+  my $this = $class->SUPER::new('config', $parent);
+
+  bless($this, $class);
+}
+
+sub parse {
+  my $config = shift;
+  my $app = $config->{'APP'};
+  my $opts = $app->{'OPTS'};
+  my $cfgfile = shift;
+  $cfgfile ||= $opts->{'cfgfile'};
+
+  return '0 but true' if $config->{'PARSED'};
+  return '0 but true' unless defined $cfgfile;
+
+  open( CONFIG, "<$cfgfile" )
+    or die "error - could not open configuration file: $cfgfile";
+
+  while (<CONFIG>) {
+    next if /^\s*#/ or /^\s*$/;
+
+    if (/^\s*(\w+)(?:\(([\)\(\d\,\.]+)\))?\s*=\s*{/) {
+      my $obj = $1;
+
+      NetSNMP::Cert::dprint("object: $obj ($2) = {\n", $opts);
+      die "error - identity: indices not supported: $2" if defined $2;
+
+      # Found an object.
+      if ( $obj eq 'identity' ) {
+	my $identity = NetSNMP::Cert::Identity::parse(*CONFIG, $config);
+	my $id = $identity->{'id'};
+	die "error - identity: 'id' not defined" unless defined $id;
+	die "error - identity: duplicate '$id'" if exists $config->{$obj}{$id};
+	$config->{$obj}{$id} = $identity;
+      } else {
+        die "error - unrecognized object ($1) at scope (config)";
+      }
+    } elsif (/^\s*(\w+)\s*=?\s*(.*?)\s*$/) {
+      my $key = $1;
+      my $val = $2;
+
+      $val = $config->resolve($val) if $val =~ /\$\w+|\&\{.*?\}/;
+      # Found a symbol.
+      NetSNMP::Cert::dprint("  $key = $val\n", $opts);
+      if ($key eq 'subjectAltName' or $key eq 'san') {
+	push(@{$config->{$key}}, $val);
+      } elsif ( defined $config->{$key} ) {
+        die "error - duplicate symbol $key";
+      } else {
+        $config->{$key} = (defined $val ? NetSNMP::Cert::map_bool($val) : 1 );
+      }
+    } elsif (/^\s*env\s*(\w+=\S+)\s*$/) {
+      # Found an environment variable.
+      NetSNMP::Cert::dprint("$&\n", $opts);
+      push(@{$config->{'env'}}, $1);
+    } else {
+      die("error in config file [$cfgfile:line $.]");
+    }
+  }
+
+  NetSNMP::Cert::dprint("end parse config\n", $opts);
+  close(CONFIG);
+
+  # augment with any config directives supplied in opts
+  foreach my $cfg (@{$opts->{'config'}}) {
+    NetSNMP::Cert::dprint("augmenting config: $cfg\n", $opts);
+
+    $config->autoSet($1, (defined($2) ? $2 : 1 ))
+      if $cfg =~ /^\s*(\w+)\s*=?\s*(.*?)\s*$/;
+  }
+  $config->autoSet('PARSED', 1);
+  return $config->{'PARSED'};
+}
+
+package NetSNMP::Cert::Identity;
+use vars qw(@ISA);
+@ISA = qw(NetSNMP::Cert::Obj);
+
+sub new {
+  my $class = shift;
+  my $this = shift || $class->SUPER::new('identity', @_);
+  my $ind = $this->{'INDEX'} || 1;
+
+  $this->autoSet('name', "$this->{type}.$ind") unless exists $this->{'name'};
+
+  $this->autoSet('LOG','') unless exists $this->{'LOG'};
+  $this->autoSet('TTY_LOG','') unless exists $this->{TTY_LOG};
+
+  bless($this, $class);
+}
+
+
+sub parse {
+  my $FILE = shift;
+  my $parent = shift;
+  my $opts = $parent->inherit('OPTS');
+  my $identity = new NetSNMP::Cert::Obj('identity', $parent);
+
+  NetSNMP::Cert::dprint("parse identity\n", $opts);
+
+  while (<$FILE>) {
+    next if /^\s*#/ or /^\s*$/;
+
+    if (/^\s*(\w+)\s*=\s*{/) {
+      # Found an object.
+      die "error - can't have nested $1";
+    } elsif (/^\s*(\w+)\s*=?\s*(.*?)\s*$/) {
+      my $key = $1;
+      my $val = $2;
+
+      # Found a symbol.
+      NetSNMP::Cert::dprint("  $key = $val\n", $opts);
+
+      $val = $identity->resolve($val) if $val =~ /\$\w+|\&\{.*?\}/;
+
+      if ( $key eq 'subjectAltName' or $key eq 'san') {
+	push(@{$identity->{$key}}, $val);
+      } elsif ( defined $identity->{$key} ) {
+        die "error - duplicate symbol $key";
+      } else {
+        $identity->{$key} = (defined $val ? NetSNMP::Cert::map_bool($val) : 1 );
+      }
+    } elsif (/\s*\}\s*\;/) {
+      # End of definition.
+      NetSNMP::Cert::dprint("end parse identity\n", $opts);
+      return new NetSNMP::Cert::Identity($identity);
+    } else {
+      die("error in config file [$opts->{cfgfile}:line $.]");
+    }
+  }
+  die "error - unexpected end of conf file";
+}
+
+package main;
+
+my $app = new NetSNMP::Cert::App();
+$app->init(@ARGV);
+$app->run();
+
+__END__
+=pod
+
+=head1   NAME
+
+net-snmp-cert - Net-SNMP Certificate Management Tool
+
+=head1   SYNOPSIS
+
+=over
+
+=item $ net-snmp-cert genca -I --cn ca-Net-SNMP
+
+=item $ net-snmp-cert gencert -I -t snmpapp --with-ca ca-Net-SNMP
+
+=item $ net-snmp-cert gencert -I -t snmpd --cn net-snmp.org
+
+=item $ net-snmp-cert showcas
+
+=item $ net-snmp-cert showcerts
+
+=back
+
+=head1   DESCRIPTION
+
+net-snmp-cert creates, signs, installs and displays X.509
+certificates used in the operation of Net-SNMP/(D)TLS.
+
+=head1   SYNTAX
+
+=over
+
+=item net-snmp-cert [--help|-?]
+
+=item net-snmp-cert [--version|-V]
+
+=item net-snmp-cert genca    [<flags>] [<dn-opts>] [--with-ca <ca>]
+
+=item net-snmp-cert gencert  [<flags>] [<dn-opts>] [--with-ca <ca>]
+
+=item net-snmp-cert gencsr   [<flags>] [<dn-opts>] [--from-crt <crt>]
+
+=item net-snmp-cert signcsr  [<flags>] [--install] --csr <csr> --with-ca <ca>
+
+=item net-snmp-cert showca   [<flags>] [<format-opts>] [<file>|<search-tag>]
+
+=item net-snmp-cert showcert [<flags>] [<format-opts>] [<file>|<search-tag>]
+
+=item net-snmp-cert import   [<flags>] <file|url> [<key>]
+
+=back
+
+=head1   COMMANDS
+
+=over
+
+=item genca
+
+generate a signed CA certificate suitable for signing other
+certificates. default: self-signed unless --with-ca <ca> supplied
+
+=item gencert
+
+generate a signed certificate suitable for identification, or
+validation. default: self-signed unless --with-ca <ca> supplied
+
+=item gencsr
+
+generate a certificate signing request. will create a new
+key and certificate unless --from-crt <crt> supplied
+
+=item signcsr
+
+sign a certificate signing request specified by --csr <csr>
+with the CA certificate specified by --with-ca <ca>
+
+=item import
+
+import an identity or CA certificate, optionally import <key>
+if an URL is passed, will attempt to import certificate from site
+
+=item showca, showcert
+
+show CA or identity certificate(s). may pass fully qualified
+file or directory name, or a search-tag which prefix matches
+installed CA or identity certificate file name(s)
+see FORMAT OPTIONS to specify output format
+
+
+=back
+
+=head1   FLAGS
+
+=over
+
+=item -?, --help            -- show this text and exit
+
+=item -V, --version         -- show version string and exit
+
+=item -D, --debug           -- raise debug level (-D -D for higher level)
+
+=item -F, --force           -- force overwrite of existing output files
+
+=item -I, --nointeractive   -- non-interactive run (default interactive)
+
+=item -Q, --noverbose       -- non-verbose output (default verbose)
+
+=item -C, --cfgdir   <dir>  -- configuration dir (see man(5) snmp_config)
+
+=item -T, --tlsdir   <dir>  -- root for cert storage (default <cfgdir>/tls)
+
+=item -f, --cfgfile  <file> -- config (default <cfgdir>/net-snmp-cert.conf)
+
+=item -i, --identity <id>   -- identity to use from config
+
+=item -t, --tag      <tag>  -- application tag (default 'snmp')
+
+=item --<cfg-param>[=<val>] -- additional config params
+
+=back
+
+=head1   CERTIFICATE OPTIONS (<cert-opts>)
+
+=over
+
+=item -a, --with-ca <ca>    -- CA certificate used to sign request
+
+=item -A, --ca <ca>         -- explicit output CA certificate
+
+=item -r, --csr <csr>       -- certificate signing request
+
+=item -x, --from-crt <crt>  -- input certificate for current operation
+
+=item -X, --crt <crt>       -- explicit output certificate
+
+=item -y, --install         -- install result in local repository
+
+=back
+
+=head1   DISTINGUISHED NAME OPTIONS (<dn-opts>)
+
+=over
+
+=item -e, --email <email>       -- email name
+
+=item -h, --host <host>         -- DNS host name, or IP address
+
+=item -d, --days <days>         -- number of days certificate is valid
+
+=item -n, --cn <cn>             -- common name (CN)
+
+=item -o, --org <org>           -- organiztion name
+
+=item -u, --unit <unit>         -- organiztion unit name
+
+=item -c, --country <country>   -- country code (e.g., US)
+
+=item -p, --province <province> -- province name (synomynous w/ state)
+
+=item -p, --state <state>       -- state name (synomynous w/ province)
+
+=item -l, --locality <locality> -- locality name (e.g, town)
+
+=item -s, --san <san>           -- subjectAltName, repeat for each <san>
+
+=over 2
+
+=item    <san> value format (<FMT>:<VAL>):
+
+=over 3
+
+=item       dirName:/usr/share/snmp/tls
+
+=item       DNS:net-snmp.org
+
+=item       email:admin@net-snmp.org
+
+=item       IP:192.168.1.1
+
+=item       RID:1.1.3.6
+
+=item       URI:http://net-snmp.org
+
+=back
+
+=back
+
+=back
+
+=head1   FORMAT OPTIONS (<format-opts>)
+
+=over
+
+=item --brief        -- minimized output (values only where applicable)
+
+=item --text         -- full text description
+
+=item --subject      -- subject description
+
+=item --subject_hash -- hash of subject for indexing
+
+=item --issuer       -- issuer description
+
+=item --issuer_hash  -- hash of issuer for indexing
+
+=item --fingerprint  -- SHA1 digest of DER
+
+=item --serial       -- serial number
+
+=item --modulus      -- modulus of the public key
+
+=item --dates        -- start and end dates
+
+=item --purpose      -- displays allowed uses
+
+=item --C            -- C code description
+
+=back
+
+=head1   OPERATIONAL NOTES
+
+
+=head2   Interactive Mode
+
+The application operates in interactive mode by default. In this mode
+basic operations of offered and required input is queried through the
+command line. 
+
+Typical <tab> completion is provided when possible and field specific
+help may be obtained by entering '?'.
+
+To turn off interactive mode, supply '--nointeractive' or '-I' on the
+initial command line. Equivalantly, 'interactive = false' maybe placed
+in the configuration file (see below).
+
+=head2   Configuration
+
+A configuration file may be supplied on the command line or found in a
+default location (<snmpconfpath>/net-snmp-cert.conf). This file may
+contain configuration parameters equivalent to those supplied on the
+command line and effectively provides default values for these
+values. If a command line parameter is supplied it will override the
+value in the config file. If neither is present then an application
+value will be used.
+
+=head2   Certificate Naming
+
+Filenames of created certificates, as stored in the configuration
+directory, are chosen in the following manner. If and application tag
+is supplied, it will be used as the basename for the certificate and
+key generated. Otherwise, for CA certificates, the basename will be
+derived from the Common Name. For non-CA certificates the application
+tag defaults to 'snmp' which will then be used as the basename of the
+certificate and key.
+
+=head1   EXAMPLES
+
+=over
+
+=item net-snmp-cert genca --cn ca-net-snmp.org --days 1000
+
+=item net-snmp-cert genca -f .snmp/net-snmp-cert.conf -i nocadm
+
+=item net-snmp-cert gencert -t snmpd --cn host.net-snmp.org
+
+=item net-snmp-cert gencsr -t snmpapp
+
+=item net-snmp-cert signcsr --csr snmpapp --with-ca ca-net-snmp.org
+
+=item net-snmp-cert showcerts --subject --issuer --dates snmpapp
+
+=item net-snmp-cert showcas --fingerprint ca-net-snmp.org --brief
+
+=item net-snmp-cert import ca-third-party.crt
+
+=item net-snmp-cert import signed-request.crt signed-request.key
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright (c) 2010 Cobham Analytic Solutions - All rights reserved.
+Copyright (c) 2010 G. S. Marzot -  All rights reserved.
+
+=head1   AUTHOR
+
+G. S. Marzot (marz@users.sourceforge.net)
+
+=cut
+
diff --git a/local/net-snmp-cert.conf b/local/net-snmp-cert.conf
new file mode 100644
index 0000000..7def1cc
--- /dev/null
+++ b/local/net-snmp-cert.conf
@@ -0,0 +1,72 @@
+#
+# Net-SNMP Certificate Generation and Management Tool Configuration
+#
+
+# default mode to non-interactive
+# interactive = false
+
+# location of 'tls' directory relative to configuration dir
+# tlsDir = ./tls
+
+# encryptCA = false - XXX not-implemented
+# encryptCrt = false - XXX not-implemented
+
+# default valid lifetime duration for CA certificates
+# caDays = 1825
+
+# default valid lifetime duration for certificates
+# crtDays = 365
+
+# default key types generated
+# keyType = rsa
+
+# default key size generated
+# keySize = 2048
+
+# default type of message digest used
+# msgDigest = sha1
+
+# to set individual defaults, a specific identity may be indicated
+# on the net-snmp-cert command line: '--identity <id>' or '-i <id>'
+# values defined at the global/file level will be used unless
+# overriden by values supplied in the specified identity.
+ 
+identity = {
+   id = nocadm
+   host = net-snmp.org
+   cn = Client-identity
+   email = admin@net-snmp.org
+   org = Net-SNMP Developers
+   orgUnit = SNMP-DTLS
+   country = US
+   state = MA
+   locality = Boston
+
+   # 10 years
+   caDays = 3654
+   # 2 years
+   crtDays = 730
+
+   subjectAltName = email:client@net-snmp.org
+   subjectAltName = URI:http://net-snmp.org
+};
+
+identity = {
+   id = CA-identity
+   host = net-snmp.org
+   cn = CA-identity
+   email = ca-admin@net-snmp.org
+   org = Net-SNMP Developers
+   orgUnit = SNMP-DTLS
+   country = US
+   state = MA
+   locality = Boston
+
+   # 10 years
+   caDays = 1000
+   # 2 years
+   crtDays = 500
+
+   subjectAltName = DNS:test.net-snmp.org
+};
+
diff --git a/local/snmp-bridge-mib b/local/snmp-bridge-mib
new file mode 100644
index 0000000..880ea6b
--- /dev/null
+++ b/local/snmp-bridge-mib
@@ -0,0 +1,1170 @@
+#!/usr/bin/perl
+#
+# Copyright (c) IBM Corp. 2009, 2010, All Rights Reserved
+#
+# Author(s):	Vasileios Pappas <vpappas@us.ibm.com>
+#		Jens Osterkamp <jens@linux.vnet.ibm.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+use NetSNMP::OID (':all');
+use NetSNMP::ASN (':all');
+use NetSNMP::agent (':all');
+
+sub STP_PROP_VALUE() { 0x01}
+sub STP_PROP_FILE() { 0x02}
+sub STP_PROP_DEC() { 0x04}
+sub STP_PROP_HEX() { 0x08}
+
+sub FDB_STATUS_OTHER { 1 }
+sub FDB_STATUS_INVALID { 2 }
+sub FDB_STATUS_LEARNED { 3 }
+sub FDB_STATUS_SELF { 4 }
+sub FDB_STATUS_MGMT { 5 }
+
+my %oid_value;
+my %oid_type;
+my %oid_next;
+my (%indexes, %interfaces, %macs, %ages, %locals, %vlans, %tagged);
+my $oid;
+
+$subagent=0;
+my $netdir="/sys/class/net/";
+my $targetbridge;
+
+$cache_timout=60;
+$last_populated=0;
+
+my $regoid = ".1.3.6.1.2.1.17";
+# are we running embedded ? If not, register as subagent
+if (!$agent) {
+    $agent = new NetSNMP::agent('Name' => 'dot1qbridge',
+				'AgentX' => 1);
+    $subagent = 1;
+    if ( $#ARGV != 0) {
+	usage($0);
+	exit();
+    }
+    $targetbridge = $ARGV[0];
+} else {
+    if (!defined($bridge)) {
+	usage($0);
+	exit();
+    }
+    $targetbridge = $bridge;
+}
+
+$agent->register("dot1qbridge", ".1.3.6.1.2.1.17", \&request_handler) or die "registration of handler failed !\n";
+
+if ($subagent) {
+	# register handler for graceful shutdown
+	$SIG{'INT'} = \&shutdown;
+	$SIG{'QUIT'} = \&shutdown;
+	$running = 1;
+
+	while($running) {
+		$agent->agent_check_and_process(1);
+	}
+
+	$agent->shutdown();
+}
+
+sub usage {
+	my $name = shift;
+	if ($subagent) {
+		print $name."\n\n";
+		print "usage: \t$name <bridge>	start snmp bridge module".
+			" for bridge <bridge>\n\n";
+		print "arguments:	bridge		name of the Linux bridge".
+			" which you want to provide info via snmp for.\n\n";
+	} else {
+		print 'usage in snmpd.conf: perl $bridge="br0"; perl do <path to $name>\n';
+	}
+	print "number of arguments given $#ARGV\n\n";
+}
+
+sub request_handler {
+	my ($handler, $registration_info, $request_info, $requests)=@_;
+	my $request;
+
+	populate_mib($targetbridge);
+
+	for($request = $requests; $request; $request = $request->next()) {
+		if($request_info->getMode() == MODE_GET) {
+			mode_get($request);
+		} elsif($request_info->getMode() == MODE_GETNEXT) {
+			mode_get_next($request);
+		} else {
+			print STDERR "mode not implemented.\n";
+		}
+	}
+}
+
+sub mode_get{
+	my ($request)=@_;
+	my $oid=$request->getOID();
+
+	$SNMP::use_numeric = 1;
+	my $noid=SNMP::translateObj($oid);
+
+	reply($request, $noid) if (exists $oid_value{$noid});
+}
+
+sub find_next{
+	my ($noid) = @_;
+	my $nextoid = $oid_next{$noid};
+	if(!defined($nextoid) || !defined($oid_value{$nextoid})) {
+		# find the lowest OID whis is higher than $noid
+		$prev = ".1.3.6.1.2.1.18";
+		$prev_oid = new NetSNMP::OID($prev);
+		$noid_oid = new NetSNMP::OID($noid);
+		#print "looking for next of $noid\n";
+		for my $candidate (keys %oid_value) {
+			#print "evaluating $candidate\n";
+			$candidate_oid = new NetSNMP::OID($candidate);
+			if ($noid_oid < $candidate_oid && $prev_oid > $candidate_oid) {
+				#print "found candidate $candidate\n";
+				$prev = $candidate;
+				$prev_oid = $candidate_oid;
+			}
+		}
+		if ($prev eq ".1.3.6.1.2.1.18") {
+			return; # no OID higher than $noid found
+		}
+		$nextoid = $prev;
+	}
+	return $nextoid;
+}
+
+sub mode_get_next{
+	my ($request)=@_;
+	my $oid=$request->getOID();
+	$SNMP::use_numeric = 1;
+	my $noid=SNMP::translateObj($oid);
+	my $nextoid = find_next($noid);
+	#print "found $nextoid\n";
+	if(defined($nextoid)) {
+		my $type = $oid_type{$nextoid};
+		my $value = $oid_value{$nextoid};
+		if (defined($type) and defined($value)) {
+			reply($request,	$nextoid);
+		}
+	}
+}
+
+sub reply{
+	my ($request, $oid)=@_;
+
+	my $type=$oid_type{$oid};
+	my $value=$oid_value{$oid};
+
+	$request->setOID(new NetSNMP::OID($oid));
+	$request->setValue($type, $value);
+}
+
+# Populated MIB OID
+#
+## dot1dBasePort:	1.3.6.1.2.1.17.1.4.1.1.<dot1dBasePort>
+#			INTEGER32
+#
+# dot1dBasePortIfIndex:	1.3.6.1.2.1.17.1.4.1.2.<dot1dBasePort>
+#			INTEGER32
+#
+# dot1dStp*:		1.3.6.1.2.1.17.2.<1-14>
+#			INTEGER, OCTET STRING
+#
+# dot1dTpFdbAddress:	1.3.6.1.2.1.17.4.3.1.1.<dot1dTpFdbAddress>
+#			OCTET STRING (SIZE (6))
+#
+# dot1dTpFdbPort:	1.3.6.1.2.1.17.4.3.1.2.<dot1dTpFdbAddress>
+#			INTEGER32
+#
+# dot1dTpFdbStatus:	1.3.6.1.2.1.17.4.3.1.3.<dot1dTpFdbAddress>
+#			INTEGER
+#			1 : other
+#			2 : invalid
+#			3 : learned
+#			4 : self
+#			5 : mgmt
+#
+
+sub populate_mib {
+	my $now;
+	my $bridge = shift;
+	my $seconds_passed;
+	$ports=0;
+	$oid="";
+
+        $now=time();
+	$seconds_passed=$now-$last_populated;
+        return if($seconds_passed <= $cache_timout);
+        $last_populated=$now;
+
+	%oid_value=();
+	%oid_type=();
+	%oid_next=();
+	%indexes=();
+	%interfaces=();
+	%macs=();
+	%ages=();
+	%locals=();
+	%vlans=();
+	%tagged=();
+
+	# first populated oid
+	$oid_next{".1.3.6.1.2.1.17"}=".1.3.6.1.2.1.17.1.1";
+
+	createbaseinfo($bridge);
+
+	readindexes($bridge);
+	readforwards($bridge);
+	readvlans($bridge);
+
+	createports($bridge);
+
+	stpproperties($bridge);
+
+	stpportproperties($bridge);
+
+	dot1dTpproperties();
+
+	my $prevoid = $oid;
+	my $curroid = createmacs($bridge);
+	$oid_next{$prevoid} = $curroid;
+
+	portproperties($bridge);
+
+
+	dot1qbase($bridge);
+
+	dot1qfdb($bridge);
+
+	dot1qcurrentvlans($bridge);
+
+	return 0;
+}
+
+sub findbridges()
+{
+	my @bridges;
+
+	opendir(DIR, $netdir) or die "unable to open $netdir !\n";
+
+	while(my $br=readdir(DIR)){
+		next if $br eq ".";
+		next if $br eq "..";
+		next unless -d $netdir.$br."/bridge";
+		push @bridges, $br;
+	}
+
+	close(DIR);
+
+	return @bridges;
+}
+
+sub createbaseinfo()
+{
+	my $bridge = shift;
+
+	$oid=".1.3.6.1.2.1.17.1.1";
+	$oid_value{$oid}=mac2hex(readfile($netdir.$bridge."/address", 0));
+	$oid_type{$oid}=ASN_OCTET_STR;
+	$oid_next{$oid}=".1.3.6.1.2.1.17.1.2";
+
+	opendir(DIR, $netdir.$bridge."/brif/") or die "Could not open ".$netdir.$bridge."brif !\n";
+
+	foreach $entry (readdir(DIR)) {
+		next if $entry eq ".";
+		next if $entry eq "..";
+		# only count non-vlan interfaces
+		next if $entry =~ /\.[0-9]*/;
+		$ports++;
+	}
+
+	closedir(DIR);
+
+	$oid=".1.3.6.1.2.1.17.1.2";
+	$oid_value{$oid}=$ports;
+	$oid_type{$oid}=ASN_INTEGER;
+	$oid_next{$oid}=".1.3.6.1.2.1.17.1.3";
+
+	$oid=".1.3.6.1.2.1.17.1.3";
+	$oid_value{$oid}="2";	# transparent only
+	$oid_type{$oid}=ASN_INTEGER;
+	$oid_next{$oid}=".1.3.6.1.2.1.17.1.4.1.1.1";
+
+}
+
+sub createmacs()
+{
+	my $bridge = shift;
+        my $start_oid = $oid = ".1.3.6.1.2.1.17.4.3.1";
+
+	foreach my $mac (sort {$a cmp $b} keys %macs) {
+		my $mac_oid=mac2oid($mac);
+		unless(defined($first_mac_oid)){
+			$first_mac_oid=$mac_oid;
+			$oid_next{$oid.".1"}=$oid.".1".$mac_oid;
+			$oid_next{$oid.".2"}=$oid.".2".$mac_oid;
+			$oid_next{$oid.".3"}=$oid.".3".$mac_oid;
+		}
+		my $port=$macs{$mac}{$bridge};
+		my $baseport=$baseports{$bridge}{$port};
+		my $status=$locals{$mac}{$bridge};
+		my $age=$ages{$mac}{$bridge};
+
+		$oid_value{$oid.".1".$mac_oid}=mac2hex($mac);
+		$oid_type{$oid.".1".$mac_oid}=ASN_OCTET_STR;
+		if(defined($prv_mac_oid)){
+			$oid_next{$oid.".1".$prv_mac_oid}=
+				$oid.".1".$mac_oid;
+		}
+
+		$oid_value{$oid.".2".$mac_oid}=$baseport;
+		$oid_type{$oid.".2".$mac_oid}=ASN_INTEGER;
+		if(defined($prv_mac_oid)){
+			$oid_next{$oid.".2".$prv_mac_oid}=
+				$oid.".2".$mac_oid;
+		}
+
+		$oid_value{$oid.".3".$mac_oid}=$status;
+		$oid_type{$oid.".3".$mac_oid}=ASN_INTEGER;
+		if(defined($prv_mac_oid)){
+			$oid_next{$oid.".3".$prv_mac_oid}=
+				$oid.".3".$mac_oid;
+		}
+
+		$prv_mac_oid=$mac_oid;
+	}
+
+	if ($prv_mac_oid and $first_mac_oid) {
+		$oid_next{$oid.".1".$prv_mac_oid}=$oid.".2".$first_mac_oid;
+		$oid_next{$oid.".2".$prv_mac_oid}=$oid.".3".$first_mac_oid;
+		$oid_next{$oid.".3".$prv_mac_oid}=".1.3.6.1.2.1.17.4.4.1.1.1";
+	}
+
+	undef $prv_mac_oid;
+	undef $first_mac_oid;
+
+	return $start_oid.".1".$first_mac_oid;
+}
+
+# TODO: is this sequence complete ?
+sub createports()
+{
+	my $bridge = shift;
+	my ($baseport, $prev_baseport, $first_baseport);
+	$baseport=1;
+	my $oid= '.1.3.6.1.2.1.17.1.4.1';
+
+	foreach my $port (keys %{$interfaces{$bridge}}) {
+		unless(defined($first_baseport)){
+			$first_baseport=$baseport;
+			$oid_next{$oid.".1"}=$oid.".1.".$baseport;
+			$oid_next{$oid.".2"}=$oid.".2.".$baseport;
+		}
+		my $index=$indexes{$bridge}{$port};
+		$baseports{$bridge}{$port}=$baseport;
+
+		$oid_value{$oid.".1.".$baseport}=$baseport;
+		$oid_type{$oid.".1.".$baseport}=ASN_INTEGER;
+		if(defined($prv_baseport)){
+			$oid_next{$oid.".1.".$prv_baseport}=
+				$oid.".1.".$baseport;
+		}
+
+		$oid_value{$oid.".2.".$baseport}=$index;
+		$oid_type{$oid.".2.".$baseport}=ASN_INTEGER;
+		if(defined($prv_baseport)){
+			$oid_next{$oid.".2.".$prv_baseport}=
+				$oid.".2.".$baseport;
+		}
+
+		$prv_baseport=$baseport;
+		$baseport++;
+	}
+
+	if ( $prv_baseport and $first_baseport ) {
+		$oid_next{$oid.".1.".$prv_baseport}=$oid.".2.".$first_baseport;
+		$oid_next{$oid.".2.".$prv_baseport}=".1.3.6.1.2.1.17.2.1";
+	}
+
+	undef $prv_baseport;
+	undef $first_baseport;
+
+}
+
+sub stpproperties()
+{
+	my $bridge = shift;
+	my $dir = $netdir.$bridge."/bridge/";
+
+	@stpprops = ( { oid => ".1.3.6.1.2.1.17.2.1",
+			flags => STP_PROP_VALUE,
+			value => "3",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.2" },
+			{ oid => ".1.3.6.1.2.1.17.2.2",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."priority",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.3" },
+			{ oid => ".1.3.6.1.2.1.17.2.3",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."topology_change_timer",
+			type => ASN_TIMETICKS,
+			nextoid => ".1.3.6.1.2.1.17.2.4" },
+			{ oid => ".1.3.6.1.2.1.17.2.4",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."topology_change",
+			type => ASN_COUNTER,
+			nextoid => ".1.3.6.1.2.1.17.2.5" },
+			{ oid => ".1.3.6.1.2.1.17.2.5",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."root_id",
+			type => ASN_OCTET_STR,
+			nextoid => ".1.3.6.1.2.1.17.2.6" },
+			{ oid => ".1.3.6.1.2.1.17.2.6",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."root_path_cost",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.7" },
+			{ oid => ".1.3.6.1.2.1.17.2.7",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."root_port",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.8" },
+			{ oid => ".1.3.6.1.2.1.17.2.8",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."max_age",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.9" },
+			{ oid => ".1.3.6.1.2.1.17.2.9",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."hello_time",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.11" },
+			# TODO ...17.2.10
+			{ oid => ".1.3.6.1.2.1.17.2.11",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."forward_delay",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.12" },
+			{ oid => ".1.3.6.1.2.1.17.2.12",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."max_age",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.13" },
+			{ oid => ".1.3.6.1.2.1.17.2.13",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."hello_time",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.14" },
+			{ oid => ".1.3.6.1.2.1.17.2.14",
+			flags => STP_PROP_FILE | STP_PROP_DEC,
+			value => $dir."forward_delay",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.2.15.1.1.1" },
+			);
+
+	for ($i=0; $i <= $#stpprops; $i++) {
+		my %props = %{$stpprops[$i]};
+		$oid = $props{'oid'};
+		if ( $props{'flags'} & STP_PROP_VALUE,) {
+			$oid_value{$oid} = $props{'value'};
+		}
+		if ( $props{'flags'} & STP_PROP_FILE,) {
+			$oid_value{$oid} =
+			readfile($props{'value'},
+			$props{'flags'});
+		}
+		$oid_type{$oid} = $props{'type'};
+		$oid_next{$oid} = $props{'nextoid'};
+	}
+}
+
+sub stpportproperties
+{
+	my $bridge = shift;
+	my $brifdir = $netdir.$bridge."/brif/";
+	my ($baseport, $first_baseport, $prev_baseport);
+
+	$oid='.1.3.6.1.2.1.17.2.15.1';
+
+	foreach my $port (keys %{$interfaces{$bridge}}) {
+		$baseport = $baseports{$bridge}{$port};
+
+		unless(defined($first_baseport)){
+			$first_baseport=$baseport;
+			$oid_next{$oid.".1"}=$oid.".1.".$baseport;
+			$oid_next{$oid.".2"}=$oid.".2.".$baseport;
+		}
+
+		my $interface = $interfaces{$bridge}{$port};
+		my $ifdir = $brifdir.$interface;
+
+		# dot1dStpPort
+		$oid_value{$oid.".1.".$baseport}=$baseport;
+		$oid_type{$oid.".1.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".1.".$prev_baseport}=
+				$oid.".1.".$baseport;
+		}
+
+		# dot1dStpPortPriority
+		$oid_value{$oid.".2.".$baseport}=readfile($ifdir."/priority", 0);
+		$oid_type{$oid.".2.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".2.".$prev_baseport}=
+				$oid.".2.".$baseport;
+		}
+
+		# dot1dStpPortState
+		my @translation = (1, 3, 4, 5, 2);
+		my $state = readfile($ifdir."/state", 0);
+		$oid_value{$oid.".3.".$baseport}=$translation[$state];
+		$oid_type{$oid.".3.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".3.".$prev_baseport}=
+				$oid.".3.".$baseport;
+		}
+
+		# dot1dStpPortEnable
+		@translation = (2, 1, 1, 1, 1);
+		$oid_value{$oid.".4.".$baseport}=$translation[$state];
+		$oid_type{$oid.".4.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".4.".$prev_baseport}=
+				$oid.".4.".$baseport;
+		}
+
+		# dot1dStpPortPathCost
+		$oid_value{$oid.".5.".$baseport}=readfile($ifdir."/path_cost", 0);
+		$oid_type{$oid.".5.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".5.".$prev_baseport}=
+				$oid.".5.".$baseport;
+		}
+
+		# dot1dStpPortDesignatedRoot
+		$oid_value{$oid.".6.".$baseport}=readfile($ifdir."/designated_root", 0);
+		$oid_type{$oid.".6.".$baseport}=ASN_OCTET_STR;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".6.".$prev_baseport}=
+				$oid.".6.".$baseport;
+		}
+
+		# dot1dStpPortDesignatedCost
+		$oid_value{$oid.".7.".$baseport}=readfile($ifdir."/designated_cost", 0);
+		$oid_type{$oid.".7.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".7.".$prev_baseport}=
+				$oid.".7.".$baseport;
+		}
+
+		# dot1dStpPortDesignatedBridge
+		$oid_value{$oid.".8.".$baseport}=readfile($ifdir."/designated_bridge", 0);
+		$oid_type{$oid.".8.".$baseport}=ASN_OCTET_STR;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".8.".$prev_baseport}=
+				$oid.".8.".$baseport;
+		}
+
+		# dot1dStpPortDesignatedPort
+		$oid_value{$oid.".9.".$baseport}=readfile($ifdir."/designated_port", 0);
+		$oid_type{$oid.".9.".$baseport}=ASN_OCTET_STR;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".9.".$prev_baseport}=
+				$oid.".9.".$baseport;
+		}
+
+		# dot1dStpPortForwardTransitions (no value in bridge module)
+
+		# dot1dStpPortPathCost32
+		$oid_value{$oid.".11.".$baseport}=readfile($ifdir."/path_cost", 0);
+		$oid_type{$oid.".11.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".11.".$prev_baseport}=
+				$oid.".11.".$baseport;
+		}
+
+
+		$prev_baseport=$baseport;
+	}
+
+	if ( $prev_baseport and $first_baseport ) {
+		$oid_next{$oid.".1.".$prev_baseport}=$oid.".2.".$first_baseport;
+		$oid_next{$oid.".2.".$prev_baseport}=$oid.".3.".$first_baseport;
+		$oid_next{$oid.".3.".$prev_baseport}=$oid.".4.".$first_baseport;
+		$oid_next{$oid.".4.".$prev_baseport}=$oid.".5.".$first_baseport;
+		$oid_next{$oid.".5.".$prev_baseport}=$oid.".6.".$first_baseport;
+		$oid_next{$oid.".6.".$prev_baseport}=$oid.".7.".$first_baseport;
+		$oid_next{$oid.".7.".$prev_baseport}=$oid.".8.".$first_baseport;
+		$oid_next{$oid.".8.".$prev_baseport}=$oid.".9.".$first_baseport;
+		$oid_next{$oid.".9.".$prev_baseport}=$oid.".11.".$first_baseport;
+		$oid_next{$oid.".11.".$prev_baseport}=".1.3.6.1.2.1.17.4.1";
+	}
+
+	$oid = $oid.".11.".$prev_baseport;
+
+	undef $prev_baseport;
+	undef $first_baseport;
+
+}
+
+sub dot1dTpproperties()
+{
+	@stpprops = ( { oid => ".1.3.6.1.2.1.17.4.1",
+			flags => STP_PROP_VALUE,
+			value => "0",
+			type => ASN_COUNTER,
+			nextoid => ".1.3.6.1.2.1.17.4.2" },
+			{ oid => ".1.3.6.1.2.1.17.4.2",
+			flags => STP_PROP_VALUE,
+			value => "300",
+			type => ASN_INTEGER,
+			nextoid => ".1.3.6.1.2.1.17.4.3" },
+			);
+
+	for ($i=0; $i <= $#stpprops; $i++) {
+		my %props = %{$stpprops[$i]};
+		$oid = $props{'oid'};
+		if ( $props{'flags'} & STP_PROP_VALUE,) {
+			$oid_value{$oid} = $props{'value'};
+		}
+		if ( $props{'flags'} & STP_PROP_FILE,) {
+			$oid_value{$oid} =
+			readfile($props{'value'},
+			$props{'flags'});
+		}
+		$oid_type{$oid} = $props{'type'};
+		$oid_next{$oid} = $props{'nextoid'};
+	}
+}
+
+sub portproperties
+{
+	my $bridge = shift;
+	my ($baseport, $first_baseport, $prev_baseport);
+
+	$oid='.1.3.6.1.2.1.17.4.4.1';
+
+	foreach my $port (keys %{$interfaces{$bridge}}) {
+		$baseport = $baseports{$bridge}{$port};
+
+		unless(defined($first_baseport)){
+			$first_baseport=$baseport;
+			$oid_next{$oid.".1"}=$oid.".1.".$baseport;
+			$oid_next{$oid.".2"}=$oid.".2.".$baseport;
+		}
+
+		my $interface = $interfaces{$bridge}{$port};
+		my $ifdir = $netdir.$interface;
+
+		# dot1dTpPort
+		$oid_value{$oid.".1.".$baseport}=$baseport;
+		$oid_type{$oid.".1.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".1.".$prev_baseport}=
+				$oid.".1.".$baseport;
+		}
+
+		# dot1dTpPortMaxInfo
+		$oid_value{$oid.".2.".$baseport}=readfile($ifdir."/mtu", 0);
+		$oid_type{$oid.".2.".$baseport}=ASN_INTEGER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".2.".$prev_baseport}=
+				$oid.".2.".$baseport;
+		}
+
+		# dot1dTpPortInFrames
+		$oid_value{$oid.".3.".$baseport}=readfile($ifdir."/statistics/rx_packets", 0);
+		$oid_type{$oid.".3.".$baseport}=ASN_COUNTER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".3.".$prev_baseport}=
+				$oid.".3.".$baseport;
+		}
+
+		# dot1dTpPortOutFrames
+		$oid_value{$oid.".4.".$baseport}=readfile($ifdir."/statistics/tx_packets", 0);
+		$oid_type{$oid.".4.".$baseport}=ASN_COUNTER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".4.".$prev_baseport}=
+				$oid.".4.".$baseport;
+		}
+
+		# dot1dTpPortInDiscards
+		$oid_value{$oid.".5.".$baseport}=readfile($ifdir."/statistics/rx_dropped", 0);
+		$oid_type{$oid.".5.".$baseport}=ASN_COUNTER;
+		if(defined($prev_baseport)){
+			$oid_next{$oid.".5.".$prev_baseport}=
+				$oid.".5.".$baseport;
+		}
+
+		$prev_baseport=$baseport;
+	}
+
+	if ( $prev_baseport and $first_baseport ) {
+		$oid_next{$oid.".1.".$prev_baseport}=$oid.".2.".$first_baseport;
+		$oid_next{$oid.".2.".$prev_baseport}=$oid.".3.".$first_baseport;
+		$oid_next{$oid.".3.".$prev_baseport}=$oid.".4.".$first_baseport;
+		$oid_next{$oid.".4.".$prev_baseport}=$oid.".5.".$first_baseport;
+		$oid_next{$oid.".5.".$prev_baseport}=".1.3.6.1.2.1.17.5.1";
+	}
+
+	$oid = $oid.".5.".$prev_baseport;
+
+	undef $prev_baseport;
+	undef $first_baseport;
+}
+
+sub dot1qbase()
+{
+	my $bridge = shift;
+
+	my $oid=".1.3.6.1.2.1.17.7.1.1";
+	$oid_next{".1.3.6.1.2.1.17.7"}=$oid.".1";
+	$oid_next{".1.3.6.1.2.1.17.7.1"}=$oid.".1";
+
+	$oid_value{$oid.".1"}=1;
+	$oid_type{$oid.".1"}=ASN_INTEGER;
+	$oid_next{$oid.".1"}=$oid.".2";
+
+	$oid_value{$oid.".2"}=4094;
+	$oid_type{$oid.".2"}=ASN_UNSIGNED;
+	$oid_next{$oid.".2"}=$oid.".3";
+
+	$oid_value{$oid.".3"}=4094;
+	$oid_type{$oid.".3"}=ASN_UNSIGNED;
+	$oid_next{$oid.".3"}=$oid.".4";
+
+	$oid_value{$oid.".4"}=0; # filled in by currentvlans
+	$oid_type{$oid.".4"}=ASN_UNSIGNED;
+	$oid_next{$oid.".4"}=$oid.".5";
+
+	$oid_value{$oid.".5"}=2;
+	$oid_type{$oid.".5"}=ASN_INTEGER;
+	$oid_next{$oid.".5"}=0;  # filled in by dot1qfdb
+
+}
+
+sub dot1qfdb()
+{
+	my $bridge = shift;
+
+	my $oid=".1.3.6.1.2.1.17.7.1.2";
+	foreach my $vlan (sort {$a<=>$b} keys %vlans){
+		unless(defined($first_vlan)){
+			$first_vlan=$vlan;
+			$oid_next{".1.3.6.1.2.1.17.7.1.1.5"}=$oid.".1.1.".$vlan;
+			$oid_next{$oid}=$oid.".1.1.".$vlan;
+			$oid_next{$oid.".1"}=$oid.".1.1.".$vlan;
+			$oid_next{$oid.".1.1"}=$oid.".1.1.".$vlan;
+			$oid_next{$oid.".1.2"}=$oid.".1.2.".$vlan;
+		}
+
+		$oid_value{$oid.".1.1.".$vlan}=$vlan;
+		$oid_type{$oid.".1.1.".$vlan}=ASN_UNSIGNED;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".1.1.".$prv_vlan}=$oid.".1.1.".$vlan;
+		}
+
+		$oid_value{$oid.".1.2.".$vlan}=0; # to be filled later
+		$oid_type{$oid.".1.2.".$vlan}=ASN_COUNTER;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".1.2.".$prv_vlan}=$oid.".1.2.".$vlan;
+		}
+
+		$prv_vlan=$vlan;
+	}
+	if($prv_vlan and $first_vlan){
+		$oid_next{$oid.".1.1.".$prv_vlan}=$oid.".1.2.".$first_vlan;
+		$oid_next{$oid.".1.2.".$prv_vlan}=0; # to be filled later
+	}
+
+	my %macvlan=();
+	my %vlanmac=();
+
+	foreach my $vlan (sort {$a<=>$b} keys %vlans){
+		my $count=0;
+		foreach my $mac (sort {$a cmp $b} keys %macs) {
+			my $vbridge=$bridge."_vlan".$vlan;
+			next unless(defined($macs{$mac}{$vbridge}));
+			$count++;
+			my $mac_oid=mac2oid($mac);
+			$macvlan{$vlan.$mac_oid}=$mac;
+			$vlanmac{$vlan.$mac_oid}=$vlan;
+		}
+		$oid_value{$oid.".1.2.".$vlan}=$count;
+	}
+
+	foreach my $vmac_oid (sort {$a cmp $b} keys %vlanmac){
+		my $mac=$macvlan{$vmac_oid};
+		my $vlan=$vlanmac{$vmac_oid};
+
+		#print "VMAC: $vmac_oid ($vlan:$mac)\n";
+		unless(defined($first_vmac_oid)){
+			$first_vmac_oid=$vmac_oid;
+			$oid_next{$oid.".1.2.".$prv_vlan}=$oid.".2.1.".$vmac_oid;
+			$oid_next{$oid.".2"}=$oid.".2.1.".$vmac_oid;
+			$oid_next{$oid.".2.1"}=$oid.".2.1.".$vmac_oid;
+			$oid_next{$oid.".2.2"}=$oid.".2.2.".$vmac_oid;
+			$oid_next{$oid.".2.3"}=$oid.".2.3.".$vmac_oid;
+		}
+
+		my $port=$macs{$mac}{$bridge};
+		my $baseport=$baseports{$bridge}{$port};
+		my $status=$locals{$mac}{$bridge};
+		my $age=$ages{$mac}{$bridge};
+
+		print "VLAN $vlan: $mac -> $port:$baseport ($status, $age)\n"; 
+
+		$oid_value{$oid.".2.1.".$vmac_oid}=mac2hex($mac);
+		$oid_type{$oid.".2.1.".$vmac_oid}=ASN_OCTET_STR;
+		if(defined($prv_vmac_oid)){
+			$oid_next{$oid.".2.1.".$prv_vmac_oid}=$oid.".2.1.".$vmac_oid;
+		}
+
+		$oid_value{$oid.".2.2.".$vmac_oid}=$baseport;
+		$oid_type{$oid.".2.2.".$vmac_oid}=ASN_INTEGER;
+		if(defined($prv_vmac_oid)){
+			$oid_next{$oid.".2.2.".$prv_vmac_oid}=$oid.".2.2.".$vmac_oid;
+		}
+
+		$oid_value{$oid.".2.3.".$vmac_oid}=$status;
+		$oid_type{$oid.".2.3.".$vmac_oid}=ASN_INTEGER;
+		if(defined($prv_vmac_oid)){
+			$oid_next{$oid.".2.3.".$prv_vmac_oid}=$oid.".2.3.".$vmac_oid;
+		}
+		$prv_vmac_oid=$vmac_oid;
+	}
+
+	if ($prv_vmac_oid and $first_vmac_oid) {
+		$oid_next{$oid.".2.1.".$prv_vmac_oid}=$oid.".2.2.".$first_vmac_oid;
+		$oid_next{$oid.".2.2.".$prv_vmac_oid}=$oid.".2.3.".$first_vmac_oid;
+		$oid_next{$oid.".2.3.".$prv_vmac_oid}=".1.3.6.1.2.1.17.7.1.4.1";
+	}
+
+	undef $first_vmac_oid;
+	undef $prv_vmac_oid;
+
+	undef $first_vlan;
+	undef $prv_vlan;
+}
+
+sub dot1qcurrentvlans()
+{
+	my $bridge = shift;
+
+
+	my $oid=".1.3.6.1.2.1.17.7.1.4.1";
+	$oid_next{".1.3.6.1.2.1.17.7.1.4"}=$oid;
+
+	$oid_value{$oid}=0;	# can't keep track of this info
+	$oid_type{$oid}=ASN_COUNTER;
+
+	my $count=0;
+	$oid=".1.3.6.1.2.1.17.7.1.4.2";
+	foreach my $vlan (sort {$a<=>$b} keys %vlans){
+		$count++;
+		my @allports=();
+		my @untaggedports=();
+		foreach my $port (keys %{$vlans{$vlan}}){
+			$baseport=$baseports{$bridge}{$port};
+			push @allports, $baseport;
+			push @untaggedports, $baseport
+				unless($tagged{$vlan}{$port});
+		}
+		#print "ADDING: vlan $vlan (@allports, @untaggedports)\n";
+		unless(defined($first_vlan)){
+			$first_vlan=$vlan;
+			$oid_next{".1.3.6.1.2.1.17.7.1.4.1"}=$oid.".1.0.".$vlan;
+			$oid_next{$oid}=$oid.".1.0.".$vlan;
+			$oid_next{$oid.".1"}=$oid.".1.0.".$vlan;
+			$oid_next{$oid.".2"}=$oid.".2.0.".$vlan;
+			$oid_next{$oid.".3"}=$oid.".3.0.".$vlan;
+			$oid_next{$oid.".4"}=$oid.".4.0.".$vlan;
+			$oid_next{$oid.".5"}=$oid.".5.0.".$vlan;
+			$oid_next{$oid.".6"}=$oid.".6.0.".$vlan;
+			$oid_next{$oid.".7"}=$oid.".7.0.".$vlan;
+		}
+
+		$oid_value{$oid.".1.0.".$vlan}=0; # can't keep track of this
+		$oid_type{$oid.".1.0.".$vlan}=ASN_TIMETICKS;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".1.0.".$prv_vlan}=$oid.".1.0.".$vlan;
+		}
+
+		$oid_value{$oid.".2.0.".$vlan}=$vlan;
+		$oid_type{$oid.".2.0.".$vlan}=ASN_UNSIGNED;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".2.0.".$prv_vlan}=$oid.".2.0.".$vlan;
+		}
+
+		$oid_value{$oid.".3.0.".$vlan}=$vlan; 
+		$oid_type{$oid.".3.0.".$vlan}=ASN_UNSIGNED;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".3.0.".$prv_vlan}=$oid.".3.0.".$vlan;
+		}
+
+		$oid_value{$oid.".4.0.".$vlan}=getportlist(@allports);
+		$oid_type{$oid.".4.0.".$vlan}=ASN_OCTET_STR;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".4.0.".$prv_vlan}=$oid.".4.0.".$vlan;
+		}
+
+		$oid_value{$oid.".5.0.".$vlan}=getportlist(@untaggedports);
+		$oid_type{$oid.".5.0.".$vlan}=ASN_OCTET_STR;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".5.0.".$prv_vlan}=$oid.".5.0.".$vlan;
+		}
+
+		$oid_value{$oid.".6.0.".$vlan}=1;
+		$oid_type{$oid.".6.0.".$vlan}=ASN_INTEGER;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".6.0.".$prv_vlan}=$oid.".6.0.".$vlan;
+		}
+
+		$oid_value{$oid.".7.0.".$vlan}=0;
+		$oid_type{$oid.".7.0.".$vlan}=ASN_TIMETICKS;
+		if(defined($prv_vlan)){
+			$oid_next{$oid.".7.0.".$prv_vlan}=$oid.".7.0.".$vlan;
+		}
+		$prv_vlan=$vlan;
+	}
+
+	$oid_value{".1.3.6.1.2.1.17.7.1.1.4"}=$count;
+	if($prv_vlan and $first_vlan){
+		$oid_next{$oid.".1.0.".$prv_vlan}=$oid.".2.0.".$first_vlan;
+		$oid_next{$oid.".2.0.".$prv_vlan}=$oid.".3.0.".$first_vlan;
+		$oid_next{$oid.".3.0.".$prv_vlan}=$oid.".4.0.".$first_vlan;
+		$oid_next{$oid.".4.0.".$prv_vlan}=$oid.".5.0.".$first_vlan;
+		$oid_next{$oid.".5.0.".$prv_vlan}=$oid.".6.0.".$first_vlan;
+		$oid_next{$oid.".6.0.".$prv_vlan}=$oid.".7.0.".$first_vlan;
+		$oid_next{$oid.".7.0.".$prv_vlan}=".1.3.6.1.2.1.17.7.1.4.3";
+	}
+
+	undef $prv_vlan;
+	undef $first_vlan;
+
+}
+
+sub readforwards()
+{
+	my $bridge = shift;
+	my $fdb=$netdir.$bridge."/brforward";
+
+	open(FWD, $fdb) or return -1;
+	while(sysread(FWD, $data, 20)){
+		my $mac;
+		my ($b1,$b2,$b3,$b4,$b5,$b6,$port,$local,$age,$hi)=
+		unpack("C6 C C L C x3", $data);
+		$mac=sprintf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
+					$b1,$b2,$b3,$b4,$b5,$b6);
+		$age=$age/100;
+		$macs{$mac}{$bridge}=$port;
+		$ages{$mac}{$bridge}=$age;
+		$locals{$mac}{$bridge}=FDB_STATUS_LEARNED;
+		next if ($local);
+		$macs{$mac}{$bridge}=$bridge;
+		$locals{$mac}{$bridge}=FDB_STATUS_SELF;
+	}
+	close(FWD);
+}
+
+sub readindexes()
+{
+	my $bridge = shift;
+
+	my $brifdir=$netdir.$bridge."/brif/";
+
+	opendir(DIR, $brifdir) or return -1;
+	my @interfaces = readdir(DIR);
+	next if ($#interfaces lt 2);
+	foreach my $if (@interfaces) {
+		next if $if eq ".";
+		next if  $if eq "..";
+
+		my $port=hex(readfile($brifdir.$if."/port_no", 0));
+		my $index=readfile($netdir.$if."/ifindex", 0);
+
+		$indexes{$bridge}{$port}=$index;
+		$interfaces{$bridge}{$port}=$if;
+	}
+
+	$indexes{$bridge}{$bridge}=readfile($netdir.$bridge."/ifindex", 0);
+
+	close(DIR);
+}
+
+sub readvlans()
+{
+	my $bridge = shift;
+	my $brifdir = $netdir.$bridge."/brif/";
+	my %ifs;
+
+	opendir(DIR, $brifdir) or return -1;
+	my @interfaces = readdir(DIR);
+	return if ($#interfaces < 2);
+	foreach my $if (@interfaces) {
+		next if $if eq ".";
+		next if  $if eq "..";
+		$ifs{$if}=1;
+	}
+	close(DIR);
+
+	opendir(DIR, $netdir) or return -1;
+	@interfaces = readdir(DIR);
+	return 0 if ($#interfaces < 2);
+	foreach my $if (@interfaces) {
+		next if $if eq ".";
+		next if  $if eq "..";
+		next unless($if=~/^(.*)\.(\d+)$/);
+		my $pif=$1;
+		my $vlan=$2;
+		next unless(defined($ifs{$pif}));
+		tracevlan($vlan, $if, $bridge);
+	}
+	close(DIR);
+}
+
+sub tracevlan{
+	my ($vlan, $interface, $bridge)=@_;
+
+	my $brifdir=$netdir.$interface."/brport/bridge/brif/";
+
+	opendir(DIR, $brifdir) or return -1;
+	my @interfaces = readdir(DIR);
+	return if ($#interfaces < 2);
+	foreach my $if (@interfaces) {
+		next if $if eq ".";
+		next if  $if eq "..";
+		my $port;
+		my $index;
+		if($if=~/^(.*)\.(\d+)$/){
+			my $pif=$1;
+			$brifdir=$netdir.$pif."/brport/bridge/brif/";
+			$port=hex(readfile($brifdir.$pif."/port_no", 0));
+			$index=readfile($netdir.$pif."/ifindex", 0);
+			#$indexes{$bridge}{$port}=$index;
+			#$interfaces{$bridge}{$port}=$if;
+			$tagged{$vlan}{$port}=1;
+		}else{
+			my $brid=readfile($netdir.$if."/brport/bridge/ifindex",	0);
+			$brifdir=$netdir.$if."/brport/bridge/brif/";
+			$port=hex(readfile($brifdir.$if."/port_no", 0));
+			$port=$brid*1000+$port; #create a unique port number
+			$index=readfile($netdir.$if."/ifindex", 0);
+			$indexes{$bridge}{$port}=$index;
+			$interfaces{$bridge}{$port}=$if;
+			$tagged{$vlan}{$port}=0;
+		}
+		$vlans{$vlan}{$port}=1;
+		#print "VLAN: $vlan -> $if ($port <-> $index)\n";
+	}
+	close(DIR);
+
+	my $brid=readfile($netdir.$interface."/brport/bridge/ifindex", 0);
+	my $fdb=$netdir.$interface."/brport/bridge/brforward";
+
+	my $vbridge=$bridge."_vlan".$vlan;
+	open(FWD, $fdb) or return -1;
+	while(sysread(FWD, $data, 20)){
+		my $mac;
+		my ($b1,$b2,$b3,$b4,$b5,$b6,$port,$local,$age,$hi)=
+		unpack("C6 C C L C x3", $data);
+		 $mac=sprintf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
+					$b1,$b2,$b3,$b4,$b5,$b6);
+		 $port=$brid*1000+$port unless(defined($indexes{$bridge}{$port}));  #create a unique port number
+		 $age=$age/100;
+		 #$macs{$mac}{$bridge}=$port;
+		 $macs{$mac}{$vbridge}=$port;
+		 #$ages{$mac}{$bridge}=$age;
+		 $ages{$mac}{$vbridge}=$age;
+		 #$locals{$mac}{$bridge}=FDB_STATUS_LEARNED;
+		 $locals{$mac}{$vbridge}=FDB_STATUS_LEARNED;
+		 next if ($local);
+		 #$macs{$mac}{$bridge}=$bridge;
+		 $macs{$mac}{$vbridge}=$bridge;
+		 #$locals{$mac}{$bridge}=FDB_STATUS_SELF;
+		 $locals{$mac}{$vbridge}=FDB_STATUS_SELF;
+	}
+	close(FWD);
+}
+
+sub readfile()
+{
+	my $file = shift;
+	my $flags = shift;
+
+	open(FILE, $file) or print "Could not open file $file !\n";
+	my $value=<FILE>;
+	chomp $value;
+	close(FILE);
+
+	if ($flags & STP_PROP_HEX) {
+		return hex($value);
+	}
+
+	return $value;
+}
+
+sub getportlist{
+	my @ports=@_;
+	my $portlist="";
+
+	@ports=sort {$a <=> $b} @ports;
+	my $last=1;
+	foreach my $port (@ports){
+		for(my $i=$last; $i<$port; $i++){
+			$portlist=$portlist."0";
+		}
+		$portlist=$portlist."1";
+		$last=$port+1;
+	}
+	return pack('B*',$portlist); 
+}
+
+sub mac2oid{
+	my ($mac)=@_;
+	my @octets=split(/:/,$mac);
+
+	$mac="";
+	foreach my $octet (@octets){
+		$mac=$mac.".".hex($octet);
+	}
+	return $mac;
+}
+
+sub mac2hex{
+        my ($mac)=@_;
+	my @decimals;
+	my @octets=split(/:/,$mac);
+
+	foreach my $octet (@octets){
+		push @decimals, hex($octet);
+	}
+	return pack("CCCCCC", @decimals);
+}
+
+sub shutdown {
+	$running = 0;
+}
diff --git a/local/snmpcheck.def b/local/snmpcheck.def
index 84997ef..ad392ee 100755
--- a/local/snmpcheck.def
+++ b/local/snmpcheck.def
@@ -32,7 +32,7 @@
 $andlog=0;
 $snmppath="BINDIR";
 $eraseline="                                                                           \r";
-$fixit=0;  # this should be 0 not -1, but is necissary till getc(STDIN) works
+$fixit=0;  # this should be 0 not -1, but is necessary till getc(STDIN) works
 $rescanWhen = 300;
 $display = $ENV{'DISPLAY'};
 $hidden = 0;
diff --git a/ltmain.sh b/ltmain.sh
index b36c4ad..1e3b146 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -4576,7 +4576,7 @@
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads|-fstack-protector*)
 	compiler_flags="$compiler_flags $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
diff --git a/man/Makefile.in b/man/Makefile.in
index d903713..79f236b 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -14,79 +14,66 @@
 # local stuff
 #
 
-MAN1  = snmpinform.1
-MAN1G = snmpbulkget.1 snmpcmd.1 snmpget.1 snmpset.1 snmpwalk.1 \
+MAN1  = snmpinform.1 snmp-bridge-mib.1
+
+@NETSNMP_HAVE_AGENTX_LIBS_TRUE@AGENTXTRAP = agentxtrap.1
+@NETSNMP_HAVE_AGENTX_LIBS_FALSE@AGENTXTRAP =
+
+MAN1G = $(AGENTXTRAP) snmpbulkget.1 snmpcmd.1 snmpget.1 snmpset.1 snmpwalk.1 \
 	snmpbulkwalk.1 snmpgetnext.1 snmptest.1 snmptranslate.1 snmptrap.1 \
 	snmpusm.1 snmpvacm.1 snmptable.1 snmpstatus.1 snmpconf.1 mib2c.1 \
 	snmpnetstat.1 snmpdelta.1 snmpdf.1 encode_keychange.1 fixproc.1 \
 	net-snmp-config.1 mib2c-update.1 tkmib.1 traptoemail.1 \
 	net-snmp-create-v3-user.1
 
-MAN3  = snmp_close.3 snmp_free_pdu.3 snmp_open.3 snmp_read.3 \
-	snmp_select_info.3 snmp_send.3 snmp_timeout.3			       \
-	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_timeout.3   \
-	snmp_sess_session.3 snmp_perror.3 snmp_sess_perror.3	       \
-	snmp_error.3 snmp_api_errstring.3 init_mib.3 add_mibdir.3      \
-	init_mib_internals.3 snmp_set_mib_warnings.3 read_module.3     \
-	read_all_mibs.3 read_mib.3 read_module_node.3 read_objid.3     \
-	add_module_replacement.3 shutdown_mib.3 print_mib.3	       \
-	print_variable.3 print_value.3 print_objid.3		       \
-	print_description.3 snmp_set_save_descriptions.3	       \
-	get_module_node.3 netsnmp_agent.3 netsnmp_bulk_to_next.3       \
-	netsnmp_debug.3 netsnmp_example_scalar_int.3 netsnmp_handler.3 \
-	netsnmp_instance.3 netsnmp_mib_handler_methods.3	       \
-	netsnmp_multiplexer.3 netsnmp_old_api.3 netsnmp_read_only.3    \
-	netsnmp_serialize.3 netsnmp_table.3 netsnmp_table_array.3      \
-	netsnmp_table_data.3 netsnmp_table_dataset.3		       \
-	netsnmp_table_iterator.3 netsnmp_scalar.3       \
-	netsnmp_watcher.3 netsnmp_mode_end_call.3 netsnmp_library.3    \
-	netsnmp_mib_utilities.3					       \
-	netsnmp_baby_steps.3 netsnmp_cache_handler.3		       \
-	netsnmp_container.3 netsnmp_iterator_info_s.3 netsnmp_leaf.3   \
-	netsnmp_row_merge.3		       \
-	netsnmp_scalar_group_group.3 netsnmp_stash_cache.3	       \
-	netsnmp_utilities.3 \
-	netsnmp_container_iterator.h.3 \
-	netsnmp_container_iterator.3 \
-	netsnmp_netsnmp_monitor_callback_header_s.3 \
-	netsnmp_table_row.3 \
-	netsnmp_agent_handler.h.3 \
-	netsnmp_access_multiplexer.3 \
-	netsnmp_null_container.3 \
-	netsnmp_tools.h.3
-
-MAN3G = default_store.3 mib_api.3 config_api.3 snmp_agent_api.3 snmp_alarm.3 \
-	session_api.3 snmp_sess_api.3 snmp_trap_api.3 varbind_api.3 pdu_api.3 
+# If MAN3 is populated again, then remember to re-enable the corresponding
+# action line within the 'maninstall' target
+MAN3  = 
+MAN3_API = netsnmp_mib_api.3 netsnmp_config_api.3 snmp_alarm.3 \
+	netsnmp_session_api.3 netsnmp_sess_api.3 netsnmp_trap_api.3 netsnmp_varbind_api.3 netsnmp_pdu_api.3 
+MAN3G = default_store.3 netsnmp_agent_api.3 $(MAN3_API)
 MAN5G = snmpd.conf.5 snmptrapd.conf.5 snmp.conf.5 snmp_config.5 variables.5 \
         mib2c.conf.5 snmpd.examples.5 snmpd.internal.5
 MAN8G = snmptrapd.8 snmpd.8
 
-DEFAULT_STORE_ALIASES = netsnmp_ds_get_boolean.3 netsnmp_ds_get_int.3	\
-	netsnmp_ds_get_string.3 netsnmp_ds_register_config.3		\
-	netsnmp_ds_register_premib.3 netsnmp_ds_set_boolean.3 		\
-	netsnmp_ds_set_int.3						\
-	netsnmp_ds_set_string.3 netsnmp_ds_shutdown.3
-READ_CONFIG_ALIASES = config_perror.3 config_pwarn.3			\
-	read_config_print_usage.3 read_configs.3 read_premib_configs.3	\
-	register_app_config_handler.3 register_app_premib_handler.3	\
-	register_config_handler.3 register_mib_handlers.3 		\
-	register_premib_handler.3 					\
-	unregister_app_config_handler.3 unregister_config_handler.3 read_config.3
-SNMP_ALARM_ALIASES = snmp_alarm_register.3 snmp_alarm_register_hr.3 	\
-	snmp_alarm_unregister.3
-SNMP_SET_SAVE_DESCRIPTIONS_ALIASES = fprint_description.3 fprint_objid.3 \
-	fprint_value.3 fprint_variable.3 snprint_objid.3 snprint_value.3 \
-	snprint_variable.3 sprint_realloc_objid.3 sprint_realloc_value.3 \
-	sprint_realloc_variable.3
-SNMP_TRAP_API_ALIASES = send_easy_trap.3 send_trap_vars.3 send_v2trap.3
+MIB_ALIASES     = add_mibdir.3 add_module_replacement.3		\
+	fprint_description.3 fprint_objid.3 get_module_node.3	\
+	netsnmp_init_mib.3 netsnmp_read_module.3		\
+	print_description.3 print_mib.3 print_objid.3		\
+	read_all_mibs.3 read_mib.3 read_objid.3			\
+	shutdown_mib.3 snmp_parse_oid.3 snmp_set_mib_errors.3	\
+	snmp_set_mib_warnings.3 snmp_set_save_descriptions.3	\
+	snprint_description.3 snprint_objid.3
+CONFIG_ALIASES  = config_perror.3 config_pwarn.3			    \
+	read_config_print_usage.3 read_configs.3 read_premib_configs.3	    \
+	register_app_config_handler.3 register_app_prenetsnmp_mib_handler.3 \
+	register_config_handler.3 register_const_config_handler.3	    \
+	register_mib_handlers.3 register_prenetsnmp_mib_handler.3	    \
+	unregister_all_config_handlers.3			 	    \
+	unregister_app_config_handler.3 unregister_config_handler.3
+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
+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
+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			\
+	snmp_add_null_var.3 snmp_clone_varbind.3	\
+	snmp_free_var.3 snmp_free_varbind.3		\
+	snmp_pdu_add_variable.3				\
+	snmp_set_var_objid.3 snmp_set_var_typed_integer.3 \
+	snmp_set_var_typed_value.3 snmp_set_var_value.3   \
+	snmp_varlist_add_variable.3 snprint_value.3 snprint_variable.3
+PDU_ALIASES     = snmp_clone_pdu.3 snmp_fix_pdu.3 snmp_free_pdu.3 snmp_pdu_create.3
 
 
 
-MANALIASES=$(DEFAULT_STORE_ALIASES) $(READ_CONFIG_ALIASES) 		\
-	$(SNMP_ALARM_ALIASES) $(SNMP_SET_SAVE_DESCRIPTIONS_ALIASES) 	\
-	$(SNMP_TRAP_API_ALIASES)
+MANALIASES=$(MIB_ALIASES) $(CONFIG_ALIASES) $(ALARM_ALIASES) $(SESSION_ALIASES) \
+	$(SSESS_ALIASES) $(TRAP_ALIASES) $(VARBIND_ALIASES) $(PDU_ALIASES)
 MANALL = $(MAN1) $(MAN1G) $(MAN3) $(MAN3G) $(MAN5G) $(MAN8G) $(MANALIASES)
 
 TARGETS = $(MAN5G) $(MAN1G) $(MAN3G) $(MAN8G)
@@ -96,27 +83,15 @@
 
 manaliases: Makefile
 	touch manaliases
-	@for i in $(DEFAULT_STORE_ALIASES) ; do				\
-		echo "making man page alias $$i -> default_store APIs" ; \
-		echo ".so man3/default_store.3" > $$i ; 		\
+	@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 ; 		  \
+	    done                                                  \
 	done
-	@for i in $(READ_CONFIG_ALIASES) ; do				\
-		echo "making man page alias $$i -> config_api APIs" ;	\
-		echo ".so man3/config_api.3" > $$i ; 			\
-	done
-	@for i in $(SNMP_ALARM_ALIASES) ; do				\
-		echo "making man page alias $$i -> snmp_alarm APIs" ;	\
-		echo ".so man3/snmp_alarm.3" > $$i ; 			\
-	done
-	@for i in $(SNMP_SET_SAVE_DESCRIPTIONS_ALIASES) ; do		\
-		echo "making man page alias $$i -> snmp_set_save_descriptions APIs" ; \
-		echo ".so man3/snmp_set_save_descriptions.3" > $$i ; 	\
-	done
-	@for i in $(SNMP_TRAP_API_ALIASES) ; do				\
-		echo "making man page alias $$i -> snmp_trap APIs" ;	\
-		echo ".so man3/snmp_trap_api.3" > $$i ;			\
-	done
-	echo ".so man3/session_api.3" > snmp_api.3
+
+agentxtrap.1: $(srcdir)/agentxtrap.1.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/agentxtrap.1.def > agentxtrap.1
 
 snmpbulkget.1: $(srcdir)/snmpbulkget.1.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/snmpbulkget.1.def > snmpbulkget.1
@@ -194,61 +169,61 @@
 	$(SED) -f ../sedscript < $(srcdir)/net-snmp-create-v3-user.1.def > net-snmp-create-v3-user.1
 
 tkmib.1: $(srcdir)/tkmib.1.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/tkmib.1.def > tkmib.1
+	$(SED) -f ../sedscript < $(srcdir)/tkmib.1.def > $@
 
 traptoemail.1: $(srcdir)/traptoemail.1.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/traptoemail.1.def > traptoemail.1
+	$(SED) -f ../sedscript < $(srcdir)/traptoemail.1.def > $@
 
-varbind_api.3: $(srcdir)/varbind_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/varbind_api.3.def > varbind_api.3
+netsnmp_varbind_api.3: $(srcdir)/netsnmp_varbind_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_varbind_api.3.def > $@
 
-pdu_api.3: $(srcdir)/pdu_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/pdu_api.3.def > pdu_api.3
+netsnmp_pdu_api.3: $(srcdir)/netsnmp_pdu_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_pdu_api.3.def > $@
 
-session_api.3: $(srcdir)/session_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/session_api.3.def > session_api.3
+netsnmp_session_api.3: $(srcdir)/netsnmp_session_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_session_api.3.def > $@
 
-mib_api.3: $(srcdir)/mib_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/mib_api.3.def > mib_api.3
+netsnmp_mib_api.3: $(srcdir)/netsnmp_mib_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_mib_api.3.def > $@
 
-config_api.3: $(srcdir)/config_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/config_api.3.def > config_api.3
-
-snmp_agent_api.3: $(srcdir)/snmp_agent_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_agent_api.3.def > snmp_agent_api.3
+netsnmp_config_api.3: $(srcdir)/netsnmp_config_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_config_api.3.def > $@
 
 snmp_alarm.3: $(srcdir)/snmp_alarm.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_alarm.3.def > snmp_alarm.3
+	$(SED) -f ../sedscript < $(srcdir)/snmp_alarm.3.def > $@
 
-snmp_sess_api.3: $(srcdir)/snmp_sess_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_sess_api.3.def > snmp_sess_api.3
+netsnmp_sess_api.3: $(srcdir)/netsnmp_sess_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_sess_api.3.def > $@
 
-snmp_trap_api.3: $(srcdir)/snmp_trap_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_trap_api.3.def > snmp_trap_api.3
+netsnmp_agent_api.3: $(srcdir)/netsnmp_agent_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_agent_api.3.def > $@
+
+netsnmp_trap_api.3: $(srcdir)/netsnmp_trap_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_trap_api.3.def > $@
 
 snmp.conf.5: $(srcdir)/snmp.conf.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp.conf.5.def > snmp.conf.5
+	$(SED) -f ../sedscript < $(srcdir)/snmp.conf.5.def > $@
 
 snmp_config.5: $(srcdir)/snmp_config.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_config.5.def > snmp_config.5
+	$(SED) -f ../sedscript < $(srcdir)/snmp_config.5.def > $@
 
 snmpd.conf.5: $(srcdir)/snmpd.conf.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmpd.conf.5.def > snmpd.conf.5
+	$(SED) -f ../sedscript < $(srcdir)/snmpd.conf.5.def > $@
 
 snmpd.examples.5: $(srcdir)/snmpd.examples.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmpd.examples.5.def > snmpd.examples.5
+	$(SED) -f ../sedscript < $(srcdir)/snmpd.examples.5.def > $@
 
 snmpd.internal.5: $(srcdir)/snmpd.internal.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmpd.internal.5.def > snmpd.internal.5
+	$(SED) -f ../sedscript < $(srcdir)/snmpd.internal.5.def > $@
 
 snmptrapd.conf.5: $(srcdir)/snmptrapd.conf.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmptrapd.conf.5.def > snmptrapd.conf.5
+	$(SED) -f ../sedscript < $(srcdir)/snmptrapd.conf.5.def > $@
 
 variables.5: $(srcdir)/variables.5.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/variables.5.def > variables.5
+	$(SED) -f ../sedscript < $(srcdir)/variables.5.def > $@
 
 snmptrapd.8: $(srcdir)/snmptrapd.8.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmptrapd.8.def > snmptrapd.8
+	$(SED) -f ../sedscript < $(srcdir)/snmptrapd.8.def > $@
 
 default_store.3.h: $(srcdir)/../include/net-snmp/library/default_store.h
 	awk '{ if ($$0 == "     * begin storage definitions ") { p = 1 } else if ($$0 == "     * end storage definitions ") { p = 0 } else if (p) { print $$0}}' < $(srcdir)/../include/net-snmp/library/default_store.h > default_store.3.h
@@ -268,7 +243,7 @@
 	@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
-	@for i in $(MAN3) ; do $(INSTALL_DATA) $(srcdir)/$$i $(INSTALL_PREFIX)$(man3dir) ; echo "install:  installed $$i in $(INSTALL_PREFIX)$(man3dir)" ; done
+	#EMPTY LIST#@for i in $(MAN3) ; do $(INSTALL_DATA) $(srcdir)/$$i $(INSTALL_PREFIX)$(man3dir) ; echo "install:  installed $$i in $(INSTALL_PREFIX)$(man3dir)" ; done
 	@$(INSTALL_DATA) $(MAN3G) $(INSTALL_PREFIX)$(man3dir)
 	@for i in $(MAN3G) ; do echo "install:  installed $$i in $(INSTALL_PREFIX)$(man3dir)" ; done
 	@$(INSTALL_DATA) $(MANALIASES) $(INSTALL_PREFIX)$(man3dir)
diff --git a/man/add_mibdir.3 b/man/add_mibdir.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/add_mibdir.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/add_module_replacement.3 b/man/add_module_replacement.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/add_module_replacement.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/agentxtrap.1.def b/man/agentxtrap.1.def
new file mode 100644
index 0000000..331325f
--- /dev/null
+++ b/man/agentxtrap.1.def
@@ -0,0 +1,110 @@
+.TH AGENTXTRAP 1 "20 Dec 2009" VVERSIONINFO "Net-SNMP"
+.SH NAME
+agentxtrap - send an AgentX NotifyPDU to an AgentX master agent
+.SH SYNOPSIS
+.B agentxtrap
+.RI [ OPTIONS ] " trap-oid " [ "OID TYPE VALUE" ...]
+.SH DESCRIPTION
+.B agentxtrap
+issues an AgentX NotifyPDU to a master agent. One or more object
+identifiers (OIDs) can be given as arguments on the command line.
+A type and a value must accompany each object identifier.
+Each variable name is given in the format specified in
+.IR variables(5) .
+.PP
+.SH OPTIONS
+.PD 0
+.TP 6
+.BI \-c "\| contextName\^"
+if the
+.B \-c
+option is present then the notification is sent in the nondefault name context.
+.TP
+.BI \-U "\| uptime\^"
+if the
+.B \-U
+option is present then that value, parsed as centiseconds, is taken to be the
+sysUpTime field of the application.
+.TP
+.BI \-x "\| ADDRESS\^"
+if the
+.B \-x
+option is present then contact the AgentX master at ADDRESS and not the default
+one.
+.PD
+.PP
+Additionally all the options described in
+.IR snmpcmd(1)
+under the
+.BR "MIB PARSING OPTIONS" ", " "LOGGING OPTIONS" " and " "INPUT OPTIONS"
+headers as well as the
+.BR -d ", " -D ", " -m " and " -M
+options are supported.
+.PP
+In
+.I OID TYPE VALUE
+the parsing of the
+.I VALUE
+field is controlled by the
+.I TYPE
+field. The possible values for the
+.I TYPE
+field is one of the following characters:
+.RS
+.PD 0
+.TP 3
+.B =
+Let
+.I OID
+decide how
+.I VALUE
+should be interpreted
+.TP
+.B i
+INTEGER
+.TP
+.B u
+Unsigned
+.TP
+.B c
+Counter32
+.TP
+.B s
+OCTET STRING of chaacters
+.TP
+.B x
+OCTET STRING, entered as a sequence of optionally space separated hexadecimal
+digit pairs
+.TP
+.B d
+OCTET STRING, entered as a sequence of space separated decimal digits in the
+range 0 - 255
+.TP
+.B n
+NULL
+.TP
+.B o
+OBJECT IDENTIFIER
+.TP
+.B t
+TimeTicks
+.TP
+.B a
+IpAddress
+.TP
+.B b
+BITS
+.PD
+.RE
+which are handled in the same way as the
+.B snmpset
+command.
+.PP
+.SH EXAMPLES
+To send a generic linkUp trap to the manager for interface 1 the following
+command can be used:
+.PP
+agentxtrap netSnmp.0.3 ifindex.1 i 1
+.PP
+.SH SEE ALSO
+snmpcmd(1), snmpset(1), variables(5), RFC 2741
diff --git a/man/default_store.3.bot b/man/default_store.3.bot
index 56a3678..16c08ee 100644
--- a/man/default_store.3.bot
+++ b/man/default_store.3.bot
@@ -116,5 +116,5 @@
 is processed before MIBs are read (this is therefore useful for controlling
 MIB processing options).
 .SH "SEE ALSO"
-.BR snmp_config "(5), " read_config "(3)"
+.BR snmp_config "(5), " netsnmp_config_api "(3)"
 
diff --git a/man/default_store.3.top b/man/default_store.3.top
index ec526bb..cc04822 100644
--- a/man/default_store.3.top
+++ b/man/default_store.3.top
@@ -1,5 +1,4 @@
 .TH DEFAULT_STORE 3 "25 Jun 2002" VVERSIONINFO "Net-SNMP"
-.UC 5
 .SH NAME
 default_store \- generic storage of global data.
 .SH SYNOPSIS
diff --git a/man/get_module_node.3 b/man/get_module_node.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/get_module_node.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/init_mib.3 b/man/init_mib.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/init_mib.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/init_mib_internals.3 b/man/init_mib_internals.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/init_mib_internals.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/mib2c-update.1.def b/man/mib2c-update.1.def
index bd9ad93..52ece8a 100644
--- a/man/mib2c-update.1.def
+++ b/man/mib2c-update.1.def
@@ -1,4 +1,4 @@
-.TH mib2c-update "1" "16 Nov 2006" VVERSIONINFO "Net-SNMP"
+.TH mib2c-update 1 "07 Apr 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 mib2c-update - script to merge custom code into updated mib2c code
 .SH SYNOPSIS
@@ -6,4 +6,23 @@
 .B mib2c-update
 .SH DESCRIPTION
 .PP
-merges custom code into updated mib2c code
+Use mib2c-update to generate your mib2c code templates, and it will track
+the original code and the changes you make to the code. If the mib2c
+template changes (bug fixes, enhances in later releases), re-running
+mib2c will update the template and then attempt to re-apply your
+changes.
+.PP
+This can be extremely useful when developing your own mib2c templates.
+.PP
+When you first run mib2c-update, it will create several hidden
+directories and a .mib2c-updaterc file. You must edit the .mib2c-udpaterc
+file to specify two values. The first, UPDATE_OID, is the table name
+to specify when running mib2c. The second, UPDATE_CONF, is the mib2c
+configuration file to specify when running mib2c.
+.PP
+Additional mib2c options can be specified in UPDATE_MIB2C_OPTS.
+.PP
+.SH BUGS
+.PP
+mib2c-update has only been tested on individual tables. Specifying
+a scalar or and entire MIB might not work.
diff --git a/man/mib2c.1.def b/man/mib2c.1.def
index 0b8c989..b9c1134 100644
--- a/man/mib2c.1.def
+++ b/man/mib2c.1.def
@@ -7,12 +7,12 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH MIB2C 1 "1 Sep 2004" VVERSIONINFO "Net-SNMP"
+.TH MIB2C 1 "05 Apr 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 mib2c -- generate template code for extending the agent
 .SH SYNOPSIS
 .B mib2c
-[-h] -c CONFIGFILE [-I PATH] [-f OUTNAME] [-i][q][-S VAR=VAL] MIBNODE
+[-h] -c CONFIGFILE [-I PATH] [-f OUTNAME] [-i][-s][-q][-S VAR=VAL] MIBNODE
 .SH DESCRIPTION
 The mib2c tool is designed to take a portion of the MIB tree (as defined
 by a MIB file) and generate the template C code necessary to implement
@@ -175,6 +175,10 @@
 .BI -i
 Do not run indent on the resulting code.
 .TP
+.BI -s
+Do not look for MIBNODE.sed and run sed on the resulting code. This
+is useful to shorten long mib variable names in the code.
+.TP
 .BI -q
 Run in "quiet" mode, which minimizes the status messages
 mib2c generates.
diff --git a/man/mib2c.conf.5.in b/man/mib2c.conf.5.in
index 9bef875..7e5a210 100644
--- a/man/mib2c.conf.5.in
+++ b/man/mib2c.conf.5.in
@@ -1,5 +1,4 @@
-.TH MIB2C.CONF 5 "28 Apr 2004" V5.2 "Net-SNMP"
-.UC 4
+.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.
 .SH SYNOPSIS
diff --git a/man/netsnmp_access_multiplexer.3 b/man/netsnmp_access_multiplexer.3
deleted file mode 100644
index 3b58ea2..0000000
--- a/man/netsnmp_access_multiplexer.3
+++ /dev/null
@@ -1,26 +0,0 @@
-.TH "baby_steps_access_multiplexer: calls individual access methods based on baby_step mode." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-baby_steps_access_multiplexer: calls individual access methods based on baby_step mode. \- 
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_baby_steps_access_multiplexer_get\fP (\fBnetsnmp_baby_steps_access_methods\fP *am)"
-.br
-.RI "\fIreturns a baby_steps handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_baby_step_mode2flag\fP (u_int mode)"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_baby_steps_access_multiplexer_get (\fBnetsnmp_baby_steps_access_methods\fP * am)"
-.PP
-returns a baby_steps handler that can be injected into a given handler chain. 
-.PP
-Definition at line 336 of file baby_steps.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent.3 b/man/netsnmp_agent.3
deleted file mode 100644
index d45ae64..0000000
--- a/man/netsnmp_agent.3
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH "The Net-SNMP agent" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-The Net-SNMP agent \- 
-.PP
-The snmp agent responds to SNMP queries from management stations.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBNet-SNMP Agent handler and extensibility API\fP"
-.br
-.PP
-
-.RI "\fIThe basic theory goes something like this: In the past, with the original mib \fBmodule\fP api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request). \fP"
-.ti -1c
-.RI "\fBMaintain a registry of MIB subtrees, together with related information regarding mibmodule, sessions, etc\fP"
-.br
-.ti -1c
-.RI "\fBTrap generation routines for mib modules to use\fP"
-.br
-.ti -1c
-.RI "\fBnet-snmp agent related processing\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The snmp agent responds to SNMP queries from management stations. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/snmp_agent_api.3.def b/man/netsnmp_agent_api.3.def
similarity index 93%
rename from man/snmp_agent_api.3.def
rename to man/netsnmp_agent_api.3.def
index 63e40de..87dc541 100644
--- a/man/snmp_agent_api.3.def
+++ b/man/netsnmp_agent_api.3.def
@@ -1,6 +1,6 @@
-.TH SNMP_AGENT_API 3 "01 Aug 2002" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_AGENT_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-snmp_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>
@@ -110,7 +110,7 @@
 .I name
 string that you passed in.  It can be used to configure access
 control, for instance.   Please see the
-.IR read_config(3) ", " snmp_config(5) ", and " snmpd.conf(5)
+.IR netsnmp_config_api(3) ", " snmp_config(5) ", and " snmpd.conf(5)
 manual pages for further details on this subject.
 .IP "init_master_agent(void)"
 Initializes the master agent and causes it to listen for SNMP requests 
@@ -127,6 +127,6 @@
 .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),
-default_store(3), snmp_alarm(3), read_config(3), snmp_config(5),
+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_agent_handler.h.3 b/man/netsnmp_agent_handler.h.3
deleted file mode 100644
index 41429e4..0000000
--- a/man/netsnmp_agent_handler.h.3
+++ /dev/null
@@ -1,240 +0,0 @@
-.TH "agent_handler.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-agent_handler.h \- 
-.SH SYNOPSIS
-.br
-.PP
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_mib_handler_s\fP"
-.br
-.RI "\fIthe mib handler structure to be registered \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_handler_registration_s\fP"
-.br
-.RI "\fIRoot registration info. \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_handler_args_s\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_delegated_cache_s\fP"
-.br
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBMIB_HANDLER_AUTO_NEXT\fP   0x00000001"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE\fP   0x00000002"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_INSTANCE\fP   0x00000004"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM4\fP   0x10000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM3\fP   0x20000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM2\fP   0x40000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM1\fP   0x80000000"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_GETANDGETNEXT\fP   0x01"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_SET\fP   0x02"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_GETBULK\fP   0x04"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_NOT_CREATE\fP   0x08"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_BABY_STEP\fP   0x10"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_STASH\fP   0x20"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_RONLY\fP   (HANDLER_CAN_GETANDGETNEXT)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_RWRITE\fP   (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_SET_ONLY\fP   (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_DEFAULT\fP   (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)"
-.br
-.ti -1c
-.RI "#define \fBREQUEST_IS_DELEGATED\fP   1"
-.br
-.ti -1c
-.RI "#define \fBREQUEST_IS_NOT_DELEGATED\fP   0"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. \fP"
-.ti -1c
-.RI "typedef struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. \fP"
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Node_Handler\fP )(\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_handler_args_s\fP \fBnetsnmp_handler_args\fP"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_delegated_cache_s\fP \fBnetsnmp_delegated_cache\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_init_handler_conf\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_unregister_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIunregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_handler_nocallback\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_inject_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_inject_handler_before\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
-.br
-.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_find_handler_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
-.br
-.RI "\fIReturns a handler from a chain based on the name. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_find_handler_data_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
-.br
-.RI "\fIReturns a handler's void * pointer from a chain based on the name. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_call_handlers\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_handler\fP (\fBnetsnmp_mib_handler\fP *next_handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls a handler with with appropriate NULL checking of arguments, etc. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler_one_request\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_create_handler\fP (const char *name, Netsnmp_Node_Handler *handler_access_method)"
-.br
-.RI "\fIcreates a netsnmp_mib_handler structure given a name and a access method. \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_create\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler, const oid *reg_oid, size_t reg_oid_len, int modes)"
-.br
-.RI "\fIcreates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, const oid *reg_oid, size_t reg_oid_len, int modes)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_create_delegated_cache\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests, void *localinfo)"
-.br
-.RI "\fIcreates a cache of information which can be saved for future reference. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_delegated_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
-.br
-.RI "\fIfrees a cache once you're finished using it \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_handler_check_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
-.br
-.RI "\fIcheck's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_register_handler_by_name\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIregisters a given handler by name so that it can be found easily later. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_clear_handler_list\fP (void)"
-.br
-.RI "\fIclears the entire handler-registration list \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_request_add_list_data\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.RI "\fIadd data to a request that can be extracted later by submodules \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_request_remove_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
-.br
-.RI "\fIremove data from a request \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_request_get_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
-.br
-.RI "\fIextract data from a request that was added previously by a parent \fBmodule\fP \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_set\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIFree the extra data stored in a request. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_sets\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIFree the extra data stored in a bunch of requests (all data in the chain). \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_free\fP (\fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIfrees the resources associated with a given handler \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_handler_dup\fP (\fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIduplicates a handler and all subsequent handlers see also _clone_handler \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_dup\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIduplicates the handler registration object \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_registration_free\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIfree the resources associated with a handler registration object \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_mark_requests_as_delegated\fP (\fBnetsnmp_request_info\fP *requests, int isdelegated)"
-.br
-.RI "\fImarks a list of requests as delegated (or not if isdelegaded = 0) \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_handler_get_parent_data\fP (\fBnetsnmp_request_info\fP *, const char *)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-
-.PP
-Definition in file \fBagent_handler.h\fP.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent_registry.3 b/man/netsnmp_agent_registry.3
deleted file mode 100644
index 36c8d9f..0000000
--- a/man/netsnmp_agent_registry.3
+++ /dev/null
@@ -1,278 +0,0 @@
-.TH "Maintain a registry of MIB subtrees, together with related information regarding mibmodule, sessions, etc" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Maintain a registry of MIB subtrees, together with related information regarding mibmodule, sessions, etc \- 
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBlookup_cache_s\fP"
-.br
-.ti -1c
-.RI "struct \fBlookup_cache_context_s\fP"
-.br
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBIN_SNMP_VARS_C\fP"
-.br
-.ti -1c
-.RI "#define \fBSUBTREE_DEFAULT_CACHE_SIZE\fP   8"
-.br
-.ti -1c
-.RI "#define \fBSUBTREE_MAX_CACHE_SIZE\fP   32"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fBlookup_cache_s\fP \fBlookup_cache\fP"
-.br
-.ti -1c
-.RI "typedef struct \fBlookup_cache_context_s\fP \fBlookup_cache_context\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_set_lookup_cache_size\fP (int newsize)"
-.br
-.RI "\fIset the lookup cache size for optimized agent registration performance. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_get_lookup_cache_size\fP (void)"
-.br
-.RI "\fIretrieves the current value of the lookup cache size \fP"
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE \fBlookup_cache_context\fP * \fBget_context_lookup_cache\fP (const char *context)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fBlookup_cache_add\fP (const char *context, \fBnetsnmp_subtree\fP *next, \fBnetsnmp_subtree\fP *previous)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fBlookup_cache_replace\fP (\fBlookup_cache\fP *ptr, \fBnetsnmp_subtree\fP *next, \fBnetsnmp_subtree\fP *previous)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE \fBlookup_cache\fP * \fBlookup_cache_find\fP (const char *context, oid *name, size_t name_len, int *retcmp)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fBinvalidate_lookup_cache\fP (const char *context)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_subtree_free\fP (\fBnetsnmp_subtree\fP *a)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_deepcopy\fP (\fBnetsnmp_subtree\fP *a)"
-.br
-.ti -1c
-.RI "\fBsubtree_context_cache\fP * \fBget_top_context_cache\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_find_first\fP (const char *context_name)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBadd_subtree\fP (\fBnetsnmp_subtree\fP *new_tree, const char *context_name)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_replace_first\fP (\fBnetsnmp_subtree\fP *new_tree, const char *context_name)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_subtree_change_next\fP (\fBnetsnmp_subtree\fP *ptr, \fBnetsnmp_subtree\fP *thenext)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_subtree_change_prev\fP (\fBnetsnmp_subtree\fP *ptr, \fBnetsnmp_subtree\fP *theprev)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_subtree_compare\fP (const \fBnetsnmp_subtree\fP *ap, const \fBnetsnmp_subtree\fP *bp)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_subtree_join\fP (\fBnetsnmp_subtree\fP *root)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_split\fP (\fBnetsnmp_subtree\fP *current, oid name[], int name_len)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_subtree_load\fP (\fBnetsnmp_subtree\fP *new_sub, const char *context_name)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_mib\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags, \fBnetsnmp_handler_registration\fP *reginfo, int perform_callback)"
-.br
-.ti -1c
-.RI "void \fBregister_mib_reattach\fP (void)"
-.br
-.ti -1c
-.RI "void \fBregister_mib_detach\fP (void)"
-.br
-.ti -1c
-.RI "int \fBregister_mib_context\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags)"
-.br
-.ti -1c
-.RI "int \fBregister_mib_range\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP *ss)"
-.br
-.ti -1c
-.RI "int \fBregister_mib_priority\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority)"
-.br
-.ti -1c
-.RI "int \fBregister_mib\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_subtree_unload\fP (\fBnetsnmp_subtree\fP *sub, \fBnetsnmp_subtree\fP *prev, const char *context)"
-.br
-.ti -1c
-.RI "int \fBunregister_mib_context\fP (oid *name, size_t len, int priority, int range_subid, oid range_ubound, const char *context)"
-.br
-.RI "\fIUnregisters an OID that has an associated context name value. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_unregister_mib_table_row\fP (oid *name, size_t len, int priority, int var_subid, oid range_ubound, const char *context)"
-.br
-.ti -1c
-.RI "int \fBunregister_mib_range\fP (oid *name, size_t len, int priority, int range_subid, oid range_ubound)"
-.br
-.ti -1c
-.RI "int \fBunregister_mib_priority\fP (oid *name, size_t len, int priority)"
-.br
-.ti -1c
-.RI "int \fBunregister_mib\fP (oid *name, size_t len)"
-.br
-.ti -1c
-.RI "void \fBunregister_mibs_by_session\fP (\fBnetsnmp_session\fP *ss)"
-.br
-.ti -1c
-.RI "int \fBin_a_view\fP (oid *name, size_t *namelen, \fBnetsnmp_pdu\fP *pdu, int type)"
-.br
-.ti -1c
-.RI "int \fBcheck_access\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_acm_check_subtree\fP (\fBnetsnmp_pdu\fP *pdu, oid *name, size_t namelen)"
-.br
-.RI "\fIchecks to see if everything within a given subtree is either: in view, not in view, or possibly both. \fP"
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_find_prev\fP (oid *name, size_t len, \fBnetsnmp_subtree\fP *subtree, const char *context_name)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_find_next\fP (oid *name, size_t len, \fBnetsnmp_subtree\fP *subtree, const char *context_name)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBnetsnmp_subtree_find\fP (oid *name, size_t len, \fBnetsnmp_subtree\fP *subtree, const char *context_name)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBget_session_for_oid\fP (oid *name, size_t len, const char *context_name)"
-.br
-.ti -1c
-.RI "void \fBsetup_tree\fP (void)"
-.br
-.ti -1c
-.RI "int \fBremove_tree_entry\fP (oid *name, size_t len)"
-.br
-.ti -1c
-.RI "void \fBshutdown_tree\fP (void)"
-.br
-.ti -1c
-.RI "void \fBclear_subtree\fP (\fBnetsnmp_subtree\fP *sub)"
-.br
-.ti -1c
-.RI "void \fBclear_lookup_cache\fP (void)"
-.br
-.ti -1c
-.RI "void \fBclear_context\fP (void)"
-.br
-.ti -1c
-.RI "void \fBdump_idx_registry\fP (void)"
-.br
-.ti -1c
-.RI "void \fBdump_registry\fP (void)"
-.br
-.ti -1c
-.RI "RETSIGTYPE \fBagent_SIGCHLD_handler\fP (int sig)"
-.br
-.ti -1c
-.RI "int \fBregister_signal\fP (int sig, void(*func)(int))"
-.br
-.ti -1c
-.RI "int \fBunregister_signal\fP (int sig)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "int \fBlookup_cache_size\fP = 0"
-.br
-.ti -1c
-.RI "\fBsubtree_context_cache\fP * \fBcontext_subtrees\fP = NULL"
-.br
-.ti -1c
-.RI "int \fBexternal_signal_scheduled\fP [NUM_EXTERNAL_SIGS]"
-.br
-.ti -1c
-.RI "void(* \fBexternal_signal_handler\fP [NUM_EXTERNAL_SIGS])(int)"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_acm_check_subtree (\fBnetsnmp_pdu\fP * pdu, oid * name, size_t namelen)"
-.PP
-checks to see if everything within a given subtree is either: in view, not in view, or possibly both. If the entire subtree is not-in-view we can use this information to skip calling the sub-handlers entirely. 
-.PP
-\fBReturns:\fP
-.RS 4
-0 if entire subtree is accessible, 5 if not and 7 if portions are both. 1 on error (illegal pdu version). 
-.RE
-.PP
-
-.PP
-Definition at line 1475 of file agent_registry.c.
-.SS "int netsnmp_get_lookup_cache_size (void)"
-.PP
-retrieves the current value of the lookup cache size \fBReturns:\fP
-.RS 4
-the current lookup cache size 
-.RE
-.PP
-
-.PP
-Definition at line 118 of file agent_registry.c.
-.SS "void netsnmp_set_lookup_cache_size (int newsize)"
-.PP
-set the lookup cache size for optimized agent registration performance. \fBParameters:\fP
-.RS 4
-\fInewsize\fP set to the maximum size of a cache for a given context. Set to 0 to completely disable caching, or to -1 to set to the default cache size (8), or to a number of your chosing. The rough guide is that it should be equal to the maximum number of simultanious managers you expect to talk to the agent (M) times 80% (or so, he says randomly) the average number (N) of varbinds you expect to receive in a given request for a manager. ie, M times N. Bigger does NOT necessarily mean better. Certainly 16 should be an upper limit. 32 is the hard coded limit. 
-.RE
-.PP
-
-.PP
-Definition at line 105 of file agent_registry.c.
-.SS "int unregister_mib_context (oid * name, size_t len, int priority, int range_subid, oid range_ubound, const char * context)"
-.PP
-Unregisters an OID that has an associated context name value. Typically used when a \fBmodule\fP has multiple contexts defined. The parameters priority, range_subid, and range_ubound should be used in conjunction with agentx, see RFC 2741, otherwise these values should always be 0.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIname\fP the specific OID to unregister if it conatins the associated context.
-.br
-\fIlen\fP the length of the OID, use OID_LENGTH macro.
-.br
-\fIpriority\fP a value between 1 and 255, used to achieve a desired configuration when different sessions register identical or overlapping regions. Subagents with no particular knowledge of priority should register with the default value of 127.
-.br
-\fIrange_subid\fP permits specifying a range in place of one of a subtree sub-identifiers. When this value is zero, no range is being specified.
-.br
-\fIrange_ubound\fP the upper bound of a sub-identifier's range. This field is present only if range_subid is not 0.
-.br
-\fIcontext\fP a context name that has been created
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-.RE
-.PP
-
-.PP
-Definition at line 1121 of file agent_registry.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_agent_trap.3 b/man/netsnmp_agent_trap.3
deleted file mode 100644
index d362617..0000000
--- a/man/netsnmp_agent_trap.3
+++ /dev/null
@@ -1,348 +0,0 @@
-.TH "Trap generation routines for mib modules to use" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Trap generation routines for mib modules to use \- 
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBtrap_sink\fP"
-.br
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSNMPV2_TRAPS_PREFIX\fP   SNMP_OID_SNMPMODULES,1,1,5"
-.br
-.ti -1c
-.RI "#define \fBSNMPV2_TRAP_OBJS_PREFIX\fP   SNMP_OID_SNMPMODULES,1,1,4"
-.br
-.ti -1c
-.RI "#define \fBSNMPV2_COMM_OBJS_PREFIX\fP   SNMP_OID_SNMPMODULES,18,1"
-.br
-.ti -1c
-.RI "#define \fBSNMP_AUTHENTICATED_TRAPS_ENABLED\fP   1"
-.br
-.ti -1c
-.RI "#define \fBSNMP_AUTHENTICATED_TRAPS_DISABLED\fP   2"
-.br
-.ti -1c
-.RI "#define \fBMAX_ARGS\fP   128"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBinit_traps\fP (void)"
-.br
-.ti -1c
-.RI "int \fBadd_trap_session\fP (\fBnetsnmp_session\fP *ss, int pdutype, int confirm, int version)"
-.br
-.ti -1c
-.RI "int \fBremove_trap_session\fP (\fBnetsnmp_session\fP *ss)"
-.br
-.ti -1c
-.RI "int \fBcreate_trap_session\fP (char *sink, u_short sinkport, char *com, int version, int pdutype)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_free_trapsinks\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBconvert_v2pdu_to_v1\fP (\fBnetsnmp_pdu\fP *template_v2pdu)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBconvert_v1pdu_to_v2\fP (\fBnetsnmp_pdu\fP *template_v1pdu)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_send_traps\fP (int trap, int specific, oid *enterprise, int enterprise_length, \fBnetsnmp_variable_list\fP *vars, char *context, int flags)"
-.br
-.RI "\fIThis function allows you to make a distinction between generic traps from different classes of equipment. \fP"
-.ti -1c
-.RI "void \fBsend_enterprise_trap_vars\fP (int trap, int specific, oid *enterprise, int enterprise_length, \fBnetsnmp_variable_list\fP *vars)"
-.br
-.ti -1c
-.RI "int \fBhandle_inform_response\fP (int op, \fBnetsnmp_session\fP *session, int reqid, \fBnetsnmp_pdu\fP *pdu, void *magic)"
-.br
-.RI "\fICaptures responses or the lack there of from INFORMs that were sent 1) a response is received from an INFORM 2) one isn't received and the retries/timeouts have failed. \fP"
-.ti -1c
-.RI "void \fBsend_trap_to_sess\fP (\fBnetsnmp_session\fP *sess, \fBnetsnmp_pdu\fP *template_pdu)"
-.br
-.ti -1c
-.RI "void \fBsend_trap_vars\fP (int trap, int specific, \fBnetsnmp_variable_list\fP *vars)"
-.br
-.ti -1c
-.RI "void \fBsend_trap_vars_with_context\fP (int trap, int specific, \fBnetsnmp_variable_list\fP *vars, char *context)"
-.br
-.ti -1c
-.RI "void \fBsend_easy_trap\fP (int trap, int specific)"
-.br
-.RI "\fISends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of configured trap destinations (or 'sinks'), using the provided values for the generic trap type and specific trap value. \fP"
-.ti -1c
-.RI "void \fBsend_v2trap\fP (\fBnetsnmp_variable_list\fP *vars)"
-.br
-.RI "\fIUses the supplied list of \fBvariable\fP bindings to form an SNMPv2 trap, which is sent to SNMPv2-capable sinks on the configured list. \fP"
-.ti -1c
-.RI "void \fBsend_v3trap\fP (\fBnetsnmp_variable_list\fP *vars, char *context)"
-.br
-.RI "\fISimilar to \fBsend_v2trap()\fP, with the added ability to specify a context. \fP"
-.ti -1c
-.RI "void \fBsend_trap_pdu\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_authtrap\fP (const char *token, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_trapsink\fP (const char *token, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_trap2sink\fP (const char *word, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_informsink\fP (const char *word, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_trapsess\fP (const char *word, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_parse_config_trapcommunity\fP (const char *word, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBsnmpd_free_trapcommunity\fP (void)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "struct \fBtrap_sink\fP * \fBsinks\fP = NULL"
-.br
-.ti -1c
-.RI "struct timeval \fBstarttime\fP"
-.br
-.ti -1c
-.RI "oid \fBobjid_enterprisetrap\fP [] = { NETSNMP_NOTIFICATION_MIB }"
-.br
-.ti -1c
-.RI "oid \fBtrap_version_id\fP [] = { NETSNMP_SYSTEM_MIB }"
-.br
-.ti -1c
-.RI "int \fBenterprisetrap_len\fP"
-.br
-.ti -1c
-.RI "int \fBtrap_version_id_len\fP"
-.br
-.ti -1c
-.RI "oid \fBtrap_prefix\fP [] = { SNMPV2_TRAPS_PREFIX }"
-.br
-.ti -1c
-.RI "oid \fBcold_start_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 1 }"
-.br
-.ti -1c
-.RI "oid \fBwarm_start_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 2 }"
-.br
-.ti -1c
-.RI "oid \fBlink_down_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 3 }"
-.br
-.ti -1c
-.RI "oid \fBlink_up_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 4 }"
-.br
-.ti -1c
-.RI "oid \fBauth_fail_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 5 }"
-.br
-.ti -1c
-.RI "oid \fBegp_xxx_oid\fP [] = { SNMPV2_TRAPS_PREFIX, 99 }"
-.br
-.ti -1c
-.RI "oid \fBsnmptrap_oid\fP [] = { SNMPV2_TRAP_OBJS_PREFIX, 1, 0 }"
-.br
-.ti -1c
-.RI "oid \fBsnmptrapenterprise_oid\fP []"
-.br
-.ti -1c
-.RI "oid \fBsysuptime_oid\fP [] = { SNMP_OID_MIB2, 1, 3, 0 }"
-.br
-.ti -1c
-.RI "size_t \fBsnmptrap_oid_len\fP"
-.br
-.ti -1c
-.RI "size_t \fBsnmptrapenterprise_oid_len\fP"
-.br
-.ti -1c
-.RI "size_t \fBsysuptime_oid_len\fP"
-.br
-.ti -1c
-.RI "oid \fBagentaddr_oid\fP [] = { SNMPV2_COMM_OBJS_PREFIX, 3, 0 }"
-.br
-.ti -1c
-.RI "size_t \fBagentaddr_oid_len\fP"
-.br
-.ti -1c
-.RI "oid \fBcommunity_oid\fP [] = { SNMPV2_COMM_OBJS_PREFIX, 4, 0 }"
-.br
-.ti -1c
-.RI "size_t \fBcommunity_oid_len\fP"
-.br
-.ti -1c
-.RI "char * \fBsnmp_trapcommunity\fP = NULL"
-.br
-.ti -1c
-.RI "long \fBsnmp_enableauthentraps\fP = SNMP_AUTHENTICATED_TRAPS_DISABLED"
-.br
-.ti -1c
-.RI "int \fBsnmp_enableauthentrapsset\fP = 0"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "int handle_inform_response (int op, \fBnetsnmp_session\fP * session, int reqid, \fBnetsnmp_pdu\fP * pdu, void * magic)"
-.PP
-Captures responses or the lack there of from INFORMs that were sent 1) a response is received from an INFORM 2) one isn't received and the retries/timeouts have failed. 
-.PP
-Definition at line 875 of file agent_trap.c.
-.SS "int netsnmp_send_traps (int trap, int specific, oid * enterprise, int enterprise_length, \fBnetsnmp_variable_list\fP * vars, char * context, int flags)"
-.PP
-This function allows you to make a distinction between generic traps from different classes of equipment. For example, you may want to handle a SNMP_TRAP_LINKDOWN trap for a particular device in a different manner to a generic system SNMP_TRAP_LINKDOWN trap.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItrap\fP is the generic trap type. The trap types are:
-.IP "\(bu" 2
-SNMP_TRAP_COLDSTART: cold start
-.IP "\(bu" 2
-SNMP_TRAP_WARMSTART: warm start
-.IP "\(bu" 2
-SNMP_TRAP_LINKDOWN: link down
-.IP "\(bu" 2
-SNMP_TRAP_LINKUP: link up
-.IP "\(bu" 2
-SNMP_TRAP_AUTHFAIL: authentication failure
-.IP "\(bu" 2
-SNMP_TRAP_EGPNEIGHBORLOSS: egp neighbor loss
-.IP "\(bu" 2
-SNMP_TRAP_ENTERPRISESPECIFIC: enterprise specific
-.PP
-.br
-\fIspecific\fP is the specific trap value.
-.br
-\fIenterprise\fP is an enterprise oid in which you want to send specific traps from.
-.br
-\fIenterprise_length\fP is the length of the enterprise oid, use macro, OID_LENGTH, to compute length.
-.br
-\fIvars\fP is used to supply list of \fBvariable\fP bindings to form an SNMPv2 trap.
-.br
-\fIcontext\fP currently unused
-.br
-\fIflags\fP currently unused
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsend_easy_trap\fP 
-.PP
-\fBsend_v2trap\fP 
-.RE
-.PP
-
-.PP
-Definition at line 632 of file agent_trap.c.
-.SS "void send_easy_trap (int trap, int specific)"
-.PP
-Sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of configured trap destinations (or 'sinks'), using the provided values for the generic trap type and specific trap value. This function eventually calls send_enterprise_trap_vars. If the trap type is not set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length paramater is set to the pre defined NETSNMP_SYSTEM_MIB oid and length respectively. If the trap type is set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length parameters are set to the pre-defined NETSNMP_NOTIFICATION_MIB oid and length respectively.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItrap\fP is the generic trap type.
-.br
-\fIspecific\fP is the specific trap value.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-send_enterprise_trap_vars 
-.PP
-\fBsend_v2trap\fP 
-.RE
-.PP
-
-.PP
-Definition at line 1018 of file agent_trap.c.
-.SS "void send_v2trap (\fBnetsnmp_variable_list\fP * vars)"
-.PP
-Uses the supplied list of \fBvariable\fP bindings to form an SNMPv2 trap, which is sent to SNMPv2-capable sinks on the configured list. An equivalent INFORM is sent to the configured list of inform sinks. Sinks that can only handle SNMPv1 traps are skipped.
-.PP
-This function eventually calls send_enterprise_trap_vars. If the trap type is not set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length paramater is set to the pre defined NETSNMP_SYSTEM_MIB oid and length respectively. If the trap type is set to SNMP_TRAP_ENTERPRISESPECIFIC the enterprise and enterprise_length parameters are set to the pre-defined NETSNMP_NOTIFICATION_MIB oid and length respectively.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIvars\fP is used to supply list of \fBvariable\fP bindings to form an SNMPv2 trap.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsend_easy_trap\fP 
-.PP
-send_enterprise_trap_vars 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBnotification.c\fP.
-.PP
-Definition at line 1047 of file agent_trap.c.
-.SS "void send_v3trap (\fBnetsnmp_variable_list\fP * vars, char * context)"
-.PP
-Similar to \fBsend_v2trap()\fP, with the added ability to specify a context. If the last parameter is NULL, then this call is equivalent to \fBsend_v2trap()\fP.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIvars\fP is used to supply the list of \fBvariable\fP bindings for the trap.
-.br
-\fIcontext\fP is used to specify the context of the trap.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsend_v2trap\fP 
-.RE
-.PP
-
-.PP
-Definition at line 1064 of file agent_trap.c.
-.SH "Variable Documentation"
-.PP 
-.SS "oid snmptrapenterprise_oid[]"\fBInitial value:\fP
-.PP
-.nf
-
-    { SNMPV2_TRAP_OBJS_PREFIX, 3, 0 }
-.fi
-.PP
-Definition at line 100 of file agent_trap.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_asn1_packet_parse.3 b/man/netsnmp_asn1_packet_parse.3
deleted file mode 100644
index eb866d5..0000000
--- a/man/netsnmp_asn1_packet_parse.3
+++ /dev/null
@@ -1,263 +0,0 @@
-.TH "asn1 parsing and datatype manipulation routines." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-asn1 parsing and datatype manipulation routines. \- 
-.PP
-Note on.  
-
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBNULL\fP   0"
-.br
-.ti -1c
-.RI "#define \fBINT32_MAX\fP   2147483647"
-.br
-.ti -1c
-.RI "#define \fBINT32_MIN\fP   (0 - INT32_MAX - 1)"
-.br
-.ti -1c
-.RI "#define \fBCHECK_OVERFLOW_S\fP(x, y)"
-.br
-.ti -1c
-.RI "#define \fBCHECK_OVERFLOW_U\fP(x, y)"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fBasn_check_packet\fP (u_char *pkt, size_t len)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_int\fP (u_char *data, size_t *datalength, u_char *type, long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_unsigned_int\fP (u_char *data, size_t *datalength, u_char *type, u_long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_int\fP (u_char *data, size_t *datalength, u_char type, const long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_unsigned_int\fP (u_char *data, size_t *datalength, u_char type, const u_long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_string\fP (u_char *data, size_t *datalength, u_char *type, u_char *str, size_t *strlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_string\fP (u_char *data, size_t *datalength, u_char type, const u_char *str, size_t strlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_header\fP (u_char *data, size_t *datalength, u_char *type)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_sequence\fP (u_char *data, size_t *datalength, u_char *type, u_char expected_type, const char *estr)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_header\fP (u_char *data, size_t *datalength, u_char type, size_t length)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_sequence\fP (u_char *data, size_t *datalength, u_char type, size_t length)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_length\fP (u_char *data, u_long *length)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_length\fP (u_char *data, size_t *datalength, size_t length)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_objid\fP (u_char *data, size_t *datalength, u_char *type, oid *objid, size_t *objidlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_objid\fP (u_char *data, size_t *datalength, u_char type, oid *objid, size_t objidlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_null\fP (u_char *data, size_t *datalength, u_char *type)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_null\fP (u_char *data, size_t *datalength, u_char type)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_bitstring\fP (u_char *data, size_t *datalength, u_char *type, u_char *str, size_t *strlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_bitstring\fP (u_char *data, size_t *datalength, u_char type, const u_char *str, size_t strlength)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_parse_unsigned_int64\fP (u_char *data, size_t *datalength, u_char *type, struct \fBcounter64\fP *cp, size_t countersize)"
-.br
-.ti -1c
-.RI "u_char * \fBasn_build_unsigned_int64\fP (u_char *data, size_t *datalength, u_char type, const struct \fBcounter64\fP *cp, size_t countersize)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc\fP (u_char **pkt, size_t *pkt_len)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_length\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, size_t length)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_header\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, size_t length)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_int\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_string\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const u_char *str, size_t strlength)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_unsigned_int\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const u_long *intp, size_t intsize)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_sequence\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, size_t length)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_objid\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const oid *objid, size_t objidlength)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_null\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_bitstring\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const u_char *str, size_t strlength)"
-.br
-.ti -1c
-.RI "int \fBasn_realloc_rbuild_unsigned_int64\fP (u_char **pkt, size_t *pkt_len, size_t *offset, int r, u_char type, const struct \fBcounter64\fP *cp, size_t countersize)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Note on. 
-
-Re-allocating reverse ASN.1 encoder functions. Synopsis:
-.PP
-.PP
-.nf
- u_char *buf = (u_char*)malloc(100);
- u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);
- size_t buf_len = 100, offset = 0;
- long data = 12345;
- int allow_realloc = 1;
- 
- if (asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,
-                            type, &data, sizeof(long)) == 0) {
-     error;
- }
-.fi
-.PP
-.PP
-NOTE WELL: after calling one of these functions with allow_realloc non-zero, buf might have moved, buf_len might have grown and offset will have increased by the size of the encoded data. You should **NEVER** do something like this:
-.PP
-.PP
-.nf
- u_char *buf = (u_char *)malloc(100), *ptr;
- u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);
- size_t buf_len = 100, offset = 0;
- long data1 = 1234, data2 = 5678;
- int rc = 0, allow_realloc = 1;
- 
- rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,
-                                type, &data1, sizeof(long));
- ptr = buf[buf_len - offset];   / * points at encoding of data1 * /
- if (rc == 0) {
-      error;
- }
- rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,
-                              type, &data2, sizeof(long));
- make use of ptr here;
-.fi
-.PP
-.PP
-ptr is **INVALID** at this point. In general, you should store the offset value and compute pointers when you need them:
-.PP
-.PP
-.nf
- u_char *buf = (u_char *)malloc(100), *ptr;
- u_char type = (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER);
- size_t buf_len = 100, offset = 0, ptr_offset;
- long data1 = 1234, data2 = 5678;
- int rc = 0, allow_realloc = 1;
- 
- rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,
-                              type, &data1, sizeof(long));
- ptr_offset = offset;
- if (rc == 0) {
-      error;
- }
- rc  = asn_realloc_rbuild_int(&buf, &buf_len, &offset, allow_realloc,
-                              type, &data2, sizeof(long));
- ptr = buf + buf_len - ptr_offset
- make use of ptr here;
-.fi
-.PP
-.PP
-Here, you can see that ptr will be a valid pointer even if the block of memory has been moved, as it may well have been. Plenty of examples of usage all over \fBasn1.c\fP, \fBsnmp_api.c\fP, \fBsnmpusm.c\fP.
-.PP
-The other thing you should **NEVER** do is to pass a pointer to a buffer on the stack as the first argument when allow_realloc is non-zero, unless you really know what you are doing and your machine/compiler allows you to free non-heap memory. There are rumours that such things exist, but many consider them no more than the wild tales of a fool.
-.PP
-Of course, you can pass allow_realloc as zero, to indicate that you do not wish the packet buffer to be reallocated for some reason; perhaps because it is on the stack. This may be useful to emulate the functionality of the old API:
-.PP
-.PP
-.nf
- u_char my_static_buffer[100], *cp = NULL;
- size_t my_static_buffer_len = 100;
- float my_pi = (float)22/(float)7;
- 
- cp = asn_rbuild_float(my_static_buffer, &my_static_buffer_len,
-                       ASN_OPAQUE_FLOAT, &my_pi, sizeof(float));
- if (cp == NULL) {
- error;
- }
-.fi
-.PP
-.PP
-IS EQUIVALENT TO:
-.PP
-.PP
-.nf
- u_char my_static_buffer[100];
- size_t my_static_buffer_len = 100, my_offset = 0;
- float my_pi = (float)22/(float)7;
- int rc = 0;
- 
- rc = asn_realloc_rbuild_float(&my_static_buffer, &my_static_buffer_len,
-                               &my_offset, 0,
-                               ASN_OPAQUE_FLOAT, &my_pi, sizeof(float));
- if (rc == 0) {
-   error;
- }
-.fi
-.PP
- 
-.SH "Define Documentation"
-.PP 
-.SS "#define CHECK_OVERFLOW_S(x, y)"\fBValue:\fP
-.PP
-.nf
-do {                                    \
-        if (x > INT32_MAX) {                                            \
-            DEBUGMSG(('asn','truncating signed value %ld to 32 bits (%d)\n',(long)(x),y)); \
-            x &= 0xffffffff;                                            \
-        } else if (x < INT32_MIN) {                                     \
-            DEBUGMSG(('asn','truncating signed value %ld to 32 bits (%d)\n',(long)(x),y)); \
-            x = 0 - (x & 0xffffffff);                                   \
-        }                                                               \
-    } while(0)
-.fi
-.PP
-Definition at line 214 of file asn1.c.
-.SS "#define CHECK_OVERFLOW_U(x, y)"\fBValue:\fP
-.PP
-.nf
-do {                                    \
-        if (x > UINT32_MAX) {                                           \
-            x &= 0xffffffff;                                            \
-            DEBUGMSG(('asn','truncating unsigned value to 32 bits (%d)\n',y)); \
-        }                                                               \
-    } while(0)
-.fi
-.PP
-Definition at line 224 of file asn1.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_baby_steps.3 b/man/netsnmp_baby_steps.3
deleted file mode 100644
index 1ee4e60..0000000
--- a/man/netsnmp_baby_steps.3
+++ /dev/null
@@ -1,45 +0,0 @@
-.TH "baby_steps" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-baby_steps \- 
-.PP
-Calls your handler in baby_steps for set processing.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBbaby_steps_access_multiplexer: calls individual access methods based on baby_step mode.\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_baby_steps_handler_get\fP (u_long modes)"
-.br
-.RI "\fIreturns a baby_steps handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_baby_steps_handler_init\fP (void)"
-.br
-.RI "\fIinitializes the baby_steps helper which then registers a baby_steps handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Calls your handler in baby_steps for set processing. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_baby_steps_handler_get (u_long modes)"
-.PP
-returns a baby_steps handler that can be injected into a given handler chain. 
-.PP
-Definition at line 58 of file baby_steps.c.
-.SS "void netsnmp_baby_steps_handler_init (void)"
-.PP
-initializes the baby_steps helper which then registers a baby_steps handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 319 of file baby_steps.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_bulk_to_next.3 b/man/netsnmp_bulk_to_next.3
deleted file mode 100644
index 62b47fd..0000000
--- a/man/netsnmp_bulk_to_next.3
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH "bulk_to_next" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-bulk_to_next \- 
-.PP
-Convert GETBULK requests into GETNEXT requests for the handler.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_bulk_to_next_handler\fP (void)"
-.br
-.RI "\fIreturns a bulk_to_next handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_bulk_to_next_fix_requests\fP (\fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fItakes answered requests and decrements the repeat count and updates the requests to the next to-do varbind in the list \fP"
-.ti -1c
-.RI "int \fBnetsnmp_bulk_to_next_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_bulk_to_next_helper\fP (void)"
-.br
-.RI "\fIinitializes the bulk_to_next helper which then registers a bulk_to_next handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Convert GETBULK requests into GETNEXT requests for the handler. 
-
-The only purpose of this handler is to convert a GETBULK request to a GETNEXT request. It is inserted into handler chains where the handler has not set the HANDLER_CAN_GETBULK flag. 
-.SH "Function Documentation"
-.PP 
-.SS "void netsnmp_bulk_to_next_fix_requests (\fBnetsnmp_request_info\fP * requests)"
-.PP
-takes answered requests and decrements the repeat count and updates the requests to the next to-do varbind in the list 
-.PP
-Definition at line 36 of file bulk_to_next.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_bulk_to_next_handler (void)"
-.PP
-returns a bulk_to_next handler that can be injected into a given handler chain. 
-.PP
-Definition at line 21 of file bulk_to_next.c.
-.SS "void netsnmp_init_bulk_to_next_helper (void)"
-.PP
-initializes the bulk_to_next helper which then registers a bulk_to_next handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 133 of file bulk_to_next.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_cache_handler.3 b/man/netsnmp_cache_handler.3
deleted file mode 100644
index e0a9ad0..0000000
--- a/man/netsnmp_cache_handler.3
+++ /dev/null
@@ -1,234 +0,0 @@
-.TH "cache_handler" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-cache_handler \- 
-.PP
-Maintains a cache of data for use by lower level handlers.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_get_head\fP (void)"
-.br
-.RI "\fIget cache head \fP"
-.ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_find_by_oid\fP (const oid *rootoid, int rootoid_len)"
-.br
-.RI "\fIfind existing cache \fP"
-.ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_create\fP (int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook, const oid *rootoid, int rootoid_len)"
-.br
-.RI "\fIreturns a cache \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_free\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIfrees a cache \fP"
-.ti -1c
-.RI "unsigned int \fBnetsnmp_cache_timer_start\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIstarts the recurring cache_load callback \fP"
-.ti -1c
-.RI "void \fBnetsnmp_cache_timer_stop\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIstops the recurring cache_load callback \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_cache_handler_get\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIreturns a cache handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_cache_handler\fP (int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook, const oid *rootoid, int rootoid_len)"
-.br
-.RI "\fIreturns a cache handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_handler_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIfunctionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_cache_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo, int timeout, NetsnmpCacheLoad *load_hook, NetsnmpCacheFree *free_hook)"
-.br
-.RI "\fIfunctionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. \fP"
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE char * \fB_build_cache_name\fP (const char *name)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_cache_reqinfo_insert\fP (\fBnetsnmp_cache\fP *cache, \fBnetsnmp_agent_request_info\fP *reqinfo, const char *name)"
-.br
-.RI "\fIInsert the cache information for a given request (PDU). \fP"
-.ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_cache_reqinfo_extract\fP (\fBnetsnmp_agent_request_info\fP *reqinfo, const char *name)"
-.br
-.RI "\fIExtract the cache information for a given request (PDU). \fP"
-.ti -1c
-.RI "\fBnetsnmp_cache\fP * \fBnetsnmp_extract_cache_info\fP (\fBnetsnmp_agent_request_info\fP *reqinfo)"
-.br
-.RI "\fIExtract the cache information for a given request (PDU). \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_check_expired\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fICheck if the cache timeout has passed. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_check_and_reload\fP (\fBnetsnmp_cache\fP *cache)"
-.br
-.RI "\fIReload the cache if required. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_is_valid\fP (\fBnetsnmp_agent_request_info\fP *reqinfo, const char *name)"
-.br
-.RI "\fIIs the cache valid for a given request? \fP"
-.ti -1c
-.RI "int \fBnetsnmp_is_cache_valid\fP (\fBnetsnmp_agent_request_info\fP *reqinfo)"
-.br
-.RI "\fIIs the cache valid for a given request? for backwards compatability. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_cache_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIImplements the cache handler. \fP"
-.ti -1c
-.RI "void \fBrelease_cached_resources\fP (unsigned int regNo, void *clientargs)"
-.br
-.RI "\fIrun regularly to automatically release cached resources. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Maintains a cache of data for use by lower level handlers. 
-
-This helper checks to see whether the data has been loaded 'recently' (according to the timeout for that particular cache) and calls the registered 'load_cache' routine if necessary. The lower handlers can then work with this local cached data.
-.PP
-A timeout value of -1 will cause \fBnetsnmp_cache_check_expired()\fP to always return true, and thus the cache will be reloaded for every request.
-.PP
-To minimze resource use by the agent, a periodic callback checks for expired caches, and will call the free_cache function for any expired cache.
-.PP
-The load_cache routine should return a negative number if the cache was not successfully loaded. 0 or any positive number indicates successs.
-.PP
-Several flags can be set to affect the operations on the cache.
-.PP
-If NETSNMP_CACHE_DONT_INVALIDATE_ON_SET is set, the free_cache method will not be called after a set request has processed. It is assumed that the lower mib handler using the cache has maintained cache consistency.
-.PP
-If NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD is set, the free_cache method will not be called before the load_cache method is called. It is assumed that the load_cache routine will properly deal with being called with a valid cache.
-.PP
-If NETSNMP_CACHE_DONT_FREE_EXPIRED is set, the free_cache method will not be called with the cache expires. The expired flag will be set, but the valid flag will not be cleared. It is assumed that the load_cache routine will properly deal with being called with a valid cache.
-.PP
-If NETSNMP_CACHE_PRELOAD is set when a the cache handler is created, the cache load routine will be called immediately.
-.PP
-If NETSNMP_CACHE_DONT_AUTO_RELEASE is set, the periodic callback that checks for expired caches will skip the cache. The cache will only be checked for expiration when a request triggers the cache handler. This is useful if the cache has it's own periodic callback to keep the cache fresh.
-.PP
-If NETSNMP_CACHE_AUTO_RELOAD is set, a timer will be set up to reload the cache when it expires. This is useful for keeping the cache fresh, even in the absence of incoming snmp requests.
-.PP
-Here are some suggestions for some common situations.
-.PP
-Cached File: If your table is based on a file that may periodically change, you can test the modification date to see if the file has changed since the last cache load. To get the cache helper to call the load function for every request, set the timeout to -1, which will cause the cache to always report that it is expired. This means that you will want to prevent the agent from flushing the cache when it has expired, and you will have to flush it manually if you detect that the file has changed. To accomplish this, set the following flags:
-.PP
-NETSNMP_CACHE_DONT_FREE_EXPIRED NETSNMP_CACHE_DONT_AUTO_RELEASE
-.PP
-Constant (periodic) reload: If you want the cache kept up to date regularly, even if no requests for the table are received, you can have your cache load routine called periodically. This is very useful if you need to monitor the data for changes (eg a \fILastChanged\fP object). You will need to prevent the agent from flushing the cache when it expires. Set the cache timeout to the frequency, in seconds, that you wish to reload your cache, and set the following flags:
-.PP
-NETSNMP_CACHE_DONT_FREE_EXPIRED NETSNMP_CACHE_DONT_AUTO_RELEASE NETSNMP_CACHE_AUTO_RELOAD 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_cache_check_and_reload (\fBnetsnmp_cache\fP * cache)"
-.PP
-Reload the cache if required. 
-.PP
-Definition at line 429 of file cache_handler.c.
-.SS "int netsnmp_cache_check_expired (\fBnetsnmp_cache\fP * cache)"
-.PP
-Check if the cache timeout has passed. Sets and return the expired flag. 
-.PP
-Definition at line 414 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_create (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, const oid * rootoid, int rootoid_len)"
-.PP
-returns a cache 
-.PP
-Definition at line 146 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_find_by_oid (const oid * rootoid, int rootoid_len)"
-.PP
-find existing cache 
-.PP
-Definition at line 130 of file cache_handler.c.
-.SS "int netsnmp_cache_free (\fBnetsnmp_cache\fP * cache)"
-.PP
-frees a cache 
-.PP
-Definition at line 189 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_get_head (void)"
-.PP
-get cache head 
-.PP
-Definition at line 122 of file cache_handler.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_cache_handler_get (\fBnetsnmp_cache\fP * cache)"
-.PP
-returns a cache handler that can be injected into a given handler chain. 
-.PP
-Definition at line 291 of file cache_handler.c.
-.SS "int netsnmp_cache_handler_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_cache\fP * cache)"
-.PP
-functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. 
-.PP
-Definition at line 339 of file cache_handler.c.
-.SS "int netsnmp_cache_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-Implements the cache handler. 
-.PP
-next handler called automatically - 'AUTO_NEXT'
-.PP
-next handler called automatically - 'AUTO_NEXT'
-.PP
-next handler called automatically - 'AUTO_NEXT' 
-.PP
-Definition at line 464 of file cache_handler.c.
-.SS "int netsnmp_cache_is_valid (\fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
-.PP
-Is the cache valid for a given request? 
-.PP
-Definition at line 446 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_reqinfo_extract (\fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
-.PP
-Extract the cache information for a given request (PDU). 
-.PP
-Definition at line 394 of file cache_handler.c.
-.SS "void netsnmp_cache_reqinfo_insert (\fBnetsnmp_cache\fP * cache, \fBnetsnmp_agent_request_info\fP * reqinfo, const char * name)"
-.PP
-Insert the cache information for a given request (PDU). 
-.PP
-Definition at line 377 of file cache_handler.c.
-.SS "unsigned int netsnmp_cache_timer_start (\fBnetsnmp_cache\fP * cache)"
-.PP
-starts the recurring cache_load callback 
-.PP
-Definition at line 235 of file cache_handler.c.
-.SS "void netsnmp_cache_timer_stop (\fBnetsnmp_cache\fP * cache)"
-.PP
-stops the recurring cache_load callback 
-.PP
-Definition at line 270 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_extract_cache_info (\fBnetsnmp_agent_request_info\fP * reqinfo)"
-.PP
-Extract the cache information for a given request (PDU). 
-.PP
-Definition at line 406 of file cache_handler.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_cache_handler (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, const oid * rootoid, int rootoid_len)"
-.PP
-returns a cache handler that can be injected into a given handler chain. 
-.PP
-Definition at line 320 of file cache_handler.c.
-.SS "int netsnmp_is_cache_valid (\fBnetsnmp_agent_request_info\fP * reqinfo)"
-.PP
-Is the cache valid for a given request? for backwards compatability. for backwards compat
-.PP
-\fBnetsnmp_cache_is_valid()\fP is preferred. 
-.PP
-Definition at line 457 of file cache_handler.c.
-.SS "int netsnmp_register_cache_handler (\fBnetsnmp_handler_registration\fP * reginfo, int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook)"
-.PP
-functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a cache handler at the same time for you. 
-.PP
-Definition at line 352 of file cache_handler.c.
-.SS "void release_cached_resources (unsigned int regNo, void * clientargs)"
-.PP
-run regularly to automatically release cached resources. xxx - method to prevent cache from expiring while a request is being processed (e.g. delegated request). proposal: set a flag, which would be cleared when request finished (which could be acomplished by a dummy data list item in agent req info & custom free function). 
-.PP
-Definition at line 623 of file cache_handler.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_callback.3 b/man/netsnmp_callback.3
deleted file mode 100644
index e691ab8..0000000
--- a/man/netsnmp_callback.3
+++ /dev/null
@@ -1,205 +0,0 @@
-.TH "A generic callback mechanism" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-A generic callback mechanism \- 
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBCALLBACK_NAME_LOGGING\fP   1"
-.br
-.ti -1c
-.RI "#define \fBLOCK_PER_CALLBACK_SUBID\fP   1"
-.br
-.ti -1c
-.RI "#define \fBCALLBACK_LOCK\fP(maj, min)   ++_locks[maj][min]"
-.br
-.ti -1c
-.RI "#define \fBCALLBACK_UNLOCK\fP(maj, min)   --_locks[maj][min]"
-.br
-.ti -1c
-.RI "#define \fBCALLBACK_LOCK_COUNT\fP(maj, min)   _locks[maj][min]"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE int \fB_callback_lock\fP (int major, int minor, const char *warn, int assert)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fB_callback_unlock\fP (int major, int minor)"
-.br
-.ti -1c
-.RI "void \fBinit_callbacks\fP (void)"
-.br
-.ti -1c
-.RI "int \fBsnmp_register_callback\fP (int major, int minor, SNMPCallback *new_callback, void *arg)"
-.br
-.RI "\fIThis function registers a generic callback function. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_callback\fP (int major, int minor, SNMPCallback *new_callback, void *arg, int priority)"
-.br
-.ti -1c
-.RI "int \fBsnmp_call_callbacks\fP (int major, int minor, void *caller_arg)"
-.br
-.RI "\fIThis function calls the callback function for each registered callback of type major and minor. \fP"
-.ti -1c
-.RI "int \fBsnmp_count_callbacks\fP (int major, int minor)"
-.br
-.ti -1c
-.RI "int \fBsnmp_callback_available\fP (int major, int minor)"
-.br
-.ti -1c
-.RI "int \fBsnmp_unregister_callback\fP (int major, int minor, SNMPCallback *target, void *arg, int matchargs)"
-.br
-.RI "\fIThis function unregisters a specified callback function given a major and minor type. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_callback_clear_client_arg\fP (void *ptr, int i, int j)"
-.br
-.RI "\fIfind and clear client args that match ptr \fP"
-.ti -1c
-.RI "void \fBclear_callback\fP (void)"
-.br
-.ti -1c
-.RI "struct \fBsnmp_gen_callback\fP * \fBsnmp_callback_list\fP (int major, int minor)"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_callback_clear_client_arg (void * ptr, int i, int j)"
-.PP
-find and clear client args that match ptr \fBParameters:\fP
-.RS 4
-\fIptr\fP pointer to search for 
-.br
-\fIi\fP callback id to start at 
-.br
-\fIj\fP callback subid to start at 
-.RE
-.PP
-
-.PP
-Definition at line 477 of file callback.c.
-.SS "int snmp_call_callbacks (int major, int minor, void * caller_arg)"
-.PP
-This function calls the callback function for each registered callback of type major and minor. \fBParameters:\fP
-.RS 4
-\fImajor\fP is the SNMP callback major type used
-.br
-\fIminor\fP is the SNMP callback minor type used
-.br
-\fIcaller_arg\fP is a void pointer which is sent in as the callback's serverarg parameter, if needed.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >= MAX_CALLBACK_SUBIDS, otherwise SNMPERR_SUCCESS is returned.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsnmp_register_callback\fP 
-.PP
-\fBsnmp_unregister_callback\fP 
-.RE
-.PP
-
-.PP
-Definition at line 301 of file callback.c.
-.SS "int snmp_register_callback (int major, int minor, SNMPCallback * new_callback, void * arg)"
-.PP
-This function registers a generic callback function. The major and minor values are used to set the new_callback function into a global static multi-dimensional array of type struct \fBsnmp_gen_callback\fP. The function makes sure to append this callback function at the end of the link list, snmp_gen_callback->next.
-.PP
-\fBParameters:\fP
-.RS 4
-\fImajor\fP is the SNMP callback major type used
-.IP "\(bu" 2
-SNMP_CALLBACK_LIBRARY
-.PP
-.RE
-.PP
-.IP "\(bu" 2
-SNMP_CALLBACK_APPLICATION
-.PP
-.PP
-\fBParameters:\fP
-.RS 4
-\fIminor\fP is the SNMP callback minor type used
-.IP "\(bu" 2
-SNMP_CALLBACK_POST_READ_CONFIG
-.IP "\(bu" 2
-SNMP_CALLBACK_STORE_DATA
-.IP "\(bu" 2
-SNMP_CALLBACK_SHUTDOWN
-.IP "\(bu" 2
-SNMP_CALLBACK_POST_PREMIB_READ_CONFIG
-.IP "\(bu" 2
-SNMP_CALLBACK_LOGGING
-.IP "\(bu" 2
-SNMP_CALLBACK_SESSION_INIT
-.PP
-.br
-\fInew_callback\fP is the callback function that is registered.
-.br
-\fIarg\fP when not NULL is a void pointer used whenever new_callback function is exercised.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >= MAX_CALLBACK_SUBIDS or a \fBsnmp_gen_callback\fP pointer could not be allocated, otherwise SNMPERR_SUCCESS is returned.
-.IP "\(bu" 2
-#define MAX_CALLBACK_IDS 2
-.IP "\(bu" 2
-#define MAX_CALLBACK_SUBIDS 16
-.PP
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsnmp_call_callbacks\fP 
-.PP
-\fBsnmp_unregister_callback\fP 
-.RE
-.PP
-
-.PP
-Definition at line 233 of file callback.c.
-.SS "int snmp_unregister_callback (int major, int minor, SNMPCallback * target, void * arg, int matchargs)"
-.PP
-This function unregisters a specified callback function given a major and minor type. Note: no bound checking on major and minor.
-.PP
-\fBParameters:\fP
-.RS 4
-\fImajor\fP is the SNMP callback major type used
-.br
-\fIminor\fP is the SNMP callback minor type used
-.br
-\fItarget\fP is the callback function that will be unregistered.
-.br
-\fIarg\fP is a void pointer used for comparison against the registered callback's sc_client_arg \fBvariable\fP.
-.br
-\fImatchargs\fP is an integer used to bypass the comparison of arg and the callback's sc_client_arg \fBvariable\fP only when matchargs is set to 0.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns the number of callbacks that were unregistered.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsnmp_register_callback\fP 
-.PP
-\fBsnmp_call_callbacks\fP 
-.RE
-.PP
-
-.PP
-set cleanup flag? 
-.PP
-Definition at line 421 of file callback.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/config_api.3.def b/man/netsnmp_config_api.3.def
similarity index 83%
rename from man/config_api.3.def
rename to man/netsnmp_config_api.3.def
index b107e6e..d009fc5 100644
--- a/man/config_api.3.def
+++ b/man/netsnmp_config_api.3.def
@@ -1,10 +1,23 @@
-.TH CONFIG_API 3 "21 Apr 2009" "" "Net-SNMP"
+.TH NETSNMP_CONFIG_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-register_config_handler, register_premib_handler
-unregister_config_handler, register_mib_handlers, read_configs,
-read_premib_configs, config_perror, config_pwarn - config_api functions
+register_config_handler,
+register_const_config_handler,
+register_prenetsnmp_mib_handler,
+unregister_config_handler,
+register_mib_handlers,
+unregister_all_config_handlers,
+register_app_config_handler,
+register_app_prenetsnmp_mib_handler,
+unregister_app_config_handler,
+read_configs,
+read_premib_configs,
+read_config_print_usage,
+config_perror,
+config_pwarn - netsnmp_config_api functions
 .SH SYNOPSIS
 .B #include <net-snmp/config_api.h>
+.br
+.SS Config Handlers
 .PP
 .B struct config_line *
 .br
@@ -20,7 +33,20 @@
 .PP
 .B struct config_line *
 .br
-.BI "  register_premib_handler(const char *" filePrefix ", 
+.BI "  register_const_config_handler(const char *" filePrefix ", 
+.br
+.BI "                     const char *" token ,
+.br
+.BI "                     void (*" parser ")(const char *, const char *),"
+.br
+.BI "                     void (*" releaser ")(void),"
+.br
+.BI "                     const char *" usageLine ");"
+.PP
+.PP
+.B struct config_line *
+.br
+.BI "  register_prenetsnmp_mib_handler(const char *" filePrefix ", 
 .br
 .BI "                     const char *" token ,
 .br
@@ -30,14 +56,14 @@
 .br
 .BI "                     const char *" usageLine ");"
 .PP
-.B "void register_mib_handlers(void);"
-.PP
 .BI "void unregister_config_handler(const char *" filePrefix ","
 .br
 .BI "                     const char *" token ");"
-.br
 .PP
-.BI "void unregister_all_config_handlers(void);"
+.\" Defined in mib.c, rather than read_config.c
+.B  "void register_mib_handlers(void);"
+.br
+.B  "void unregister_all_config_handlers(void);"
 .br
 .SS Application Handlers
 .PP
@@ -53,7 +79,7 @@
 .PP
 .B struct config_line *
 .br
-.BI "  register_app_premib_handler(const char *" token ,
+.BI "  register_app_prenetsnmp_mib_handler(const char *" token ,
 .br
 .BI "                     void (*" parser ")(const char *, char *),"
 .br
@@ -135,7 +161,13 @@
 .B read_configs() 
 (see below).
 .TP
-.B register_premib_handler()
+.B register_const_config_handler()
+Similar to the
+.B register_config_handler()
+function, but the parser routine is explicitly constrained
+to not modify the string being parsed.
+.TP
+.B register_prenetsnmp_mib_handler()
 Similar to the
 .B register_config_handler()
 function, but the registered handler routine will be called
@@ -161,6 +193,12 @@
 .PP
 .RS
 .BI "void handler(const char *" token ", char *" line ");"
+.br
+or
+.br
+.BI "void handler(const char *" token ", const char *" line ");"
+br
+(if registered using \fIregister_const_config_handler\fP)
 .RE
 .PP
 The function will be called with two arguments, the first being the
@@ -194,11 +232,11 @@
 .TP
 .B register_app_config_handler()
 .TP
-.B register_app_premib_handler()
+.B register_app_prenetsnmp_mib_handler()
 .TP
 .B unregister_app_config_handler()
 These functions are analagous to 
-.BR register_config_handler() ", " register_premib_handler() " and "
+.BR register_config_handler() ", " register_prenetsnmp_mib_handler() " and "
 .B unregister_config_handler()
 but do not require the file type argument (which is filled in by the
 application).  It is intended that MIB modules written for the agent
@@ -218,9 +256,9 @@
 .B read_premib_configs()
 is run before the MIB files are read in, and processes those
 configuration tokens registered using
-.B register_premib_handler()
+.B register_prenetsnmp_mib_handler()
 (or
-.B register_app_premib_handler()
+.B register_app_prenetsnmp_mib_handler()
 ).
 All other entries are ignored.
 .PP
@@ -242,8 +280,9 @@
 In each such directory, the library will look for files named
 \fC snmp.conf\fP,
 \fC snmp.local.conf\fP,
-\fIapp\fP.conf\fP,
-\fIapp\fP.local.conf\fP,
+\fI app\fP\fC.conf\fP,
+\fI app\fP\fC.local.conf\fP,
+.br
 (where \fIapp\fP is the appication-specific filePrefix used to
 register configuration handlers).
 It is not necessary for any or all of these files to be present
@@ -254,9 +293,10 @@
 machines and the second file can be used to configure local settings
 for one particular machine.
 .PP
-The default list of directories to search is
-SYSCONFDIR/snmp, followed by DATADIR/snmp, followed by LIBDIR/snmp,
-followed by $HOME/.snmp.
+The default list of directories to search is \fC SYSCONFDIR/snmp\fP,
+followed by \fC DATADIR/snmp\fP,
+followed by \fC LIBDIR/snmp\fP,
+followed by \fC $HOME/.snmp\fP.
 This list can be changed by setting the environmental variable
 .I SNMPCONFPATH
 to be a (colon separated) list of directories to search.
@@ -268,7 +308,7 @@
 .BR init_snmp() "."
 This would call the routines listed above to register the internal library
 configuration handlers, process any configuration tokens registered with
-.B register_premib_handler(),
+.B register_prenetsnmp_mib_handler(),
 read in the textual MIB files using
 .B init_mib(),
 and finally parse the configuration file tokens registered with 
@@ -327,7 +367,7 @@
 files in.
 Default: SYSCONFDIR/snmp:DATADIR/snmp:LIBDIR/snmp:$HOME/.snmp
 .SH "SEE ALSO"
-.BR mib_api "(3), " snmp_api (3)
+netsnmp_mib_api(3), snmp_api(3)
 .\" Local Variables:
 .\"  mode: nroff
 .\" End:
diff --git a/man/netsnmp_container.3 b/man/netsnmp_container.3
deleted file mode 100644
index f75be4c..0000000
--- a/man/netsnmp_container.3
+++ /dev/null
@@ -1,18 +0,0 @@
-.TH "container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-container \- 
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBnull_container\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement specialized containers. \fP"
-.in -1c
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_container_iterator.3 b/man/netsnmp_container_iterator.3
deleted file mode 100644
index 1bfcf7e..0000000
--- a/man/netsnmp_container_iterator.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.TH "Container_iterator" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Container_iterator \- 
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Loop_Key\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *key)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Loop_Data\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *data)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Ctx\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Ctx_Dup\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *dup_ctx, int reuse)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Op\fP )(void *iterator_ctx)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Data\fP )(void *iterator_ctx, const void *data)"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_container_iterator_init\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_iterator_get\fP (void *iterator_user_ctx, netsnmp_container_compare *compare, Netsnmp_Iterator_Loop_Key *get_first, Netsnmp_Iterator_Loop_Key *get_next, Netsnmp_Iterator_Loop_Data *get_data, Netsnmp_Iterator_Ctx_Dup *save_pos, Netsnmp_Iterator_Ctx *init_loop_ctx, Netsnmp_Iterator_Ctx *cleanup_loop_ctx, Netsnmp_Iterator_Data *free_user_ctx, int sorted)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_container_iterator_set_data_cb\fP (\fBnetsnmp_container\fP *c, Netsnmp_Iterator_Data *insert_data, Netsnmp_Iterator_Data *remove_data, Netsnmp_Iterator_Op *get_size)"
-.br
-.in -1c
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_container_iterator.h.3 b/man/netsnmp_container_iterator.h.3
deleted file mode 100644
index 7fec585..0000000
--- a/man/netsnmp_container_iterator.h.3
+++ /dev/null
@@ -1,54 +0,0 @@
-.TH "container_iterator.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-container_iterator.h \- 
-.SH SYNOPSIS
-.br
-.PP
-\fC#include 'container.h'\fP
-.br
-
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Loop_Key\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *key)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Loop_Data\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *data)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Ctx\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Ctx_Dup\fP )(void *iterator_ctx, \fBnetsnmp_ref_void\fP *loop_ctx, \fBnetsnmp_ref_void\fP *dup_ctx, int reuse)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Op\fP )(void *iterator_ctx)"
-.br
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Iterator_Data\fP )(void *iterator_ctx, const void *data)"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_container_iterator_init\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_iterator_get\fP (void *iterator_user_ctx, netsnmp_container_compare *compare, Netsnmp_Iterator_Loop_Key *get_first, Netsnmp_Iterator_Loop_Key *get_next, Netsnmp_Iterator_Loop_Data *get_data, Netsnmp_Iterator_Ctx_Dup *save_pos, Netsnmp_Iterator_Ctx *init_loop_ctx, Netsnmp_Iterator_Ctx *cleanup_loop_ctx, Netsnmp_Iterator_Data *free_user_ctx, int sorted)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_container_iterator_set_data_cb\fP (\fBnetsnmp_container\fP *c, Netsnmp_Iterator_Data *insert_data, Netsnmp_Iterator_Data *remove_data, Netsnmp_Iterator_Op *get_size)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-
-.PP
-Definition in file \fBcontainer_iterator.h\fP.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_data_list.3 b/man/netsnmp_data_list.3
deleted file mode 100644
index cca108a..0000000
--- a/man/netsnmp_data_list.3
+++ /dev/null
@@ -1,269 +0,0 @@
-.TH "generic linked-list data handling with a string as a key." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-generic linked-list data handling with a string as a key. \- 
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_list_data\fP (\fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.RI "\fIfrees the data and a name at a given data_list \fBnode\fP. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_all_list_data\fP (\fBnetsnmp_data_list\fP *head)"
-.br
-.RI "\fIfrees all data and nodes in a list. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_create_data_list\fP (const char *name, void *data, Netsnmp_Free_List_Data *beer)"
-.br
-.RI "\fIadds creates a data_list \fBnode\fP given a name, data and a free function ptr. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_data_list_add_node\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.RI "\fIadds data to a datalist \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_add_list_data\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.RI "\fIadds data to a datalist \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_data_list_add_data\fP (\fBnetsnmp_data_list\fP **head, const char *name, void *data, Netsnmp_Free_List_Data *beer)"
-.br
-.RI "\fIadds data to a datalist \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void * \fBnetsnmp_get_list_data\fP (\fBnetsnmp_data_list\fP *head, const char *name)"
-.br
-.RI "\fIreturns a data_list node's data for a given name within a data_list \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_get_list_node\fP (\fBnetsnmp_data_list\fP *head, const char *name)"
-.br
-.RI "\fIreturns a data_list \fBnode\fP for a given name within a data_list \fP"
-.ti -1c
-.RI "int \fBnetsnmp_remove_list_node\fP (\fBnetsnmp_data_list\fP **realhead, const char *name)"
-.br
-.RI "\fIRemoves a named \fBnode\fP from a data_list (and frees it). \fP"
-.ti -1c
-.RI "void \fBnetsnmp_register_save_list\fP (\fBnetsnmp_data_list\fP **datalist, const char *type, const char *token, Netsnmp_Save_List_Data *data_list_save_ptr, Netsnmp_Read_List_Data *data_list_read_ptr, Netsnmp_Free_List_Data *data_list_free_ptr)"
-.br
-.RI "\fIregisters to store a data_list set of data at persistent storage time \fP"
-.ti -1c
-.RI "int \fBnetsnmp_save_all_data_callback\fP (int major, int minor, void *serverarg, void *clientarg)"
-.br
-.RI "\fIintended to be registerd as a callback operation. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_save_all_data\fP (\fBnetsnmp_data_list\fP *head, const char *type, const char *token, Netsnmp_Save_List_Data *data_list_save_ptr)"
-.br
-.RI "\fIintended to be called as a callback during persistent save operations. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_read_data_callback\fP (const char *token, char *line)"
-.br
-.RI "\fIintended to be registerd as a .conf parser It should be registered using: \fP"
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "NETSNMP_INLINE void netsnmp_add_list_data (\fBnetsnmp_data_list\fP ** head, \fBnetsnmp_data_list\fP * node)"
-.PP
-adds data to a datalist depreciated: use \fBnetsnmp_data_list_add_node()\fP
-.PP
-\fBNote:\fP
-.RS 4
-netsnmp_data_list_add_node is preferred 
-.RE
-.PP
-\fBParameters:\fP
-.RS 4
-\fIhead\fP a pointer to the head \fBnode\fP of a data_list 
-.br
-\fI\fBnode\fP\fP a \fBnode\fP to stash in the data_list 
-.RE
-.PP
-
-.PP
-Definition at line 121 of file data_list.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_create_data_list (const char * name, void * data, Netsnmp_Free_List_Data * beer)"
-.PP
-adds creates a data_list \fBnode\fP given a name, data and a free function ptr. \fBParameters:\fP
-.RS 4
-\fIname\fP the name of the \fBnode\fP to cache the data. 
-.br
-\fIdata\fP the data to be stored under that name 
-.br
-\fIbeer\fP A function that can free the data pointer (in the future) 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a newly created data_list \fBnode\fP which can be given to the netsnmp_add_list_data function. 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 53 of file data_list.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_data_list_add_data (\fBnetsnmp_data_list\fP ** head, const char * name, void * data, Netsnmp_Free_List_Data * beer)"
-.PP
-adds data to a datalist \fBParameters:\fP
-.RS 4
-\fIhead\fP a pointer to the head \fBnode\fP of a data_list 
-.br
-\fIname\fP the name of the \fBnode\fP to cache the data. 
-.br
-\fIdata\fP the data to be stored under that name 
-.br
-\fIbeer\fP A function that can free the data pointer (in the future) 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a newly created data_list \fBnode\fP which was inserted in the list 
-.RE
-.PP
-
-.PP
-Definition at line 134 of file data_list.c.
-.SS "NETSNMP_INLINE void netsnmp_data_list_add_node (\fBnetsnmp_data_list\fP ** head, \fBnetsnmp_data_list\fP * node)"
-.PP
-adds data to a datalist \fBParameters:\fP
-.RS 4
-\fIhead\fP a pointer to the head \fBnode\fP of a data_list 
-.br
-\fI\fBnode\fP\fP a \fBnode\fP to stash in the data_list 
-.RE
-.PP
-
-.PP
-Definition at line 78 of file data_list.c.
-.SS "NETSNMP_INLINE void netsnmp_free_all_list_data (\fBnetsnmp_data_list\fP * head)"
-.PP
-frees all data and nodes in a list. \fBParameters:\fP
-.RS 4
-\fIhead\fP the top \fBnode\fP of the list to be freed. 
-.RE
-.PP
-
-.PP
-Definition at line 35 of file data_list.c.
-.SS "NETSNMP_INLINE void netsnmp_free_list_data (\fBnetsnmp_data_list\fP * node)"
-.PP
-frees the data and a name at a given data_list \fBnode\fP. Note that this doesn't free the \fBnode\fP itself. 
-.PP
-\fBParameters:\fP
-.RS 4
-\fI\fBnode\fP\fP the \fBnode\fP for which the data should be freed 
-.RE
-.PP
-
-.PP
-Definition at line 19 of file data_list.c.
-.SS "NETSNMP_INLINE void* netsnmp_get_list_data (\fBnetsnmp_data_list\fP * head, const char * name)"
-.PP
-returns a data_list node's data for a given name within a data_list \fBParameters:\fP
-.RS 4
-\fIhead\fP the head \fBnode\fP of a data_list 
-.br
-\fIname\fP the name to find 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a pointer to the data cached at that \fBnode\fP 
-.RE
-.PP
-
-.PP
-Definition at line 159 of file data_list.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_get_list_node (\fBnetsnmp_data_list\fP * head, const char * name)"
-.PP
-returns a data_list \fBnode\fP for a given name within a data_list \fBParameters:\fP
-.RS 4
-\fIhead\fP the head \fBnode\fP of a data_list 
-.br
-\fIname\fP the name to find 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a pointer to the data_list \fBnode\fP 
-.RE
-.PP
-
-.PP
-Definition at line 177 of file data_list.c.
-.SS "void netsnmp_read_data_callback (const char * token, char * line)"
-.PP
-intended to be registerd as a .conf parser It should be registered using: register_app_config_handler('token', netsnmp_read_data_callback, XXX)
-.PP
-where INFO_POINTER is a pointer to a netsnmp_data_list_saveinfo object containing apporpriate registration information 
-.PP
-\fBTodo\fP
-.RS 4
-make netsnmp_read_data_callback deal with a free routine 
-.RE
-.PP
-
-.PP
-Definition at line 335 of file data_list.c.
-.SS "void netsnmp_register_save_list (\fBnetsnmp_data_list\fP ** datalist, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr, Netsnmp_Read_List_Data * data_list_read_ptr, Netsnmp_Free_List_Data * data_list_free_ptr)"
-.PP
-registers to store a data_list set of data at persistent storage time \fBParameters:\fP
-.RS 4
-\fIdatalist\fP the data to be saved 
-.br
-\fItype\fP the name of the application to save the data as. If left NULL the default application name that was registered during the init_snmp call will be used (recommended). 
-.br
-\fItoken\fP the unique token identifier string to use as the first word in the persistent file line. 
-.br
-\fIdata_list_save_ptr\fP a function pointer which will be called to save the rest of the data to a buffer. 
-.br
-\fIdata_list_read_ptr\fP a function pointer which can read the remainder of a saved line and return the application specific void * pointer. 
-.br
-\fIdata_list_free_ptr\fP a function pointer which will be passed to the data \fBnode\fP for freeing it in the future when/if the list/node is cleaned up or destroyed. 
-.RE
-.PP
-
-.PP
-\fBTodo\fP
-.RS 4
-netsnmp_register_save_list should handle the same token name being saved from different types? 
-.RE
-.PP
-
-.PP
-Definition at line 228 of file data_list.c.
-.SS "int netsnmp_remove_list_node (\fBnetsnmp_data_list\fP ** realhead, const char * name)"
-.PP
-Removes a named \fBnode\fP from a data_list (and frees it). \fBParameters:\fP
-.RS 4
-\fIrealhead\fP a pointer to the head \fBnode\fP of a data_list 
-.br
-\fIname\fP the name to find and remove 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 on successful find-and-delete, 1 otherwise. 
-.RE
-.PP
-
-.PP
-Definition at line 195 of file data_list.c.
-.SS "int netsnmp_save_all_data (\fBnetsnmp_data_list\fP * head, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr)"
-.PP
-intended to be called as a callback during persistent save operations. See the netsnmp_save_all_data_callback for where this is typically used. 
-.PP
-Definition at line 299 of file data_list.c.
-.SS "int netsnmp_save_all_data_callback (int major, int minor, void * serverarg, void * clientarg)"
-.PP
-intended to be registerd as a callback operation. It should be registered using:
-.PP
-snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA, netsnmp_save_all_data_callback, INFO_POINTER);
-.PP
-where INFO_POINTER is a pointer to a netsnmp_data_list_saveinfo object containing apporpriate registration information 
-.PP
-Definition at line 282 of file data_list.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_debug.3 b/man/netsnmp_debug.3
deleted file mode 100644
index 45d7102..0000000
--- a/man/netsnmp_debug.3
+++ /dev/null
@@ -1,54 +0,0 @@
-.TH "debug" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-debug \- 
-.PP
-Print out debugging information about the handler chain being called.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_debug_handler\fP (void)"
-.br
-.RI "\fIreturns a debug handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "void \fBdebug_print_requests\fP (\fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_debug_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_debug_helper\fP (void)"
-.br
-.RI "\fIinitializes the debug helper which then registers a debug handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Print out debugging information about the handler chain being called. 
-
-This is a useful \fBmodule\fP for run-time debugging of requests as the pass this handler in a calling chain. All debugging output is done via the standard debugging routines with a token name of 'helper:debug', so use the -Dhelper:debug command line flag to see the output when running the snmpd demon. It's not recommended you compile this into a handler chain during compile time, but instead use the 'injectHandler' token in the snmpd.conf file (or similar) to add it to the chain later:
-.PP
-injectHandler debug my_module_name
-.PP
-to see an example output, try:
-.PP
-injectHandler debug mibII/system
-.PP
-and then run snmpwalk on the 'system' group. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_debug_handler (void)"
-.PP
-returns a debug handler that can be injected into a given handler chain. 
-.PP
-Definition at line 44 of file debug_handler.c.
-.SS "void netsnmp_init_debug_helper (void)"
-.PP
-initializes the debug helper which then registers a debug handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 148 of file debug_handler.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_default_store.3 b/man/netsnmp_default_store.3
deleted file mode 100644
index 07cdb53..0000000
--- a/man/netsnmp_default_store.3
+++ /dev/null
@@ -1,250 +0,0 @@
-.TH "storage space for defaults" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-storage space for defaults \- 
-.PP
-The purpose of the default storage is three-fold:.  
-
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_ds_read_config_s\fP"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fBnetsnmp_ds_read_config_s\fP \fBnetsnmp_ds_read_config\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_ds_handle_config\fP (const char *token, char *line)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_set_boolean\fP (int storeid, int which, int value)"
-.br
-.RI "\fIStores 'true' or 'false' given an int value for value into netsnmp_ds_booleans[store][which] slot. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_ds_toggle_boolean\fP (int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_get_boolean\fP (int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_set_int\fP (int storeid, int which, int value)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_get_int\fP (int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_set_string\fP (int storeid, int which, const char *value)"
-.br
-.ti -1c
-.RI "char * \fBnetsnmp_ds_get_string\fP (int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_set_void\fP (int storeid, int which, void *value)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_ds_get_void\fP (int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_parse_boolean\fP (char *line)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_register_config\fP (u_char type, const char *ftype, const char *token, int storeid, int which)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_ds_register_premib\fP (u_char type, const char *ftype, const char *token, int storeid, int which)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_ds_shutdown\fP (void)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The purpose of the default storage is three-fold:. 
-
-1) To create a global storage space without creating a whole bunch of globally accessible variables or a whole bunch of access functions to work with more privately restricted variables.
-.PP
-2) To provide a single location where the thread lock- ing needs to be implemented. At the time of this writing, however, thread locking is not yet in place.
-.PP
-3) To reduce the number of cross dependencies between code pieces that may or may not be linked together in the long run. This provides for a single loca- tion in which configuration data, for example, can be stored for a separate section of code that may not be linked in to the application in question.
-.PP
-The functions defined here implement these goals.
-.PP
-Currently, three data types are supported: booleans, inte- gers, and strings. Each of these data types have separate storage spaces. In addition, the storage space for each data type is divided further by the application level. Currently, there are two storage spaces. The first is reserved for the SNMP library itself. The second is intended for use in applications and is not modified or checked by the library, and, therefore, this is the space usable by you.
-.PP
-These definitions correspond with the 'storid' argument to the API
-.IP "\(bu" 2
-#define NETSNMP_DS_LIBRARY_ID 0
-.IP "\(bu" 2
-#define NETSNMP_DS_APPLICATION_ID 1
-.IP "\(bu" 2
-#define NETSNMP_DS_TOKEN_ID 2
-.PP
-.PP
-These definitions correspond with the 'which' argument to the API, when the storeid argument is NETSNMP_DS_LIBRARY_ID
-.PP
-library booleans
-.PP
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIB_ERRORS 0
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_SAVE_MIB_DESCRS 1
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIB_COMMENT_TERM 2
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIB_PARSE_LABEL 3
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DUMP_PACKET 4
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_LOG_TIMESTAMP 5
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DONT_READ_CONFIGS 6
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIB_REPLACE 7 replace objects from latest \fBmodule\fP
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM 8 print only numeric enum values
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS 9 print only numeric enum values
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS 10 dont print oid indexes specially
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_ALARM_DONT_USE_SIG 11 don't use the alarm() signal
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_FULL_OID 12 print fully qualified oids
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_QUICK_PRINT 13 print very brief output for parsing
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_RANDOM_ACCESS 14 random access to oid labels
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_REGEX_ACCESS 15 regex matching to oid labels
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DONT_CHECK_RANGE 16 don't check values for ranges on send
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_NO_TOKEN_WARNINGS 17 no warn about unknown config tokens
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_NUMERIC_TIMETICKS 18 print timeticks as a number
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_ESCAPE_QUOTES 19 shell escape quote marks in oids
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_REVERSE_ENCODE 20 encode packets from back to front
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_BARE_VALUE 21 just print value (not OID = value)
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_EXTENDED_INDEX 22 print extended index format [x1][x2]
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_HEX_TEXT 23 print ASCII text along with hex strings
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID 24 print OID's using the UCD-style prefix suppression
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_READ_UCD_STYLE_OID 25 require top-level OIDs to be prefixed with a dot
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG 26 have the pre-mib parsing config tokens been processed
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_HAVE_READ_CONFIG 27 have the config tokens been processed
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_QUICKE_PRINT 28
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DONT_PRINT_UNITS 29 don't print UNITS suffix
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_NO_DISPLAY_HINT 30 don't apply DISPLAY-HINTs
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_16BIT_IDS 31 restrict requestIDs, etc to 16-bit values
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DONT_PERSIST_STATE 32 don't save/load any persistant state
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT 33 print a leading 0 on hex values <= 'f'
-.PP
-.PP
-library integers
-.PP
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIB_WARNINGS 0
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_SECLEVEL 1
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_SNMPVERSION 2
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_DEFAULT_PORT 3
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_OID_OUTPUT_FORMAT 4
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_STRING_OUTPUT_FORMAT 5
-.PP
-.PP
-library strings
-.PP
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_SECNAME 0
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_CONTEXT 1
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PASSPHRASE 2
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_AUTHPASSPHRASE 3
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRIVPASSPHRASE 4
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_OPTIONALCONFIG 5
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_APPTYPE 6
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_COMMUNITY 7
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PERSISTENT_DIR 8
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_CONFIGURATION_DIR 9
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_SECMODEL 10
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_MIBDIRS 11
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_OIDSUFFIX 12
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_OIDPREFIX 13
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_CLIENT_ADDR 14
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_TEMP_FILE_PATTERN 15
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_AUTHMASTERKEY 16
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRIVMASTERKEY 17
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_AUTHLOCALIZEDKEY 18
-.IP "\(bu" 2
-#define NETSNMP_DS_LIB_PRIVLOCALIZEDKEY 19 
-.PP
-
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_ds_set_boolean (int storeid, int which, int value)"
-.PP
-Stores 'true' or 'false' given an int value for value into netsnmp_ds_booleans[store][which] slot. \fBParameters:\fP
-.RS 4
-\fIstoreid\fP an index to the boolean storage container's first index(store)
-.br
-\fIwhich\fP an index to the boolean storage container's second index(which)
-.br
-\fIvalue\fP if > 0, 'true' is set into the slot otherwise 'false'
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns SNMPPERR_GENERR if the storeid and which parameters do not correspond to a valid slot, or SNMPERR_SUCCESS otherwise. 
-.RE
-.PP
-
-.PP
-Definition at line 200 of file default_store.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_example_scalar_int.3 b/man/netsnmp_example_scalar_int.3
deleted file mode 100644
index fe4a23b..0000000
--- a/man/netsnmp_example_scalar_int.3
+++ /dev/null
@@ -1,26 +0,0 @@
-.TH "example_scalar_int: instantiates a few example scalars." 3 "6 Mar 2002" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-example_scalar_int \- This example merely creates some scalar registrations that allows some simple variables to be accessed via SNMP.
-More...
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBinit_scalar_int\fP (void)"
-.br
-.in -1c
-.SH "DETAILED DESCRIPTION"
-.PP 
-This example merely creates some scalar registrations that allows some simple variables to be accessed via SNMP.
-.PP
-In a more realistic example, it is likely that these variables would also be manipulated in other ways outside of SNMP gets/sets.
-.PP
-If this module is compiled into an agent, you should be able to issue snmp commands that look something like (authentication information not shown in these commands):
-.PP
-snmpget localhost netSnmpExampleInteger.0 netSnmpExampleScalars = 42
-.PP
-snmpset localhost netSnmpExampleInteger.0 = 1234 netSnmpExampleScalars = 1234
-.PP
-snmpget localhost netSnmpExampleInteger.0 netSnmpExampleScalars = 1234
diff --git a/man/netsnmp_handler.3 b/man/netsnmp_handler.3
deleted file mode 100644
index 3f33778..0000000
--- a/man/netsnmp_handler.3
+++ /dev/null
@@ -1,515 +0,0 @@
-.TH "Net-SNMP Agent handler and extensibility API" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Net-SNMP Agent handler and extensibility API \- 
-.PP
-The basic theory goes something like this: In the past, with the original mib \fBmodule\fP api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request).  
-
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_mib_handler_s\fP"
-.br
-.RI "\fIthe mib handler structure to be registered \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_handler_registration_s\fP"
-.br
-.RI "\fIRoot registration info. \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_handler_args_s\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_delegated_cache_s\fP"
-.br
-.in -1c
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fButility_handlers\fP"
-.br
-.PP
-
-.RI "\fISimplify request processing A group of handlers intended to simplify certain aspects of processing a request for a MIB object. \fP"
-.ti -1c
-.RI "\fBleaf_handlers\fP"
-.br
-.PP
-
-.RI "\fIProcess individual leaf objects A group of handlers to implement individual leaf objects and instances (both scalar objects, and individual objects and instances within a table). \fP"
-.ti -1c
-.RI "\fBbaby_steps\fP"
-.br
-.PP
-
-.RI "\fICalls your handler in baby_steps for set processing. \fP"
-.ti -1c
-.RI "\fBold_api\fP"
-.br
-.PP
-
-.RI "\fICalls mib \fBmodule\fP code written in the old style of code. \fP"
-.ti -1c
-.RI "\fBstash_cache\fP"
-.br
-.PP
-
-.RI "\fIAutomatically caches data for certain handlers. \fP"
-.ti -1c
-.RI "\fBtable\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table. \fP"
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBMIB_HANDLER_AUTO_NEXT\fP   0x00000001"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE\fP   0x00000002"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_INSTANCE\fP   0x00000004"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM4\fP   0x10000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM3\fP   0x20000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM2\fP   0x40000000"
-.br
-.ti -1c
-.RI "#define \fBMIB_HANDLER_CUSTOM1\fP   0x80000000"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_GETANDGETNEXT\fP   0x01"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_SET\fP   0x02"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_GETBULK\fP   0x04"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_NOT_CREATE\fP   0x08"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_BABY_STEP\fP   0x10"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_STASH\fP   0x20"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_RONLY\fP   (HANDLER_CAN_GETANDGETNEXT)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_RWRITE\fP   (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_SET_ONLY\fP   (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)"
-.br
-.ti -1c
-.RI "#define \fBHANDLER_CAN_DEFAULT\fP   (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)"
-.br
-.ti -1c
-.RI "#define \fBREQUEST_IS_DELEGATED\fP   1"
-.br
-.ti -1c
-.RI "#define \fBREQUEST_IS_NOT_DELEGATED\fP   0"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. \fP"
-.ti -1c
-.RI "typedef struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. \fP"
-.ti -1c
-.RI "typedef int( \fBNetsnmp_Node_Handler\fP )(\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_handler_args_s\fP \fBnetsnmp_handler_args\fP"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_delegated_cache_s\fP \fBnetsnmp_delegated_cache\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_create_handler\fP (const char *name, Netsnmp_Node_Handler *handler_access_method)"
-.br
-.RI "\fIcreates a netsnmp_mib_handler structure given a name and a access method. \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_create\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler, const oid *reg_oid, size_t reg_oid_len, int modes)"
-.br
-.RI "\fIcreates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, const oid *reg_oid, size_t reg_oid_len, int modes)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_unregister_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIunregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_handler_nocallback\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_inject_handler_before\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
-.br
-.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_inject_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_handler\fP (\fBnetsnmp_mib_handler\fP *next_handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls a handler with with appropriate NULL checking of arguments, etc. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_call_handlers\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler_one_request\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_free\fP (\fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIfrees the resources associated with a given handler \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_handler_dup\fP (\fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIduplicates a handler and all subsequent handlers see also _clone_handler \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_registration_free\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIfree the resources associated with a handler registration object \fP"
-.ti -1c
-.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_dup\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIduplicates the handler registration object \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_create_delegated_cache\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests, void *localinfo)"
-.br
-.RI "\fIcreates a cache of information which can be saved for future reference. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_handler_check_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
-.br
-.RI "\fIcheck's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_delegated_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
-.br
-.RI "\fIfrees a cache once you're finished using it \fP"
-.ti -1c
-.RI "void \fBnetsnmp_handler_mark_requests_as_delegated\fP (\fBnetsnmp_request_info\fP *requests, int isdelegated)"
-.br
-.RI "\fImarks a list of requests as delegated (or not if isdelegaded = 0) \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_request_add_list_data\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.RI "\fIadd data to a request that can be extracted later by submodules \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_request_remove_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
-.br
-.RI "\fIremove data from a request \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_request_get_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
-.br
-.RI "\fIextract data from a request that was added previously by a parent \fBmodule\fP \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_set\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIFree the extra data stored in a request. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_sets\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIFree the extra data stored in a bunch of requests (all data in the chain). \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_find_handler_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
-.br
-.RI "\fIReturns a handler from a chain based on the name. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_find_handler_data_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
-.br
-.RI "\fIReturns a handler's void * pointer from a chain based on the name. \fP"
-.ti -1c
-.RI "void \fBhandler_free_callback\fP (void *handler)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_register_handler_by_name\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIregisters a given handler by name so that it can be found easily later. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_clear_handler_list\fP (void)"
-.br
-.RI "\fIclears the entire handler-registration list \fP"
-.ti -1c
-.RI "void \fBnetsnmp_inject_handler_into_subtree\fP (\fBnetsnmp_subtree\fP *tp, const char *name, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
-.br
-.ti -1c
-.RI "void \fBparse_injectHandler_conf\fP (const char *token, char *cptr)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_handler_conf\fP (void)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_handler_get_parent_data\fP (\fBnetsnmp_request_info\fP *, const char *)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The basic theory goes something like this: In the past, with the original mib \fBmodule\fP api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request). 
-
-This worked well at the time but in todays world of subagents, device instrumentation, low resource consumption, etc, it just isn't flexible enough. 'handlers' are here to fix all that.
-.PP
-With the rewrite of the agent internals for the net-snmp 5.0 release, we introduce a modular calling scheme that allows agent modules to be written in a very flexible manner, and more importantly allows reuse of code in a decent way (and without the memory and speed overheads of OO languages like C++).
-.PP
-Functionally, the notion of what a handler does is the same as the older api: A handler is \fBcreated\fP and then \fBregistered\fP with the main agent at a given OID in the OID \fBtree\fP and gets called any time a request is made that it should respond to. You probably should use one of the convenience helpers instead of doing anything else yourself though:
-.PP
-Most importantly, though, is that the handlers are built on the notion of modularity and reuse. Specifically, rather than do all the really hard work (like parsing table indexes out of an incoming oid request) in each \fBmodule\fP, the API is designed to make it easy to write 'helper' handlers that merely process some aspect of the request before passing it along to the final handler that returns the real answer. Most people will want to make use of the \fBinstance\fP, \fBtable\fP, \fBtable_iterator\fP, \fBtable_data\fP, or \fBtable_dataset\fP helpers to make their life easier. These 'helpers' interpert important aspects of the request and pass them on to you.
-.PP
-For instance, the \fBtable\fP helper is designed to hand you a list of extracted index values from an incoming request. THe \fBtable_iterator\fP helper is built on top of the table helper, and is designed to help you iterate through data stored elsewhere (like in a kernel) that is not in OID lexographical order (ie, don't write your own index/oid sorting routine, use this helper instead). The beauty of the \fBtable_iterator helper\fP, as well as the \fBinstance\fP helper is that they take care of the complex GETNEXT processing entirely for you and hand you everything you need to merely return the data as if it was a GET request. Much less code and hair pulling. I've pulled all my hair out to help you so that only one of us has to be bald. 
-.SH "Typedef Documentation"
-.PP 
-.SS "struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
-.PP
-Typedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. 
-.SS "struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
-.PP
-Typedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_call_handler (\fBnetsnmp_mib_handler\fP * next_handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-calls a handler with with appropriate NULL checking of arguments, etc. 
-.SS "int netsnmp_call_next_handler (\fBnetsnmp_mib_handler\fP * current, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-calls the next handler in the chain after the current one with with appropriate NULL checking, etc. 
-.SS "int netsnmp_call_next_handler_one_request (\fBnetsnmp_mib_handler\fP * current, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-calls the next handler in the chain after the current one with with appropriate NULL checking, etc. 
-.SS "void netsnmp_clear_handler_list (void)"
-.PP
-clears the entire handler-registration list 
-.SS "\fBnetsnmp_delegated_cache\fP * netsnmp_create_delegated_cache (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests, void * localinfo)"
-.PP
-creates a cache of information which can be saved for future reference. Use \fBnetsnmp_handler_check_cache()\fP later to make sure it's still valid before referencing it in the future. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.SS "\fBnetsnmp_mib_handler\fP * netsnmp_create_handler (const char * name, Netsnmp_Node_Handler * handler_access_method)"
-.PP
-creates a netsnmp_mib_handler structure given a name and a access method. The returned handler should then be \fBregistered.\fP
-.PP
-\fBParameters:\fP
-.RS 4
-\fIname\fP is the handler name and is copied then assigned to netsnmp_mib_handler->handler_name
-.br
-\fIhandler_access_method\fP is a function pointer used as the access method for this handler registration instance for whatever required needs.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a pointer to a populated netsnmp_mib_handler struct to be registered
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-netsnmp_create_handler_registration() 
-.PP
-\fBnetsnmp_register_handler()\fP 
-.RE
-.PP
-
-.SS "\fBnetsnmp_mib_handler\fP * netsnmp_find_handler_by_name (\fBnetsnmp_handler_registration\fP * reginfo, const char * name)"
-.PP
-Returns a handler from a chain based on the name. 
-.SS "void * netsnmp_find_handler_data_by_name (\fBnetsnmp_handler_registration\fP * reginfo, const char * name)"
-.PP
-Returns a handler's void * pointer from a chain based on the name. This probably shouldn't be used by the general public as the void * data may change as a handler evolves. Handlers should really advertise some function for you to use instead. 
-.SS "void netsnmp_free_delegated_cache (\fBnetsnmp_delegated_cache\fP * dcache)"
-.PP
-frees a cache once you're finished using it 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.SS "void netsnmp_free_request_data_set (\fBnetsnmp_request_info\fP * request)"
-.PP
-Free the extra data stored in a request. 
-.SS "void netsnmp_free_request_data_sets (\fBnetsnmp_request_info\fP * request)"
-.PP
-Free the extra data stored in a bunch of requests (all data in the chain). 
-.SS "\fBnetsnmp_delegated_cache\fP * netsnmp_handler_check_cache (\fBnetsnmp_delegated_cache\fP * dcache)"
-.PP
-check's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. Returns NULL if it's no longer valid. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.SS "\fBnetsnmp_mib_handler\fP * netsnmp_handler_dup (\fBnetsnmp_mib_handler\fP * handler)"
-.PP
-duplicates a handler and all subsequent handlers see also _clone_handler 
-.SS "void netsnmp_handler_free (\fBnetsnmp_mib_handler\fP * handler)"
-.PP
-frees the resources associated with a given handler 
-.PP
-make sure we aren't pointing to ourselves. 
-.SS "void netsnmp_handler_mark_requests_as_delegated (\fBnetsnmp_request_info\fP * requests, int isdelegated)"
-.PP
-marks a list of requests as delegated (or not if isdelegaded = 0) 
-.SS "\fBnetsnmp_handler_registration\fP * netsnmp_handler_registration_create (const char * name, \fBnetsnmp_mib_handler\fP * handler, const oid * reg_oid, size_t reg_oid_len, int modes)"
-.PP
-creates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. If modes == 0, then modes will automatically be set to the default value of only HANDLER_CAN_DEFAULT, which is by default read-only GET and GETNEXT requests. A hander which supports sets but not row creation should set us a mode of HANDLER_CAN_SET_ONLY. 
-.PP
-\fBNote:\fP
-.RS 4
-This ends up calling netsnmp_create_handler(name, handler_access_method) 
-.RE
-.PP
-\fBParameters:\fP
-.RS 4
-\fIname\fP is the handler name and is copied then assigned to netsnmp_handler_registration->handlerName.
-.br
-\fIhandler\fP is a function pointer used as the access method for this handler registration instance for whatever required needs.
-.br
-\fIreg_oid\fP is the registration location oid.
-.br
-\fIreg_oid_len\fP is the length of reg_oid, can use the macro, OID_LENGTH
-.br
-\fImodes\fP is used to configure read/write access. If modes == 0, then modes will automatically be set to the default value of only HANDLER_CAN_DEFAULT, which is by default read-only GET and GETNEXT requests. The other two mode options are read only, HANDLER_CAN_RONLY, and read/write, HANDLER_CAN_RWRITE.
-.RE
-.PP
-.IP "\(bu" 2
-HANDLER_CAN_GETANDGETNEXT
-.IP "\(bu" 2
-HANDLER_CAN_SET
-.IP "\(bu" 2
-HANDLER_CAN_GETBULK
-.PP
-.PP
-.IP "\(bu" 2
-HANDLER_CAN_RONLY (HANDLER_CAN_GETANDGETNEXT)
-.IP "\(bu" 2
-HANDLER_CAN_RWRITE (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)
-.IP "\(bu" 2
-HANDLER_CAN_DEFAULT HANDLER_CAN_RONLY
-.PP
-.PP
-\fBReturns:\fP
-.RS 4
-Returns a pointer to a netsnmp_handler_registration struct. NULL is returned only when memory could not be allocated for the netsnmp_handler_registration struct.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBnetsnmp_create_handler()\fP 
-.PP
-\fBnetsnmp_register_handler()\fP 
-.RE
-.PP
-
-.SS "\fBnetsnmp_handler_registration\fP * netsnmp_handler_registration_dup (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-duplicates the handler registration object 
-.SS "void netsnmp_handler_registration_free (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-free the resources associated with a handler registration object 
-.SS "int netsnmp_inject_handler (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_mib_handler\fP * handler)"
-.PP
-inject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. The new handler is injected at the top of the list and hence will be the new handler to be called first. 
-.SS "int netsnmp_inject_handler_before (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_mib_handler\fP * handler, const char * before_what)"
-.PP
-inject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. The new handler is injected after the before_what handler, or if NULL at the top of the list and hence will be the new handler to be called first. 
-.SS "int netsnmp_register_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-register a handler, as defined by the netsnmp_handler_registration pointer. 
-.SS "void netsnmp_register_handler_by_name (const char * name, \fBnetsnmp_mib_handler\fP * handler)"
-.PP
-registers a given handler by name so that it can be found easily later. 
-.SS "int netsnmp_register_handler_nocallback (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-register a handler, as defined by the netsnmp_handler_registration pointer. 
-.SS "void netsnmp_request_add_list_data (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_data_list\fP * node)"
-.PP
-add data to a request that can be extracted later by submodules \fBParameters:\fP
-.RS 4
-\fIrequest\fP the netsnmp request info structure
-.br
-\fI\fBnode\fP\fP this is the data to be added to the linked list request->parent_data
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.SS "void * netsnmp_request_get_list_data (\fBnetsnmp_request_info\fP * request, const char * name)"
-.PP
-extract data from a request that was added previously by a parent \fBmodule\fP \fBParameters:\fP
-.RS 4
-\fIrequest\fP the netsnmp request info function
-.br
-\fIname\fP used to compare against the request->parent_data->name value, if a match is found request->parent_data->data is returned
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a void pointer(request->parent_data->data), otherwise NULL is returned if request is NULL or request->parent_data is NULL or request->parent_data object is not found. 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.SS "int netsnmp_request_remove_list_data (\fBnetsnmp_request_info\fP * request, const char * name)"
-.PP
-remove data from a request \fBParameters:\fP
-.RS 4
-\fIrequest\fP the netsnmp request info structure
-.br
-\fIname\fP this is the name of the previously added data
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 on successful find-and-delete, 1 otherwise. 
-.RE
-.PP
-
-.SS "int netsnmp_unregister_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-unregister a handler, as defined by the netsnmp_handler_registration pointer. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_instance.3 b/man/netsnmp_instance.3
deleted file mode 100644
index 8ed81dd..0000000
--- a/man/netsnmp_instance.3
+++ /dev/null
@@ -1,227 +0,0 @@
-.TH "instance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-instance \- 
-.PP
-Process individual MIB instances easily.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_instance_handler\fP (void)"
-.br
-.RI "\fICreates an instance helper handler, calls netsnmp_create_handler, which then could be registered, using \fBnetsnmp_register_handler()\fP. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_instance\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIThis function registers an instance helper handler, which is a way of registering an exact OID such that GENEXT requests are handled entirely by the helper. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_instance\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIThis function injects a 'read only' handler into the handler chain prior to serializing/registering the handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_ulong_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_ulong_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_long_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_uint_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_uint_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, unsigned int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBregister_read_only_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_ulong_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_ulong_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_long_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBregister_read_only_int_instance_context\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_num_file_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, const char *file_name, int asn_type, int mode, Netsnmp_Node_Handler *subhandler, const char *contextName)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_int_instance\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.RI "\fIThis function registers an int helper handler to a specified OID. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_instance_ulong_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_counter32_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_long_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_int_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_num_file_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_uint_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_instance_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Process individual MIB instances easily. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_instance_handler (void)"
-.PP
-Creates an instance helper handler, calls netsnmp_create_handler, which then could be registered, using \fBnetsnmp_register_handler()\fP. \fBReturns:\fP
-.RS 4
-Returns a pointer to a netsnmp_mib_handler struct which contains the handler's name and the access method 
-.RE
-.PP
-
-.PP
-Definition at line 49 of file instance.c.
-.SS "int netsnmp_instance_counter32_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
-.RS 4
-This function is unused and scheduled for removal in Net-SNMP 5.6 
-.RE
-.PP
-
-.PP
-Definition at line 572 of file instance.c.
-.SS "int netsnmp_instance_int_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
-.RS 4
-This function is unused and scheduled for removal in Net-SNMP 5.6 
-.RE
-.PP
-
-.PP
-Definition at line 689 of file instance.c.
-.SS "int netsnmp_instance_long_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
-.RS 4
-This function is unused and scheduled for removal in Net-SNMP 5.6 
-.RE
-.PP
-
-.PP
-Definition at line 611 of file instance.c.
-.SS "int netsnmp_instance_num_file_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-fall through 
-.PP
-Definition at line 771 of file instance.c.
-.SS "int netsnmp_instance_uint_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
-.RS 4
-This function is unused and scheduled for removal in Net-SNMP 5.6 
-.RE
-.PP
-
-.PP
-Definition at line 905 of file instance.c.
-.SS "int netsnmp_instance_ulong_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"\fBDeprecated\fP
-.RS 4
-This function is unused and scheduled for removal in Net-SNMP 5.6 
-.RE
-.PP
-
-.PP
-Definition at line 492 of file instance.c.
-.SS "int netsnmp_register_instance (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-This function registers an instance helper handler, which is a way of registering an exact OID such that GENEXT requests are handled entirely by the helper. First need to inject it into the calling chain of the handler defined by the netsnmp_handler_registration struct, reginfo. The new handler is injected at the top of the list and will be the new handler to be called first. This function also injects a serialize handler before actually calling netsnmp_register_handle, registering reginfo.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreginfo\fP a handler registration structure which could get created using netsnmp_create_handler_registration. Used to register an instance helper handler.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILED and MIB_DUPLICATE_REGISTRATION. 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 74 of file instance.c.
-.SS "int netsnmp_register_int_instance (const char * name, const oid * reg_oid, size_t reg_oid_len, int * it, Netsnmp_Node_Handler * subhandler)"
-.PP
-This function registers an int helper handler to a specified OID. \fBParameters:\fP
-.RS 4
-\fIname\fP the name used for registration pruposes.
-.br
-\fIreg_oid\fP the OID where you want to register your integer at
-.br
-\fIreg_oid_len\fP the length of the OID
-.br
-\fIit\fP the integer value to be registered during initialization
-.br
-\fIsubhandler\fP a handler to do whatever you want to do, otherwise use NULL to use the default int handler.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILED and MIB_DUPLICATE_REGISTRATION. 
-.RE
-.PP
-
-.PP
-Definition at line 475 of file instance.c.
-.SS "int netsnmp_register_read_only_instance (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-This function injects a 'read only' handler into the handler chain prior to serializing/registering the handler. The only purpose of this 'read only' handler is to return an appropriate error for any requests passed to it in a SET mode. Inserting it into your handler chain will ensure you're never asked to perform a SET request so you can ignore those error conditions.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreginfo\fP a handler registration structure which could get created using netsnmp_create_handler_registration. Used to register a read only instance helper handler.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILED and MIB_DUPLICATE_REGISTRATION. 
-.RE
-.PP
-
-.PP
-Definition at line 101 of file instance.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_iterator_info_s.3 b/man/netsnmp_iterator_info_s.3
deleted file mode 100644
index 829660e..0000000
--- a/man/netsnmp_iterator_info_s.3
+++ /dev/null
@@ -1,76 +0,0 @@
-.TH "iterator_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-iterator_info_s \- 
-.PP
-Holds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner.  
-
-.SH SYNOPSIS
-.br
-.PP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_container\fP \fBc\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Loop_Key * \fBget_first\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Loop_Key * \fBget_next\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Loop_Data * \fBget_data\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Data * \fBfree_user_ctx\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Ctx * \fBinit_loop_ctx\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Ctx * \fBcleanup_loop_ctx\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Ctx_Dup * \fBsave_pos\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Data * \fBrelease_data\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Data * \fBinsert_data\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Data * \fBremove_data\fP"
-.br
-.ti -1c
-.RI "Netsnmp_Iterator_Op * \fBget_size\fP"
-.br
-.ti -1c
-.RI "int \fBsorted\fP"
-.br
-.ti -1c
-.RI "void * \fBuser_ctx\fP"
-.br
-.RI "\fIThis can be used by client handlers to store any information they need. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Holds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner. 
-
-The iterator_info typedef can be used instead of directly calling this struct if you would prefer. 
-.PP
-Definition at line 39 of file container_iterator.c.
-.SH "Field Documentation"
-.PP 
-.SS "void* \fBiterator_info_s::user_ctx\fP"
-.PP
-This can be used by client handlers to store any information they need. 
-.PP
-Definition at line 69 of file container_iterator.c.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_leaf.3 b/man/netsnmp_leaf.3
deleted file mode 100644
index 19f2888..0000000
--- a/man/netsnmp_leaf.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH "leaf_handlers" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-leaf_handlers \- 
-.PP
-Process individual leaf objects A group of handlers to implement individual leaf objects and instances (both scalar objects, and individual objects and instances within a table).  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBinstance\fP"
-.br
-.PP
-
-.RI "\fIProcess individual MIB instances easily. \fP"
-.ti -1c
-.RI "\fBscalar\fP"
-.br
-.PP
-
-.RI "\fIProcess scalars easily. \fP"
-.ti -1c
-.RI "\fBscalar_group\fP"
-.br
-.PP
-
-.RI "\fIProcess groups of scalars. \fP"
-.ti -1c
-.RI "\fBwatcher\fP"
-.br
-.PP
-
-.RI "\fIWatch a specified \fBvariable\fP and process it as an instance or scalar object. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Process individual leaf objects A group of handlers to implement individual leaf objects and instances (both scalar objects, and individual objects and instances within a table). 
-
-These handlers will typically allow control to be passed down to a lower level, user-provided handler, but this is (usually) optional. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_library.3 b/man/netsnmp_library.3
deleted file mode 100644
index 41cc6fc..0000000
--- a/man/netsnmp_library.3
+++ /dev/null
@@ -1,706 +0,0 @@
-.TH "The Net-SNMP library" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-The Net-SNMP library \- 
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBsnmp_internal_session\fP"
-.br
-.ti -1c
-.RI "struct \fBsession_list\fP"
-.br
-.in -1c
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBasn1 parsing and datatype manipulation routines.\fP"
-.br
-.PP
-
-.RI "\fINote on. \fP"
-.ti -1c
-.RI "\fBA generic callback mechanism\fP"
-.br
-.ti -1c
-.RI "\fBgeneric linked-list data handling with a string as a key.\fP"
-.br
-.ti -1c
-.RI "\fBstorage space for defaults\fP"
-.br
-.PP
-
-.RI "\fIThe purpose of the default storage is three-fold:. \fP"
-.ti -1c
-.RI "\fBmib parsing and datatype manipulation routines.\fP"
-.br
-.ti -1c
-.RI "\fBStore and retrieve data referenced by an OID.\fP"
-.br
-.PP
-
-.RI "\fIThis is essentially a way of storing data associated with a given OID. \fP"
-.ti -1c
-.RI "\fBparsing various configuration files at run time\fP"
-.br
-.PP
-
-.RI "\fIThe read_config related functions are a fairly extensible system of parsing various configuration files at the run time. \fP"
-.ti -1c
-.RI "\fBgeneric library based alarm timers for various parts of an application\fP"
-.br
-.ti -1c
-.RI "\fBvarious PDU processing routines\fP"
-.br
-.ti -1c
-.RI "\fBgeneric logging for net-snmp\fP"
-.br
-.ti -1c
-.RI "\fBMemory Utility Routines\fP"
-.br
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBMIN\fP(a, b)   (((a) < (b)) ? (a) : (b))"
-.br
-.ti -1c
-.RI "#define \fBMIB_CLIENTS_ARE_EVIL\fP   1"
-.br
-.ti -1c
-.RI "#define \fB_init_agent_callback_transport\fP()"
-.br
-.ti -1c
-.RI "#define \fBSNMP_NEED_REQUEST_LIST\fP"
-.br
-.ti -1c
-.RI "#define \fBtimercmp\fP(tvp, uvp, cmp)"
-.br
-.ti -1c
-.RI "#define \fBtimerclear\fP(tvp)   (tvp)->tv_sec = (tvp)->tv_usec = 0"
-.br
-.ti -1c
-.RI "#define \fBMAX_PACKET_LENGTH\fP   (0x7fffffff)"
-.br
-.ti -1c
-.RI "#define \fBNETSNMP_STREAM_QUEUE_LEN\fP   5"
-.br
-.ti -1c
-.RI "#define \fBBSD4_2\fP"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_COMMUNITY\fP   'public'"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_RETRIES\fP   5"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_TIMEOUT\fP   1000000L"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_REMPORT\fP   SNMP_PORT"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_ENTERPRISE\fP   default_enterprise"
-.br
-.ti -1c
-.RI "#define \fBDEFAULT_TIME\fP   0"
-.br
-.ti -1c
-.RI "#define \fBMAXIMUM_PACKET_SIZE\fP   0x7fffffff"
-.br
-.ti -1c
-.RI "#define \fBDEBUGPRINTPDUTYPE\fP(token, type)   DEBUGDUMPSECTION(token, snmp_pdu_type(type))"
-.br
-.ti -1c
-.RI "#define \fBERROR_STAT_LENGTH\fP   11"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fBinit_agent\fP (const char *app)"
-.br
-.RI "\fIInitialize the agent. \fP"
-.ti -1c
-.RI "void \fBshutdown_agent\fP (void)"
-.br
-.ti -1c
-.RI "void \fBadd_to_init_list\fP (char *module_list)"
-.br
-.ti -1c
-.RI "int \fBshould_init\fP (const char *module_name)"
-.br
-.ti -1c
-.RI "int \fBsnmp_build\fP (u_char **pkt, size_t *pkt_len, size_t *offset, \fBnetsnmp_session\fP *pss, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmp_get_errno\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_synch_reset\fP (\fBnetsnmp_session\fP *notused)"
-.br
-.ti -1c
-.RI "void \fBsnmp_synch_setup\fP (\fBnetsnmp_session\fP *notused)"
-.br
-.ti -1c
-.RI "const char * \fBstrerror\fP (int err)"
-.br
-.ti -1c
-.RI "const char * \fBsnmp_pdu_type\fP (int type)"
-.br
-.ti -1c
-.RI "long \fBsnmp_get_next_reqid\fP (void)"
-.br
-.ti -1c
-.RI "long \fBsnmp_get_next_msgid\fP (void)"
-.br
-.ti -1c
-.RI "long \fBsnmp_get_next_sessid\fP (void)"
-.br
-.ti -1c
-.RI "long \fBsnmp_get_next_transid\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_perror\fP (const char *prog_string)"
-.br
-.ti -1c
-.RI "void \fBsnmp_set_detail\fP (const char *detail_string)"
-.br
-.ti -1c
-.RI "const char * \fBsnmp_api_errstring\fP (int snmp_errnumber)"
-.br
-.ti -1c
-.RI "void \fBsnmp_error\fP (\fBnetsnmp_session\fP *psess, int *p_errno, int *p_snmp_errno, char **p_str)"
-.br
-.ti -1c
-.RI "void \fBsnmp_sess_error\fP (void *sessp, int *p_errno, int *p_snmp_errno, char **p_str)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_sess_log_error\fP (int priority, const char *prog_string, \fBnetsnmp_session\fP *ss)"
-.br
-.ti -1c
-.RI "void \fBsnmp_sess_perror\fP (const char *prog_string, \fBnetsnmp_session\fP *ss)"
-.br
-.ti -1c
-.RI "void \fBsnmp_sess_init\fP (\fBnetsnmp_session\fP *session)"
-.br
-.RI "\fILibrary API routines concerned with specifying and using SNMP 'sessions' including sending and receiving requests. \fP"
-.ti -1c
-.RI "void \fBinit_snmp\fP (const char *type)"
-.br
-.RI "\fICalls the functions to do config file loading and mib \fBmodule\fP parsing in the correct order. \fP"
-.ti -1c
-.RI "void \fBsnmp_store\fP (const char *type)"
-.br
-.ti -1c
-.RI "void \fBsnmp_shutdown\fP (const char *type)"
-.br
-.RI "\fIShuts down the application, saving any needed persistent storage, and appropriate clean up. \fP"
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_open\fP (\fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_open_ex\fP (\fBnetsnmp_session\fP *session, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fparse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int), int(*fbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t *), int(*frbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t))"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_probe_contextEngineID_rfc5343\fP (void *slp, \fBnetsnmp_session\fP *session)"
-.br
-.RI "\fIprobe for engineID using RFC 5343 probing mechanisms \fP"
-.ti -1c
-.RI "int \fBsnmpv3_engineID_probe\fP (struct \fBsession_list\fP *slp, \fBnetsnmp_session\fP *in_session)"
-.br
-.RI "\fIprobe for peer engineID \fP"
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_add\fP (\fBnetsnmp_session\fP *in_session, \fBnetsnmp_transport\fP *transport, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int))"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_add_full\fP (\fBnetsnmp_session\fP *in_session, \fBnetsnmp_transport\fP *transport, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fparse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int), int(*fbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t *), int(*frbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t), \fBnetsnmp_pdu\fP *(*fcreate_pdu)(\fBnetsnmp_transport\fP *, void *, size_t))"
-.br
-.ti -1c
-.RI "void * \fBsnmp_sess_add_ex\fP (\fBnetsnmp_session\fP *in_session, \fBnetsnmp_transport\fP *transport, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fparse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int), int(*fbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char *, size_t *), int(*frbuild)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, u_char **, size_t *, size_t *), int(*fcheck)(u_char *, size_t), \fBnetsnmp_pdu\fP *(*fcreate_pdu)(\fBnetsnmp_transport\fP *, void *, size_t))"
-.br
-.ti -1c
-.RI "void * \fBsnmp_sess_add\fP (\fBnetsnmp_session\fP *in_session, \fBnetsnmp_transport\fP *transport, int(*fpre_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_transport\fP *, void *, int), int(*fpost_parse)(\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int))"
-.br
-.ti -1c
-.RI "void * \fBsnmp_sess_open\fP (\fBnetsnmp_session\fP *pss)"
-.br
-.ti -1c
-.RI "int \fBcreate_user_from_session\fP (\fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_close\fP (void *sessp)"
-.br
-.ti -1c
-.RI "int \fBsnmp_close\fP (\fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "int \fBsnmp_close_sessions\fP (void)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_header_realloc_rbuild\fP (u_char **pkt, size_t *pkt_len, size_t *offset, \fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_scopedPDU_header_realloc_rbuild\fP (u_char **pkt, size_t *pkt_len, size_t *offset, \fBnetsnmp_pdu\fP *pdu, size_t body_len)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_packet_realloc_rbuild\fP (u_char **pkt, size_t *pkt_len, size_t *offset, \fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu, u_char *pdu_data, size_t pdu_data_len)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_packet_build\fP (\fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu, u_char *packet, size_t *out_length, u_char *pdu_data, size_t pdu_data_len)"
-.br
-.ti -1c
-.RI "u_char * \fBsnmp_pdu_build\fP (\fBnetsnmp_pdu\fP *pdu, u_char *cp, size_t *out_length)"
-.br
-.ti -1c
-.RI "int \fBsnmp_pdu_realloc_rbuild\fP (u_char **pkt, size_t *pkt_len, size_t *offset, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_parse\fP (\fBnetsnmp_pdu\fP *pdu, u_char *data, size_t *length, u_char **after_header, \fBnetsnmp_session\fP *sess)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_make_report\fP (\fBnetsnmp_pdu\fP *pdu, int error)"
-.br
-.ti -1c
-.RI "int \fBsnmpv3_get_report_type\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmp_pdu_parse\fP (\fBnetsnmp_pdu\fP *pdu, u_char *data, size_t *length)"
-.br
-.ti -1c
-.RI "u_char * \fBsnmpv3_scopedPDU_parse\fP (\fBnetsnmp_pdu\fP *pdu, u_char *cp, size_t *length)"
-.br
-.ti -1c
-.RI "int \fBsnmp_send\fP (\fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_send\fP (void *sessp, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmp_async_send\fP (\fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu, snmp_callback callback, void *cb_data)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_async_send\fP (void *sessp, \fBnetsnmp_pdu\fP *pdu, snmp_callback callback, void *cb_data)"
-.br
-.ti -1c
-.RI "void \fBsnmp_free_var_internals\fP (\fBnetsnmp_variable_list\fP *var)"
-.br
-.ti -1c
-.RI "void \fBsnmp_free_var\fP (\fBnetsnmp_variable_list\fP *var)"
-.br
-.ti -1c
-.RI "void \fBsnmp_free_varbind\fP (\fBnetsnmp_variable_list\fP *var)"
-.br
-.ti -1c
-.RI "void \fBsnmp_free_pdu\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBsnmp_create_sess_pdu\fP (\fBnetsnmp_transport\fP *transport, void *opaque, size_t olength)"
-.br
-.ti -1c
-.RI "void \fBsnmp_read\fP (fd_set *fdset)"
-.br
-.ti -1c
-.RI "void \fBsnmp_read2\fP (\fBnetsnmp_large_fd_set\fP *fdset)"
-.br
-.ti -1c
-.RI "int \fB_sess_read\fP (void *sessp, \fBnetsnmp_large_fd_set\fP *fdset)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_read\fP (void *sessp, fd_set *fdset)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_read2\fP (void *sessp, \fBnetsnmp_large_fd_set\fP *fdset)"
-.br
-.ti -1c
-.RI "int \fBsnmp_select_info\fP (int *numfds, fd_set *fdset, struct timeval *timeout, int *block)"
-.br
-.ti -1c
-.RI "int \fBsnmp_select_info2\fP (int *numfds, \fBnetsnmp_large_fd_set\fP *fdset, struct timeval *timeout, int *block)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_select_info\fP (void *sessp, int *numfds, fd_set *fdset, struct timeval *timeout, int *block)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_select_info2\fP (void *sessp, int *numfds, \fBnetsnmp_large_fd_set\fP *fdset, struct timeval *timeout, int *block)"
-.br
-.ti -1c
-.RI "void \fBsnmp_timeout\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_sess_timeout\fP (void *sessp)"
-.br
-.ti -1c
-.RI "int \fBsnmp_oid_ncompare\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2, size_t max_len)"
-.br
-.ti -1c
-.RI "int \fBsnmp_oid_compare\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.RI "\fIlexicographical compare two object identifiers. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid_compare_ll\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2, size_t *offpt)"
-.br
-.RI "\fIlexicographical compare two object identifiers and return the point where they differ \fP"
-.ti -1c
-.RI "int \fBsnmp_oidtree_compare\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.RI "\fICompares 2 OIDs to determine if they are equal up until the shortest length. \fP"
-.ti -1c
-.RI "int \fBsnmp_oidsubtree_compare\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_oid_equals\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.RI "\fICompares 2 OIDs to determine if they are exactly equal. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid_is_subtree\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.RI "\fIIdentical to netsnmp_oid_equals, except only the length up to len1 is compared. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid_find_prefix\fP (const oid *in_name1, size_t len1, const oid *in_name2, size_t len2)"
-.br
-.RI "\fIGiven two OIDs, determine the common prefix to them both. \fP"
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_pdu_add_variable\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length, u_char type, const void *value, size_t len)"
-.br
-.RI "\fILibrary API routines concerned with \fBvariable\fP bindings and values. \fP"
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_varlist_add_variable\fP (\fBnetsnmp_variable_list\fP **varlist, const oid *name, size_t name_length, u_char type, const void *value, size_t len)"
-.br
-.ti -1c
-.RI "int \fBsnmp_add_var\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length, char type, const char *value)"
-.br
-.ti -1c
-.RI "void * \fBsnmp_sess_pointer\fP (\fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_sess_session\fP (void *sessp)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBsnmp_sess_session_lookup\fP (void *sessp)"
-.br
-.RI "\fILook up a session that already may have been closed. \fP"
-.ti -1c
-.RI "\fBnetsnmp_transport\fP * \fBsnmp_sess_transport\fP (void *sessp)"
-.br
-.ti -1c
-.RI "void \fBsnmp_sess_transport_set\fP (void *sp, \fBnetsnmp_transport\fP *t)"
-.br
-.ti -1c
-.RI "oid * \fBsnmp_duplicate_objid\fP (const oid *objToCopy, size_t objToCopyLen)"
-.br
-.ti -1c
-.RI "u_int \fBsnmp_increment_statistic\fP (int which)"
-.br
-.ti -1c
-.RI "u_int \fBsnmp_increment_statistic_by\fP (int which, int count)"
-.br
-.ti -1c
-.RI "u_int \fBsnmp_get_statistic\fP (int which)"
-.br
-.ti -1c
-.RI "void \fBsnmp_init_statistics\fP (void)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "struct \fBmodule_init_list\fP * \fBinitlist\fP = NULL"
-.br
-.ti -1c
-.RI "struct \fBmodule_init_list\fP * \fBnoinitlist\fP = NULL"
-.br
-.ti -1c
-.RI "\fBnetsnmp_subtree\fP * \fBsubtrees\fP"
-.br
-.ti -1c
-.RI "long \fBlong_return\fP"
-.br
-.ti -1c
-.RI "u_char \fBreturn_buf\fP [258]"
-.br
-.ti -1c
-.RI "struct timeval \fBstarttime\fP"
-.br
-.ti -1c
-.RI "int \fBcallback_master_num\fP = -1"
-.br
-.ti -1c
-.RI "oid \fBnullOid\fP [] = { 0, 0 }"
-.br
-.ti -1c
-.RI "int \fBnullOidLen\fP = sizeof(nullOid)"
-.br
-.ti -1c
-.RI "struct \fBsession_list\fP * \fBSessions\fP = NULL"
-.br
-.ti -1c
-.RI "int \fBsnmp_errno\fP = 0"
-.br
-.in -1c
-.SH "Define Documentation"
-.PP 
-.SS "#define timercmp(tvp, uvp, cmp)"\fBValue:\fP
-.PP
-.nf
-/* CSTYLED */ \
-        ((tvp)->tv_sec cmp (uvp)->tv_sec || \
-        ((tvp)->tv_sec == (uvp)->tv_sec && \
-        /* CSTYLED */ \
-        (tvp)->tv_usec cmp (uvp)->tv_usec))
-.fi
-.PP
-Definition at line 149 of file snmp_api.c.
-.SH "Function Documentation"
-.PP 
-.SS "int _sess_read (void * sessp, \fBnetsnmp_large_fd_set\fP * fdset)"
-.PP
-XXX-rks: why no SNMP_FREE(isp->packet); ??
-.PP
-XXX-rks: why no SNMP_FREE(isp->packet); ?? 
-.PP
-Definition at line 5715 of file snmp_api.c.
-.SS "int init_agent (const char * app)"
-.PP
-Initialize the agent. Calls into init_agent_read_config to set tha app's configuration file in the appropriate default storage space, NETSNMP_DS_LIB_APPTYPE. Need to call init_agent before calling init_snmp.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIapp\fP the configuration file to be read in, gets stored in default storage
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns non-zero on failure and zero on success.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBinit_snmp\fP 
-.RE
-.PP
-
-.PP
-Definition at line 277 of file snmp_vars.c.
-.SS "void init_snmp (const char * type)"
-.PP
-Calls the functions to do config file loading and mib \fBmodule\fP parsing in the correct order. \fBParameters:\fP
-.RS 4
-\fItype\fP label for the config file 'type'
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBinit_agent\fP 
-.RE
-.PP
-
-.PP
-Definition at line 796 of file snmp_api.c.
-.SS "int netsnmp_oid_compare_ll (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2, size_t * offpt)"
-.PP
-lexicographical compare two object identifiers and return the point where they differ Caution: this method is called often by command responder applications (ie, agent).
-.PP
-\fBReturns:\fP
-.RS 4
--1 if name1 < name2, 0 if name1 = name2, 1 if name1 > name2 and offpt = len where name1 != name2 
-.RE
-.PP
-
-.PP
-Definition at line 6716 of file snmp_api.c.
-.SS "int netsnmp_oid_equals (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
-.PP
-Compares 2 OIDs to determine if they are exactly equal. This should be faster than doing a snmp_oid_compare for different length OIDs, since the length is checked first and if != returns immediately. Might be very slighly faster if lengths are ==. 
-.PP
-\fBParameters:\fP
-.RS 4
-\fIin_name1\fP A pointer to the first oid. 
-.br
-\fIlen1\fP length of the first OID (in segments, not bytes) 
-.br
-\fIin_name2\fP A pointer to the second oid. 
-.br
-\fIlen2\fP length of the second OID (in segments, not bytes) 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 if they are equal, 1 if they are not. 
-.RE
-.PP
-
-.PP
-Definition at line 6797 of file snmp_api.c.
-.SS "int netsnmp_oid_find_prefix (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
-.PP
-Given two OIDs, determine the common prefix to them both. \fBParameters:\fP
-.RS 4
-\fIin_name1\fP A pointer to the first oid. 
-.br
-\fIlen1\fP Length of the first oid. 
-.br
-\fIin_name2\fP A pointer to the second oid. 
-.br
-\fIlen2\fP Length of the second oid. 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-length of common prefix 0 if no common prefix, -1 on error. 
-.RE
-.PP
-
-.PP
-Definition at line 6861 of file snmp_api.c.
-.SS "int netsnmp_oid_is_subtree (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
-.PP
-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 
-.PP
-\fBParameters:\fP
-.RS 4
-\fIin_name1\fP A pointer to the first oid. 
-.br
-\fIlen1\fP length of the first OID (in segments, not bytes) 
-.br
-\fIin_name2\fP A pointer to the second oid. 
-.br
-\fIlen2\fP length of the second OID (in segments, not bytes) 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 if one is a common prefix of the other. 
-.RE
-.PP
-
-.PP
-Definition at line 6840 of file snmp_api.c.
-.SS "int snmp_oid_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
-.PP
-lexicographical compare two object identifiers. Caution: this method is called often by command responder applications (ie, agent).
-.PP
-\fBReturns:\fP
-.RS 4
--1 if name1 < name2, 0 if name1 = name2, 1 if name1 > name2 
-.RE
-.PP
-
-.PP
-Definition at line 6667 of file snmp_api.c.
-.SS "int snmp_oidtree_compare (const oid * in_name1, size_t len1, const oid * in_name2, size_t len2)"
-.PP
-Compares 2 OIDs to determine if they are equal up until the shortest length. \fBParameters:\fP
-.RS 4
-\fIin_name1\fP A pointer to the first oid. 
-.br
-\fIlen1\fP length of the first OID (in segments, not bytes) 
-.br
-\fIin_name2\fP A pointer to the second oid. 
-.br
-\fIlen2\fP length of the second OID (in segments, not bytes) 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 if they are equal, 1 if in_name1 is > in_name2, or -1 if <. 
-.RE
-.PP
-
-.PP
-Definition at line 6769 of file snmp_api.c.
-.SS "\fBnetsnmp_variable_list\fP* snmp_pdu_add_variable (\fBnetsnmp_pdu\fP * pdu, const oid * name, size_t name_length, u_char type, const void * value, size_t len)"
-.PP
-Library API routines concerned with \fBvariable\fP bindings and values. 
-.PP
-Definition at line 6932 of file snmp_api.c.
-.SS "void snmp_sess_init (\fBnetsnmp_session\fP * session)"
-.PP
-Library API routines concerned with specifying and using SNMP 'sessions' including sending and receiving requests. 
-.PP
-Definition at line 718 of file snmp_api.c.
-.SS "\fBnetsnmp_session\fP* snmp_sess_session_lookup (void * sessp)"
-.PP
-Look up a session that already may have been closed. \fBParameters:\fP
-.RS 4
-\fIsessp\fP Opaque pointer, returned by snmp_sess_open.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Pointer to session upon success or NULL upon failure.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-snmp_sess_session() 
-.RE
-.PP
-
-.PP
-Definition at line 7525 of file snmp_api.c.
-.SS "void snmp_shutdown (const char * type)"
-.PP
-Shuts down the application, saving any needed persistent storage, and appropriate clean up. \fBParameters:\fP
-.RS 4
-\fItype\fP Label for the config file 'type' used
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void 
-.RE
-.PP
-
-.PP
-Definition at line 862 of file snmp_api.c.
-.SS "int snmpv3_engineID_probe (struct \fBsession_list\fP * slp, \fBnetsnmp_session\fP * in_session)"
-.PP
-probe for peer engineID \fBParameters:\fP
-.RS 4
-\fIslp\fP session list pointer. 
-.br
-\fIin_session\fP session for errors
-.RE
-.PP
-\fBNote:\fP
-.RS 4
-.IP "\(bu" 2
-called by _sess_open(), snmp_sess_add_ex()
-.IP "\(bu" 2
-in_session is the user supplied session provided to those functions.
-.IP "\(bu" 2
-the first session in slp should the internal allocated copy of in_session
-.PP
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 : error 
-.PP
-1 : ok 
-.RE
-.PP
-
-.PP
-Definition at line 1377 of file snmp_api.c.
-.SS "int snmpv3_probe_contextEngineID_rfc5343 (void * slp, \fBnetsnmp_session\fP * session)"
-.PP
-probe for engineID using RFC 5343 probing mechanisms Designed to be a callback for within a security model's probe_engineid hook. Since it's likely multiple security models won't have engineIDs to probe for then this function is a callback likely to be used by multiple future security models. E.G. both SSH and DTLS. 
-.PP
-Definition at line 1279 of file snmp_api.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/mib_api.3.def b/man/netsnmp_mib_api.3.def
similarity index 85%
rename from man/mib_api.3.def
rename to man/netsnmp_mib_api.3.def
index b05ed94..cc0d0cb 100644
--- a/man/mib_api.3.def
+++ b/man/netsnmp_mib_api.3.def
@@ -1,28 +1,43 @@
-.TH MIB_API 3 "22 Apr 2009" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_MIB_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-init_mib, add_mibdir, init_mib_internals,
+add_mibdir,
+netsnmp_init_mib,
 shutdown_mib,
-netsnmp_read_module, read_mib, read_all_mibs,
+netsnmp_read_module,
+read_mib,
+read_all_mibs,
 add_module_replacement,
-read_objid, snmp_parse_oid, get_module_node,
-snmp_set_mib_errors, snmp_set_mib_warnings, snmp_set_save_descriptions,
+snmp_set_mib_errors,
+snmp_set_mib_warnings,
+snmp_set_save_descriptions,
+read_objid,
+snmp_parse_oid,
+get_module_node,
 print_mib,
-print_objid, fprint_objid, snprint_objid,
-print_description, fprint_description, snprint_description - mib_api functions
+print_objid,
+fprint_objid,
+snprint_objid,
+print_description,
+fprint_description,
+snprint_description - netsnmp_mib_api functions
 .SH SYNOPSIS
 .B #include <net-snmp/mib_api.h>
 .PP
-.B "void init_mib(void);
-.PP
+.SS Initialisation and Shutdown
 .BI "int add_mibdir(const char *" "dirname" );
-.br
-.B "void init_mib_internals(void);
 .PP
+.B "void netsnmp_init_mib(void);
+.\".br
+.\".BI "void init_mib(void);"  "                (deprecated)"
+.\".br
+.\".BI "void init_mib_internals(void);"  "        (deprecated)"
+.br
 .B "void shutdown_mib(void);
 .SS Reading and Parsing MIBs
-.PP
 .BI "struct tree *netsnmp_read_module(const char *" "name" );
 .br
+.\".BI "struct tree *read_module(const char *" "name" ");"  "        (deprecated)"
+.\".PP
 .BI "struct tree *read_mib(const char *" "filename" );
 .br
 .B "struct tree *read_all_mibs(void);
@@ -35,7 +50,7 @@
 .PP
 .BI "void snmp_set_mib_warnings(int " level );
 .br
-.BI "void snmp_set_mib_errors(  int " level );
+.BI "void snmp_set_mib_errors(int " level );
 .br
 .BI "void snmp_set_save_descriptions(int " save ");"
 .SS Searching the MIB Tree
@@ -91,25 +106,28 @@
 .BR netsnmp_read_module .
 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
-.B init_mib_internals
-sets up the internal structures, preparatory to reading in MIB
-modules.  It should be called \fIafter\fP all calls to
-.BR add_mibdir ,
-and before any calls to
-.BR netsnmp_read_module .
-.PP
-.B init_mib
-is a convenience function that configures the MIB directory search path (using
+.\".B init_mib_internals
+.\"sets up the internal structures, preparatory to reading in MIB
+.\"modules.  It should be called \fIafter\fP all calls to
+.\".BR add_mibdir ,
+.\"and before any calls to
+.\".BR netsnmp_read_module .
+.\".PP
+.B netsnmp_init_mib
+configures the MIB directory search path (using
 .B add_mibdir
-), set up the internal MIB framework (using
-.B init_mib_internals
-), and then loads the appropriate MIB modules (using
+), sets up the internal MIB framework,
+and then loads the appropriate MIB modules (using
 .BR netsnmp_read_module " and " read_mib ")."
 See the ENVIRONMENTAL VARIABLES section for details.
 .br
 It should be called before any other
-routine that manipulates or accesses the MIB tree.
+routine that manipulates or accesses the MIB tree
+(but after any additional
+.B add_mibdir
+calls).
 .PP
 .B shutdown_mib
 will clear the information that was gathered by 
@@ -288,5 +306,4 @@
 .B init_mib
 only.
 .SH "SEE ALSO"
-.BR snmp_api "(3),"
-.BR output_api "(3)"
+netsnmp_session_api(3), netsnmp_pdu_api(3), netsnmp_varbind_api(3)
diff --git a/man/netsnmp_mib_handler_methods.3 b/man/netsnmp_mib_handler_methods.3
deleted file mode 100644
index 24d7dcc..0000000
--- a/man/netsnmp_mib_handler_methods.3
+++ /dev/null
@@ -1,19 +0,0 @@
-.TH "mib_handler_methods" 3 "23 Dec 2001" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-mib_handler_methods \- Defines the subhandlers to be called by the multiplexer helper. 
-.SH SYNOPSIS
-.br
-.PP
-\fC#include <multiplexer.h>\fP
-.PP
-.SH "DETAILED DESCRIPTION"
-.PP 
-Defines the subhandlers to be called by the multiplexer helper.
-.PP
-
-
-.SH "AUTHOR"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
\ No newline at end of file
diff --git a/man/netsnmp_mib_maintenance.3 b/man/netsnmp_mib_maintenance.3
deleted file mode 100644
index f408806..0000000
--- a/man/netsnmp_mib_maintenance.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH "mib_maintenance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-mib_maintenance \- 
-.PP
-Routines for maintaining a MIB table.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_generic_get_handler\fP (void)"
-.br
-.RI "\fICreate a MIB handler structure. \fP"
-.ti -1c
-.RI "\fBnetsnmp_generic_free_handler\fP (\fBnetsnmp_mib_handler\fP *handler)"
-.br
-.RI "\fIFree a MIB handler structure, releasing any related resources. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, void *table, \fBnetsnmp_table_registration_info\fP *table_info)"
-.br
-.RI "\fIRegister a MIB table with the SNMP agent. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_unregister\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIUnregister a MIB table from the SNMP agent. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_extract_table\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIExtract the table relating to a requested varbind. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_extract_row\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIExtract the row relating to a requested varbind. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_insert_row\fP (\fBnetsnmp_request_info\fP *request, void *row)"
-.br
-.RI "\fIAssociate a (new) row with the requested varbind. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Routines for maintaining a MIB table. 
-.SH "Function Documentation"
-.PP 
-.SS "void netsnmp_generic_extract_row (\fBnetsnmp_request_info\fP * request)"
-.PP
-Extract the row relating to a requested varbind. 
-.PP
-Definition at line 195 of file table_generic.c.
-.SS "void netsnmp_generic_extract_table (\fBnetsnmp_request_info\fP * request)"
-.PP
-Extract the table relating to a requested varbind. 
-.PP
-Definition at line 189 of file table_generic.c.
-.SS "netsnmp_generic_free_handler (\fBnetsnmp_mib_handler\fP * handler)"
-.PP
-Free a MIB handler structure, releasing any related resources. Possibly called automatically by 'netsnmp_unregister_handler' ? 
-.PP
-Definition at line 165 of file table_generic.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_generic_get_handler (void)"
-.PP
-Create a MIB handler structure. This will typically be invoked within the corresponding 'netsnmp_generic_register' routine (or the registration code of a sub-helper based on this helper).
-.PP
-Alternatively, it might be called from the initialisation code of a particular MIB table implementation. 
-.PP
-Definition at line 158 of file table_generic.c.
-.SS "void netsnmp_generic_insert_row (\fBnetsnmp_request_info\fP * request, void * row)"
-.PP
-Associate a (new) row with the requested varbind. The row should also be associated with any other varbinds that refer to the same index values. 
-.PP
-Definition at line 203 of file table_generic.c.
-.SS "int netsnmp_generic_register (\fBnetsnmp_handler_registration\fP * reginfo, void * table, \fBnetsnmp_table_registration_info\fP * table_info)"
-.PP
-Register a MIB table with the SNMP agent. 
-.PP
-Definition at line 172 of file table_generic.c.
-.SS "int netsnmp_generic_unregister (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-Unregister a MIB table from the SNMP agent. This should also release the internal representation of the table. ?? Is a table-specific version of this needed, or would 'netsnmp_unregister_handler' + 'netsnmp_generic_free_handler' do? 
-.PP
-Definition at line 183 of file table_generic.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_mib_utilities.3 b/man/netsnmp_mib_utilities.3
deleted file mode 100644
index 542d381..0000000
--- a/man/netsnmp_mib_utilities.3
+++ /dev/null
@@ -1,1300 +0,0 @@
-.TH "mib parsing and datatype manipulation routines." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-mib parsing and datatype manipulation routines. \- 
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fB_PrefixList\fP"
-.br
-.ti -1c
-.RI "struct \fBparse_hints\fP"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fB_PrefixList\fP * \fBPrefixListPtr\fP"
-.br
-.ti -1c
-.RI "typedef struct \fB_PrefixList\fP \fBPrefixList\fP"
-.br
-.in -1c
-.SS "Enumerations"
-
-.in +1c
-.ti -1c
-.RI "enum \fBinet_address_type\fP { \fBIPV4\fP =  1, \fBIPV6\fP =  2, \fBIPV4Z\fP =  3, \fBIPV6Z\fP =  4, \fBDNS\fP =  16 }"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fB_sprint_hexstring_line\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *cp, size_t line_len)"
-.br
-.RI "\fIPrints a hexadecimal string into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_hexstring\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *cp, size_t len)"
-.br
-.ti -1c
-.RI "int \fBsprint_realloc_asciistring\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *cp, size_t len)"
-.br
-.RI "\fIPrints an ascii string into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_octet_string\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an octet string into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_counter64\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a counter into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_opaque\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an object identifier into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_object_identifier\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an object identifier into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_timeticks\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a timetick \fBvariable\fP into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_hinted_integer\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, long val, const char decimaltype, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an integer according to the hint into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_integer\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an integer into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_uinteger\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an unsigned integer into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_gauge\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a gauge value into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_counter\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a counter value into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_networkaddress\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a network address into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_ipaddress\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints an ip-address into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_null\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a null value into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_bitstring\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIPrints a bit string into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_nsapaddress\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsprint_realloc_badtype\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIFallback routine for a bad type, prints 'Variable has bad type' into a buffer. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_by_type\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.RI "\fIUniversal print routine, prints a \fBvariable\fP into a buffer according to the \fBvariable\fP type. \fP"
-.ti -1c
-.RI "struct \fBtree\fP * \fBget_tree_head\fP (void)"
-.br
-.RI "\fIRetrieves the \fBtree\fP head. \fP"
-.ti -1c
-.RI "char * \fBsnmp_out_toggle_options\fP (char *options)"
-.br
-.ti -1c
-.RI "void \fBsnmp_out_toggle_options_usage\fP (const char *lead, FILE *outf)"
-.br
-.ti -1c
-.RI "char * \fBsnmp_in_options\fP (char *optarg, int argc, char *const *argv)"
-.br
-.ti -1c
-.RI "char * \fBsnmp_in_toggle_options\fP (char *options)"
-.br
-.ti -1c
-.RI "void \fBsnmp_in_toggle_options_usage\fP (const char *lead, FILE *outf)"
-.br
-.RI "\fIPrints out a help usage for the in* toggle options. \fP"
-.ti -1c
-.RI "void \fBregister_mib_handlers\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_set_mib_directory\fP (const char *dir)"
-.br
-.ti -1c
-.RI "char * \fBnetsnmp_get_mib_directory\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_fixup_mib_directory\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_mib\fP (void)"
-.br
-.RI "\fIInitialises the mib reader. \fP"
-.ti -1c
-.RI "void \fBinit_mib\fP (void)"
-.br
-.ti -1c
-.RI "int \fB_mibindex_add\fP (const char *dirname, int i)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_mibindex_load\fP (void)"
-.br
-.ti -1c
-.RI "char * \fBnetsnmp_mibindex_lookup\fP (const char *dirname)"
-.br
-.ti -1c
-.RI "FILE * \fBnetsnmp_mibindex_new\fP (const char *dirname)"
-.br
-.ti -1c
-.RI "void \fBshutdown_mib\fP (void)"
-.br
-.RI "\fIUnloads all mibs. \fP"
-.ti -1c
-.RI "void \fBprint_mib\fP (FILE *fp)"
-.br
-.RI "\fIPrints the MIBs to the file fp. \fP"
-.ti -1c
-.RI "void \fBprint_ascii_dump\fP (FILE *fp)"
-.br
-.ti -1c
-.RI "void \fBset_function\fP (struct \fBtree\fP *subtree)"
-.br
-.RI "\fISet's the printing function printomat in a subtree according it's type. \fP"
-.ti -1c
-.RI "int \fBread_objid\fP (const char *input, oid *output, size_t *out_len)"
-.br
-.RI "\fIReads an object identifier from an input string into internal OID form. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_sprint_realloc_objid\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, int *buf_overflow, const oid *objid, size_t objidlen)"
-.br
-.ti -1c
-.RI "struct \fBtree\fP * \fBnetsnmp_sprint_realloc_objid_tree\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, int *buf_overflow, const oid *objid, size_t objidlen)"
-.br
-.ti -1c
-.RI "int \fBsprint_realloc_objid\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const oid *objid, size_t objidlen)"
-.br
-.ti -1c
-.RI "int \fBsnprint_objid\fP (char *buf, size_t buf_len, const oid *objid, size_t objidlen)"
-.br
-.ti -1c
-.RI "void \fBprint_objid\fP (const oid *objid, size_t objidlen)"
-.br
-.RI "\fIPrints an oid to stdout. \fP"
-.ti -1c
-.RI "void \fBfprint_objid\fP (FILE *f, const oid *objid, size_t objidlen)"
-.br
-.RI "\fIPrints an oid to a file descriptor. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_variable\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "int \fBsnprint_variable\fP (char *buf, size_t buf_len, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "void \fBprint_variable\fP (const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.RI "\fIPrints a \fBvariable\fP to stdout. \fP"
-.ti -1c
-.RI "void \fBfprint_variable\fP (FILE *f, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.RI "\fIPrints a \fBvariable\fP to a file descriptor. \fP"
-.ti -1c
-.RI "int \fBsprint_realloc_value\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "int \fBsnprint_value\fP (char *buf, size_t buf_len, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "void \fBprint_value\fP (const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "void \fBfprint_value\fP (FILE *f, const oid *objid, size_t objidlen, const \fBnetsnmp_variable_list\fP *\fBvariable\fP)"
-.br
-.ti -1c
-.RI "int \fBbuild_oid_segment\fP (\fBnetsnmp_variable_list\fP *var)"
-.br
-.RI "\fITakes the value in VAR and turns it into an OID segment in var->name. \fP"
-.ti -1c
-.RI "int \fBbuild_oid_noalloc\fP (oid *in, size_t in_len, size_t *out_len, oid *prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "int \fBbuild_oid\fP (oid **out, size_t *out_len, oid *prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "int \fBparse_oid_indexes\fP (oid *oidIndex, size_t oidLen, \fBnetsnmp_variable_list\fP *data)"
-.br
-.ti -1c
-.RI "int \fBparse_one_oid_index\fP (oid **oidStart, size_t *oidLen, \fBnetsnmp_variable_list\fP *data, int complete)"
-.br
-.ti -1c
-.RI "int \fBdump_realloc_oid_to_inetaddress\fP (const int addr_type, const oid *objid, size_t objidlen, u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, char quotechar)"
-.br
-.ti -1c
-.RI "int \fBdump_realloc_oid_to_string\fP (const oid *objid, size_t objidlen, u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, char quotechar)"
-.br
-.ti -1c
-.RI "struct \fBtree\fP * \fBget_tree\fP (const oid *objid, size_t objidlen, struct \fBtree\fP *subtree)"
-.br
-.ti -1c
-.RI "void \fBprint_description\fP (oid *objid, size_t objidlen, int width)"
-.br
-.RI "\fIPrints on oid description on stdout. \fP"
-.ti -1c
-.RI "void \fBfprint_description\fP (FILE *f, oid *objid, size_t objidlen, int width)"
-.br
-.RI "\fIPrints on oid description into a file descriptor. \fP"
-.ti -1c
-.RI "int \fBsnprint_description\fP (char *buf, size_t buf_len, oid *objid, size_t objidlen, int width)"
-.br
-.ti -1c
-.RI "int \fBsprint_realloc_description\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, oid *objid, size_t objidlen, int width)"
-.br
-.ti -1c
-.RI "int \fBget_module_node\fP (const char *fname, const char *\fBmodule\fP, oid *objid, size_t *objidlen)"
-.br
-.ti -1c
-.RI "int \fBget_wild_node\fP (const char *name, oid *objid, size_t *objidlen)"
-.br
-.ti -1c
-.RI "int \fBget_node\fP (const char *name, oid *objid, size_t *objidlen)"
-.br
-.ti -1c
-.RI "void \fBclear_tree_flags\fP (register struct \fBtree\fP *tp)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report\fP (FILE *fp)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report_enable_labeledoid\fP (void)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report_enable_oid\fP (void)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report_enable_suffix\fP (void)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report_enable_symbolic\fP (void)"
-.br
-.ti -1c
-.RI "void \fBprint_oid_report_enable_mibchildoid\fP (void)"
-.br
-.ti -1c
-.RI "char * \fBuptime_string\fP (u_long timeticks, char *buf)"
-.br
-.RI "\fIConverts timeticks to hours, minutes, seconds string. \fP"
-.ti -1c
-.RI "char * \fBuptime_string_n\fP (u_long timeticks, char *buf, size_t buflen)"
-.br
-.ti -1c
-.RI "oid * \fBsnmp_parse_oid\fP (const char *argv, oid *root, size_t *rootlen)"
-.br
-.RI "\fIGiven a string, parses an oid out of it (if possible). \fP"
-.ti -1c
-.RI "const char * \fBparse_octet_hint\fP (const char *hint, const char *value, unsigned char **new_val, int *new_val_len)"
-.br
-.ti -1c
-.RI "u_char \fBmib_to_asn_type\fP (int mib_type)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_str2oid\fP (const char *S, oid *O, int L)"
-.br
-.RI "\fIConverts a string to its OID form. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid2chars\fP (char *C, int L, const oid *O)"
-.br
-.RI "\fIConverts an OID to its character form. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid2str\fP (char *S, int L, oid *O)"
-.br
-.RI "\fIConverts an OID to its string form. \fP"
-.ti -1c
-.RI "int \fBsnprint_by_type\fP (char *buf, size_t buf_len, \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_hexstring\fP (char *buf, size_t buf_len, const u_char *cp, size_t len)"
-.br
-.ti -1c
-.RI "int \fBsnprint_asciistring\fP (char *buf, size_t buf_len, const u_char *cp, size_t len)"
-.br
-.ti -1c
-.RI "int \fBsnprint_octet_string\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_opaque\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_object_identifier\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_timeticks\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_hinted_integer\fP (char *buf, size_t buf_len, long val, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_integer\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_uinteger\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_gauge\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_counter\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_networkaddress\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_ipaddress\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_null\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_bitstring\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_nsapaddress\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_counter64\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.ti -1c
-.RI "int \fBsnprint_badtype\fP (char *buf, size_t buf_len, const \fBnetsnmp_variable_list\fP *var, const struct \fBenum_list\fP *enums, const char *hint, const char *units)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "struct \fBtree\fP * \fBtree_head\fP"
-.br
-.ti -1c
-.RI "struct \fBtree\fP * \fBMib\fP"
-.br
-.ti -1c
-.RI "oid \fBRFC1213_MIB\fP [] = { 1, 3, 6, 1, 2, 1 }"
-.br
-.ti -1c
-.RI "\fBPrefixList\fP \fBmib_prefixes\fP []"
-.br
-.ti -1c
-.RI "char ** \fB_mibindexes\fP = NULL"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "int _sprint_hexstring_line (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const u_char * cp, size_t line_len)"
-.PP
-Prints a hexadecimal string into a buffer. The characters pointed by *cp are encoded as hexadecimal string.
-.PP
-If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP address of the buffer to print to. 
-.br
-\fIbuf_len\fP address to an integer containing the size of buf. 
-.br
-\fIout_len\fP incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIcp\fP the array of characters to encode. 
-.br
-\fIline_len\fP the array length of cp.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 292 of file mib.c.
-.SS "int build_oid (oid ** out, size_t * out_len, oid * prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-xxx-rks: should free previous value? 
-.PP
-Definition at line 3731 of file mib.c.
-.SS "int build_oid_segment (\fBnetsnmp_variable_list\fP * var)"
-.PP
-Takes the value in VAR and turns it into an OID segment in var->name. \fBParameters:\fP
-.RS 4
-\fIvar\fP The \fBvariable\fP.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-SNMPERR_SUCCESS or SNMPERR_GENERR 
-.RE
-.PP
-
-.PP
-Definition at line 3597 of file mib.c.
-.SS "void fprint_description (FILE * f, oid * objid, size_t objidlen, int width)"
-.PP
-Prints on oid description into a file descriptor. \fBParameters:\fP
-.RS 4
-\fIf\fP The file descriptor to print to. 
-.br
-\fIobjid\fP The object identifier. 
-.br
-\fIobjidlen\fP The object id length. 
-.br
-\fIwidth\fP Number of subidentifiers. 
-.RE
-.PP
-
-.PP
-Definition at line 4601 of file mib.c.
-.SS "void fprint_objid (FILE * f, const oid * objid, size_t objidlen)"
-.PP
-Prints an oid to a file descriptor. \fBParameters:\fP
-.RS 4
-\fIf\fP The file descriptor to print to. 
-.br
-\fIobjid\fP The oid to print 
-.br
-\fIobjidlen\fP The length of oidid. 
-.RE
-.PP
-
-.PP
-Definition at line 3320 of file mib.c.
-.SS "void fprint_variable (FILE * f, const oid * objid, size_t objidlen, const \fBnetsnmp_variable_list\fP * variable)"
-.PP
-Prints a \fBvariable\fP to a file descriptor. \fBParameters:\fP
-.RS 4
-\fIf\fP The file descriptor to print to. 
-.br
-\fIobjid\fP The object id. 
-.br
-\fIobjidlen\fP The length of teh object id. 
-.br
-\fI\fBvariable\fP\fP The \fBvariable\fP to print. 
-.RE
-.PP
-
-.PP
-Definition at line 3474 of file mib.c.
-.SS "struct \fBtree\fP* get_tree_head (void)\fC [read]\fP"
-.PP
-Retrieves the \fBtree\fP head. \fBReturns:\fP
-.RS 4
-the \fBtree\fP head. 
-.RE
-.PP
-
-.PP
-Definition at line 2031 of file mib.c.
-.SS "int get_wild_node (const char * name, oid * objid, size_t * objidlen)"\fBSee also:\fP
-.RS 4
-comments on find_best_tree_node for usage after first time. 
-.RE
-.PP
-
-.PP
-Definition at line 5639 of file mib.c.
-.SS "void netsnmp_fixup_mib_directory (void)"
-.PP
-swap in the new value and repeat 
-.PP
-Definition at line 2496 of file mib.c.
-.SS "char* netsnmp_get_mib_directory (void)"
-.PP
-Check if the environment \fBvariable\fP is set
-.PP
-Not set use hard coded path 
-.PP
-Definition at line 2449 of file mib.c.
-.SS "void netsnmp_init_mib (void)"
-.PP
-Initialises the mib reader. Library API routines concerned with MIB files and objects, and OIDs.
-.PP
-Reads in all settings from the environment. 
-.PP
-Definition at line 2543 of file mib.c.
-.SS "int netsnmp_oid2chars (char * C, int L, const oid * O)"
-.PP
-Converts an OID to its character form. in example 5 . 1 . 2 . 3 . 4 . 5 = 12345
-.PP
-\fBParameters:\fP
-.RS 4
-\fIC\fP The character buffer. 
-.br
-\fIL\fP The length of the buffer. 
-.br
-\fIO\fP The oid.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 on Sucess, 1 on failure. 
-.RE
-.PP
-
-.PP
-length 
-.PP
-Definition at line 6425 of file mib.c.
-.SS "int netsnmp_oid2str (char * S, int L, oid * O)"
-.PP
-Converts an OID to its string form. in example 5 . 'h' . 'e' . 'l' . 'l' . 'o' = 'hello\\0' (null terminated)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIS\fP The character string buffer. 
-.br
-\fIL\fP The length of the string buffer. 
-.br
-\fIO\fP The oid.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 on Sucess, 1 on failure. 
-.RE
-.PP
-
-.PP
-Definition at line 6453 of file mib.c.
-.SS "void netsnmp_set_mib_directory (const char * dir)"
-.PP
-New dir starts with '+', thus we add it.
-.PP
-If dir starts with '+' skip '+' it.
-.PP
-set_string calls strdup, so if we allocated memory, free it 
-.PP
-Definition at line 2394 of file mib.c.
-.SS "int netsnmp_str2oid (const char * S, oid * O, int L)"
-.PP
-Converts a string to its OID form. in example 'hello' = 5 . 'h' . 'e' . 'l' . 'l' . 'o'
-.PP
-\fBParameters:\fP
-.RS 4
-\fIS\fP The string. 
-.br
-\fIO\fP The oid. 
-.br
-\fIL\fP The length of the oid.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-0 on Sucess, 1 on failure. 
-.RE
-.PP
-
-.PP
-Definition at line 6390 of file mib.c.
-.SS "void print_description (oid * objid, size_t objidlen, int width)"
-.PP
-Prints on oid description on stdout. \fBSee also:\fP
-.RS 4
-\fBfprint_description\fP 
-.RE
-.PP
-
-.PP
-Definition at line 4585 of file mib.c.
-.SS "void print_mib (FILE * fp)"
-.PP
-Prints the MIBs to the file fp. \fBParameters:\fP
-.RS 4
-\fIfp\fP The file descriptor to print to. 
-.RE
-.PP
-
-.PP
-Definition at line 2901 of file mib.c.
-.SS "void print_objid (const oid * objid, size_t objidlen)"
-.PP
-Prints an oid to stdout. \fBParameters:\fP
-.RS 4
-\fIobjid\fP The oid to print 
-.br
-\fIobjidlen\fP The length of oidid. 
-.RE
-.PP
-
-.PP
-Definition at line 3306 of file mib.c.
-.SS "void print_variable (const oid * objid, size_t objidlen, const \fBnetsnmp_variable_list\fP * variable)"
-.PP
-Prints a \fBvariable\fP to stdout. \fBParameters:\fP
-.RS 4
-\fIobjid\fP The object id. 
-.br
-\fIobjidlen\fP The length of teh object id. 
-.br
-\fI\fBvariable\fP\fP The \fBvariable\fP to print. 
-.RE
-.PP
-
-.PP
-Definition at line 3458 of file mib.c.
-.SS "int read_objid (const char * input, oid * output, size_t * out_len)"
-.PP
-Reads an object identifier from an input string into internal OID form. When called, out_len must hold the maximum length of the output array.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIinput\fP the input string. 
-.br
-\fIoutput\fP the oid wirte. 
-.br
-\fIout_len\fP number of subid's in output.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 if successful.
-.RE
-.PP
-If an error occurs, this function returns 0 and MAY set snmp_errno. snmp_errno is NOT set if SET_SNMP_ERROR evaluates to nothing. This can make multi-threaded use a tiny bit more robust. 
-.PP
-Definition at line 2999 of file mib.c.
-.SS "void set_function (struct \fBtree\fP * subtree)"
-.PP
-Set's the printing function printomat in a subtree according it's type. \fBParameters:\fP
-.RS 4
-\fIsubtree\fP The subtree to set. 
-.RE
-.PP
-
-.PP
-Definition at line 2922 of file mib.c.
-.SS "void shutdown_mib (void)"
-.PP
-Unloads all mibs. 
-.PP
-Definition at line 2867 of file mib.c.
-.SS "void snmp_in_toggle_options_usage (const char * lead, FILE * outf)"
-.PP
-Prints out a help usage for the in* toggle options. \fBParameters:\fP
-.RS 4
-\fIlead\fP The lead to print for every line. 
-.br
-\fIoutf\fP The file descriptor to write to. 
-.RE
-.PP
-
-.PP
-Definition at line 2304 of file mib.c.
-.SS "oid* snmp_parse_oid (const char * argv, oid * root, size_t * rootlen)"
-.PP
-Given a string, parses an oid out of it (if possible). It will try to parse it based on predetermined configuration if present or by every method possible otherwise. If a suffix has been registered using NETSNMP_DS_LIB_OIDSUFFIX, it will be appended to the input string before processing.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIargv\fP The OID to string parse 
-.br
-\fIroot\fP An OID array where the results are stored. 
-.br
-\fIrootlen\fP The max length of the array going in and the data length coming out.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-The root oid pointer if successful, or NULL otherwise. 
-.RE
-.PP
-
-.PP
-Definition at line 5996 of file mib.c.
-.SS "int sprint_realloc_asciistring (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const u_char * cp, size_t len)"
-.PP
-Prints an ascii string into a buffer. The characters pointed by *cp are encoded as an ascii string.
-.PP
-If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP address of the buffer to print to. 
-.br
-\fIbuf_len\fP address to an integer containing the size of buf. 
-.br
-\fIout_len\fP incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIcp\fP the array of characters to encode. 
-.br
-\fIlen\fP the array length of cp.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 388 of file mib.c.
-.SS "int sprint_realloc_badtype (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Fallback routine for a bad type, prints 'Variable has bad type' into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1916 of file mib.c.
-.SS "int sprint_realloc_bitstring (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a bit string into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1777 of file mib.c.
-.SS "int sprint_realloc_by_type (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Universal print routine, prints a \fBvariable\fP into a buffer according to the \fBvariable\fP type. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1951 of file mib.c.
-.SS "int sprint_realloc_counter (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a counter value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1544 of file mib.c.
-.SS "int sprint_realloc_counter64 (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a counter into a buffer. The \fBvariable\fP var is encoded as a counter value.
-.PP
-If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 860 of file mib.c.
-.SS "int sprint_realloc_gauge (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a gauge value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1471 of file mib.c.
-.SS "int sprint_realloc_hinted_integer (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, long val, const char decimaltype, const char * hint, const char * units)"
-.PP
-Prints an integer according to the hint into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIval\fP The \fBvariable\fP to encode. 
-.br
-\fIdecimaltype\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may _NOT_ be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1197 of file mib.c.
-.SS "int sprint_realloc_integer (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an integer into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1271 of file mib.c.
-.SS "int sprint_realloc_ipaddress (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an ip-address into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1673 of file mib.c.
-.SS "int sprint_realloc_networkaddress (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a network address into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1607 of file mib.c.
-.SS "int sprint_realloc_null (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a null value into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1733 of file mib.c.
-.SS "int sprint_realloc_object_identifier (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an object identifier into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1053 of file mib.c.
-.SS "int sprint_realloc_octet_string (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an octet string into a buffer. The \fBvariable\fP var is encoded as octet string.
-.PP
-If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 448 of file mib.c.
-.SS "int sprint_realloc_opaque (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an object identifier into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 963 of file mib.c.
-.SS "int sprint_realloc_timeticks (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints a timetick \fBvariable\fP into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1123 of file mib.c.
-.SS "int sprint_realloc_uinteger (u_char ** buf, size_t * buf_len, size_t * out_len, int allow_realloc, const \fBnetsnmp_variable_list\fP * var, const struct \fBenum_list\fP * enums, const char * hint, const char * units)"
-.PP
-Prints an unsigned integer into a buffer. If allow_realloc is true the buffer will be (re)allocated to fit in the needed size. (Note: *buf may change due to this.)
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP Address of the buffer to print to. 
-.br
-\fIbuf_len\fP Address to an integer containing the size of buf. 
-.br
-\fIout_len\fP Incremented by the number of characters printed. 
-.br
-\fIallow_realloc\fP if not zero reallocate the buffer to fit the needed size. 
-.br
-\fIvar\fP The \fBvariable\fP to encode. 
-.br
-\fIenums\fP The enumeration ff this \fBvariable\fP is enumerated. may be NULL. 
-.br
-\fIhint\fP Contents of the DISPLAY-HINT clause of the MIB. See RFC 1903 Section 3.1 for details. may be NULL. 
-.br
-\fIunits\fP Contents of the UNITS clause of the MIB. may be NULL.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-1 on success, or 0 on failure (out of memory, or buffer to small when not allowed to realloc.) 
-.RE
-.PP
-
-.PP
-Definition at line 1374 of file mib.c.
-.SS "char* uptime_string (u_long timeticks, char * buf)"
-.PP
-Converts timeticks to hours, minutes, seconds string. CMU compatible does not show centiseconds.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItimeticks\fP The timeticks to convert. 
-.br
-\fIbuf\fP Buffer to write to, has to be at least 40 Bytes large.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-The buffer
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-uptimeString 
-.RE
-.PP
-
-.PP
-Definition at line 5961 of file mib.c.
-.SH "Variable Documentation"
-.PP 
-.SS "\fBPrefixList\fP mib_prefixes[]"\fBInitial value:\fP
-.PP
-.nf
- {
-    {&Standard_Prefix[0]},      
-    {'.iso.org.dod.internet.mgmt.mib-2'},
-    {'.iso.org.dod.internet.experimental'},
-    {'.iso.org.dod.internet.private'},
-    {'.iso.org.dod.internet.snmpParties'},
-    {'.iso.org.dod.internet.snmpSecrets'},
-    {NULL, 0}                   
-}
-.fi
-.PP
-Definition at line 181 of file mib.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_mode_end_call.3 b/man/netsnmp_mode_end_call.3
deleted file mode 100644
index d366921..0000000
--- a/man/netsnmp_mode_end_call.3
+++ /dev/null
@@ -1,69 +0,0 @@
-.TH "mode_end_call" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-mode_end_call \- 
-.PP
-At the end of a series of requests, call another handler hook.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_mode_end_call_handler\fP (\fBnetsnmp_mode_handler_list\fP *endlist)"
-.br
-.RI "\fIreturns a mode_end_call handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mode_handler_list\fP * \fBnetsnmp_mode_end_call_add_mode_callback\fP (\fBnetsnmp_mode_handler_list\fP *endlist, int mode, \fBnetsnmp_mib_handler\fP *callbackh)"
-.br
-.RI "\fIadds a mode specific callback to the callback list. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_mode_end_call_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-At the end of a series of requests, call another handler hook. 
-
-Handlers that want to loop through a series of requests and then receive a callback at the end of a particular MODE can use this helper to make this possible. For most modules, this is not needed as the handler itself could perform a for() loop around the request list and then perform its actions afterwards. However, if something like the serialize helper is in use this isn't possible because not all the requests for a given handler are being passed downward in a single group. Thus, this helper *must* be added above other helpers like the serialize helper to be useful.
-.PP
-Multiple mode specific handlers can be registered and will be called in the order they were regestered in. Callbacks regesterd with a mode of NETSNMP_MODE_END_ALL_MODES will be called for all modes. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_mode_end_call_handler (\fBnetsnmp_mode_handler_list\fP * endlist)"
-.PP
-returns a mode_end_call handler that can be injected into a given handler chain. \fBParameters:\fP
-.RS 4
-\fIendlist\fP The callback list for the handler to make use of. 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-An injectable Net-SNMP handler. 
-.RE
-.PP
-
-.PP
-Definition at line 45 of file mode_end_call.c.
-.SS "\fBnetsnmp_mode_handler_list\fP* netsnmp_mode_end_call_add_mode_callback (\fBnetsnmp_mode_handler_list\fP * endlist, int mode, \fBnetsnmp_mib_handler\fP * callbackh)"
-.PP
-adds a mode specific callback to the callback list. \fBParameters:\fP
-.RS 4
-\fIendlist\fP the information structure for the mode_end_call helper. Can be NULL to create a new list. 
-.br
-\fImode\fP the mode to be called upon. A mode of NETSNMP_MODE_END_ALL_MODES = all modes. 
-.br
-\fIcallbackh\fP the netsnmp_mib_handler callback to call. 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-the new registration information list upon success. 
-.RE
-.PP
-
-.PP
-Definition at line 65 of file mode_end_call.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_multiplexer.3 b/man/netsnmp_multiplexer.3
deleted file mode 100644
index e374365..0000000
--- a/man/netsnmp_multiplexer.3
+++ /dev/null
@@ -1,53 +0,0 @@
-.TH "multiplexer" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-multiplexer \- 
-.PP
-Splits mode requests into calls to different handlers.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_multiplexer_handler\fP (\fBnetsnmp_mib_handler_methods\fP *req)"
-.br
-.RI "\fIreturns a multiplixer handler given a \fBnetsnmp_mib_handler_methods\fP structure of subhandlers. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_multiplexer_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIimplements the multiplexer helper \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Splits mode requests into calls to different handlers. 
-
-The multiplexer helper lets you split the calling chain depending on the calling mode (get vs getnext vs set). Useful if you want different routines to handle different aspects of SNMP requests, which is very common for GET vs SET type actions.
-.PP
-Functionally:
-.PP
-.IP "1." 4
-GET requests call the get_method
-.IP "2." 4
-GETNEXT requests call the getnext_method, or if not present, the get_method.
-.IP "3." 4
-GETBULK requests call the getbulk_method, or if not present, the getnext_method, or if even that isn't present the get_method.
-.IP "4." 4
-SET requests call the set_method, or if not present return a SNMP_ERR_NOTWRITABLE error. 
-.PP
-
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_multiplexer_handler (\fBnetsnmp_mib_handler_methods\fP * req)"
-.PP
-returns a multiplixer handler given a \fBnetsnmp_mib_handler_methods\fP structure of subhandlers. 
-.PP
-Definition at line 33 of file multiplexer.c.
-.SS "int netsnmp_multiplexer_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-implements the multiplexer helper 
-.PP
-Definition at line 54 of file multiplexer.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_agent_request_info_s.3 b/man/netsnmp_netsnmp_agent_request_info_s.3
deleted file mode 100644
index d370961..0000000
--- a/man/netsnmp_netsnmp_agent_request_info_s.3
+++ /dev/null
@@ -1,48 +0,0 @@
-.TH "netsnmp_agent_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_agent_request_info_s \- 
-.PP
-The agent transaction request structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <snmp_agent.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "int \fBmode\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_agent_session_s\fP * \fBasp\fP"
-.br
-.RI "\fIpdu contains authinfo, eg \fP"
-.ti -1c
-.RI "\fBnetsnmp_data_list\fP * \fBagent_data\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The agent transaction request structure. 
-.PP
-\fBExamples: \fP
-.in +1c
-.PP
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 158 of file snmp_agent.h.
-.SH "Field Documentation"
-.PP 
-.SS "struct \fBnetsnmp_agent_session_s\fP* \fBnetsnmp_agent_request_info_s::asp\fP\fC [read]\fP"
-.PP
-pdu contains authinfo, eg 
-.PP
-Definition at line 162 of file snmp_agent.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_column_info_t.3 b/man/netsnmp_netsnmp_column_info_t.3
deleted file mode 100644
index e8a291c..0000000
--- a/man/netsnmp_netsnmp_column_info_t.3
+++ /dev/null
@@ -1,57 +0,0 @@
-.TH "netsnmp_column_info_t" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_column_info_t \- 
-.PP
-column info struct.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <table.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "char \fBisRange\fP"
-.br
-.ti -1c
-.RI "char \fBlist_count\fP"
-.br
-.RI "\fIonly useful if isRange == 0 \fP"
-.ti -1c
-.RI "union {"
-.br
-.ti -1c
-.RI "   unsigned int \fBrange\fP [2]"
-.br
-.ti -1c
-.RI "   unsigned int * \fBlist\fP"
-.br
-.ti -1c
-.RI "} \fBdetails\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_column_info_t\fP * \fBnext\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-column info struct. 
-
-OVERLAPPING RANGES ARE NOT SUPPORTED. 
-.PP
-Definition at line 58 of file table.h.
-.SH "Field Documentation"
-.PP 
-.SS "char \fBnetsnmp_column_info_t::list_count\fP"
-.PP
-only useful if isRange == 0 
-.PP
-Definition at line 61 of file table.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_data_list_s.3 b/man/netsnmp_netsnmp_data_list_s.3
deleted file mode 100644
index 1cfd69d..0000000
--- a/man/netsnmp_netsnmp_data_list_s.3
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH "netsnmp_data_list_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_data_list_s \- 
-.PP
-used to iterate through lists of data  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <data_list.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_data_list_s\fP * \fBnext\fP"
-.br
-.ti -1c
-.RI "char * \fBname\fP"
-.br
-.ti -1c
-.RI "void * \fBdata\fP"
-.br
-.RI "\fIThe pointer to the data passed on. \fP"
-.ti -1c
-.RI "Netsnmp_Free_List_Data * \fBfree_func\fP"
-.br
-.RI "\fImust know how to free netsnmp_data_list->data \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-used to iterate through lists of data 
-.PP
-Definition at line 41 of file data_list.h.
-.SH "Field Documentation"
-.PP 
-.SS "void* \fBnetsnmp_data_list_s::data\fP"
-.PP
-The pointer to the data passed on. 
-.PP
-Definition at line 45 of file data_list.h.
-.SS "Netsnmp_Free_List_Data* \fBnetsnmp_data_list_s::free_func\fP"
-.PP
-must know how to free netsnmp_data_list->data 
-.PP
-Definition at line 47 of file data_list.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_handler_registration_s.3 b/man/netsnmp_netsnmp_handler_registration_s.3
deleted file mode 100644
index 85dd3e1..0000000
--- a/man/netsnmp_netsnmp_handler_registration_s.3
+++ /dev/null
@@ -1,107 +0,0 @@
-.TH "netsnmp_handler_registration_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_handler_registration_s \- 
-.PP
-Root registration info.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <agent_handler.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "char * \fBhandlerName\fP"
-.br
-.RI "\fIfor mrTable listings, and other uses \fP"
-.ti -1c
-.RI "char * \fBcontextName\fP"
-.br
-.RI "\fINULL = default context. \fP"
-.ti -1c
-.RI "oid * \fBrootoid\fP"
-.br
-.RI "\fIwhere are we registered at? \fP"
-.ti -1c
-.RI "size_t \fBrootoid_len\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBhandler\fP"
-.br
-.RI "\fIhandler details \fP"
-.ti -1c
-.RI "int \fBmodes\fP"
-.br
-.ti -1c
-.RI "int \fBpriority\fP"
-.br
-.RI "\fImore optional stuff \fP"
-.ti -1c
-.RI "int \fBrange_subid\fP"
-.br
-.ti -1c
-.RI "oid \fBrange_ubound\fP"
-.br
-.ti -1c
-.RI "int \fBtimeout\fP"
-.br
-.ti -1c
-.RI "int \fBglobal_cacheid\fP"
-.br
-.ti -1c
-.RI "void * \fBmy_reg_void\fP"
-.br
-.RI "\fIvoid ptr for registeree \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Root registration info. 
-
-The variables handlerName, contextName, and rootoid need to be allocated on the heap, when the registration structure is unregistered using \fBunregister_mib_context()\fP the code attempts to free them. 
-.PP
-\fBExamples: \fP
-.in +1c
-.PP
-\fBdelayed_instance.c\fP, and \fBwatched.c\fP.
-.PP
-Definition at line 95 of file agent_handler.h.
-.SH "Field Documentation"
-.PP 
-.SS "char* \fBnetsnmp_handler_registration_s::contextName\fP"
-.PP
-NULL = default context. 
-.PP
-Definition at line 100 of file agent_handler.h.
-.SS "\fBnetsnmp_mib_handler\fP* \fBnetsnmp_handler_registration_s::handler\fP"
-.PP
-handler details 
-.PP
-Definition at line 111 of file agent_handler.h.
-.SS "char* \fBnetsnmp_handler_registration_s::handlerName\fP"
-.PP
-for mrTable listings, and other uses 
-.PP
-Definition at line 98 of file agent_handler.h.
-.SS "void* \fBnetsnmp_handler_registration_s::my_reg_void\fP"
-.PP
-void ptr for registeree 
-.PP
-Definition at line 126 of file agent_handler.h.
-.SS "int \fBnetsnmp_handler_registration_s::priority\fP"
-.PP
-more optional stuff 
-.PP
-Definition at line 117 of file agent_handler.h.
-.SS "oid* \fBnetsnmp_handler_registration_s::rootoid\fP"
-.PP
-where are we registered at? 
-.PP
-Definition at line 105 of file agent_handler.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_iterator_info_s.3 b/man/netsnmp_netsnmp_iterator_info_s.3
deleted file mode 100644
index 4266e02..0000000
--- a/man/netsnmp_netsnmp_iterator_info_s.3
+++ /dev/null
@@ -1,111 +0,0 @@
-.TH "netsnmp_iterator_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_iterator_info_s \- 
-.PP
-Holds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <table_iterator.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "Netsnmp_First_Data_Point * \fBget_first_data_point\fP"
-.br
-.RI "\fIResponsible for: returning the first set of 'index' data, a loop-context pointer, and optionally a data context pointer. \fP"
-.ti -1c
-.RI "Netsnmp_Next_Data_Point * \fBget_next_data_point\fP"
-.br
-.RI "\fIGiven the previous loop context, this should return the next loop context, associated index set and optionally a data context. \fP"
-.ti -1c
-.RI "Netsnmp_Make_Data_Context * \fBmake_data_context\fP"
-.br
-.RI "\fIIf a data context wasn't supplied by the get_first_data_point or get_next_data_point functions and the make_data_context pointer is defined, it will be called to convert a loop context into a data context. \fP"
-.ti -1c
-.RI "Netsnmp_Free_Loop_Context * \fBfree_loop_context\fP"
-.br
-.RI "\fIA function which should free the loop context. \fP"
-.ti -1c
-.RI "Netsnmp_Free_Data_Context * \fBfree_data_context\fP"
-.br
-.RI "\fIFrees a data context. \fP"
-.ti -1c
-.RI "Netsnmp_Free_Loop_Context * \fBfree_loop_context_at_end\fP"
-.br
-.RI "\fIFrees a loop context at the end of the entire iteration sequence. \fP"
-.ti -1c
-.RI "void * \fBmyvoid\fP"
-.br
-.RI "\fIThis can be used by client handlers to store any information they need. \fP"
-.ti -1c
-.RI "int \fBflags\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_registration_info\fP * \fBtable_reginfo\fP"
-.br
-.RI "\fIA pointer to the netsnmp_table_registration_info object this iterator is registered along with. \fP"
-.ti -1c
-.RI "Netsnmp_First_Data_Point * \fBget_row_indexes\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBindexes\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Holds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner. 
-
-The netsnmp_iterator_info typedef can be used instead of directly calling this struct if you would prefer. 
-.PP
-Definition at line 53 of file table_iterator.h.
-.SH "Field Documentation"
-.PP 
-.SS "Netsnmp_Free_Data_Context* \fBnetsnmp_iterator_info_s::free_data_context\fP"
-.PP
-Frees a data context. This will be called at any time a data context needs to be freed. This may be at the same time as a correspondng loop context is freed, or much much later. Multiple data contexts may be kept in existence at any time. 
-.PP
-Definition at line 82 of file table_iterator.h.
-.SS "Netsnmp_Free_Loop_Context* \fBnetsnmp_iterator_info_s::free_loop_context\fP"
-.PP
-A function which should free the loop context. This function is called at *each* iteration step, which is not-optimal for speed purposes. The use of free_loop_context_at_end instead is strongly encouraged. This can be set to NULL to avoid its usage. 
-.PP
-Definition at line 75 of file table_iterator.h.
-.SS "Netsnmp_Free_Loop_Context* \fBnetsnmp_iterator_info_s::free_loop_context_at_end\fP"
-.PP
-Frees a loop context at the end of the entire iteration sequence. Generally, this would free the loop context allocated by the get_first_data_point function (which would then be updated by each call to the get_next_data_point function). It is not called until the get_next_data_point function returns a NULL 
-.PP
-Definition at line 90 of file table_iterator.h.
-.SS "Netsnmp_First_Data_Point* \fBnetsnmp_iterator_info_s::get_first_data_point\fP"
-.PP
-Responsible for: returning the first set of 'index' data, a loop-context pointer, and optionally a data context pointer. 
-.PP
-Definition at line 57 of file table_iterator.h.
-.SS "Netsnmp_Next_Data_Point* \fBnetsnmp_iterator_info_s::get_next_data_point\fP"
-.PP
-Given the previous loop context, this should return the next loop context, associated index set and optionally a data context. 
-.PP
-Definition at line 62 of file table_iterator.h.
-.SS "Netsnmp_Make_Data_Context* \fBnetsnmp_iterator_info_s::make_data_context\fP"
-.PP
-If a data context wasn't supplied by the get_first_data_point or get_next_data_point functions and the make_data_context pointer is defined, it will be called to convert a loop context into a data context. 
-.PP
-Definition at line 68 of file table_iterator.h.
-.SS "void* \fBnetsnmp_iterator_info_s::myvoid\fP"
-.PP
-This can be used by client handlers to store any information they need. 
-.PP
-Definition at line 94 of file table_iterator.h.
-.SS "\fBnetsnmp_table_registration_info\fP* \fBnetsnmp_iterator_info_s::table_reginfo\fP"
-.PP
-A pointer to the netsnmp_table_registration_info object this iterator is registered along with. 
-.PP
-Definition at line 100 of file table_iterator.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_mib_handler_access_methods.3 b/man/netsnmp_netsnmp_mib_handler_access_methods.3
deleted file mode 100644
index 6ab57a0..0000000
--- a/man/netsnmp_netsnmp_mib_handler_access_methods.3
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH "netsnmp_mib_handler_access_methods" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_mib_handler_access_methods \- 
-.PP
-Defines the access methods to be called by the access_multiplexer helper.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <baby_steps.h>\fP
-.SH "Detailed Description"
-.PP 
-Defines the access methods to be called by the access_multiplexer helper. 
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_mib_handler_methods.3 b/man/netsnmp_netsnmp_mib_handler_methods.3
deleted file mode 100644
index 74941f9..0000000
--- a/man/netsnmp_netsnmp_mib_handler_methods.3
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH "netsnmp_mib_handler_methods" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_mib_handler_methods \- 
-.PP
-Defines the subhandlers to be called by the multiplexer helper.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <multiplexer.h>\fP
-.SH "Detailed Description"
-.PP 
-Defines the subhandlers to be called by the multiplexer helper. 
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_mib_handler_s.3 b/man/netsnmp_netsnmp_mib_handler_s.3
deleted file mode 100644
index 5556261..0000000
--- a/man/netsnmp_netsnmp_mib_handler_s.3
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH "netsnmp_mib_handler_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_mib_handler_s \- 
-.PP
-the mib handler structure to be registered  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <agent_handler.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "char * \fBhandler_name\fP"
-.br
-.ti -1c
-.RI "void * \fBmyvoid\fP"
-.br
-.RI "\fIfor handler's internal use \fP"
-.ti -1c
-.RI "int \fBflags\fP"
-.br
-.RI "\fIfor agent_handler's internal use \fP"
-.ti -1c
-.RI "int(* \fBaccess_method\fP )(struct \fBnetsnmp_mib_handler_s\fP *, struct \fBnetsnmp_handler_registration_s\fP *, struct \fBnetsnmp_agent_request_info_s\fP *, struct \fBnetsnmp_request_info_s\fP *)"
-.br
-.RI "\fIif you add more members, you probably also want to update \fP"
-.ti -1c
-.RI "void(* \fBdata_free\fP )(void *\fBmyvoid\fP)"
-.br
-.RI "\fIdata free hook for myvoid \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_mib_handler_s\fP * \fBnext\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_mib_handler_s\fP * \fBprev\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-the mib handler structure to be registered 
-.PP
-\fBExamples: \fP
-.in +1c
-.PP
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 48 of file agent_handler.h.
-.SH "Field Documentation"
-.PP 
-.SS "int(* \fBnetsnmp_mib_handler_s::access_method\fP)(struct \fBnetsnmp_mib_handler_s\fP *, struct \fBnetsnmp_handler_registration_s\fP *, struct \fBnetsnmp_agent_request_info_s\fP *, struct \fBnetsnmp_request_info_s\fP *)"
-.PP
-if you add more members, you probably also want to update _clone_handler in \fBagent_handler.c\fP. 
-.SS "void(* \fBnetsnmp_mib_handler_s::data_free\fP)(void *\fBmyvoid\fP)"
-.PP
-data free hook for myvoid 
-.SS "int \fBnetsnmp_mib_handler_s::flags\fP"
-.PP
-for agent_handler's internal use 
-.PP
-Definition at line 53 of file agent_handler.h.
-.SS "void* \fBnetsnmp_mib_handler_s::myvoid\fP"
-.PP
-for handler's internal use 
-.PP
-Definition at line 51 of file agent_handler.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_monitor_callback_header_s.3 b/man/netsnmp_netsnmp_monitor_callback_header_s.3
deleted file mode 100644
index 1a4c5a6..0000000
--- a/man/netsnmp_netsnmp_monitor_callback_header_s.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH "netsnmp_monitor_callback_header_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_monitor_callback_header_s \- 
-.PP
-callback header  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <object_monitor.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "unsigned int \fBevent\fP"
-.br
-.RI "\fIcallback type \fP"
-.ti -1c
-.RI "\fBnetsnmp_index\fP \fBmonitored_object\fP"
-.br
-.RI "\fIregistered oid \fP"
-.ti -1c
-.RI "int \fBpriority\fP"
-.br
-.RI "\fIpriority \fP"
-.ti -1c
-.RI "void * \fBwatcher_data\fP"
-.br
-.RI "\fIpointer given by watcher at registration \fP"
-.ti -1c
-.RI "void * \fBobject_info\fP"
-.br
-.RI "\fIpointer passed from the monitored object \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_monitor_callback_header_s\fP * \fBprivate\fP"
-.br
-.RI "\fIDO NOT USE, INTERNAL USE ONLY. \fP"
-.ti -1c
-.RI "int \fBrefs\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-callback header 
-.PP
-Definition at line 64 of file object_monitor.h.
-.SH "Field Documentation"
-.PP 
-.SS "unsigned int \fBnetsnmp_monitor_callback_header_s::event\fP"
-.PP
-callback type 
-.PP
-Definition at line 67 of file object_monitor.h.
-.SS "\fBnetsnmp_index\fP \fBnetsnmp_monitor_callback_header_s::monitored_object\fP"
-.PP
-registered oid 
-.PP
-Definition at line 70 of file object_monitor.h.
-.SS "void* \fBnetsnmp_monitor_callback_header_s::object_info\fP"
-.PP
-pointer passed from the monitored object 
-.PP
-Definition at line 79 of file object_monitor.h.
-.SS "int \fBnetsnmp_monitor_callback_header_s::priority\fP"
-.PP
-priority 
-.PP
-Definition at line 73 of file object_monitor.h.
-.SS "struct \fBnetsnmp_monitor_callback_header_s\fP* \fBnetsnmp_monitor_callback_header_s::private\fP\fC [read]\fP"
-.PP
-DO NOT USE, INTERNAL USE ONLY. 
-.PP
-Definition at line 82 of file object_monitor.h.
-.SS "void* \fBnetsnmp_monitor_callback_header_s::watcher_data\fP"
-.PP
-pointer given by watcher at registration 
-.PP
-Definition at line 76 of file object_monitor.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_request_info_s.3 b/man/netsnmp_netsnmp_request_info_s.3
deleted file mode 100644
index 6f4af18..0000000
--- a/man/netsnmp_netsnmp_request_info_s.3
+++ /dev/null
@@ -1,115 +0,0 @@
-.TH "netsnmp_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_request_info_s \- 
-.PP
-The netsnmp request info structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <snmp_agent.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBrequestvb\fP"
-.br
-.RI "\fI\fBvariable\fP bindings \fP"
-.ti -1c
-.RI "\fBnetsnmp_data_list\fP * \fBparent_data\fP"
-.br
-.RI "\fIcan be used to pass information on a per-request basis from a helper to the later handlers \fP"
-.ti -1c
-.RI "struct \fBnetsnmp_agent_request_info_s\fP * \fBagent_req_info\fP"
-.br
-.ti -1c
-.RI "oid * \fBrange_end\fP"
-.br
-.RI "\fIdon't free, reference to (struct \fBtree\fP)->end \fP"
-.ti -1c
-.RI "size_t \fBrange_end_len\fP"
-.br
-.ti -1c
-.RI "int \fBdelegated\fP"
-.br
-.ti -1c
-.RI "int \fBprocessed\fP"
-.br
-.ti -1c
-.RI "int \fBinclusive\fP"
-.br
-.ti -1c
-.RI "int \fBstatus\fP"
-.br
-.ti -1c
-.RI "int \fBindex\fP"
-.br
-.RI "\fIindex in original pdu \fP"
-.ti -1c
-.RI "int \fBrepeat\fP"
-.br
-.RI "\fIget-bulk \fP"
-.ti -1c
-.RI "int \fBorig_repeat\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBrequestvb_start\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_request_info_s\fP * \fBnext\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_request_info_s\fP * \fBprev\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_subtree_s\fP * \fBsubtree\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The netsnmp request info structure. 
-.PP
-\fBExamples: \fP
-.in +1c
-.PP
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 54 of file snmp_agent.h.
-.SH "Field Documentation"
-.PP 
-.SS "int \fBnetsnmp_request_info_s::index\fP"
-.PP
-index in original pdu 
-.PP
-Definition at line 84 of file snmp_agent.h.
-.SS "\fBnetsnmp_data_list\fP* \fBnetsnmp_request_info_s::parent_data\fP"
-.PP
-can be used to pass information on a per-request basis from a helper to the later handlers 
-.PP
-Definition at line 64 of file snmp_agent.h.
-.SS "oid* \fBnetsnmp_request_info_s::range_end\fP"
-.PP
-don't free, reference to (struct \fBtree\fP)->end 
-.PP
-Definition at line 72 of file snmp_agent.h.
-.SS "int \fBnetsnmp_request_info_s::repeat\fP"
-.PP
-get-bulk 
-.PP
-Definition at line 87 of file snmp_agent.h.
-.SS "\fBnetsnmp_variable_list\fP* \fBnetsnmp_request_info_s::requestvb\fP"
-.PP
-\fBvariable\fP bindings 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 58 of file snmp_agent.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_table_registration_info_s.3 b/man/netsnmp_netsnmp_table_registration_info_s.3
deleted file mode 100644
index e8b0c33..0000000
--- a/man/netsnmp_netsnmp_table_registration_info_s.3
+++ /dev/null
@@ -1,73 +0,0 @@
-.TH "netsnmp_table_registration_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_table_registration_info_s \- 
-.PP
-Table registration structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <table.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBindexes\fP"
-.br
-.RI "\fIlist of varbinds with only 'type' set \fP"
-.ti -1c
-.RI "unsigned int \fBnumber_indexes\fP"
-.br
-.RI "\fIcalculated automatically \fP"
-.ti -1c
-.RI "unsigned int \fBmin_column\fP"
-.br
-.RI "\fIthe minimum columns number. \fP"
-.ti -1c
-.RI "unsigned int \fBmax_column\fP"
-.br
-.RI "\fIthe maximum columns number \fP"
-.ti -1c
-.RI "\fBnetsnmp_column_info\fP * \fBvalid_columns\fP"
-.br
-.RI "\fImore details on columns \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Table registration structure. 
-.PP
-Definition at line 80 of file table.h.
-.SH "Field Documentation"
-.PP 
-.SS "\fBnetsnmp_variable_list\fP* \fBnetsnmp_table_registration_info_s::indexes\fP"
-.PP
-list of varbinds with only 'type' set 
-.PP
-Definition at line 82 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_registration_info_s::max_column\fP"
-.PP
-the maximum columns number 
-.PP
-Definition at line 93 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_registration_info_s::min_column\fP"
-.PP
-the minimum columns number. If there are columns in-between which are not valid, use valid_columns to get automatic column range checking. 
-.PP
-Definition at line 91 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_registration_info_s::number_indexes\fP"
-.PP
-calculated automatically 
-.PP
-Definition at line 84 of file table.h.
-.SS "\fBnetsnmp_column_info\fP* \fBnetsnmp_table_registration_info_s::valid_columns\fP"
-.PP
-more details on columns 
-.PP
-Definition at line 96 of file table.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_netsnmp_table_request_info_s.3 b/man/netsnmp_netsnmp_table_request_info_s.3
deleted file mode 100644
index 3b94397..0000000
--- a/man/netsnmp_netsnmp_table_request_info_s.3
+++ /dev/null
@@ -1,64 +0,0 @@
-.TH "netsnmp_table_request_info_s" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-netsnmp_table_request_info_s \- 
-.PP
-The table request info structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <table.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "unsigned int \fBcolnum\fP"
-.br
-.RI "\fI0 if OID not long enough \fP"
-.ti -1c
-.RI "unsigned int \fBnumber_indexes\fP"
-.br
-.RI "\fI0 if failure to parse any \fP"
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBindexes\fP"
-.br
-.RI "\fIcontents freed by helper upon exit \fP"
-.ti -1c
-.RI "oid \fBindex_oid\fP [MAX_OID_LEN]"
-.br
-.ti -1c
-.RI "size_t \fBindex_oid_len\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_registration_info\fP * \fBreg_info\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The table request info structure. 
-.PP
-Definition at line 108 of file table.h.
-.SH "Field Documentation"
-.PP 
-.SS "unsigned int \fBnetsnmp_table_request_info_s::colnum\fP"
-.PP
-0 if OID not long enough 
-.PP
-Definition at line 110 of file table.h.
-.SS "\fBnetsnmp_variable_list\fP* \fBnetsnmp_table_request_info_s::indexes\fP"
-.PP
-contents freed by helper upon exit 
-.PP
-Definition at line 114 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_request_info_s::number_indexes\fP"
-.PP
-0 if failure to parse any 
-.PP
-Definition at line 112 of file table.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_null_container.3 b/man/netsnmp_null_container.3
deleted file mode 100644
index d3c2fb4..0000000
--- a/man/netsnmp_null_container.3
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH "null_container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-null_container \- 
-.PP
-Helps you implement specialized containers.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_get_null\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_factory\fP * \fBnetsnmp_container_get_null_factory\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_container_null_init\fP (void)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement specialized containers. 
-
-This is a simple container that doesn't actually contain anything. All the methods simply log a debug message and return.
-.PP
-The original intent for this container is as a wrapper for a specialized container. Implement the functions you need, create a null_container, and override the default functions with your specialized versions.
-.PP
-You can use the 'container:null' debug token to see what functions are being called, to help determine if you need to implement them. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_oid_stash.3 b/man/netsnmp_oid_stash.3
deleted file mode 100644
index fad28e9..0000000
--- a/man/netsnmp_oid_stash.3
+++ /dev/null
@@ -1,210 +0,0 @@
-.TH "Store and retrieve data referenced by an OID." 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Store and retrieve data referenced by an OID. \- 
-.PP
-This is essentially a way of storing data associated with a given OID.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_create_sized_node\fP (size_t mysize)"
-.br
-.RI "\fICreate an netsnmp_oid_stash \fBnode\fP. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_create_node\fP (void)"
-.br
-.RI "\fICreates a netsnmp_oid_stash_node. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid_stash_add_data\fP (\fBnetsnmp_oid_stash_node\fP **root, const oid *lookup, size_t lookup_len, void *mydata)"
-.br
-.RI "\fIadds data to the stash at a given oid. \fP"
-.ti -1c
-.RI "\fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_get_node\fP (\fBnetsnmp_oid_stash_node\fP *root, const oid *lookup, size_t lookup_len)"
-.br
-.RI "\fIreturns a \fBnode\fP associated with a given OID. \fP"
-.ti -1c
-.RI "\fBnetsnmp_oid_stash_node\fP * \fBnetsnmp_oid_stash_getnext_node\fP (\fBnetsnmp_oid_stash_node\fP *root, oid *lookup, size_t lookup_len)"
-.br
-.RI "\fIreturns the next \fBnode\fP associated with a given OID. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_oid_stash_get_data\fP (\fBnetsnmp_oid_stash_node\fP *root, const oid *lookup, size_t lookup_len)"
-.br
-.RI "\fIreturns a data pointer associated with a given OID. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_oid_stash_store_all\fP (int majorID, int minorID, void *serverarg, void *clientarg)"
-.br
-.RI "\fIa wrapper around netsnmp_oid_stash_store for use with a \fBsnmp_alarm\fP. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_oid_stash_store\fP (\fBnetsnmp_oid_stash_node\fP *root, const char *tokenname, NetSNMPStashDump *dumpfn, oid *curoid, size_t curoid_len)"
-.br
-.RI "\fIstores data in a starsh \fBtree\fP to peristent storage. \fP"
-.ti -1c
-.RI "void \fBoid_stash_dump\fP (\fBnetsnmp_oid_stash_node\fP *root, char *prefix)"
-.br
-.RI "\fIFor debugging: dump the netsnmp_oid_stash \fBtree\fP to stdout. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_oid_stash_free\fP (\fBnetsnmp_oid_stash_node\fP **root, NetSNMPStashFreeNode *freefn)"
-.br
-.RI "\fIFrees the contents of a netsnmp_oid_stash \fBtree\fP. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_oid_stash_no_free\fP (void *bogus)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-This is essentially a way of storing data associated with a given OID. 
-
-It stores a bunch of data pointers within a memory \fBtree\fP that allows fairly efficient lookups with a heavily populated \fBtree\fP. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_oid_stash_add_data (\fBnetsnmp_oid_stash_node\fP ** root, const oid * lookup, size_t lookup_len, void * mydata)"
-.PP
-adds data to the stash at a given oid. \fBParameters:\fP
-.RS 4
-\fIroot\fP the top of the stash \fBtree\fP 
-.br
-\fIlookup\fP the oid index to store the data at. 
-.br
-\fIlookup_len\fP the length of the lookup oid. 
-.br
-\fImydata\fP the data to store
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-SNMPERR_SUCCESS on success, SNMPERR_GENERR if data is already there, SNMPERR_MALLOC on malloc failures or if arguments passed in with NULL values. 
-.RE
-.PP
-
-.PP
-Definition at line 83 of file oid_stash.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_oid_stash_node\fP* netsnmp_oid_stash_create_node (void)"
-.PP
-Creates a netsnmp_oid_stash_node. Assumes you want the default OID_STASH_CHILDREN_SIZE hash size for the \fBnode\fP. 
-.PP
-\fBReturns:\fP
-.RS 4
-NULL on error, otherwise the newly allocated \fBnode\fP 
-.RE
-.PP
-
-.PP
-Definition at line 66 of file oid_stash.c.
-.SS "\fBnetsnmp_oid_stash_node\fP* netsnmp_oid_stash_create_sized_node (size_t mysize)"
-.PP
-Create an netsnmp_oid_stash \fBnode\fP. \fBParameters:\fP
-.RS 4
-\fImysize\fP the size of the child pointer array
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-NULL on error, otherwise the newly allocated \fBnode\fP 
-.RE
-.PP
-
-.PP
-Definition at line 46 of file oid_stash.c.
-.SS "void netsnmp_oid_stash_free (\fBnetsnmp_oid_stash_node\fP ** root, NetSNMPStashFreeNode * freefn)"
-.PP
-Frees the contents of a netsnmp_oid_stash \fBtree\fP. \fBParameters:\fP
-.RS 4
-\fIroot\fP the top of the \fBtree\fP (or branch to be freed) 
-.br
-\fIfreefn\fP The function to be called on each data (void *) pointer. If left NULL the system free() function will be called 
-.RE
-.PP
-
-.PP
-Definition at line 401 of file oid_stash.c.
-.SS "void* netsnmp_oid_stash_get_data (\fBnetsnmp_oid_stash_node\fP * root, const oid * lookup, size_t lookup_len)"
-.PP
-returns a data pointer associated with a given OID. This is equivelent to netsnmp_oid_stash_get_node, but returns only the data not the entire \fBnode\fP.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIroot\fP the top of the stash 
-.br
-\fIlookup\fP the oid to search for 
-.br
-\fIlookup_len\fP the length of the search oid. 
-.RE
-.PP
-
-.PP
-Definition at line 282 of file oid_stash.c.
-.SS "\fBnetsnmp_oid_stash_node\fP* netsnmp_oid_stash_get_node (\fBnetsnmp_oid_stash_node\fP * root, const oid * lookup, size_t lookup_len)"
-.PP
-returns a \fBnode\fP associated with a given OID. \fBParameters:\fP
-.RS 4
-\fIroot\fP the top of the stash \fBtree\fP 
-.br
-\fIlookup\fP the oid to look up a \fBnode\fP for. 
-.br
-\fIlookup_len\fP the length of the lookup oid 
-.RE
-.PP
-
-.PP
-Definition at line 154 of file oid_stash.c.
-.SS "\fBnetsnmp_oid_stash_node\fP* netsnmp_oid_stash_getnext_node (\fBnetsnmp_oid_stash_node\fP * root, oid * lookup, size_t lookup_len)"
-.PP
-returns the next \fBnode\fP associated with a given OID. INCOMPLETE. This is equivelent to a GETNEXT operation. 
-.PP
-Definition at line 191 of file oid_stash.c.
-.SS "void netsnmp_oid_stash_store (\fBnetsnmp_oid_stash_node\fP * root, const char * tokenname, NetSNMPStashDump * dumpfn, oid * curoid, size_t curoid_len)"
-.PP
-stores data in a starsh \fBtree\fP to peristent storage. This function can be called to save all data in a stash \fBtree\fP to Net-SNMP's percent storage. Make sure you register a parsing function with the read_config system to re-incorperate your saved data into future trees.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIroot\fP the top of the stash to store. 
-.br
-\fItokenname\fP the file token name to save in (passing 'snmpd' will save things into snmpd.conf). 
-.br
-\fIdumpfn\fP A function which can dump the data stored at a particular \fBnode\fP into a char buffer. 
-.br
-\fIcuroid\fP must be a pointer to a OID array of length MAX_OID_LEN. 
-.br
-\fIcuroid_len\fP must be 0 for the top level call. 
-.RE
-.PP
-
-.PP
-Definition at line 334 of file oid_stash.c.
-.SS "int netsnmp_oid_stash_store_all (int majorID, int minorID, void * serverarg, void * clientarg)"
-.PP
-a wrapper around netsnmp_oid_stash_store for use with a \fBsnmp_alarm\fP. when calling \fBsnmp_alarm\fP, you can list this as a callback. The clientarg should be a pointer to a netsnmp_oid_stash_save_info pointer. It can also be called directly, of course. The last argument (clientarg) is the only one that is used. The rest are ignored by the function. 
-.PP
-\fBParameters:\fP
-.RS 4
-\fImajorID\fP 
-.br
-\fIminorID\fP 
-.br
-\fIserverarg\fP 
-.br
-\fIclientarg\fP A pointer to a netsnmp_oid_stash_save_info structure. 
-.RE
-.PP
-
-.PP
-Definition at line 304 of file oid_stash.c.
-.SS "void oid_stash_dump (\fBnetsnmp_oid_stash_node\fP * root, char * prefix)"
-.PP
-For debugging: dump the netsnmp_oid_stash \fBtree\fP to stdout. \fBParameters:\fP
-.RS 4
-\fIroot\fP The top of the \fBtree\fP 
-.br
-\fIprefix\fP a character string prefix printed to the beginning of each line. 
-.RE
-.PP
-
-.PP
-Definition at line 374 of file oid_stash.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_old_api.3 b/man/netsnmp_old_api.3
deleted file mode 100644
index a1328de..0000000
--- a/man/netsnmp_old_api.3
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH "old_api" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-old_api \- 
-.PP
-Calls mib \fBmodule\fP code written in the old style of code.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBget_old_api_handler\fP (void)"
-.br
-.RI "\fIreturns a old_api handler that should be the final calling handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_old_api\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags)"
-.br
-.RI "\fIRegisters an old API set into the mib \fBtree\fP. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_mib_table_row\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int var_subid, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags)"
-.br
-.RI "\fIregisters a row within a mib table \fP"
-.ti -1c
-.RI "int \fBnetsnmp_old_api_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIimplements the old_api handler \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Calls mib \fBmodule\fP code written in the old style of code. 
-
-This is a backwards compatilibity \fBmodule\fP that allows code written in the old API to be run under the new handler based architecture. Use it by calling \fBnetsnmp_register_old_api()\fP. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* get_old_api_handler (void)"
-.PP
-returns a old_api handler that should be the final calling handler. Don't use this function. Use the \fBnetsnmp_register_old_api()\fP function instead. 
-.PP
-Definition at line 38 of file old_api.c.
-.SS "int netsnmp_old_api_helper (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-implements the old_api handler 
-.PP
-Definition at line 235 of file old_api.c.
-.SS "int netsnmp_register_mib_table_row (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int var_subid, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
-.PP
-registers a row within a mib table 
-.PP
-Definition at line 116 of file old_api.c.
-.SS "int netsnmp_register_old_api (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
-.PP
-Registers an old API set into the mib \fBtree\fP. Functionally this mimics the old register_mib_context() function (and in fact the new register_mib_context() function merely calls this new old_api one). 
-.PP
-netsnmp_handler_registration_free(reginfo); already freed 
-.PP
-Definition at line 49 of file old_api.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/pdu_api.3.def b/man/netsnmp_pdu_api.3.def
similarity index 71%
rename from man/pdu_api.3.def
rename to man/netsnmp_pdu_api.3.def
index 578b4a7..a0f1aa1 100644
--- a/man/pdu_api.3.def
+++ b/man/netsnmp_pdu_api.3.def
@@ -1,7 +1,9 @@
-.TH PDU_API 3 "20 Apr 2009" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_PDU_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-snmp_pdu_create, snmp_clone_pdu, snmp_fix_pdu,
-snmp_free_pdu - pdu_api functions
+snmp_pdu_create,
+snmp_clone_pdu,
+snmp_fix_pdu,
+snmp_free_pdu - netsnmp_pdu_api functions
 .SH SYNOPSIS
 .B #include <net-snmp/pdu_api.h>
 .PP
@@ -24,5 +26,4 @@
 .PP
 .B snmp_free_pdu
 .SH "SEE ALSO"
-.BR varbind_api "(3)"
-.BR session_api "(3)"
+netsnmp_varbind_api(3), netsnmp_session_api(3)
diff --git a/man/netsnmp_read_config.3 b/man/netsnmp_read_config.3
deleted file mode 100644
index 53c137a..0000000
--- a/man/netsnmp_read_config.3
+++ /dev/null
@@ -1,364 +0,0 @@
-.TH "parsing various configuration files at run time" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-parsing various configuration files at run time \- 
-.PP
-The read_config related functions are a fairly extensible system of parsing various configuration files at the run time.  
-
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSNMP_CONFIG_DELIMETERS\fP   ' \\t='"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBregister_prenetsnmp_mib_handler\fP (const char *type, const char *token, void(*parser)(const char *, char *), void(*releaser)(void), const char *help)"
-.br
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBregister_app_prenetsnmp_mib_handler\fP (const char *token, void(*parser)(const char *, char *), void(*releaser)(void), const char *help)"
-.br
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBregister_config_handler\fP (const char *type, const char *token, void(*parser)(const char *, char *), void(*releaser)(void), const char *help)"
-.br
-.RI "\fIregister_config_handler registers handlers for certain tokens specified in certain types of files. \fP"
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBregister_app_config_handler\fP (const char *token, void(*parser)(const char *, char *), void(*releaser)(void), const char *help)"
-.br
-.ti -1c
-.RI "void \fBunregister_config_handler\fP (const char *type_param, const char *token)"
-.br
-.RI "\fIuregister_config_handler un-registers handlers given a specific type_param and token. \fP"
-.ti -1c
-.RI "void \fBunregister_app_config_handler\fP (const char *token)"
-.br
-.ti -1c
-.RI "void \fBunregister_all_config_handlers\fP (void)"
-.br
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBread_config_get_handlers\fP (const char *type)"
-.br
-.ti -1c
-.RI "void \fBread_config_with_type_when\fP (const char *filename, const char *type, int when)"
-.br
-.ti -1c
-.RI "void \fBread_config_with_type\fP (const char *filename, const char *type)"
-.br
-.ti -1c
-.RI "struct \fBconfig_line\fP * \fBread_config_find_handler\fP (struct \fBconfig_line\fP *line_handlers, const char *token)"
-.br
-.ti -1c
-.RI "int \fBrun_config_handler\fP (struct \fBconfig_line\fP *lptr, const char *token, char *cptr, int when)"
-.br
-.ti -1c
-.RI "int \fBsnmp_config_when\fP (char *line, int when)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_config\fP (char *line)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_remember_in_list\fP (char *line, struct \fBread_config_memory\fP **mem)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_remember_free_list\fP (struct \fBread_config_memory\fP **mem)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_process_memory_list\fP (struct \fBread_config_memory\fP **memp, int when, int clear)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_remember\fP (char *line)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_process_memories\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_process_memories_when\fP (int when, int clear)"
-.br
-.ti -1c
-.RI "void \fBread_config\fP (const char *filename, struct \fBconfig_line\fP *line_handler, int when)"
-.br
-.ti -1c
-.RI "void \fBfree_config\fP (void)"
-.br
-.ti -1c
-.RI "void \fBread_configs_optional\fP (const char *optional_config, int when)"
-.br
-.ti -1c
-.RI "void \fBread_configs\fP (void)"
-.br
-.ti -1c
-.RI "void \fBread_premib_configs\fP (void)"
-.br
-.ti -1c
-.RI "void \fBset_configuration_directory\fP (const char *dir)"
-.br
-.ti -1c
-.RI "const char * \fBget_configuration_directory\fP (void)"
-.br
-.ti -1c
-.RI "void \fBset_persistent_directory\fP (const char *dir)"
-.br
-.ti -1c
-.RI "const char * \fBget_persistent_directory\fP (void)"
-.br
-.ti -1c
-.RI "void \fBset_temp_file_pattern\fP (const char *pattern)"
-.br
-.ti -1c
-.RI "const char * \fBget_temp_file_pattern\fP (void)"
-.br
-.ti -1c
-.RI "void \fBread_config_files\fP (int when)"
-.br
-.ti -1c
-.RI "void \fBread_config_print_usage\fP (const char *lead)"
-.br
-.ti -1c
-.RI "void \fBread_config_store\fP (const char *type, const char *line)"
-.br
-.RI "\fIread_config_store intended for use by applications to store permenant configuration information generated by sets or persistent counters. \fP"
-.ti -1c
-.RI "void \fBread_app_config_store\fP (const char *line)"
-.br
-.ti -1c
-.RI "void \fBsnmp_save_persistent\fP (const char *type)"
-.br
-.ti -1c
-.RI "void \fBsnmp_clean_persistent\fP (const char *type)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_error\fP (const char *str,...)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_warn\fP (const char *str,...)"
-.br
-.ti -1c
-.RI "void \fBconfig_perror\fP (const char *str)"
-.br
-.ti -1c
-.RI "void \fBconfig_pwarn\fP (const char *str)"
-.br
-.ti -1c
-.RI "char * \fBskip_white\fP (char *ptr)"
-.br
-.ti -1c
-.RI "char * \fBskip_not_white\fP (char *ptr)"
-.br
-.ti -1c
-.RI "char * \fBskip_token\fP (char *ptr)"
-.br
-.ti -1c
-.RI "char * \fBcopy_nword\fP (char *from, char *to, int len)"
-.br
-.ti -1c
-.RI "char * \fBcopy_word\fP (char *from, char *to)"
-.br
-.ti -1c
-.RI "char * \fBread_config_save_octet_string\fP (char *saveto, u_char *str, size_t len)"
-.br
-.ti -1c
-.RI "char * \fBread_config_read_octet_string\fP (char *readfrom, u_char **str, size_t *len)"
-.br
-.ti -1c
-.RI "char * \fBread_config_save_objid\fP (char *saveto, oid *objid, size_t len)"
-.br
-.ti -1c
-.RI "char * \fBread_config_read_objid\fP (char *readfrom, oid **objid, size_t *len)"
-.br
-.ti -1c
-.RI "char * \fBread_config_read_data\fP (int type, char *readfrom, void *dataptr, size_t *len)"
-.br
-.RI "\fIread_config_read_data reads data of a given type from a token(s) on a configuration line. \fP"
-.ti -1c
-.RI "char * \fBread_config_read_memory\fP (int type, char *readfrom, char *dataptr, size_t *len)"
-.br
-.ti -1c
-.RI "char * \fBread_config_store_data\fP (int type, char *storeto, void *dataptr, size_t *len)"
-.br
-.RI "\fIread_config_store_data stores data of a given type to a configuration line into the storeto buffer. \fP"
-.ti -1c
-.RI "char * \fBread_config_store_data_prefix\fP (char prefix, int type, char *storeto, void *dataptr, size_t len)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "struct \fBconfig_files\fP * \fBconfig_files\fP = NULL"
-.br
-.ti -1c
-.RI "int \fBlinecount\fP"
-.br
-.ti -1c
-.RI "const char * \fBcurfilename\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The read_config related functions are a fairly extensible system of parsing various configuration files at the run time. 
-
-The idea is that the calling application is able to register handlers for certain tokens specified in certain types of files. The read_configs function can then be called to look for all the files that it has registrations for, find the first word on each line, and pass the remainder to the appropriately registered handler.
-.PP
-For persistent configuration storage you will need to use the read_config_read_data, read_config_store, and read_config_store_data APIs in conjunction with first registering a callback so when the agent shutsdown for whatever reason data is written to your configuration files. The following explains in more detail the sequence to make this happen.
-.PP
-This is the callback registration API, you need to call this API with the appropriate parameters in order to configure persistent storage needs.
-.PP
-int snmp_register_callback(int major, int minor, SNMPCallback *new_callback, void *arg);
-.PP
-You will need to set major to SNMP_CALLBACK_LIBRARY, minor to SNMP_CALLBACK_STORE_DATA. arg is whatever you want.
-.PP
-Your callback function's prototype is: int (SNMPCallback) (int majorID, int minorID, void *serverarg, void *clientarg);
-.PP
-The majorID, minorID and clientarg are what you passed in the callback registration above. When the callback is called you have to essentially transfer all your state from memory to disk. You do this by generating configuration lines into a buffer. The lines are of the form token followed by token parameters.
-.PP
-Finally storing is done using read_config_store(type, buffer); type is the application name this can be obtained from:
-.PP
-netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE);
-.PP
-Now, reading back the data: This is done by registering a config handler for your token using the register_config_handler function. Your handler will be invoked and you can parse in the data using the read_config_read APIs. 
-.SH "Function Documentation"
-.PP 
-.SS "char* read_config_read_data (int type, char * readfrom, void * dataptr, size_t * len)"
-.PP
-read_config_read_data reads data of a given type from a token(s) on a configuration line. The supported types are:
-.PP
-.IP "\(bu" 2
-ASN_INTEGER
-.IP "\(bu" 2
-ASN_TIMETICKS
-.IP "\(bu" 2
-ASN_UNSIGNED
-.IP "\(bu" 2
-ASN_OCTET_STR
-.IP "\(bu" 2
-ASN_BIT_STR
-.IP "\(bu" 2
-ASN_OBJECT_ID
-.PP
-.PP
-\fBParameters:\fP
-.RS 4
-\fItype\fP the asn data type to be read in.
-.br
-\fIreadfrom\fP the configuration line data to be read.
-.br
-\fIdataptr\fP an allocated pointer expected to match the type being read (int *, u_int *, char **, oid **)
-.br
-\fIlen\fP is the length of an asn oid or octet/bit string, not required for the asn integer, unsigned integer, and timeticks types
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-the next token in the configuration line. NULL if none left or if an unknown type. 
-.RE
-.PP
-
-.PP
-Definition at line 1859 of file read_config.c.
-.SS "void read_config_store (const char * type, const char * line)"
-.PP
-read_config_store intended for use by applications to store permenant configuration information generated by sets or persistent counters. Appends line to a file named either ENV(SNMP_PERSISTENT_FILE) or '<NETSNMP_PERSISTENT_DIRECTORY>/<type>.conf'. Adds a trailing newline to the stored file if necessary.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItype\fP is the application name 
-.br
-\fIline\fP is the configuration line written to the application name's configuration file
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void 
-.RE
-.PP
-
-.PP
-Definition at line 1262 of file read_config.c.
-.SS "char* read_config_store_data (int type, char * storeto, void * dataptr, size_t * len)"
-.PP
-read_config_store_data stores data of a given type to a configuration line into the storeto buffer. Calls read_config_store_data_prefix with the prefix parameter set to a char space. The supported types are:
-.PP
-.IP "\(bu" 2
-ASN_INTEGER
-.IP "\(bu" 2
-ASN_TIMETICKS
-.IP "\(bu" 2
-ASN_UNSIGNED
-.IP "\(bu" 2
-ASN_OCTET_STR
-.IP "\(bu" 2
-ASN_BIT_STR
-.IP "\(bu" 2
-ASN_OBJECT_ID
-.PP
-.PP
-\fBParameters:\fP
-.RS 4
-\fItype\fP the asn data type to be stored
-.br
-\fIstoreto\fP a pre-allocated char buffer which will contain the data to be stored
-.br
-\fIdataptr\fP contains the value to be stored, the supported pointers: (int *, u_int *, char **, oid **)
-.br
-\fIlen\fP is the length of the value to be stored (not required for the asn integer, unsigned integer, and timeticks types)
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-character pointer to the end of the line. NULL if an unknown type. 
-.RE
-.PP
-
-.PP
-Definition at line 2013 of file read_config.c.
-.SS "struct \fBconfig_line\fP* register_config_handler (const char * type, const char * token, void(*)(const char *, char *) parser, void(*)(void) releaser, const char * help)\fC [read]\fP"
-.PP
-register_config_handler registers handlers for certain tokens specified in certain types of files. Library API routines concerned with configuration and control of the behaviour of the library, agent and other applications.
-.PP
-Allows a \fBmodule\fP writer use/register multiple configuration files based off of the type parameter. A \fBmodule\fP writer may want to set up multiple configuration files to separate out related tasks/variables or just for management of where to put tokens as the \fBmodule\fP or modules get more complex in regard to handling token registrations.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItype\fP the configuration file used, e.g., if snmp.conf is the file where the token is located use 'snmp' here. Multiple colon separated tokens might be used. If NULL or '' then the configuration file used will be <application>.conf.
-.br
-\fItoken\fP the token being parsed from the file. Must be non-NULL.
-.br
-\fIparser\fP the handler function pointer that use the specified token and the rest of the line to do whatever is required Should be non-NULL in order to make use of this API.
-.br
-\fIreleaser\fP if non-NULL, the function specified is called if and when the configuration files are re-read. This function should free any resources allocated by the token handler function.
-.br
-\fIhelp\fP if non-NULL, used to display help information on the expected arguments after the token.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Pointer to a new config line entry or NULL on error. 
-.RE
-.PP
-
-.PP
-Definition at line 284 of file read_config.c.
-.SS "void unregister_config_handler (const char * type_param, const char * token)"
-.PP
-uregister_config_handler un-registers handlers given a specific type_param and token. \fBParameters:\fP
-.RS 4
-\fItype_param\fP the configuration file used where the token is located. Used to lookup the config file entry
-.br
-\fItoken\fP the token that is being unregistered
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-void 
-.RE
-.PP
-
-.PP
-Definition at line 315 of file read_config.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_read_only.3 b/man/netsnmp_read_only.3
deleted file mode 100644
index 1e5a35b..0000000
--- a/man/netsnmp_read_only.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.TH "read_only" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-read_only \- 
-.PP
-Make your handler read_only automatically The only purpose of this handler is to return an appropriate error for any requests passed to it in a SET mode.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_read_only_handler\fP (void)"
-.br
-.RI "\fIreturns a read_only handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_read_only_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_read_only_helper\fP (void)"
-.br
-.RI "\fIinitializes the read_only helper which then registers a read_only handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Make your handler read_only automatically The only purpose of this handler is to return an appropriate error for any requests passed to it in a SET mode. 
-
-Inserting it into your handler chain will ensure you're never asked to perform a SET request so you can ignore those error conditions. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_read_only_handler (void)"
-.PP
-returns a read_only handler that can be injected into a given handler chain. 
-.PP
-Definition at line 23 of file read_only.c.
-.SS "void netsnmp_init_read_only_helper (void)"
-.PP
-initializes the read_only helper which then registers a read_only handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 72 of file read_only.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_row_merge.3 b/man/netsnmp_row_merge.3
deleted file mode 100644
index c6daa4e..0000000
--- a/man/netsnmp_row_merge.3
+++ /dev/null
@@ -1,101 +0,0 @@
-.TH "row_merge" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-row_merge \- 
-.PP
-Calls sub handlers with request for one row at a time.  
-
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBROW_MERGE_WAITING\fP   0"
-.br
-.ti -1c
-.RI "#define \fBROW_MERGE_ACTIVE\fP   1"
-.br
-.ti -1c
-.RI "#define \fBROW_MERGE_DONE\fP   2"
-.br
-.ti -1c
-.RI "#define \fBROW_MERGE_HEAD\fP   3"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_row_merge_handler\fP (int prefix_len)"
-.br
-.RI "\fIreturns a row_merge handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_row_merge\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIfunctionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a row_merge handler at the same time for you. \fP"
-.ti -1c
-.RI "\fBnetsnmp_row_merge_status\fP * \fBnetsnmp_row_merge_status_get\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, int create_missing)"
-.br
-.RI "\fIretrieve row_merge_status \fP"
-.ti -1c
-.RI "int \fBnetsnmp_row_merge_status_first\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo)"
-.br
-.RI "\fIDetermine if this is the first row. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_row_merge_status_last\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo)"
-.br
-.RI "\fIDetermine if this is the last row. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_row_merge_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIImplements the row_merge handler. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_init_row_merge\fP (void)"
-.br
-.RI "\fIinitializes the row_merge helper which then registers a row_merge handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Calls sub handlers with request for one row at a time. 
-
-This helper splits a whole bunch of requests into chunks based on the row index that they refer to, and passes all requests for a given row to the lower handlers. This is useful for handlers that don't want to process multiple rows at the same time, but are happy to iterate through the request list for a single row. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_row_merge_handler (int prefix_len)"
-.PP
-returns a row_merge handler that can be injected into a given handler chain. 
-.PP
-Definition at line 28 of file row_merge.c.
-.SS "void netsnmp_init_row_merge (void)"
-.PP
-initializes the row_merge helper which then registers a row_merge handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 360 of file row_merge.c.
-.SS "int netsnmp_register_row_merge (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a row_merge handler at the same time for you. 
-.PP
-Definition at line 42 of file row_merge.c.
-.SS "int netsnmp_row_merge_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-Implements the row_merge handler. 
-.PP
-Definition at line 154 of file row_merge.c.
-.SS "int netsnmp_row_merge_status_first (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo)"
-.PP
-Determine if this is the first row. returns 1 if this is the first row for this pass of the handler. 
-.PP
-Definition at line 110 of file row_merge.c.
-.SS "\fBnetsnmp_row_merge_status\fP* netsnmp_row_merge_status_get (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, int create_missing)"
-.PP
-retrieve row_merge_status 
-.PP
-Definition at line 67 of file row_merge.c.
-.SS "int netsnmp_row_merge_status_last (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo)"
-.PP
-Determine if this is the last row. returns 1 if this is the last row for this pass of the handler. 
-.PP
-Definition at line 130 of file row_merge.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_scalar.3 b/man/netsnmp_scalar.3
deleted file mode 100644
index dcca671..0000000
--- a/man/netsnmp_scalar.3
+++ /dev/null
@@ -1,102 +0,0 @@
-.TH "scalar" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-scalar \- 
-.PP
-Process scalars easily.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_scalar_handler\fP (void)"
-.br
-.RI "\fICreates a scalar handler calling netsnmp_create_handler with a handler name defaulted to 'scalar' and access method, netsnmp_scalar_helper_handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_scalar\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIThis function registers a scalar helper handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_scalar\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIThis function registers a read only scalar helper handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_scalar_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Process scalars easily. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_scalar_handler (void)"
-.PP
-Creates a scalar handler calling netsnmp_create_handler with a handler name defaulted to 'scalar' and access method, netsnmp_scalar_helper_handler. \fBReturns:\fP
-.RS 4
-Returns a pointer to a netsnmp_mib_handler struct which contains the handler's name and the access method
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBnetsnmp_get_scalar_handler\fP 
-.PP
-\fBnetsnmp_register_scalar\fP 
-.RE
-.PP
-
-.PP
-Definition at line 47 of file scalar.c.
-.SS "int netsnmp_register_read_only_scalar (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-This function registers a read only scalar helper handler. This function is very similar to netsnmp_register_scalar the only addition is that the 'read_only' handler is injected into the handler chain prior to injecting the serialize handler and registering reginfo.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreginfo\fP a handler registration structure which could get created using netsnmp_create_handler_registration. Used to register a read only scalar helper handler.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILURE and MIB_DUPLICATE_REGISTRATION.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBnetsnmp_register_scalar\fP 
-.PP
-\fBnetsnmp_get_scalar_handler\fP 
-.RE
-.PP
-
-.PP
-Definition at line 110 of file scalar.c.
-.SS "int netsnmp_register_scalar (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-This function registers a scalar helper handler. The registered OID, reginfo->rootoid, space is extended for the instance subid using realloc() but the reginfo->rootoid_len length is not extended just yet. .This function subsequently injects the instance, scalar, and serialize helper handlers before actually registering reginfo.
-.PP
-Each handler is injected/pushed to the top of the handler chain list and will be processed last in first out, LIFO.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreginfo\fP a handler registration structure which could get created using netsnmp_create_handler_registration. Used to register a scalar helper handler.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILURE and MIB_DUPLICATE_REGISTRATION.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBnetsnmp_register_read_only_scalar\fP 
-.PP
-\fBnetsnmp_get_scalar_handler\fP 
-.RE
-.PP
-
-.PP
-Definition at line 75 of file scalar.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_scalar_group_group.3 b/man/netsnmp_scalar_group_group.3
deleted file mode 100644
index 5402fbc..0000000
--- a/man/netsnmp_scalar_group_group.3
+++ /dev/null
@@ -1,27 +0,0 @@
-.TH "scalar_group" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-scalar_group \- 
-.PP
-Process groups of scalars.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_scalar_group_handler\fP (oid first, oid last)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_scalar_group\fP (\fBnetsnmp_handler_registration\fP *reginfo, oid first, oid last)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_scalar_group_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Process groups of scalars. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_serialize.3 b/man/netsnmp_serialize.3
deleted file mode 100644
index df08e89..0000000
--- a/man/netsnmp_serialize.3
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH "serialize" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-serialize \- 
-.PP
-Calls sub handlers one request at a time.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_serialize_handler\fP (void)"
-.br
-.RI "\fIreturns a serialize handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_serialize\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIfunctionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a serialize handler at the same time for you. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_serialize_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIImplements the serial handler. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_init_serialize\fP (void)"
-.br
-.RI "\fIinitializes the serialize helper which then registers a serialize handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Calls sub handlers one request at a time. 
-
-This functionally passes in one request at a time into lower handlers rather than a whole bunch of requests at once. This is useful for handlers that don't want to iterate through the request lists themselves. Generally, this is probably less efficient so use with caution. The serialize handler might be useable to dynamically fix handlers with broken looping code, however. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_serialize_handler (void)"
-.PP
-returns a serialize handler that can be injected into a given handler chain. 
-.PP
-Definition at line 25 of file serialize.c.
-.SS "void netsnmp_init_serialize (void)"
-.PP
-initializes the serialize helper which then registers a serialize handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 87 of file serialize.c.
-.SS "int netsnmp_register_serialize (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-functionally the same as calling \fBnetsnmp_register_handler()\fP but also injects a serialize handler at the same time for you. 
-.PP
-Definition at line 34 of file serialize.c.
-.SS "int netsnmp_serialize_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-Implements the serial handler. 
-.PP
-Definition at line 42 of file serialize.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/snmp_sess_api.3.def b/man/netsnmp_sess_api.3.def
similarity index 88%
rename from man/snmp_sess_api.3.def
rename to man/netsnmp_sess_api.3.def
index 88414fc..8641538 100644
--- a/man/snmp_sess_api.3.def
+++ b/man/netsnmp_sess_api.3.def
@@ -1,10 +1,15 @@
-.TH SNMP_SESS_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_SESS_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
 .SH NAME
-snmp_sess_init, snmp_sess_open, snmp_sess_session,
-snmp_sess_send, snmp_sess_async_send,
-snmp_sess_select_info, snmp_sess_read,
-snmp_sess_timeout, snmp_sess_synch_response,
-snmp_sess_close, snmp_sess_error - session functions
+snmp_sess_init,
+snmp_sess_open,
+snmp_sess_session,
+snmp_sess_send,
+snmp_sess_async_send,
+snmp_sess_select_info,
+snmp_sess_read,
+snmp_sess_timeout,
+snmp_sess_close,
+snmp_sess_error - session functions
 .SH SYNOPSIS
 .B #include <net-snmp/session_api.h>
 .PP
@@ -36,12 +41,6 @@
 .PP
 .BI "void snmp_sess_timeout(void *" handle ");"
 .PP
-.BI "int snmp_sess_synch_response(void *" handle ","
-.br
-.BI "                         struct snmp_pdu *" pdu ", "
-.br
-.BI "                         struct snmp_pdu **" response ");"
-.PP
 .BI "int snmp_sess_close(void *" handle ");"
 .PP
 .BI "void snmp_sess_error(void *" handle ", int *" pcliberr ", "
@@ -100,12 +99,6 @@
 .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)
@@ -155,13 +148,6 @@
 .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 
@@ -225,4 +211,5 @@
 .RE
 .PP
 .SH "SEE ALSO"
-.BR select "(2), " snmp_api "(3), " snmp_api.h
+select(2), netsnmp_session_api(3), netsnmp_pdu_api(3),
+netsnmp_varbind_api(3), netsnmp_mib_api(3), snmp_api.h
diff --git a/man/session_api.3.def b/man/netsnmp_session_api.3.def
similarity index 76%
rename from man/session_api.3.def
rename to man/netsnmp_session_api.3.def
index 9ac2d5e..60b68d1 100644
--- a/man/session_api.3.def
+++ b/man/netsnmp_session_api.3.def
@@ -23,71 +23,70 @@
 .\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\" ******************************************************************/
-.TH SESSION_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_SESSION_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
 .SH NAME
-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, snmp_error, snmp_api_errstring \- session_api functions
+snmp_sess_init,
+snmp_open,
+snmp_send,
+snmp_select_info,
+snmp_read,
+snmp_timeout,
+snmp_close,
+snmp_perror,
+snmp_sess_perror,
+snmp_error,
+snmp_api_errstring \- netsnmp_session_api functions
 .SH SYNOPSIS
-#include <net-snmp/session_api.h>
+.B #include <net-snmp/session_api.h>
 .PP
-void snmp_sess_init ( struct snmp_session * );
+.BI "void snmp_sess_init ( netsnmp_session*" "sess" );
 .PP
-struct snmp_session * snmp_open ( struct snmp_session *);
+.BI "netsnmp_session* snmp_open ( netsnmp_session *" "sess");
 .RS
-.B /* Input parameter not used in active sessions */
+.I /* Input parameter not used in active sessions */
 .RE
 .PP
-int snmp_send ( struct snmp_session *session,
+.BI "int snmp_send ( netsnmp_session *" "session,"
 .RS
-struct snmp_pdu *pdu );
+.BI "netsnmp_pdu *" "pdu" );
 .RE
 .PP
-int snmp_async_send ( struct snmp_session *session,
+.BI "int snmp_select_info ( int * " numfds, "fd_set *" fdset,
 .RS
-struct snmp_pdu *pdu,
-snmp_callback callback,
-void *callbackData );
+.BI "struct timeval *" timeout, "int *" block );
 .RE
 .PP
-int snmp_select_info ( int *numfds, fd_set *fdset,
+.BI "void snmp_read ( fd_set *" fdset );
+.PP
+.B  void snmp_timeout ( void );
+.PP
+.BI "int snmp_close ( netsnmp_session *" session );
+.br
+.B  "int snmp_close_sessions ( void );
+.PP
+.SS Error Reporting
+.I (Move to output_api(3))
+.br
+.BI "void snmp_error ( netsnmp_session *session,
 .RS
-struct timeval *timeout, int *block );
+.BI "int *" pcliberr, "int *" psnmperr, "char **" pperrstring );
 .RE
 .PP
-void snmp_read ( fd_set *fdset );
+.BI "char *snmp_api_errstring ( int" snmperr );
 .PP
-void snmp_timeout ( void );
-.PP
-int snmp_synch_response ( struct snmp_session *session,
+.BI "void snmp_perror ( char *" msg );
 .RS
-struct snmp_pdu *pdu,
-struct snmp_pdu **response);
+.I /* for parsing errors only */
 .RE
 .PP
-int snmp_close ( struct snmp_session *session );
-.PP
-void snmp_error (
-struct snmp_session *session,
+.BI "void snmp_sess_perror (char *" msg, "netsnmp_session *" sess );
 .RS
-int *pcliberr,
-int *psnmperr,
-char **pperrstring );
-.RE
-.PP
-char *snmp_api_errstring ( int snmperr );
-.PP
-void snmp_perror ( char * msg );
-.RS
-.B /* for parsing errors only */
-.RE
-.PP
-void snmp_sess_perror (char * msg, struct snmp_session *);
-.RS
-.B /* all other SNMP library errors */
+.I /* all other SNMP library errors */
 .RE
 .PP
 .SH DESCRIPTION
 .I Snmp_sess_init
-prepares a struct snmp_session that sources transport characteristics
+prepares a netsnmp_session that sources transport characteristics
 and common information that will be used for a set of SNMP transactions.
 After this structure is passed to
 .I snmp_open
@@ -95,27 +94,19 @@
 .PP
 .I Snmp_open
 returns a pointer to a newly-formed
-.I struct snmp_session
+.I netsnmp_session
 object, which the application must use to reference the
 active SNMP session.
 .PP
 .I Snmp_send
-and
-.I snmp_async_send
-each take as input a pointer to a
-.I struct snmp_pdu
+takes as input a pointer to a
+.I netsnmp_pdu
 object.
 This structure contains information that describes a transaction
 that will be performed over an open session.
 .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
@@ -165,13 +156,6 @@
 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
@@ -200,13 +184,13 @@
 Note that in all cases except one,
 .IR snmp_sess_perror
 should be handed the
-.I struct snmp_session *
+.I netsnmp_session *
 pointer returned from
 .IR snmp_open.
 If
 .IR snmp_open
 returns a null pointer, pass the INPUT
-.I struct snmp_session *
+.I netsnmp_session *
 pointer used to call
 .IR snmp_open.
 .PP
@@ -261,4 +245,5 @@
 .I perror
 standard routine.
 .SH "SEE ALSO"
-select(2), snmp_api.h
+select(2), netsnmp_sess_api(3), netsnmp_mib_api(3), netsnmp_pdu_api(3),
+netsnmp_varbind_api(3), snmp_api.h
diff --git a/man/netsnmp_set_data.3 b/man/netsnmp_set_data.3
deleted file mode 100644
index 6ab42a4..0000000
--- a/man/netsnmp_set_data.3
+++ /dev/null
@@ -1,61 +0,0 @@
-.TH "set_data: helps storing and retriving of data during set transactions" 3 "17 Oct 2003" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-set_data: helps storing and retriving of data during set transactions \- The set_data helper. 
-More...
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_set_data_master_s\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_set_data_store_s\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_set_data_cache\fP (netsnmp_request_info *request, unsigned int magic_num, void *new_data, size_t new_data_len, void *old_data, size_t old_data_len)"
-.br
-.RI "\fIstores new and old information based on the magic number.\fP"
-.ti -1c
-.RI "netsnmp_set_data_ netsnmp_mib_handler * \fBnetsnmp_get_multiplexer_handler\fP (\fBnetsnmp_mib_handler_methods\fP *req)"
-.br
-.RI "\fIreturns a multiplixer handler given a \fBnetsnmp_mib_handler_methods\fP structure of subhandlers.\fP"
-.ti -1c
-.RI "int \fBnetsnmp_multiplexer_helper_handler\fP (netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests)"
-.br
-.RI "\fIimplements the multiplexer helper\fP"
-.in -1c
-.SH "DETAILED DESCRIPTION"
-.PP 
-The set_data helper.
-.PP
-.SH "FUNCTION DOCUMENTATION"
-.PP 
-.SS "netsnmp_set_data_ netsnmp_mib_handler* netsnmp_get_multiplexer_handler (\fBnetsnmp_mib_handler_methods\fP * req)"
-.PP
-returns a multiplixer handler given a \fBnetsnmp_mib_handler_methods\fP structure of subhandlers.
-.PP
-Definition at line 84 of file set_data.c.
-.PP
-References netsnmp_create_handler(), and netsnmp_multiplexer_helper_handler().
-.SS "int netsnmp_multiplexer_helper_handler (netsnmp_mib_handler * handler, netsnmp_handler_registration * reginfo, netsnmp_agent_request_info * reqinfo, netsnmp_request_info * requests)"
-.PP
-implements the multiplexer helper
-.PP
-Definition at line 105 of file set_data.c.
-.PP
-References netsnmp_call_handler(), and netsnmp_extract_iterator_context().
-.PP
-Referenced by netsnmp_get_multiplexer_handler().
-.SS "void netsnmp_set_data_cache (netsnmp_request_info * request, unsigned int magic_num, void * new_data, size_t new_data_len, void * old_data, size_t old_data_len)"
-.PP
-stores new and old information based on the magic number.
-.PP
-Definition at line 45 of file set_data.c.
-.PP
-References netsnmp_create_data_list(), netsnmp_extract_table_info(), netsnmp_request_add_list_data(), and SNMP_MIN.
diff --git a/man/netsnmp_snmp_agent.3 b/man/netsnmp_snmp_agent.3
deleted file mode 100644
index d6f4784..0000000
--- a/man/netsnmp_snmp_agent.3
+++ /dev/null
@@ -1,500 +0,0 @@
-.TH "net-snmp agent related processing" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-net-snmp agent related processing \- 
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBaddrCache\fP"
-.br
-.ti -1c
-.RI "struct \fB_agent_nsap\fP"
-.br
-.ti -1c
-.RI "struct \fBagent_set_cache_s\fP"
-.br
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSNMP_NEED_REQUEST_LIST\fP"
-.br
-.ti -1c
-.RI "#define \fBSNMP_ADDRCACHE_SIZE\fP   10"
-.br
-.ti -1c
-.RI "#define \fBSNMP_ADDRCACHE_MAXAGE\fP   300"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fB_agent_nsap\fP \fBagent_nsap\fP"
-.br
-.ti -1c
-.RI "typedef struct \fBagent_set_cache_s\fP \fBagent_set_cache\fP"
-.br
-.in -1c
-.SS "Enumerations"
-
-.in +1c
-.ti -1c
-.RI "enum { \fBSNMP_ADDRCACHE_UNUSED\fP =  0, \fBSNMP_ADDRCACHE_USED\fP =  1 }"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_agent_add_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, \fBnetsnmp_data_list\fP *\fBnode\fP)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_agent_remove_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, const char *name)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void * \fBnetsnmp_agent_get_list_data\fP (\fBnetsnmp_agent_request_info\fP *ari, const char *name)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_data_set\fP (\fBnetsnmp_agent_request_info\fP *ari)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_data_sets\fP (\fBnetsnmp_agent_request_info\fP *ari)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_free_agent_request_info\fP (\fBnetsnmp_agent_request_info\fP *ari)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_agent_check_packet\fP (\fBnetsnmp_session\fP *, struct \fBnetsnmp_transport_s\fP *, void *, int)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_agent_check_parse\fP (\fBnetsnmp_session\fP *, \fBnetsnmp_pdu\fP *, int)"
-.br
-.ti -1c
-.RI "void \fBdelete_subnetsnmp_tree_cache\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBhandle_pdu\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_handle_request\fP (\fBnetsnmp_agent_session\fP *asp, int status)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_wrap_up_request\fP (\fBnetsnmp_agent_session\fP *asp, int status)"
-.br
-.ti -1c
-.RI "int \fBcheck_delayed_request\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBhandle_getnext_loop\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.RI "\fIrepeatedly calls getnext handlers looking for an answer till all requests are satisified. \fP"
-.ti -1c
-.RI "int \fBhandle_set_loop\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_queued_chain_for\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_add_queued\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_remove_from_delegated\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_allocate_globalcacheid\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_get_local_cachid\fP (\fBnetsnmp_cachemap\fP *cache_store, int globalid)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_cachemap\fP * \fBnetsnmp_get_or_add_local_cachid\fP (\fBnetsnmp_cachemap\fP **cache_store, int globalid, int localid)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_free_cachemap\fP (\fBnetsnmp_cachemap\fP *cache_store)"
-.br
-.ti -1c
-.RI "\fBagent_set_cache\fP * \fBsave_set_cache\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBget_set_cache\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fB_reorder_getbulk\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE void \fB_fix_endofmibview\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBgetNextSessID\fP (void)"
-.br
-.ti -1c
-.RI "int \fBagent_check_and_process\fP (int block)"
-.br
-.RI "\fIThis function checks for packets arriving on the SNMP port and processes them(snmp_read) if some are found, using the select(). \fP"
-.ti -1c
-.RI "void \fBnetsnmp_addrcache_initialise\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_addrcache_destroy\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_addrcache_add\fP (const char *addr)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_addrcache_age\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_agent_nsap\fP (\fBnetsnmp_transport\fP *t)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_deregister_agent_nsap\fP (int handle)"
-.br
-.ti -1c
-.RI "int \fBinit_master_agent\fP (void)"
-.br
-.ti -1c
-.RI "void \fBclear_nsap_list\fP (void)"
-.br
-.ti -1c
-.RI "void \fBshutdown_master_agent\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_agent_session\fP * \fBinit_agent_snmp_session\fP (\fBnetsnmp_session\fP *session, \fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "void \fBfree_agent_snmp_session\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_for_delegated\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_delegated_chain_for\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_for_delegated_and_add\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_remove_delegated_requests_for_session\fP (\fBnetsnmp_session\fP *sess)"
-.br
-.ti -1c
-.RI "void \fBdump_sess_list\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_remove_and_free_agent_snmp_session\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_free_agent_snmp_session_by_session\fP (\fBnetsnmp_session\fP *sess, void(*free_request)(\fBnetsnmp_request_list\fP *))"
-.br
-.ti -1c
-.RI "int \fBhandle_snmp_packet\fP (int op, \fBnetsnmp_session\fP *session, int reqid, \fBnetsnmp_pdu\fP *pdu, void *magic)"
-.br
-.RI "\fIhandles an incoming SNMP packet into the agent \fP"
-.ti -1c
-.RI "\fBnetsnmp_request_info\fP * \fBnetsnmp_add_varbind_to_cache\fP (\fBnetsnmp_agent_session\fP *asp, int vbcount, \fBnetsnmp_variable_list\fP *varbind_ptr, \fBnetsnmp_subtree\fP *tp)"
-.br
-.ti -1c
-.RI "int \fBcheck_acm\fP (\fBnetsnmp_agent_session\fP *asp, u_char type)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_create_subtree_cache\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_reassign_requests\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_delete_request_infos\fP (\fBnetsnmp_request_info\fP *reqlist)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_delete_subtree_cache\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_all_requests_error\fP (\fBnetsnmp_agent_session\fP *asp, int look_for_specific)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_requests_error\fP (\fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_requests_status\fP (\fBnetsnmp_agent_session\fP *asp, \fBnetsnmp_request_info\fP *requests, int look_for_specific)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_all_requests_status\fP (\fBnetsnmp_agent_session\fP *asp, int look_for_specific)"
-.br
-.ti -1c
-.RI "int \fBhandle_var_requests\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_check_outstanding_agent_requests\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_check_transaction_id\fP (int transaction_id)"
-.br
-.RI "\fIDecide if the requested transaction_id is still being processed within the agent. \fP"
-.ti -1c
-.RI "int \fBcheck_getnext_results\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.RI "\fIreturns 1 if there are valid GETNEXT requests left. \fP"
-.ti -1c
-.RI "int \fBhandle_set\fP (\fBnetsnmp_agent_session\fP *asp)"
-.br
-.ti -1c
-.RI "NETSNMP_STATIC_INLINE int \fB_request_set_error\fP (\fBnetsnmp_request_info\fP *request, int mode, int error_value)"
-.br
-.RI "\fIset error for a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_request_set_error\fP (\fBnetsnmp_request_info\fP *request, int error_value)"
-.br
-.RI "\fIset error for a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_request_set_error_idx\fP (\fBnetsnmp_request_info\fP *request, int error_value, int idx)"
-.br
-.RI "\fIset error for a request within a request list \fP"
-.ti -1c
-.RI "NETSNMP_INLINE int \fBnetsnmp_request_set_error_all\fP (\fBnetsnmp_request_info\fP *requests, int error)"
-.br
-.RI "\fIset error for all requests \fP"
-.ti -1c
-.RI "u_long \fBnetsnmp_marker_uptime\fP (marker_t pm)"
-.br
-.ti -1c
-.RI "u_long \fBnetsnmp_timeval_uptime\fP (struct timeval *tv)"
-.br
-.ti -1c
-.RI "u_long \fBnetsnmp_get_agent_uptime\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_set_request_error\fP (\fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *request, int error_value)"
-.br
-.RI "\fIset error for a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_set_mode_request_error\fP (int mode, \fBnetsnmp_request_info\fP *request, int error_value)"
-.br
-.RI "\fIset error for a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_set_all_requests_error\fP (\fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests, int error_value)"
-.br
-.RI "\fIset error for all request \fP"
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "oid \fBversion_sysoid\fP [] = { NETSNMP_SYSTEM_MIB }"
-.br
-.ti -1c
-.RI "int \fBversion_sysoid_len\fP = OID_LENGTH(version_sysoid)"
-.br
-.ti -1c
-.RI "int \fBlog_addresses\fP = 0"
-.br
-.ti -1c
-.RI "\fBnetsnmp_agent_session\fP * \fBnetsnmp_processing_set\fP = NULL"
-.br
-.ti -1c
-.RI "\fBnetsnmp_agent_session\fP * \fBagent_delegated_list\fP = NULL"
-.br
-.ti -1c
-.RI "\fBnetsnmp_agent_session\fP * \fBnetsnmp_agent_queued_list\fP = NULL"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_running\fP = 1"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBmain_session\fP = NULL"
-.br
-.ti -1c
-.RI "struct timeval \fBstarttime\fP"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "NETSNMP_STATIC_INLINE int _request_set_error (\fBnetsnmp_request_info\fP * request, int mode, int error_value)"
-.PP
-set error for a request 
-.PP
-Definition at line 3431 of file snmp_agent.c.
-.SS "int agent_check_and_process (int block)"
-.PP
-This function checks for packets arriving on the SNMP port and processes them(snmp_read) if some are found, using the select(). If block is non zero, the function call blocks until a packet arrives
-.PP
-\fBParameters:\fP
-.RS 4
-\fIblock\fP used to control blocking in the select() function, 1 = block forever, and 0 = don't block
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns a positive integer if packets were processed, and -1 if an error was found. 
-.RE
-.PP
-
-.PP
-Definition at line 626 of file snmp_agent.c.
-.SS "int check_getnext_results (\fBnetsnmp_agent_session\fP * asp)"
-.PP
-returns 1 if there are valid GETNEXT requests left. Returns 0 if not. 
-.PP
-Definition at line 2883 of file snmp_agent.c.
-.SS "int handle_getnext_loop (\fBnetsnmp_agent_session\fP * asp)"
-.PP
-repeatedly calls getnext handlers looking for an answer till all requests are satisified. It's expected that one pass has been made before entering this function 
-.PP
-Definition at line 3000 of file snmp_agent.c.
-.SS "int handle_snmp_packet (int op, \fBnetsnmp_session\fP * session, int reqid, \fBnetsnmp_pdu\fP * pdu, void * magic)"
-.PP
-handles an incoming SNMP packet into the agent 
-.PP
-Definition at line 1835 of file snmp_agent.c.
-.SS "\fBnetsnmp_request_info\fP* netsnmp_add_varbind_to_cache (\fBnetsnmp_agent_session\fP * asp, int vbcount, \fBnetsnmp_variable_list\fP * varbind_ptr, \fBnetsnmp_subtree\fP * tp)"
-.PP
-\fBTodo\fP
-.RS 4
-make this be more intelligent about ranges. Right now we merely take the highest level commonality of a registration range and use that. At times we might be able to be smarter about checking the range itself as opposed to the \fBnode\fP above where the range exists, but I doubt this will come up all that frequently. 
-.RE
-.PP
-
-.PP
-Definition at line 1944 of file snmp_agent.c.
-.SS "int netsnmp_check_transaction_id (int transaction_id)"
-.PP
-Decide if the requested transaction_id is still being processed within the agent. This is used to validate whether a delayed cache (containing possibly freed pointers) is still usable.
-.PP
-returns SNMPERR_SUCCESS if it's still valid, or SNMPERR_GENERR if not. 
-.PP
-Definition at line 2786 of file snmp_agent.c.
-.SS "int netsnmp_request_set_error (\fBnetsnmp_request_info\fP * request, int error_value)"
-.PP
-set error for a request \fBParameters:\fP
-.RS 4
-\fIrequest\fP request which has error 
-.br
-\fIerror_value\fP error value for request 
-.RE
-.PP
-
-.PP
-Definition at line 3499 of file snmp_agent.c.
-.SS "NETSNMP_INLINE int netsnmp_request_set_error_all (\fBnetsnmp_request_info\fP * requests, int error)"
-.PP
-set error for all requests \fBParameters:\fP
-.RS 4
-\fIrequests\fP request list 
-.br
-\fIerror\fP error value for requests 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-SNMPERR_SUCCESS, or an error code 
-.RE
-.PP
-
-.PP
-paranoid sanity checks 
-.PP
-Definition at line 3542 of file snmp_agent.c.
-.SS "int netsnmp_request_set_error_idx (\fBnetsnmp_request_info\fP * request, int error_value, int idx)"
-.PP
-set error for a request within a request list \fBParameters:\fP
-.RS 4
-\fIrequest\fP head of the request list 
-.br
-\fIerror_value\fP error value for request 
-.br
-\fIidx\fP index of the request which has the error 
-.RE
-.PP
-
-.PP
-Definition at line 3514 of file snmp_agent.c.
-.SS "int netsnmp_set_all_requests_error (\fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests, int error_value)"
-.PP
-set error for all request \fBDeprecated\fP
-.RS 4
-use netsnmp_request_set_error_all 
-.RE
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreqinfo\fP agent_request_info pointer for requests 
-.br
-\fIrequests\fP request list 
-.br
-\fIerror_value\fP error value for requests 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-error_value 
-.RE
-.PP
-
-.PP
-Definition at line 3655 of file snmp_agent.c.
-.SS "int netsnmp_set_mode_request_error (int mode, \fBnetsnmp_request_info\fP * request, int error_value)"
-.PP
-set error for a request deprecated, use netsnmp_request_set_error instead
-.PP
-\fBDeprecated\fP
-.RS 4
-, use netsnmp_request_set_error instead 
-.RE
-.PP
-\fBParameters:\fP
-.RS 4
-\fImode\fP Net-SNMP agent processing mode 
-.br
-\fIrequest\fP request_info pointer 
-.br
-\fIerror_value\fP error value for requests 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-error_value 
-.RE
-.PP
-
-.PP
-Definition at line 3639 of file snmp_agent.c.
-.SS "int netsnmp_set_request_error (\fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * request, int error_value)"
-.PP
-set error for a request deprecated, use netsnmp_request_set_error instead
-.PP
-\fBDeprecated\fP
-.RS 4
-, use netsnmp_request_set_error instead 
-.RE
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreqinfo\fP agent_request_info pointer for request 
-.br
-\fIrequest\fP request_info pointer 
-.br
-\fIerror_value\fP error value for requests 
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-error_value 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 3620 of file snmp_agent.c.
-.SS "int netsnmp_wrap_up_request (\fBnetsnmp_agent_session\fP * asp, int status)"
-.PP
-if asp->pdu 
-.PP
-Definition at line 1581 of file snmp_agent.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_alarm.3 b/man/netsnmp_snmp_alarm.3
deleted file mode 100644
index 01bcbad..0000000
--- a/man/netsnmp_snmp_alarm.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.TH "snmp_alarm" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-snmp_alarm \- 
-.SH SYNOPSIS
-.br
-.PP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "struct timeval \fBt\fP"
-.br
-.ti -1c
-.RI "unsigned int \fBflags\fP"
-.br
-.ti -1c
-.RI "unsigned int \fBclientreg\fP"
-.br
-.ti -1c
-.RI "struct timeval \fBt_last\fP"
-.br
-.ti -1c
-.RI "struct timeval \fBt_next\fP"
-.br
-.ti -1c
-.RI "void * \fBclientarg\fP"
-.br
-.ti -1c
-.RI "SNMPAlarmCallback * \fBthecallback\fP"
-.br
-.ti -1c
-.RI "struct \fBsnmp_alarm\fP * \fBnext\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Definition at line 16 of file snmp_alarm.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_client.3 b/man/netsnmp_snmp_client.3
deleted file mode 100644
index 8c8c1ab..0000000
--- a/man/netsnmp_snmp_client.3
+++ /dev/null
@@ -1,158 +0,0 @@
-.TH "various PDU processing routines" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-various PDU processing routines \- 
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBsnmp_pdu_create\fP (int command)"
-.br
-.RI "\fILibrary API routines concerned with SNMP PDUs. \fP"
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_add_null_var\fP (\fBnetsnmp_pdu\fP *pdu, const oid *name, size_t name_length)"
-.br
-.ti -1c
-.RI "int \fBsnmp_clone_var\fP (\fBnetsnmp_variable_list\fP *var, \fBnetsnmp_variable_list\fP *newvar)"
-.br
-.ti -1c
-.RI "int \fBsnmp_clone_mem\fP (void **dstPtr, const void *srcPtr, unsigned len)"
-.br
-.ti -1c
-.RI "void \fBsnmp_reset_var_buffers\fP (\fBnetsnmp_variable_list\fP *var)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBsnmp_clone_varbind\fP (\fBnetsnmp_variable_list\fP *varlist)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBsnmp_clone_pdu\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBsnmp_split_pdu\fP (\fBnetsnmp_pdu\fP *pdu, int skip_count, int copy_count)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_pdu\fP * \fBsnmp_fix_pdu\fP (\fBnetsnmp_pdu\fP *pdu, int command)"
-.br
-.ti -1c
-.RI "unsigned long \fBsnmp_varbind_len\fP (\fBnetsnmp_pdu\fP *pdu)"
-.br
-.ti -1c
-.RI "int \fBsnmp_set_var_objid\fP (\fBnetsnmp_variable_list\fP *vp, const oid *objid, size_t name_length)"
-.br
-.ti -1c
-.RI "int \fBsnmp_set_var_typed_value\fP (\fBnetsnmp_variable_list\fP *newvar, u_char type, const void *val_str, size_t val_len)"
-.br
-.RI "\fIsnmp_set_var_typed_value is used to set data into the netsnmp_variable_list structure. \fP"
-.ti -1c
-.RI "int \fBsnmp_set_var_typed_integer\fP (\fBnetsnmp_variable_list\fP *newvar, u_char type, long val)"
-.br
-.ti -1c
-.RI "int \fBcount_varbinds\fP (\fBnetsnmp_variable_list\fP *var_ptr)"
-.br
-.ti -1c
-.RI "int \fBcount_varbinds_of_type\fP (\fBnetsnmp_variable_list\fP *var_ptr, u_char type)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBfind_varbind_of_type\fP (\fBnetsnmp_variable_list\fP *var_ptr, u_char type)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBfind_varbind_in_list\fP (\fBnetsnmp_variable_list\fP *vblist, oid *name, size_t len)"
-.br
-.ti -1c
-.RI "int \fBsnmp_set_var_value\fP (\fBnetsnmp_variable_list\fP *vars, const void *value, size_t len)"
-.br
-.ti -1c
-.RI "void \fBsnmp_replace_var_types\fP (\fBnetsnmp_variable_list\fP *vbl, u_char old_type, u_char new_type)"
-.br
-.ti -1c
-.RI "void \fBsnmp_reset_var_types\fP (\fBnetsnmp_variable_list\fP *vbl, u_char new_type)"
-.br
-.ti -1c
-.RI "int \fBsnmp_synch_response_cb\fP (\fBnetsnmp_session\fP *ss, \fBnetsnmp_pdu\fP *pdu, \fBnetsnmp_pdu\fP **response, snmp_callback pcb)"
-.br
-.ti -1c
-.RI "int \fBsnmp_synch_response\fP (\fBnetsnmp_session\fP *ss, \fBnetsnmp_pdu\fP *pdu, \fBnetsnmp_pdu\fP **response)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_synch_response\fP (void *sessp, \fBnetsnmp_pdu\fP *pdu, \fBnetsnmp_pdu\fP **response)"
-.br
-.ti -1c
-.RI "const char * \fBsnmp_errstring\fP (int errstat)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_query_set_default_session\fP (\fBnetsnmp_session\fP *sess)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBnetsnmp_query_get_default_session_unchecked\fP (void)"
-.br
-.RI "\fIReturn a pointer to the default internal query session. \fP"
-.ti -1c
-.RI "\fBnetsnmp_session\fP * \fBnetsnmp_query_get_default_session\fP (void)"
-.br
-.RI "\fIReturn a pointer to the default internal query session and log a warning message once if this session does not exist. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_query_get\fP (\fBnetsnmp_variable_list\fP *list, \fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_query_getnext\fP (\fBnetsnmp_variable_list\fP *list, \fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_query_set\fP (\fBnetsnmp_variable_list\fP *list, \fBnetsnmp_session\fP *session)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_query_walk\fP (\fBnetsnmp_variable_list\fP *list, \fBnetsnmp_session\fP *session)"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_session\fP* netsnmp_query_get_default_session (void)"
-.PP
-Return a pointer to the default internal query session and log a warning message once if this session does not exist. 
-.PP
-Definition at line 1242 of file snmp_client.c.
-.SS "\fBnetsnmp_session\fP* netsnmp_query_get_default_session_unchecked (void)"
-.PP
-Return a pointer to the default internal query session. 
-.PP
-Definition at line 1232 of file snmp_client.c.
-.SS "\fBnetsnmp_pdu\fP* snmp_pdu_create (int command)"
-.PP
-Library API routines concerned with SNMP PDUs. 
-.PP
-Definition at line 131 of file snmp_client.c.
-.SS "int snmp_set_var_typed_value (\fBnetsnmp_variable_list\fP * newvar, u_char type, const void * val_str, size_t val_len)"
-.PP
-snmp_set_var_typed_value is used to set data into the netsnmp_variable_list structure. Used to return data to the snmp request via the netsnmp_request_info structure's requestvb pointer.
-.PP
-\fBParameters:\fP
-.RS 4
-\fInewvar\fP the structure gets populated with the given data, type, val_str, and val_len. 
-.br
-\fItype\fP is the asn data type to be copied 
-.br
-\fIval_str\fP is a buffer containing the value to be copied into the newvar structure. 
-.br
-\fIval_len\fP the length of val_str
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-returns 0 on success and 1 on a malloc error 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 719 of file snmp_client.c.
-.SS "int snmp_set_var_value (\fBnetsnmp_variable_list\fP * vars, const void * value, size_t len)"
-.PP
-FALL THROUGH 
-.PP
-Definition at line 784 of file snmp_client.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_logging.3 b/man/netsnmp_snmp_logging.3
deleted file mode 100644
index 3552e5e..0000000
--- a/man/netsnmp_snmp_logging.3
+++ /dev/null
@@ -1,249 +0,0 @@
-.TH "generic logging for net-snmp" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-generic logging for net-snmp \- 
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBLOGLENGTH\fP   1024"
-.br
-.ti -1c
-.RI "#define \fBva_copy\fP(dest, src)   memcpy (&dest, &src, sizeof (va_list))"
-.br
-.ti -1c
-.RI "#define \fBLOG_USER\fP   0"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_enable_filelog\fP (\fBnetsnmp_log_handler\fP *logh, int dont_zero_log)"
-.br
-.ti -1c
-.RI "int \fBvsnprintf\fP (char *str, size_t count, const char *fmt, va_list arg)"
-.br
-.ti -1c
-.RI "void \fBinit_snmp_logging\fP (void)"
-.br
-.ti -1c
-.RI "void \fBshutdown_snmp_logging\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_set_line_buffering\fP (FILE *stream)"
-.br
-.ti -1c
-.RI "int \fBdecode_priority\fP (char **optarg, int *pri_max)"
-.br
-.ti -1c
-.RI "int \fBdecode_facility\fP (char *optarg)"
-.br
-.ti -1c
-.RI "int \fBsnmp_log_options\fP (char *optarg, int argc, char *const *argv)"
-.br
-.ti -1c
-.RI "char * \fBsnmp_log_syslogname\fP (const char *pstr)"
-.br
-.ti -1c
-.RI "void \fBsnmp_log_options_usage\fP (const char *lead, FILE *outf)"
-.br
-.ti -1c
-.RI "int \fBsnmp_get_do_logging\fP (void)"
-.br
-.RI "\fIIs logging done? \fP"
-.ti -1c
-.RI "void \fBsnmp_disable_syslog_entry\fP (\fBnetsnmp_log_handler\fP *logh)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_syslog\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_filelog_entry\fP (\fBnetsnmp_log_handler\fP *logh)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_filelog\fP (void)"
-.br
-.ti -1c
-.RI "int \fBsnmp_stderrlog_status\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_stderrlog\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_calllog\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_disable_log\fP (void)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_logging_restart\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_enable_syslog\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_enable_syslog_ident\fP (const char *ident, const int facility)"
-.br
-.ti -1c
-.RI "void \fBsnmp_enable_filelog\fP (const char *logfilename, int dont_zero_log)"
-.br
-.ti -1c
-.RI "void \fBsnmp_enable_stderrlog\fP (void)"
-.br
-.ti -1c
-.RI "void \fBsnmp_enable_calllog\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_log_handler\fP * \fBnetsnmp_find_loghandler\fP (const char *token)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_add_loghandler\fP (\fBnetsnmp_log_handler\fP *logh)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_log_handler\fP * \fBnetsnmp_register_loghandler\fP (int type, int priority)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_enable_loghandler\fP (const char *token)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_disable_loghandler\fP (const char *token)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_remove_loghandler\fP (\fBnetsnmp_log_handler\fP *logh)"
-.br
-.ti -1c
-.RI "int \fBlog_handler_stdouterr\fP (\fBnetsnmp_log_handler\fP *logh, int pri, const char *str)"
-.br
-.ti -1c
-.RI "int \fBlog_handler_syslog\fP (\fBnetsnmp_log_handler\fP *logh, int pri, const char *str)"
-.br
-.ti -1c
-.RI "int \fBlog_handler_file\fP (\fBnetsnmp_log_handler\fP *logh, int pri, const char *str)"
-.br
-.ti -1c
-.RI "int \fBlog_handler_callback\fP (\fBnetsnmp_log_handler\fP *logh, int pri, const char *str)"
-.br
-.ti -1c
-.RI "int \fBlog_handler_null\fP (\fBnetsnmp_log_handler\fP *logh, int pri, const char *str)"
-.br
-.ti -1c
-.RI "void \fBsnmp_log_string\fP (int priority, const char *str)"
-.br
-.ti -1c
-.RI "int \fBsnmp_vlog\fP (int priority, const char *format, va_list ap)"
-.br
-.RI "\fIThis snmp logging function allows \fBvariable\fP argument list given the specified priority, format and a populated va_list structure. \fP"
-.ti -1c
-.RI "int \fBsnmp_log\fP (int priority, const char *format,...)"
-.br
-.RI "\fIThis snmp logging function allows \fBvariable\fP argument list given the specified format and priority. \fP"
-.ti -1c
-.RI "void \fBsnmp_log_perror\fP (const char *s)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_log_handler\fP * \fBget_logh_head\fP (void)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_log_handler\fP * \fBlogh_head\fP = NULL"
-.br
-.ti -1c
-.RI "\fBnetsnmp_log_handler\fP * \fBlogh_priorities\fP [LOG_DEBUG+1]"
-.br
-.in -1c
-.SH "Function Documentation"
-.PP 
-.SS "void netsnmp_logging_restart (void)"
-.PP
-hmm, don't zero status isn't saved.. i think it's safer not to overwrite, in case a hup is just to re-read config files...
-.PP
-Definition at line 657 of file snmp_logging.c.
-.SS "int snmp_get_do_logging (void)"
-.PP
-Is logging done? \fBReturns:\fP
-.RS 4
-Returns 0 if logging is off, 1 when it is done. 
-.RE
-.PP
-
-.PP
-Definition at line 514 of file snmp_logging.c.
-.SS "int snmp_log (int priority, const char * format,  ...)"
-.PP
-This snmp logging function allows \fBvariable\fP argument list given the specified format and priority. Calls the snmp_vlog function. The default logfile this function writes to is /var/log/snmpd.log.
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsnmp_vlog\fP 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 1286 of file snmp_logging.c.
-.SS "int snmp_vlog (int priority, const char * format, va_list ap)"
-.PP
-This snmp logging function allows \fBvariable\fP argument list given the specified priority, format and a populated va_list structure. The default logfile this function writes to is /var/log/snmpd.log.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIpriority\fP is an integer representing the type of message to be written to the snmp log file. The types are errors, warning, and information.
-.IP "\(bu" 2
-The error types are:
-.IP "  \(bu" 4
-LOG_EMERG system is unusable
-.IP "  \(bu" 4
-LOG_ALERT action must be taken immediately
-.IP "  \(bu" 4
-LOG_CRIT critical conditions
-.IP "  \(bu" 4
-LOG_ERR error conditions
-.PP
-
-.IP "\(bu" 2
-The warning type is:
-.IP "  \(bu" 4
-LOG_WARNING warning conditions
-.PP
-
-.IP "\(bu" 2
-The information types are:
-.IP "  \(bu" 4
-LOG_NOTICE normal but significant condition
-.IP "  \(bu" 4
-LOG_INFO informational
-.IP "  \(bu" 4
-LOG_DEBUG debug-level messages
-.PP
-
-.PP
-.br
-\fIformat\fP is a pointer to a char representing the \fBvariable\fP argument list format used.
-.br
-\fIap\fP is a va_list type used to traverse the list of arguments.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns 0 on success, -1 when the code could not format the log- string, -2 when dynamic memory could not be allocated if the length of the log buffer is greater then 1024 bytes. For each of these errors a LOG_ERR messgae is written to the logfile.
-.RE
-.PP
-\fBSee also:\fP
-.RS 4
-\fBsnmp_log\fP 
-.RE
-.PP
-
-.PP
-Definition at line 1226 of file snmp_logging.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_pdu.3 b/man/netsnmp_snmp_pdu.3
deleted file mode 100644
index ad658f4..0000000
--- a/man/netsnmp_snmp_pdu.3
+++ /dev/null
@@ -1,292 +0,0 @@
-.TH "snmp_pdu" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-snmp_pdu \- 
-.PP
-The snmp protocol data unit.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <types.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "long \fBversion\fP"
-.br
-.RI "\fIsnmp version \fP"
-.ti -1c
-.RI "int \fBcommand\fP"
-.br
-.RI "\fIType of this PDU. \fP"
-.ti -1c
-.RI "long \fBreqid\fP"
-.br
-.RI "\fIRequest id - note: not incremented on retries. \fP"
-.ti -1c
-.RI "long \fBmsgid\fP"
-.br
-.RI "\fIMessage id for V3 messages note: incremented for each retry. \fP"
-.ti -1c
-.RI "long \fBtransid\fP"
-.br
-.RI "\fIUnique ID for incoming transactions. \fP"
-.ti -1c
-.RI "long \fBsessid\fP"
-.br
-.RI "\fISession id for AgentX messages. \fP"
-.ti -1c
-.RI "long \fBerrstat\fP"
-.br
-.RI "\fIError status (non_repeaters in GetBulk). \fP"
-.ti -1c
-.RI "long \fBerrindex\fP"
-.br
-.RI "\fIError index (max_repetitions in GetBulk). \fP"
-.ti -1c
-.RI "u_long \fBtime\fP"
-.br
-.RI "\fIUptime. \fP"
-.ti -1c
-.RI "u_long \fBflags\fP"
-.br
-.ti -1c
-.RI "int \fBsecurityModel\fP"
-.br
-.ti -1c
-.RI "int \fBsecurityLevel\fP"
-.br
-.RI "\fInoAuthNoPriv, authNoPriv, authPriv \fP"
-.ti -1c
-.RI "int \fBmsgParseModel\fP"
-.br
-.ti -1c
-.RI "void * \fBtransport_data\fP"
-.br
-.RI "\fITransport-specific opaque data. \fP"
-.ti -1c
-.RI "int \fBtransport_data_length\fP"
-.br
-.ti -1c
-.RI "const oid * \fBtDomain\fP"
-.br
-.RI "\fIThe actual transport domain. \fP"
-.ti -1c
-.RI "size_t \fBtDomainLen\fP"
-.br
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBvariables\fP"
-.br
-.ti -1c
-.RI "u_char * \fBcommunity\fP"
-.br
-.RI "\fIcommunity for outgoing requests. \fP"
-.ti -1c
-.RI "size_t \fBcommunity_len\fP"
-.br
-.RI "\fIlength of community name. \fP"
-.ti -1c
-.RI "oid * \fBenterprise\fP"
-.br
-.RI "\fISystem OID. \fP"
-.ti -1c
-.RI "size_t \fBenterprise_length\fP"
-.br
-.ti -1c
-.RI "long \fBtrap_type\fP"
-.br
-.RI "\fItrap type \fP"
-.ti -1c
-.RI "long \fBspecific_type\fP"
-.br
-.RI "\fIspecific type \fP"
-.ti -1c
-.RI "unsigned char \fBagent_addr\fP [4]"
-.br
-.RI "\fIThis is ONLY used for v1 TRAPs. \fP"
-.ti -1c
-.RI "u_char * \fBcontextEngineID\fP"
-.br
-.RI "\fIcontext snmpEngineID \fP"
-.ti -1c
-.RI "size_t \fBcontextEngineIDLen\fP"
-.br
-.RI "\fILength of contextEngineID. \fP"
-.ti -1c
-.RI "char * \fBcontextName\fP"
-.br
-.RI "\fIauthoritative contextName \fP"
-.ti -1c
-.RI "size_t \fBcontextNameLen\fP"
-.br
-.RI "\fILength of contextName. \fP"
-.ti -1c
-.RI "u_char * \fBsecurityEngineID\fP"
-.br
-.RI "\fIauthoritative snmpEngineID for security \fP"
-.ti -1c
-.RI "size_t \fBsecurityEngineIDLen\fP"
-.br
-.RI "\fILength of securityEngineID. \fP"
-.ti -1c
-.RI "char * \fBsecurityName\fP"
-.br
-.RI "\fIon behalf of this principal \fP"
-.ti -1c
-.RI "size_t \fBsecurityNameLen\fP"
-.br
-.RI "\fILength of securityName. \fP"
-.ti -1c
-.RI "int \fBpriority\fP"
-.br
-.ti -1c
-.RI "int \fBrange_subid\fP"
-.br
-.ti -1c
-.RI "void * \fBsecurityStateRef\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The snmp protocol data unit. 
-.PP
-Definition at line 169 of file types.h.
-.SH "Field Documentation"
-.PP 
-.SS "unsigned char \fBsnmp_pdu::agent_addr\fP[4]"
-.PP
-This is ONLY used for v1 TRAPs. 
-.PP
-Definition at line 239 of file types.h.
-.SS "int \fBsnmp_pdu::command\fP"
-.PP
-Type of this PDU. 
-.PP
-Definition at line 180 of file types.h.
-.SS "u_char* \fBsnmp_pdu::community\fP"
-.PP
-community for outgoing requests. 
-.PP
-Definition at line 224 of file types.h.
-.SS "size_t \fBsnmp_pdu::community_len\fP"
-.PP
-length of community name. 
-.PP
-Definition at line 226 of file types.h.
-.SS "u_char* \fBsnmp_pdu::contextEngineID\fP"
-.PP
-context snmpEngineID 
-.PP
-Definition at line 245 of file types.h.
-.SS "size_t \fBsnmp_pdu::contextEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 247 of file types.h.
-.SS "char* \fBsnmp_pdu::contextName\fP"
-.PP
-authoritative contextName 
-.PP
-Definition at line 249 of file types.h.
-.SS "size_t \fBsnmp_pdu::contextNameLen\fP"
-.PP
-Length of contextName. 
-.PP
-Definition at line 251 of file types.h.
-.SS "oid* \fBsnmp_pdu::enterprise\fP"
-.PP
-System OID. 
-.PP
-Definition at line 232 of file types.h.
-.SS "long \fBsnmp_pdu::errindex\fP"
-.PP
-Error index (max_repetitions in GetBulk). 
-.PP
-Definition at line 192 of file types.h.
-.SS "long \fBsnmp_pdu::errstat\fP"
-.PP
-Error status (non_repeaters in GetBulk). 
-.PP
-Definition at line 190 of file types.h.
-.SS "long \fBsnmp_pdu::msgid\fP"
-.PP
-Message id for V3 messages note: incremented for each retry. 
-.PP
-Definition at line 184 of file types.h.
-.SS "long \fBsnmp_pdu::reqid\fP"
-.PP
-Request id - note: not incremented on retries. 
-.PP
-Definition at line 182 of file types.h.
-.SS "u_char* \fBsnmp_pdu::securityEngineID\fP"
-.PP
-authoritative snmpEngineID for security 
-.PP
-Definition at line 253 of file types.h.
-.SS "size_t \fBsnmp_pdu::securityEngineIDLen\fP"
-.PP
-Length of securityEngineID. 
-.PP
-Definition at line 255 of file types.h.
-.SS "int \fBsnmp_pdu::securityLevel\fP"
-.PP
-noAuthNoPriv, authNoPriv, authPriv 
-.PP
-Definition at line 199 of file types.h.
-.SS "char* \fBsnmp_pdu::securityName\fP"
-.PP
-on behalf of this principal 
-.PP
-Definition at line 257 of file types.h.
-.SS "size_t \fBsnmp_pdu::securityNameLen\fP"
-.PP
-Length of securityName. 
-.PP
-Definition at line 259 of file types.h.
-.SS "long \fBsnmp_pdu::sessid\fP"
-.PP
-Session id for AgentX messages. 
-.PP
-Definition at line 188 of file types.h.
-.SS "long \fBsnmp_pdu::specific_type\fP"
-.PP
-specific type 
-.PP
-Definition at line 237 of file types.h.
-.SS "const oid* \fBsnmp_pdu::tDomain\fP"
-.PP
-The actual transport domain. This SHOULD NOT BE FREE()D. 
-.PP
-Definition at line 214 of file types.h.
-.SS "u_long \fBsnmp_pdu::time\fP"
-.PP
-Uptime. 
-.PP
-Definition at line 194 of file types.h.
-.SS "long \fBsnmp_pdu::transid\fP"
-.PP
-Unique ID for incoming transactions. 
-.PP
-Definition at line 186 of file types.h.
-.SS "void* \fBsnmp_pdu::transport_data\fP"
-.PP
-Transport-specific opaque data. This replaces the IP-centric address field. 
-.PP
-Definition at line 207 of file types.h.
-.SS "long \fBsnmp_pdu::trap_type\fP"
-.PP
-trap type 
-.PP
-Definition at line 235 of file types.h.
-.SS "long \fBsnmp_pdu::version\fP"
-.PP
-snmp version 
-.PP
-Definition at line 178 of file types.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_snmp_session.3 b/man/netsnmp_snmp_session.3
deleted file mode 100644
index 04ab944..0000000
--- a/man/netsnmp_snmp_session.3
+++ /dev/null
@@ -1,440 +0,0 @@
-.TH "snmp_session" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-snmp_session \- 
-.PP
-The snmp session structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <types.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "long \fBversion\fP"
-.br
-.RI "\fIsnmp version \fP"
-.ti -1c
-.RI "int \fBretries\fP"
-.br
-.RI "\fINumber of retries before timeout. \fP"
-.ti -1c
-.RI "long \fBtimeout\fP"
-.br
-.RI "\fINumber of uS until first timeout, then exponential backoff. \fP"
-.ti -1c
-.RI "u_long \fBflags\fP"
-.br
-.ti -1c
-.RI "struct \fBsnmp_session\fP * \fBsubsession\fP"
-.br
-.ti -1c
-.RI "struct \fBsnmp_session\fP * \fBnext\fP"
-.br
-.ti -1c
-.RI "char * \fBpeername\fP"
-.br
-.RI "\fIname or address of default peer (may include transport specifier and/or port number) \fP"
-.ti -1c
-.RI "u_short \fBremote_port\fP"
-.br
-.RI "\fIUDP port number of peer. \fP"
-.ti -1c
-.RI "char * \fBlocalname\fP"
-.br
-.RI "\fIMy Domain name or dotted IP address, 0 for default. \fP"
-.ti -1c
-.RI "u_short \fBlocal_port\fP"
-.br
-.RI "\fIMy UDP port number, 0 for default, picked randomly. \fP"
-.ti -1c
-.RI "u_char *(* \fBauthenticator\fP )(u_char *, size_t *, u_char *, size_t)"
-.br
-.RI "\fIAuthentication function or NULL if null authentication is used. \fP"
-.ti -1c
-.RI "netsnmp_callback \fBcallback\fP"
-.br
-.RI "\fIFunction to interpret incoming data. \fP"
-.ti -1c
-.RI "void * \fBcallback_magic\fP"
-.br
-.RI "\fIPointer to data that the callback function may consider important. \fP"
-.ti -1c
-.RI "int \fBs_errno\fP"
-.br
-.RI "\fIcopy of system errno \fP"
-.ti -1c
-.RI "int \fBs_snmp_errno\fP"
-.br
-.RI "\fIcopy of library errno \fP"
-.ti -1c
-.RI "long \fBsessid\fP"
-.br
-.RI "\fISession id - AgentX only. \fP"
-.ti -1c
-.RI "u_char * \fBcommunity\fP"
-.br
-.RI "\fIcommunity for outgoing requests. \fP"
-.ti -1c
-.RI "size_t \fBcommunity_len\fP"
-.br
-.RI "\fILength of community name. \fP"
-.ti -1c
-.RI "size_t \fBrcvMsgMaxSize\fP"
-.br
-.RI "\fILargest message to try to receive. \fP"
-.ti -1c
-.RI "size_t \fBsndMsgMaxSize\fP"
-.br
-.RI "\fILargest message to try to send. \fP"
-.ti -1c
-.RI "u_char \fBisAuthoritative\fP"
-.br
-.RI "\fIare we the authoritative engine? \fP"
-.ti -1c
-.RI "u_char * \fBcontextEngineID\fP"
-.br
-.RI "\fIauthoritative snmpEngineID \fP"
-.ti -1c
-.RI "size_t \fBcontextEngineIDLen\fP"
-.br
-.RI "\fILength of contextEngineID. \fP"
-.ti -1c
-.RI "u_int \fBengineBoots\fP"
-.br
-.RI "\fIinitial engineBoots for remote engine \fP"
-.ti -1c
-.RI "u_int \fBengineTime\fP"
-.br
-.RI "\fIinitial engineTime for remote engine \fP"
-.ti -1c
-.RI "char * \fBcontextName\fP"
-.br
-.RI "\fIauthoritative contextName \fP"
-.ti -1c
-.RI "size_t \fBcontextNameLen\fP"
-.br
-.RI "\fILength of contextName. \fP"
-.ti -1c
-.RI "u_char * \fBsecurityEngineID\fP"
-.br
-.RI "\fIauthoritative snmpEngineID \fP"
-.ti -1c
-.RI "size_t \fBsecurityEngineIDLen\fP"
-.br
-.RI "\fILength of contextEngineID. \fP"
-.ti -1c
-.RI "char * \fBsecurityName\fP"
-.br
-.RI "\fIon behalf of this principal \fP"
-.ti -1c
-.RI "size_t \fBsecurityNameLen\fP"
-.br
-.RI "\fILength of securityName. \fP"
-.ti -1c
-.RI "oid * \fBsecurityAuthProto\fP"
-.br
-.RI "\fIauth protocol oid \fP"
-.ti -1c
-.RI "size_t \fBsecurityAuthProtoLen\fP"
-.br
-.RI "\fILength of auth protocol oid. \fP"
-.ti -1c
-.RI "u_char \fBsecurityAuthKey\fP [USM_AUTH_KU_LEN]"
-.br
-.RI "\fIKu for auth protocol XXX. \fP"
-.ti -1c
-.RI "size_t \fBsecurityAuthKeyLen\fP"
-.br
-.RI "\fILength of Ku for auth protocol. \fP"
-.ti -1c
-.RI "u_char * \fBsecurityAuthLocalKey\fP"
-.br
-.RI "\fIKul for auth protocol. \fP"
-.ti -1c
-.RI "size_t \fBsecurityAuthLocalKeyLen\fP"
-.br
-.RI "\fILength of Kul for auth protocol XXX. \fP"
-.ti -1c
-.RI "oid * \fBsecurityPrivProto\fP"
-.br
-.RI "\fIpriv protocol oid \fP"
-.ti -1c
-.RI "size_t \fBsecurityPrivProtoLen\fP"
-.br
-.RI "\fILength of priv protocol oid. \fP"
-.ti -1c
-.RI "u_char \fBsecurityPrivKey\fP [USM_PRIV_KU_LEN]"
-.br
-.RI "\fIKu for privacy protocol XXX. \fP"
-.ti -1c
-.RI "size_t \fBsecurityPrivKeyLen\fP"
-.br
-.RI "\fILength of Ku for priv protocol. \fP"
-.ti -1c
-.RI "u_char * \fBsecurityPrivLocalKey\fP"
-.br
-.RI "\fIKul for priv protocol. \fP"
-.ti -1c
-.RI "size_t \fBsecurityPrivLocalKeyLen\fP"
-.br
-.RI "\fILength of Kul for priv protocol XXX. \fP"
-.ti -1c
-.RI "int \fBsecurityModel\fP"
-.br
-.RI "\fIsnmp security model, v1, v2c, usm \fP"
-.ti -1c
-.RI "int \fBsecurityLevel\fP"
-.br
-.RI "\fInoAuthNoPriv, authNoPriv, authPriv \fP"
-.ti -1c
-.RI "char * \fBparamName\fP"
-.br
-.RI "\fItarget param name \fP"
-.ti -1c
-.RI "void * \fBsecurityInfo\fP"
-.br
-.RI "\fIsecurity \fBmodule\fP specific \fP"
-.ti -1c
-.RI "void * \fBmyvoid\fP"
-.br
-.RI "\fIuse as you want data \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-The snmp session structure. 
-.PP
-Definition at line 287 of file types.h.
-.SH "Field Documentation"
-.PP 
-.SS "u_char*(* \fBsnmp_session::authenticator\fP)(u_char *, size_t *, u_char *, size_t)"
-.PP
-Authentication function or NULL if null authentication is used. 
-.SS "netsnmp_callback \fBsnmp_session::callback\fP"
-.PP
-Function to interpret incoming data. 
-.PP
-Definition at line 314 of file types.h.
-.SS "void* \fBsnmp_session::callback_magic\fP"
-.PP
-Pointer to data that the callback function may consider important. 
-.PP
-Definition at line 318 of file types.h.
-.SS "u_char* \fBsnmp_session::community\fP"
-.PP
-community for outgoing requests. 
-.PP
-Definition at line 330 of file types.h.
-.SS "size_t \fBsnmp_session::community_len\fP"
-.PP
-Length of community name. 
-.PP
-Definition at line 332 of file types.h.
-.SS "u_char* \fBsnmp_session::contextEngineID\fP"
-.PP
-authoritative snmpEngineID 
-.PP
-Definition at line 344 of file types.h.
-.SS "size_t \fBsnmp_session::contextEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 346 of file types.h.
-.SS "char* \fBsnmp_session::contextName\fP"
-.PP
-authoritative contextName 
-.PP
-Definition at line 352 of file types.h.
-.SS "size_t \fBsnmp_session::contextNameLen\fP"
-.PP
-Length of contextName. 
-.PP
-Definition at line 354 of file types.h.
-.SS "u_int \fBsnmp_session::engineBoots\fP"
-.PP
-initial engineBoots for remote engine 
-.PP
-Definition at line 348 of file types.h.
-.SS "u_int \fBsnmp_session::engineTime\fP"
-.PP
-initial engineTime for remote engine 
-.PP
-Definition at line 350 of file types.h.
-.SS "u_char \fBsnmp_session::isAuthoritative\fP"
-.PP
-are we the authoritative engine? 
-.PP
-Definition at line 342 of file types.h.
-.SS "u_short \fBsnmp_session::local_port\fP"
-.PP
-My UDP port number, 0 for default, picked randomly. 
-.PP
-Definition at line 308 of file types.h.
-.SS "char* \fBsnmp_session::localname\fP"
-.PP
-My Domain name or dotted IP address, 0 for default. 
-.PP
-Definition at line 306 of file types.h.
-.SS "void* \fBsnmp_session::myvoid\fP"
-.PP
-use as you want data used by 'SNMP_FLAGS_RESP_CALLBACK' handling in the agent XXX: or should we add a new field into this structure? 
-.PP
-Definition at line 408 of file types.h.
-.SS "char* \fBsnmp_session::paramName\fP"
-.PP
-target param name 
-.PP
-Definition at line 395 of file types.h.
-.SS "char* \fBsnmp_session::peername\fP"
-.PP
-name or address of default peer (may include transport specifier and/or port number) 
-.PP
-Definition at line 302 of file types.h.
-.SS "size_t \fBsnmp_session::rcvMsgMaxSize\fP"
-.PP
-Largest message to try to receive. 
-.PP
-Definition at line 334 of file types.h.
-.SS "u_short \fBsnmp_session::remote_port\fP"
-.PP
-UDP port number of peer. (NO LONGER USED - USE peername INSTEAD) 
-.PP
-Definition at line 304 of file types.h.
-.SS "int \fBsnmp_session::retries\fP"
-.PP
-Number of retries before timeout. 
-.PP
-Definition at line 294 of file types.h.
-.SS "int \fBsnmp_session::s_errno\fP"
-.PP
-copy of system errno 
-.PP
-Definition at line 320 of file types.h.
-.SS "int \fBsnmp_session::s_snmp_errno\fP"
-.PP
-copy of library errno 
-.PP
-Definition at line 322 of file types.h.
-.SS "u_char \fBsnmp_session::securityAuthKey\fP[USM_AUTH_KU_LEN]"
-.PP
-Ku for auth protocol XXX. 
-.PP
-Definition at line 369 of file types.h.
-.SS "size_t \fBsnmp_session::securityAuthKeyLen\fP"
-.PP
-Length of Ku for auth protocol. 
-.PP
-Definition at line 371 of file types.h.
-.SS "u_char* \fBsnmp_session::securityAuthLocalKey\fP"
-.PP
-Kul for auth protocol. 
-.PP
-Definition at line 373 of file types.h.
-.SS "size_t \fBsnmp_session::securityAuthLocalKeyLen\fP"
-.PP
-Length of Kul for auth protocol XXX. 
-.PP
-Definition at line 375 of file types.h.
-.SS "oid* \fBsnmp_session::securityAuthProto\fP"
-.PP
-auth protocol oid 
-.PP
-Definition at line 365 of file types.h.
-.SS "size_t \fBsnmp_session::securityAuthProtoLen\fP"
-.PP
-Length of auth protocol oid. 
-.PP
-Definition at line 367 of file types.h.
-.SS "u_char* \fBsnmp_session::securityEngineID\fP"
-.PP
-authoritative snmpEngineID 
-.PP
-Definition at line 356 of file types.h.
-.SS "size_t \fBsnmp_session::securityEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 358 of file types.h.
-.SS "void* \fBsnmp_session::securityInfo\fP"
-.PP
-security \fBmodule\fP specific 
-.PP
-Definition at line 400 of file types.h.
-.SS "int \fBsnmp_session::securityLevel\fP"
-.PP
-noAuthNoPriv, authNoPriv, authPriv 
-.PP
-Definition at line 393 of file types.h.
-.SS "int \fBsnmp_session::securityModel\fP"
-.PP
-snmp security model, v1, v2c, usm 
-.PP
-Definition at line 391 of file types.h.
-.SS "char* \fBsnmp_session::securityName\fP"
-.PP
-on behalf of this principal 
-.PP
-Definition at line 360 of file types.h.
-.SS "size_t \fBsnmp_session::securityNameLen\fP"
-.PP
-Length of securityName. 
-.PP
-Definition at line 362 of file types.h.
-.SS "u_char \fBsnmp_session::securityPrivKey\fP[USM_PRIV_KU_LEN]"
-.PP
-Ku for privacy protocol XXX. 
-.PP
-Definition at line 382 of file types.h.
-.SS "size_t \fBsnmp_session::securityPrivKeyLen\fP"
-.PP
-Length of Ku for priv protocol. 
-.PP
-Definition at line 384 of file types.h.
-.SS "u_char* \fBsnmp_session::securityPrivLocalKey\fP"
-.PP
-Kul for priv protocol. 
-.PP
-Definition at line 386 of file types.h.
-.SS "size_t \fBsnmp_session::securityPrivLocalKeyLen\fP"
-.PP
-Length of Kul for priv protocol XXX. 
-.PP
-Definition at line 388 of file types.h.
-.SS "oid* \fBsnmp_session::securityPrivProto\fP"
-.PP
-priv protocol oid 
-.PP
-Definition at line 378 of file types.h.
-.SS "size_t \fBsnmp_session::securityPrivProtoLen\fP"
-.PP
-Length of priv protocol oid. 
-.PP
-Definition at line 380 of file types.h.
-.SS "long \fBsnmp_session::sessid\fP"
-.PP
-Session id - AgentX only. 
-.PP
-Definition at line 324 of file types.h.
-.SS "size_t \fBsnmp_session::sndMsgMaxSize\fP"
-.PP
-Largest message to try to send. 
-.PP
-Definition at line 336 of file types.h.
-.SS "long \fBsnmp_session::timeout\fP"
-.PP
-Number of uS until first timeout, then exponential backoff. 
-.PP
-Definition at line 296 of file types.h.
-.SS "long \fBsnmp_session::version\fP"
-.PP
-snmp version 
-.PP
-Definition at line 292 of file types.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_stash_cache.3 b/man/netsnmp_stash_cache.3
deleted file mode 100644
index 34e237f..0000000
--- a/man/netsnmp_stash_cache.3
+++ /dev/null
@@ -1,94 +0,0 @@
-.TH "stash_cache" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-stash_cache \- 
-.PP
-Automatically caches data for certain handlers.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_stash_cache_info\fP * \fBnetsnmp_get_new_stash_cache\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_timed_bare_stash_cache_handler\fP (int timeout, oid *rootoid, size_t rootoid_len)"
-.br
-.RI "\fIreturns a stash_cache handler that can be injected into a given handler chain (with the specified timeout and root OID values), but *only* if that handler chain explicitly supports stash cache processing. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_bare_stash_cache_handler\fP (void)"
-.br
-.RI "\fIreturns a single stash_cache handler that can be injected into a given handler chain (with a fixed timeout), but *only* if that handler chain explicitly supports stash cache processing. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_stash_cache_handler\fP (void)"
-.br
-.RI "\fIreturns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a fixed cache timeout. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_timed_stash_cache_handler\fP (int timeout, oid *rootoid, size_t rootoid_len)"
-.br
-.RI "\fIreturns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a configurable cache timeout. \fP"
-.ti -1c
-.RI "\fBnetsnmp_oid_stash_node\fP ** \fBnetsnmp_extract_stash_cache\fP (\fBnetsnmp_agent_request_info\fP *reqinfo)"
-.br
-.RI "\fIextracts a pointer to the stash_cache info from the reqinfo structure. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_stash_cache_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fB_netsnmp_stash_cache_load\fP (\fBnetsnmp_cache\fP *cache, void *magic)"
-.br
-.RI "\fIupdates a given cache depending on whether it needs to or not. \fP"
-.ti -1c
-.RI "void \fB_netsnmp_stash_cache_free\fP (\fBnetsnmp_cache\fP *cache, void *magic)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_init_stash_cache_helper\fP (void)"
-.br
-.RI "\fIinitializes the stash_cache helper which then registers a stash_cache handler as a run-time injectable handler for configuration file use. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Automatically caches data for certain handlers. 
-
-This handler caches data in an optimized way which may alleviate the need for the lower level handlers to perform as much optimization. Specifically, somewhere in the lower level handlers must be a handler that supports the MODE_GET_STASH operation. Note that the table_iterator helper supports this. 
-.SH "Function Documentation"
-.PP 
-.SS "int _netsnmp_stash_cache_load (\fBnetsnmp_cache\fP * cache, void * magic)"
-.PP
-updates a given cache depending on whether it needs to or not. 
-.PP
-Definition at line 190 of file stash_cache.c.
-.SS "\fBnetsnmp_oid_stash_node\fP** netsnmp_extract_stash_cache (\fBnetsnmp_agent_request_info\fP * reqinfo)"
-.PP
-extracts a pointer to the stash_cache info from the reqinfo structure. 
-.PP
-Definition at line 109 of file stash_cache.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_bare_stash_cache_handler (void)"
-.PP
-returns a single stash_cache handler that can be injected into a given handler chain (with a fixed timeout), but *only* if that handler chain explicitly supports stash cache processing. 
-.PP
-Definition at line 75 of file stash_cache.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_stash_cache_handler (void)"
-.PP
-returns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a fixed cache timeout. 
-.PP
-Definition at line 84 of file stash_cache.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_timed_bare_stash_cache_handler (int timeout, oid * rootoid, size_t rootoid_len)"
-.PP
-returns a stash_cache handler that can be injected into a given handler chain (with the specified timeout and root OID values), but *only* if that handler chain explicitly supports stash cache processing. 
-.PP
-Definition at line 40 of file stash_cache.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_timed_stash_cache_handler (int timeout, oid * rootoid, size_t rootoid_len)"
-.PP
-returns a stash_cache handler sub-chain that can be injected into a given (arbitrary) handler chain, using a configurable cache timeout. 
-.PP
-Definition at line 97 of file stash_cache.c.
-.SS "void netsnmp_init_stash_cache_helper (void)"
-.PP
-initializes the stash_cache helper which then registers a stash_cache handler as a run-time injectable handler for configuration file use. 
-.PP
-Definition at line 233 of file stash_cache.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_stash_to_next.3 b/man/netsnmp_stash_to_next.3
deleted file mode 100644
index 240bdea..0000000
--- a/man/netsnmp_stash_to_next.3
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH "stash_to_next" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-stash_to_next \- 
-.PP
-Convert GET_STASH requests into GETNEXT requests for the handler.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_stash_to_next_handler\fP (void)"
-.br
-.RI "\fIreturns a stash_to_next handler that can be injected into a given handler chain. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_stash_to_next_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Convert GET_STASH requests into GETNEXT requests for the handler. 
-
-The purpose of this handler is to convert a GET_STASH auto-cache request to a series of GETNEXT requests. It can be inserted into a handler chain where the lower-level handlers don't process such requests themselves. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_stash_to_next_handler (void)"
-.PP
-returns a stash_to_next handler that can be injected into a given handler chain. 
-.PP
-Definition at line 23 of file stash_to_next.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table.3 b/man/netsnmp_table.3
deleted file mode 100644
index a070a5a..0000000
--- a/man/netsnmp_table.3
+++ /dev/null
@@ -1,244 +0,0 @@
-.TH "table" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table \- 
-.PP
-Helps you implement a table.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBtable_array\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table when data can be stored locally. \fP"
-.ti -1c
-.RI "\fBtable_container\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table when data can be found via a netsnmp_container. \fP"
-.ti -1c
-.RI "\fBtable_data\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table with datamatted storage. \fP"
-.ti -1c
-.RI "\fBgeneric_table_API\fP"
-.br
-.PP
-
-.RI "\fIGeneral requirements for a table helper. \fP"
-.ti -1c
-.RI "\fBtable_iterator\fP"
-.br
-.PP
-
-.RI "\fIThe table iterator helper is designed to simplify the task of writing a table handler for the net-snmp agent when the data being accessed is not in an oid sorted form and must be accessed externally. \fP"
-.ti -1c
-.RI "\fBtable_row\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table shared across two or more subagents, or otherwise split into individual row slices. \fP"
-.ti -1c
-.RI "\fBtdata\fP"
-.br
-.PP
-
-.RI "\fIImplement a table with datamatted storage. \fP"
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSPARSE_TABLE_HANDLER_NAME\fP   'sparse_table'"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_table_handler\fP (\fBnetsnmp_table_registration_info\fP *tabreq)"
-.br
-.RI "\fIGiven a netsnmp_table_registration_info object, creates a table handler. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_table\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreq)"
-.br
-.RI "\fIcreates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_unregister_table\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_table_request_info\fP * \fBnetsnmp_extract_table_info\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIExtracts the processed table information from a given request. \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_registration_info\fP * \fBnetsnmp_find_table_registration_info\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIextracts the registered netsnmp_table_registration_info object from a netsnmp_handler_registration object \fP"
-.ti -1c
-.RI "int \fBtable_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.RI "\fIimplements the table helper handler \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_sparse_table_handler_get\fP (void)"
-.br
-.RI "\fIcreate sparse table handler \fP"
-.ti -1c
-.RI "int \fBnetsnmp_sparse_table_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreq)"
-.br
-.RI "\fIcreates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_build_result\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_request_info\fP *reqinfo, \fBnetsnmp_table_request_info\fP *table_info, u_char type, u_char *result, size_t result_len)"
-.br
-.RI "\fIBuilds the result to be returned to the agent given the table information. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_build_oid\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_request_info\fP *reqinfo, \fBnetsnmp_table_request_info\fP *table_info)"
-.br
-.RI "\fIgiven 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 object. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_build_oid_from_index\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_request_info\fP *reqinfo, \fBnetsnmp_table_request_info\fP *table_info)"
-.br
-.RI "\fIgiven 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 object. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_update_variable_list_from_index\fP (\fBnetsnmp_table_request_info\fP *tri)"
-.br
-.RI "\fIparses an OID into table indexses \fP"
-.ti -1c
-.RI "int \fBnetsnmp_update_indexes_from_variable_list\fP (\fBnetsnmp_table_request_info\fP *tri)"
-.br
-.RI "\fIbuilds an oid given a set of indexes. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_check_getnext_reply\fP (\fBnetsnmp_request_info\fP *request, oid *prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP *newvar, \fBnetsnmp_variable_list\fP **outvar)"
-.br
-.RI "\fIchecks the original request against the current data being passed in if its greater than the request oid but less than the current valid return, set the current valid return to the new value. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_table_registration_info_free\fP (\fBnetsnmp_table_registration_info\fP *tri)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table. 
-
-This handler helps you implement a table by doing some of the processing for you.
-.PP
-This handler truly shows the power of the new handler mechanism. By creating a table handler and injecting it into your calling chain, or by using the \fBnetsnmp_register_table()\fP function to register your table, you get access to some pre-parsed information. Specifically, the table handler pulls out the column number and indexes from the request oid so that you don't have to do the complex work to do that parsing within your own code.
-.PP
-To do this, the table handler needs to know up front how your table is structured. To inform it about this, you fill in a table_registeration_info structure that is passed to the table handler. It contains the asn index types for the table as well as the minimum and maximum column that should be used. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_check_getnext_reply (\fBnetsnmp_request_info\fP * request, oid * prefix, size_t prefix_len, \fBnetsnmp_variable_list\fP * newvar, \fBnetsnmp_variable_list\fP ** outvar)"
-.PP
-checks the original request against the current data being passed in if its greater than the request oid but less than the current valid return, set the current valid return to the new value. returns 1 if outvar was replaced with the oid from newvar (success). returns 0 if not. 
-.PP
-Definition at line 929 of file table.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_table_request_info\fP* netsnmp_extract_table_info (\fBnetsnmp_request_info\fP * request)"
-.PP
-Extracts the processed table information from a given request. Call this from subhandlers on a request to extract the processed netsnmp_request_info information. The resulting information includes the index values and the column number.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIrequest\fP populated netsnmp request structure
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-populated netsnmp_table_request_info structure 
-.RE
-.PP
-
-.PP
-Definition at line 143 of file table.c.
-.SS "\fBnetsnmp_table_registration_info\fP* netsnmp_find_table_registration_info (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-extracts the registered netsnmp_table_registration_info object from a netsnmp_handler_registration object 
-.PP
-Definition at line 152 of file table.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_handler (\fBnetsnmp_table_registration_info\fP * tabreq)"
-.PP
-Given a netsnmp_table_registration_info object, creates a table handler. You can use this table handler by injecting it into a calling chain. When the handler gets called, it'll do processing and store it's information into the request->parent_data structure.
-.PP
-The table helper handler pulls out the column number and indexes from the request oid so that you don't have to do the complex work of parsing within your own code.
-.PP
-\fBParameters:\fP
-.RS 4
-\fItabreq\fP is a pointer to a netsnmp_table_registration_info struct. The table handler needs to know up front how your table is structured. A netsnmp_table_registeration_info structure that is passed to the table handler should contain the asn index types for the table as well as the minimum and maximum column that should be used.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns a pointer to a netsnmp_mib_handler struct which contains the handler's name and the access method 
-.RE
-.PP
-
-.PP
-Definition at line 91 of file table.c.
-.SS "int netsnmp_register_table (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreq)"
-.PP
-creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. 
-.PP
-Definition at line 114 of file table.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_sparse_table_handler_get (void)"
-.PP
-create sparse table handler 
-.PP
-Definition at line 745 of file table.c.
-.SS "int netsnmp_sparse_table_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreq)"
-.PP
-creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls \fBnetsnmp_register_handler()\fP to register the table into the agent. 
-.PP
-handler1 is in reginfo... remove and free??
-.PP
-both handlers now in reginfo, so nothing to do on error 
-.PP
-Definition at line 756 of file table.c.
-.SS "int netsnmp_table_build_oid (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info)"
-.PP
-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 object. Index values are extracted from the table_info varbinds. 
-.PP
-.Entry
-.PP
-.column 
-.PP
-Definition at line 832 of file table.c.
-.SS "int netsnmp_table_build_oid_from_index (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info)"
-.PP
-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 object. Index values are extracted from the table_info index oid. 
-.PP
-Definition at line 869 of file table.c.
-.SS "int netsnmp_table_build_result (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_request_info\fP * reqinfo, \fBnetsnmp_table_request_info\fP * table_info, u_char type, u_char * result, size_t result_len)"
-.PP
-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 (containing proper indexing) and inserts the result value into the returning varbind. 
-.PP
-Definition at line 799 of file table.c.
-.SS "int netsnmp_update_indexes_from_variable_list (\fBnetsnmp_table_request_info\fP * tri)"
-.PP
-builds an oid given a set of indexes. 
-.PP
-Definition at line 911 of file table.c.
-.SS "int netsnmp_update_variable_list_from_index (\fBnetsnmp_table_request_info\fP * tri)"
-.PP
-parses an OID into table indexses 
-.PP
-Definition at line 895 of file table.c.
-.SS "int table_helper_handler (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
-.PP
-implements the table helper handler 
-.PP
-XXX-rks: memory leak. add cleanup handler?
-.PP
-none available
-.PP
-got one ok
-.PP
-for loop 
-.PP
-Definition at line 160 of file table.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_array.3 b/man/netsnmp_table_array.3
deleted file mode 100644
index 38b1bec..0000000
--- a/man/netsnmp_table_array.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH "table_array" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_array \- 
-.PP
-Helps you implement a table when data can be stored locally.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fBnetsnmp_table_container_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, \fBnetsnmp_table_array_callbacks\fP *cb, \fBnetsnmp_container\fP *container, int group_rows)"
-.br
-.RI "\fIregister specified callbacks for the specified table/oid. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_array_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, \fBnetsnmp_table_array_callbacks\fP *cb, \fBnetsnmp_container\fP *container, int group_rows)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_find_table_array_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.RI "\fIfind the handler for the table_array helper. \fP"
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_extract_array_context\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIfind the context data used by the table_array helper \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_array_check_row_status\fP (\fBnetsnmp_table_array_callbacks\fP *cb, \fBnetsnmp_request_group\fP *ag, long *rs_new, long *rs_old)"
-.br
-.RI "\fIthis function is called to validate RowStatus transitions. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table when data can be stored locally. 
-
-The data is stored in a sorted array, using a binary search for lookups.
-.PP
-The table_array handler is used (automatically) in conjuntion with the \fBtable\fP handler. It is primarily intended to be used with the mib2c configuration file mib2c.array-user.conf.
-.PP
-The code generated by mib2c is useful when you have control of the data for each row. If you cannot control when rows are added and deleted (or at least be notified of changes to row data), then this handler is probably not for you.
-.PP
-This handler makes use of callbacks (function pointers) to handle various tasks. Code is generated for each callback, but will need to be reviewed and flushed out by the user.
-.PP
-NOTE NOTE NOTE: Once place where mib2c is somewhat lacking is with regards to tables with external indices. If your table makes use of one or more external indices, please review the generated code very carefully for comments regarding external indices.
-.PP
-NOTE NOTE NOTE: This helper, the API and callbacks are still being tested and may change.
-.PP
-The generated code will define a structure for storage of table related data. This structure must be used, as it contains the index OID for the row, which is used for keeping the array sorted. You can add addition fields or data to the structure for your own use.
-.PP
-The generated code will also have code to handle SNMP-SET processing. If your table does not support any SET operations, simply comment out the #define <PREFIX>_SET_HANDLING (where <PREFIX> is your table name) in the header file.
-.PP
-SET processing modifies the row in-place. The duplicate_row callback will be called to save a copy of the original row. In the event of a failure before the commite phase, the row_copy callback will be called to restore the original row from the copy.
-.PP
-Code will be generated to handle row creation. This code may be disabled by commenting out the #define <PREFIX>_ROW_CREATION in the header file.
-.PP
-If your table contains a RowStatus object, by default the code will not allow object in an active row to be modified. To allow active rows to be modified, remove the comment block around the #define <PREFIX>_CAN_MODIFY_ACTIVE_ROW in the header file.
-.PP
-Code will be generated to maintain a secondary index for all rows, stored in a binary \fBtree\fP. This is very useful for finding rows by a key other than the OID index. By default, the functions for maintaining this \fBtree\fP will be based on a character string. NOTE: this will likely be made into a more generic mechanism, using new callback methods, in the near future.
-.PP
-The generated code contains many TODO comments. Make sure you check each one to see if it applies to your code. Examples include checking indices for syntax (ranges, etc), initializing default values in newly created rows, checking for row activation and deactivation requirements, etc. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_container\fP* netsnmp_extract_array_context (\fBnetsnmp_request_info\fP * request)"
-.PP
-find the context data used by the table_array helper 
-.PP
-Definition at line 230 of file table_array.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_find_table_array_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
-.PP
-find the handler for the table_array helper. 
-.PP
-Definition at line 213 of file table_array.c.
-.SS "int netsnmp_table_array_check_row_status (\fBnetsnmp_table_array_callbacks\fP * cb, \fBnetsnmp_request_group\fP * ag, long * rs_new, long * rs_old)"
-.PP
-this function is called to validate RowStatus transitions. 
-.PP
-Definition at line 237 of file table_array.c.
-.SS "int netsnmp_table_container_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_registration_info\fP * tabreg, \fBnetsnmp_table_array_callbacks\fP * cb, \fBnetsnmp_container\fP * container, int group_rows)"
-.PP
-register specified callbacks for the specified table/oid. If the group_rows parameter is set, the row related callbacks will be called once for each unique row index. Otherwise, each callback will be called only once, for all objects. 
-.PP
-Definition at line 150 of file table_array.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_container.3 b/man/netsnmp_table_container.3
deleted file mode 100644
index e25ec02..0000000
--- a/man/netsnmp_table_container.3
+++ /dev/null
@@ -1,120 +0,0 @@
-.TH "table_container" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_container \- 
-.PP
-Helps you implement a table when data can be found via a netsnmp_container.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBcontainer_table_data\fP * \fBnetsnmp_tcontainer_create_table\fP (const char *name, \fBnetsnmp_container\fP *container, long flags)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_tcontainer_delete_table\fP (\fBcontainer_table_data\fP *table)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_tcontainer_add_row\fP (\fBcontainer_table_data\fP *table, \fBnetsnmp_index\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_index\fP * \fBnetsnmp_tcontainer_remove_row\fP (\fBcontainer_table_data\fP *table, \fBnetsnmp_index\fP *row)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_tcontainer_replace_row\fP (\fBcontainer_table_data\fP *table, \fBnetsnmp_index\fP *old_row, \fBnetsnmp_index\fP *new_row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_container_table_handler_get\fP (\fBnetsnmp_table_registration_info\fP *tabreg, \fBnetsnmp_container\fP *container, char key_type)"
-.br
-.RI "\fIreturns a netsnmp_mib_handler object for the table_container helper \fP"
-.ti -1c
-.RI "int \fBnetsnmp_container_table_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, \fBnetsnmp_container\fP *container, char key_type)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_container_table_unregister\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_container_table_container_extract\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIretrieve the container used by the table_container helper \fP"
-.ti -1c
-.RI "void \fBnetsnmp_container_table_row_insert\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_index\fP *row)"
-.br
-.RI "\fIinserts a newly created table_container entry into a request list \fP"
-.ti -1c
-.RI "\fBnetsnmp_index\fP * \fBnetsnmp_table_index_find_next_row\fP (\fBnetsnmp_container\fP *c, \fBnetsnmp_table_request_info\fP *tblreq)"
-.br
-.RI "\fIdeprecated, backwards compatability only \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table when data can be found via a netsnmp_container. 
-
-The table_container handler is used (automatically) in conjuntion with the \fBtable\fP handler.
-.PP
-This handler will use the index information provided by the \fBtable\fP handler to find the row needed to process the request.
-.PP
-The container must use one of 3 key types. It is the sub-handler's responsibility to ensure that the container and key type match (unless neither is specified, in which case a default will be used.)
-.PP
-The current key types are:
-.PP
-TABLE_CONTAINER_KEY_NETSNMP_INDEX The container should do comparisons based on a key that may be cast to a netsnmp index (netsnmp_index *). This index contains only the index portion of the OID, not the entire OID.
-.PP
-TABLE_CONTAINER_KEY_VARBIND_INDEX The container should do comparisons based on a key that may be cast to a netsnmp \fBvariable\fP list (netsnmp_variable_list *). This \fBvariable\fP list will contain one varbind for each index component.
-.PP
-TABLE_CONTAINER_KEY_VARBIND_RAW (NOTE: unimplemented) While not yet implemented, future plans include passing the request varbind with the full OID to a container.
-.PP
-If a key type is not specified at registration time, the default key type of TABLE_CONTAINER_KEY_NETSNMP_INDEX will be used. If a container is provided, or the handler name is aliased to a container type, the container must use a netsnmp index.
-.PP
-If no container is provided, a lookup will be made based on the sub-handler's name, or if that isn't found, 'table_container'. The table_container key type will be netsnmp_index.
-.PP
-The container must, at a minimum, implement find and find_next. If a NULL key is passed to the container, it must return the first item, if any. All containers provided by net-snmp fulfil this requirement.
-.PP
-This handler will only register to process 'data lookup' modes. In traditional net-snmp modes, that is any GET-like mode (GET, GET-NEXT, GET-BULK) or the first phase of a SET (RESERVE1). In the new baby-steps mode, DATA_LOOKUP is it's own mode, and is a pre-cursor to other modes.
-.PP
-When called, the handler will call the appropriate container method with the appropriate key type. If a row was not found, the result depends on the mode.
-.PP
-GET Processing An exact match must be found. If one is not, the error NOSUCHINSTANCE is set.
-.PP
-GET-NEXT / GET-BULK If no row is found, the column number will be increased (using any valid_columns structure that may have been provided), and the first row will be retrieved. If no first row is found, the processed flag will be set, so that the sub-handler can skip any processing related to the request. The agent will notice this unsatisfied request, and attempt to pass it to the next appropriate handler.
-.PP
-SET If the hander did not register with the HANDLER_CAN_NOT_CREATE flag set in the registration modes, it is assumed that this is a row creation request and a NULL row is added to the request's data list. The sub-handler is responsbile for dealing with any row creation contraints and inserting any newly created rows into the container and the request's data list.
-.PP
-If a row is found, it will be inserted into the request's data list. The sub-handler may retrieve it by calling netsnmp_container_table_extract_context(request); * NOTE NOTE NOTE:
-.PP
-This helper and it's API are still being tested and are subject to change. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_container\fP* netsnmp_container_table_container_extract (\fBnetsnmp_request_info\fP * request)"
-.PP
-retrieve the container used by the table_container helper 
-.PP
-Definition at line 339 of file table_container.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_container_table_handler_get (\fBnetsnmp_table_registration_info\fP * tabreg, \fBnetsnmp_container\fP * container, char key_type)"
-.PP
-returns a netsnmp_mib_handler object for the table_container helper 
-.PP
-Definition at line 255 of file table_container.c.
-.SS "void netsnmp_container_table_row_insert (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_index\fP * row)"
-.PP
-inserts a newly created table_container entry into a request list 
-.PP
-Definition at line 370 of file table_container.c.
-.SS "\fBnetsnmp_index\fP* netsnmp_table_index_find_next_row (\fBnetsnmp_container\fP * c, \fBnetsnmp_table_request_info\fP * tblreq)"
-.PP
-deprecated, backwards compatability only expected impact to remove: none
-.IP "\(bu" 2
-used between helpers, shouldn't have been used by end users
-.PP
-.PP
-replacement: none
-.IP "\(bu" 2
-never should have been a public method in the first place 
-.PP
-
-.PP
-Definition at line 740 of file table_container.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_data.3 b/man/netsnmp_table_data.3
deleted file mode 100644
index c81d874..0000000
--- a/man/netsnmp_table_data.3
+++ /dev/null
@@ -1,286 +0,0 @@
-.TH "table_data" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_data \- 
-.PP
-Helps you implement a table with datamatted storage.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBtable_dataset\fP"
-.br
-.PP
-
-.RI "\fIHelps you implement a table with automatted storage. \fP"
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_table_data_generate_index_oid\fP (\fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_data\fP * \fBnetsnmp_create_table_data\fP (const char *name)"
-.br
-.RI "\fIcreates and returns a pointer to table data set \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_create_table_data_row\fP (void)"
-.br
-.RI "\fIcreates and returns a pointer to table data set \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_clone_row\fP (\fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIclones a data row. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_delete_row\fP (\fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIdeletes a row's memory. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_data_add_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIAdds a row of data to a given table (stored in proper lexographical order). \fP"
-.ti -1c
-.RI "void \fBnetsnmp_table_data_replace_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *origrow, \fBnetsnmp_table_row\fP *newrow)"
-.br
-.RI "\fIswaps out origrow with newrow. \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_remove_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIremoves a row of data to a given table and returns it (no free's called) \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_remove_and_delete_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIremoves and frees a row of data to a given table and returns the void * \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_data\fP * \fBnetsnmp_table_data_create_table\fP (const char *name, long flags)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_table_data_delete_table\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_create_row\fP (void *entry)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_table_data_copy_row\fP (\fBnetsnmp_table_row\fP *old_row, \fBnetsnmp_table_row\fP *new_row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_remove_delete_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_table_data_handler\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.RI "\fICreates a table_data handler and returns it. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_table_data\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_registration_info\fP *table_info)"
-.br
-.RI "\fIregisters a handler as a data table. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_table_data\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_registration_info\fP *table_info)"
-.br
-.RI "\fIregisters a handler as a read-only data table If table_info != NULL, it registers it as a normal table too. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_unregister_table_data\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_table_data_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_data\fP * \fBnetsnmp_extract_table\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the table being accessed passed from the table_data helper \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_extract_table_row\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the row being accessed passed from the table_data helper \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_extract_table_row_data\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the data from the row being accessed passed from the table_data helper \fP"
-.ti -1c
-.RI "void \fBnetsnmp_insert_table_row\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIinserts a newly created table_data row into a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_data_build_result\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *request, \fBnetsnmp_table_row\fP *row, int column, u_char type, u_char *result_data, size_t result_data_len)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_get_first_row\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.RI "\fIreturns the first row in the table \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_get_next_row\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIreturns the next row in the table \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_get\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIfinds the data in 'datalist' stored at 'indexes' \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_get_from_oid\fP (\fBnetsnmp_table_data\fP *table, oid *searchfor, size_t searchfor_len)"
-.br
-.RI "\fIfinds the data in 'datalist' stored at the searchfor oid \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_data_num_rows\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_first\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_get\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_next\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_get_byoid\fP (\fBnetsnmp_table_data\fP *table, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_next_byoid\fP (\fBnetsnmp_table_data\fP *table, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_get_byidx\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_row_next_byidx\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_table_data_row_count\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_first\fP (\fBnetsnmp_table_data\fP *table)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_get\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_next\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_get_byidx\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_next_byidx\fP (\fBnetsnmp_table_data\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_get_byoid\fP (\fBnetsnmp_table_data\fP *table, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_data_entry_next_byoid\fP (\fBnetsnmp_table_data\fP *table, oid *instance, size_t len)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table with datamatted storage. 
-
-This helper is obsolete. If you are writing a new \fBmodule\fP, please consider using the table_tdata helper instead.
-.PP
-This helper helps you implement a table where all the indexes are expected to be stored within the agent itself and not in some external storage location. It can be used to store a list of rows, where a row consists of the indexes to the table and a generic data pointer. You can then implement a subhandler which is passed the exact row definition and data it must return data for or accept data for. Complex GETNEXT handling is greatly simplified in this case. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_table_data\fP* netsnmp_create_table_data (const char * name)"
-.PP
-creates and returns a pointer to table data set 
-.PP
-Definition at line 53 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_create_table_data_row (void)"
-.PP
-creates and returns a pointer to table data set 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 63 of file table_data.c.
-.SS "\fBnetsnmp_table_data\fP* netsnmp_extract_table (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the table being accessed passed from the table_data helper 
-.PP
-Definition at line 662 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_extract_table_row (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the row being accessed passed from the table_data helper 
-.PP
-Definition at line 670 of file table_data.c.
-.SS "void* netsnmp_extract_table_row_data (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the data from the row being accessed passed from the table_data helper 
-.PP
-Definition at line 679 of file table_data.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_data_handler (\fBnetsnmp_table_data\fP * table)"
-.PP
-Creates a table_data handler and returns it. 
-.PP
-Definition at line 377 of file table_data.c.
-.SS "void netsnmp_insert_table_row (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_table_row\fP * row)"
-.PP
-inserts a newly created table_data row into a request 
-.PP
-Definition at line 691 of file table_data.c.
-.SS "int netsnmp_register_read_only_table_data (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
-.PP
-registers a handler as a read-only data table If table_info != NULL, it registers it as a normal table too. 
-.PP
-Definition at line 411 of file table_data.c.
-.SS "int netsnmp_register_table_data (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
-.PP
-registers a handler as a data table. If table_info != NULL, it registers it as a normal table too. 
-.PP
-Definition at line 400 of file table_data.c.
-.SS "int netsnmp_table_data_add_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-Adds a row of data to a given table (stored in proper lexographical order). returns SNMPERR_SUCCESS on successful addition. or SNMPERR_GENERR on failure (E.G., indexes already existed) 
-.PP
-xxx-rks: remove invalid row? 
-.PP
-Definition at line 134 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_clone_row (\fBnetsnmp_table_row\fP * row)"
-.PP
-clones a data row. DOES NOT CLONE THE CONTAINED DATA. 
-.PP
-Definition at line 71 of file table_data.c.
-.SS "void* netsnmp_table_data_delete_row (\fBnetsnmp_table_row\fP * row)"
-.PP
-deletes a row's memory. returns the void data that it doesn't know how to delete. 
-.PP
-Definition at line 105 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-finds the data in 'datalist' stored at 'indexes' 
-.PP
-Definition at line 817 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_first_row (\fBnetsnmp_table_data\fP * table)"
-.PP
-returns the first row in the table 
-.PP
-Definition at line 798 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_from_oid (\fBnetsnmp_table_data\fP * table, oid * searchfor, size_t searchfor_len)"
-.PP
-finds the data in 'datalist' stored at the searchfor oid 
-.PP
-Definition at line 831 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_get_next_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-returns the next row in the table 
-.PP
-Definition at line 807 of file table_data.c.
-.SS "void* netsnmp_table_data_remove_and_delete_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-removes and frees a row of data to a given table and returns the void * returns the void * data on successful deletion. or NULL on failure (bad arguments) 
-.PP
-Definition at line 274 of file table_data.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_remove_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-removes a row of data to a given table and returns it (no free's called) returns the row pointer itself on successful removing. or NULL on failure (bad arguments) 
-.PP
-Definition at line 248 of file table_data.c.
-.SS "void netsnmp_table_data_replace_row (\fBnetsnmp_table_data\fP * table, \fBnetsnmp_table_row\fP * origrow, \fBnetsnmp_table_row\fP * newrow)"
-.PP
-swaps out origrow with newrow. This does *not* delete/free anything! 
-.PP
-Definition at line 233 of file table_data.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_dataset.3 b/man/netsnmp_table_dataset.3
deleted file mode 100644
index 4a0cd4c..0000000
--- a/man/netsnmp_table_dataset.3
+++ /dev/null
@@ -1,302 +0,0 @@
-.TH "table_dataset" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_dataset \- 
-.PP
-Helps you implement a table with automatted storage.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBnetsnmp_init_table_dataset\fP (void)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_table_data_set_storage\fP * \fBnetsnmp_table_dataset_delete_data\fP (\fBnetsnmp_table_data_set_storage\fP *data)"
-.br
-.RI "\fIdeletes a single dataset table data. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_delete_all_data\fP (\fBnetsnmp_table_data_set_storage\fP *data)"
-.br
-.RI "\fIdeletes all the data from this \fBnode\fP and beyond in the linked list \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_delete_row\fP (\fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIdeletes all the data from this \fBnode\fP and beyond in the linked list \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_add_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIadds a new row to a dataset table \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_replace_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *origrow, \fBnetsnmp_table_row\fP *newrow)"
-.br
-.RI "\fIadds a new row to a dataset table \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_remove_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIremoves a row from the table, but doesn't delete/free the column values \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_remove_and_delete_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIremoves a row from the table and then deletes it (and all its data) \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_data_set\fP * \fBnetsnmp_create_table_data_set\fP (const char *table_name)"
-.br
-.RI "\fICreate a netsnmp_table_data_set structure given a table_data definition. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_delete_table_data_set\fP (\fBnetsnmp_table_data_set\fP *table_set)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_clone_row\fP (\fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIclones a dataset row, including all data. \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_create_row_from_defaults\fP (\fBnetsnmp_table_data_set_storage\fP *defrow)"
-.br
-.RI "\fIcreates a new row from an existing defined default set \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_set_add_default_row\fP (\fBnetsnmp_table_data_set\fP *table_set, unsigned int column, int type, int writable, void *default_value, size_t default_value_len)"
-.br
-.RI "\fIadds a new default row to a table_set. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_table_set_multi_add_default_row\fP (\fBnetsnmp_table_data_set\fP *tset,...)"
-.br
-.RI "\fIadds multiple data column definitions to each row. \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_table_data_set_handler\fP (\fBnetsnmp_table_data_set\fP *data_set)"
-.br
-.RI "\fIGiven a netsnmp_table_data_set definition, create a handler for it. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_table_data_set\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_data_set\fP *data_set, \fBnetsnmp_table_registration_info\fP *table_info)"
-.br
-.RI "\fIregister a given data_set at a given oid (specified in the netsnmp_handler_registration pointer). \fP"
-.ti -1c
-.RI "\fBnewrow_stash\fP * \fBnetsnmp_table_data_set_create_newrowstash\fP (\fBnetsnmp_table_data_set\fP *datatable, \fBnetsnmp_table_request_info\fP *table_info)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_table_data_set_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE \fBnetsnmp_table_data_set\fP * \fBnetsnmp_extract_table_data_set\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts a netsnmp_table_data_set pointer from a given request \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_data_set_storage\fP * \fBnetsnmp_extract_table_data_set_column\fP (\fBnetsnmp_request_info\fP *request, unsigned int column)"
-.br
-.RI "\fIextracts a netsnmp_table_data_set pointer from a given request \fP"
-.ti -1c
-.RI "void \fBnetsnmp_register_auto_data_table\fP (\fBnetsnmp_table_data_set\fP *table_set, char *registration_name)"
-.br
-.RI "\fIregisters a table_dataset so that the 'add_row' snmpd.conf token can be used to add data to this table. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_config_parse_table_set\fP (const char *token, char *line)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_config_parse_add_row\fP (const char *token, char *line)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_get_first_row\fP (\fBnetsnmp_table_data_set\fP *table)"
-.br
-.RI "\fIreturns the first row in the table \fP"
-.ti -1c
-.RI "\fBnetsnmp_table_row\fP * \fBnetsnmp_table_data_set_get_next_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
-.br
-.RI "\fIreturns the next row in the table \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_set_num_rows\fP (\fBnetsnmp_table_data_set\fP *table)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_table_data_set_storage\fP * \fBnetsnmp_table_data_set_find_column\fP (\fBnetsnmp_table_data_set_storage\fP *start, unsigned int column)"
-.br
-.RI "\fIFinds a column within a given storage set, given the pointer to the start of the storage set list. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_mark_row_column_writable\fP (\fBnetsnmp_table_row\fP *row, int column, int writable)"
-.br
-.RI "\fImarks a given column in a row as writable or not. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_set_row_column\fP (\fBnetsnmp_table_row\fP *row, unsigned int column, int type, const void *value, size_t value_len)"
-.br
-.RI "\fIsets a given column in a row with data given a type, value, and length. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_table_dataset_add_index\fP (\fBnetsnmp_table_data_set\fP *table, u_char type)"
-.br
-.RI "\fIadds an index to the table. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_table_set_add_indexes\fP (\fBnetsnmp_table_data_set\fP *tset,...)"
-.br
-.RI "\fIadds multiple indexes to a table_dataset helper object. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table with automatted storage. 
-
-This handler helps you implement a table where all the data is expected to be stored within the agent itself and not in some external storage location. It handles all MIB requests including GETs, GETNEXTs and SETs. It's possible to simply create a table without actually ever defining a handler to be called when SNMP requests come in. To use the data, you can either attach a sub-handler that merely uses/manipulates the data further when requests come in, or you can loop through it externally when it's actually needed. This handler is most useful in cases where a table is holding configuration data for something which gets triggered via another event.
-.PP
-NOTE NOTE NOTE: This helper isn't complete and is likely to change somewhat over time. Specifically, the way it stores data internally may change drastically. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_table_data_set\fP* netsnmp_create_table_data_set (const char * table_name)"
-.PP
-Create a netsnmp_table_data_set structure given a table_data definition. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 165 of file table_dataset.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_table_data_set\fP* netsnmp_extract_table_data_set (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts a netsnmp_table_data_set pointer from a given request 
-.PP
-Definition at line 839 of file table_dataset.c.
-.SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_extract_table_data_set_column (\fBnetsnmp_request_info\fP * request, unsigned int column)"
-.PP
-extracts a netsnmp_table_data_set pointer from a given request 
-.PP
-Definition at line 849 of file table_dataset.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_data_set_handler (\fBnetsnmp_table_data_set\fP * data_set)"
-.PP
-Given a netsnmp_table_data_set definition, create a handler for it. 
-.PP
-Definition at line 363 of file table_dataset.c.
-.SS "int netsnmp_mark_row_column_writable (\fBnetsnmp_table_row\fP * row, int column, int writable)"
-.PP
-marks a given column in a row as writable or not. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 1217 of file table_dataset.c.
-.SS "void netsnmp_register_auto_data_table (\fBnetsnmp_table_data_set\fP * table_set, char * registration_name)"
-.PP
-registers a table_dataset so that the 'add_row' snmpd.conf token can be used to add data to this table. If registration_name is NULL then the name used when the table was created will be used instead.
-.PP
-\fBTodo\fP
-.RS 4
-create a properly free'ing registeration pointer for the datalist, and get the datalist freed at shutdown. 
-.RE
-.PP
-
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 876 of file table_dataset.c.
-.SS "int netsnmp_register_table_data_set (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_table_data_set\fP * data_set, \fBnetsnmp_table_registration_info\fP * table_info)"
-.PP
-register a given data_set at a given oid (specified in the netsnmp_handler_registration pointer). The reginfo->handler->access_method *may* be null if the call doesn't ever want to be called for SNMP operations. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 389 of file table_dataset.c.
-.SS "int netsnmp_set_row_column (\fBnetsnmp_table_row\fP * row, unsigned int column, int type, const void * value, size_t value_len)"
-.PP
-sets a given column in a row with data given a type, value, and length. Data is memdup'ed by the function. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 1252 of file table_dataset.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_clone_row (\fBnetsnmp_table_row\fP * row)"
-.PP
-clones a dataset row, including all data. 
-.PP
-Definition at line 196 of file table_dataset.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_create_row_from_defaults (\fBnetsnmp_table_data_set_storage\fP * defrow)"
-.PP
-creates a new row from an existing defined default set 
-.PP
-Definition at line 244 of file table_dataset.c.
-.SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_table_data_set_find_column (\fBnetsnmp_table_data_set_storage\fP * start, unsigned int column)"
-.PP
-Finds a column within a given storage set, given the pointer to the start of the storage set list. 
-.PP
-Definition at line 1205 of file table_dataset.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_get_first_row (\fBnetsnmp_table_data_set\fP * table)"
-.PP
-returns the first row in the table 
-.PP
-Definition at line 1174 of file table_dataset.c.
-.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_get_next_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-returns the next row in the table 
-.PP
-Definition at line 1181 of file table_dataset.c.
-.SS "void netsnmp_table_dataset_add_index (\fBnetsnmp_table_data_set\fP * table, u_char type)"
-.PP
-adds an index to the table. Call this repeatly for each index. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 1306 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_add_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-adds a new row to a dataset table 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 117 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_delete_all_data (\fBnetsnmp_table_data_set_storage\fP * data)"
-.PP
-deletes all the data from this \fBnode\fP and beyond in the linked list 
-.PP
-Definition at line 94 of file table_dataset.c.
-.SS "NETSNMP_INLINE \fBnetsnmp_table_data_set_storage\fP* netsnmp_table_dataset_delete_data (\fBnetsnmp_table_data_set_storage\fP * data)"
-.PP
-deletes a single dataset table data. returns the (possibly still good) next pointer of the deleted data object. 
-.PP
-Definition at line 81 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_delete_row (\fBnetsnmp_table_row\fP * row)"
-.PP
-deletes all the data from this \fBnode\fP and beyond in the linked list 
-.PP
-Definition at line 104 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_and_delete_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-removes a row from the table and then deletes it (and all its data) 
-.PP
-Definition at line 149 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
-.PP
-removes a row from the table, but doesn't delete/free the column values 
-.PP
-Definition at line 138 of file table_dataset.c.
-.SS "NETSNMP_INLINE void netsnmp_table_dataset_replace_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * origrow, \fBnetsnmp_table_row\fP * newrow)"
-.PP
-adds a new row to a dataset table 
-.PP
-Definition at line 127 of file table_dataset.c.
-.SS "int netsnmp_table_set_add_default_row (\fBnetsnmp_table_data_set\fP * table_set, unsigned int column, int type, int writable, void * default_value, size_t default_value_len)"
-.PP
-adds a new default row to a table_set. Arguments should be the table_set, column number, \fBvariable\fP type and finally a 1 if it is allowed to be writable, or a 0 if not. If the default_value field is not NULL, it will be used to populate new valuse in that column fro newly created rows. It is copied into the storage template (free your calling argument).
-.PP
-returns SNMPERR_SUCCESS or SNMPERR_FAILURE 
-.PP
-Definition at line 270 of file table_dataset.c.
-.SS "void netsnmp_table_set_add_indexes (\fBnetsnmp_table_data_set\fP * tset,  ...)"
-.PP
-adds multiple indexes to a table_dataset helper object. To end the list, use a 0 after the list of ASN index types. 
-.PP
-Definition at line 1316 of file table_dataset.c.
-.SS "void netsnmp_table_set_multi_add_default_row (\fBnetsnmp_table_data_set\fP * tset,  ...)"
-.PP
-adds multiple data column definitions to each row. Functionally, this is a wrapper around calling netsnmp_table_set_add_default_row repeatedly for you. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdata_set.c\fP.
-.PP
-Definition at line 332 of file table_dataset.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_generic.3 b/man/netsnmp_table_generic.3
deleted file mode 100644
index dd4456f..0000000
--- a/man/netsnmp_table_generic.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH "generic_table_API" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-generic_table_API \- 
-.PP
-General requirements for a table helper.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBtable_maintenance\fP"
-.br
-.PP
-
-.RI "\fIRoutines for maintaining the contents of a table. \fP"
-.ti -1c
-.RI "\fBmib_maintenance\fP"
-.br
-.PP
-
-.RI "\fIRoutines for maintaining a MIB table. \fP"
-.ti -1c
-.RI "\fBtable_rows\fP"
-.br
-.PP
-
-.RI "\fIRoutines for working with the rows of a table. \fP"
-.ti -1c
-.RI "\fBtable_indexes\fP"
-.br
-.PP
-
-.RI "\fIRoutines for working with row indexes. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-General requirements for a table helper. 
-
-A given table helper need not implement the whole of this API, and may need to adjust the prototype of certain routines. But this description provides a suitable standard design framework. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_indexes.3 b/man/netsnmp_table_indexes.3
deleted file mode 100644
index 5d0feb4..0000000
--- a/man/netsnmp_table_indexes.3
+++ /dev/null
@@ -1,83 +0,0 @@
-.TH "table_indexes" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_indexes \- 
-.PP
-Routines for working with row indexes.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBnetsnmp_generic_idx\fP (void *table)"
-.br
-.RI "\fIRetrieve the indexing structure of the table. \fP"
-.ti -1c
-.RI "\fBnetsnmp_variable_list\fP * \fBnetsnmp_generic_row_idx\fP (void *row)"
-.br
-.RI "\fIReport the index values for a row. \fP"
-.ti -1c
-.RI "size_t \fBnetsnmp_generic_row_oid\fP (void *row, oid *instances)"
-.br
-.RI "\fIReport the instance OIDs for a row. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_compare_idx\fP (void *row, \fBnetsnmp_variable_list\fP *index)"
-.br
-.RI "\fICompare a row against the specified index values. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_compare_oid\fP (void *row, oid *instances, size_t len)"
-.br
-.RI "\fICompare a row against the specified instance OIDs. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_compare_subtree_idx\fP (void *row, \fBnetsnmp_variable_list\fP *index)"
-.br
-.RI "\fICheck if a row lies within a subtree of index values. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_compare_subtree_oid\fP (void *row, oid *instances, size_t len)"
-.br
-.RI "\fICheck if a row lies within a subtree of instance OIDs. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Routines for working with row indexes. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_generic_compare_idx (void * row, \fBnetsnmp_variable_list\fP * index)"
-.PP
-Compare a row against the specified index values. 
-.PP
-Definition at line 325 of file table_generic.c.
-.SS "int netsnmp_generic_compare_oid (void * row, oid * instances, size_t len)"
-.PP
-Compare a row against the specified instance OIDs. 
-.PP
-Definition at line 331 of file table_generic.c.
-.SS "int netsnmp_generic_compare_subtree_idx (void * row, \fBnetsnmp_variable_list\fP * index)"
-.PP
-Check if a row lies within a subtree of index values. 
-.PP
-Definition at line 337 of file table_generic.c.
-.SS "int netsnmp_generic_compare_subtree_oid (void * row, oid * instances, size_t len)"
-.PP
-Check if a row lies within a subtree of instance OIDs. 
-.PP
-Definition at line 343 of file table_generic.c.
-.SS "\fBnetsnmp_variable_list\fP* netsnmp_generic_idx (void * table)"
-.PP
-Retrieve the indexing structure of the table. 
-.PP
-Definition at line 307 of file table_generic.c.
-.SS "\fBnetsnmp_variable_list\fP* netsnmp_generic_row_idx (void * row)"
-.PP
-Report the index values for a row. 
-.PP
-Definition at line 313 of file table_generic.c.
-.SS "size_t netsnmp_generic_row_oid (void * row, oid * instances)"
-.PP
-Report the instance OIDs for a row. 
-.PP
-Definition at line 319 of file table_generic.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_iterator.3 b/man/netsnmp_table_iterator.3
deleted file mode 100644
index 76cc4ac..0000000
--- a/man/netsnmp_table_iterator.3
+++ /dev/null
@@ -1,192 +0,0 @@
-.TH "table_iterator" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_iterator \- 
-.PP
-The table iterator helper is designed to simplify the task of writing a table handler for the net-snmp agent when the data being accessed is not in an oid sorted form and must be accessed externally.  
-
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBti_cache_info_s\fP"
-.br
-.ti -1c
-.RI "struct \fBnetsnmp_iterator_info_s\fP"
-.br
-.RI "\fIHolds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner. \fP"
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBTI_REQUEST_CACHE\fP   'ti_cache'"
-.br
-.ti -1c
-.RI "#define \fBTABLE_ITERATOR_NOTAGAIN\fP   255"
-.br
-.ti -1c
-.RI "#define \fBTABLE_ITERATOR_NAME\fP   'table_iterator'"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef struct \fBti_cache_info_s\fP \fBti_cache_info\fP"
-.br
-.ti -1c
-.RI "typedef \fBnetsnmp_variable_list\fP *( \fBNetsnmp_First_Data_Point\fP )(void **loop_context, void **data_context, \fBnetsnmp_variable_list\fP *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef \fBnetsnmp_variable_list\fP *( \fBNetsnmp_Next_Data_Point\fP )(void **loop_context, void **data_context, \fBnetsnmp_variable_list\fP *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void *( \fBNetsnmp_Make_Data_Context\fP )(void *loop_context, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void( \fBNetsnmp_Free_Loop_Context\fP )(void *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void( \fBNetsnmp_Free_Data_Context\fP )(void *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_iterator_info_s\fP \fBnetsnmp_iterator_info\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_iterator_info_s\fP struct into netsnmp_iterator_info. \fP"
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_iterator_info\fP * \fBnetsnmp_iterator_create_table\fP (Netsnmp_First_Data_Point *firstDP, Netsnmp_Next_Data_Point *nextDP, Netsnmp_First_Data_Point *getidx, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void \fBnetsnmp_iterator_delete_table\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_table_iterator_handler\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.RI "\fIreturns a netsnmp_mib_handler object for the table_iterator helper \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_table_iterator\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.RI "\fICreates and registers a table iterator helper handler calling netsnmp_create_handler with a handler name set to TABLE_ITERATOR_NAME and access method, netsnmp_table_iterator_helper_handler. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void * \fBnetsnmp_extract_iterator_context\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the table_iterator specific data from a request. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_insert_iterator_context\fP (\fBnetsnmp_request_info\fP *request, void *data)"
-.br
-.RI "\fIinserts table_iterator specific data for a newly created row into a request \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_iterator_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_first\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get\fP (\fBnetsnmp_iterator_info\fP *iinfo, void *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next\fP (\fBnetsnmp_iterator_info\fP *iinfo, void *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get_byidx\fP (\fBnetsnmp_iterator_info\fP *iinfo, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next_byidx\fP (\fBnetsnmp_iterator_info\fP *iinfo, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get_byoid\fP (\fBnetsnmp_iterator_info\fP *iinfo, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next_byoid\fP (\fBnetsnmp_iterator_info\fP *iinfo, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_iterator_row_count\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "Netsnmp_Node_Handler \fBnetsnmp_table_iterator_helper_handler\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The table iterator helper is designed to simplify the task of writing a table handler for the net-snmp agent when the data being accessed is not in an oid sorted form and must be accessed externally. 
-
-Functionally, it is a specialized version of the more generic table helper but easies the burden of GETNEXT processing by manually looping through all the data indexes retrieved through function calls which should be supplied by the \fBmodule\fP that wishes help. The \fBmodule\fP the table_iterator helps should, afterwards, never be called for the case of 'MODE_GETNEXT' and only for the GET and SET related modes instead.
-.PP
-The fundamental notion between the table iterator is that it allows your code to iterate over each 'row' within your data storage mechanism, without requiring that it be sorted in a SNMP-index-compliant manner. Through the get_first_data_point and get_next_data_point hooks, the table_iterator helper will repeatedly call your hooks to find the 'proper' row of data that needs processing. The following concepts are important:
-.PP
-.IP "\(bu" 2
-A loop context is a pointer which indicates where in the current processing of a set of rows you currently are. Allows the get_*_data_point routines to move from one row to the next, once the iterator handler has identified the appropriate row for this request, the job of the loop context is done. The most simple example would be a pointer to an integer which simply counts rows from 1 to X. More commonly, it might be a pointer to a linked list \fBnode\fP, or someother internal or external reference to a data set (file seek value, array pointer, ...). If allocated during iteration, either the free_loop_context_at_end (preferably) or the free_loop_context pointers should be set.
-.PP
-.PP
-.IP "\(bu" 2
-A data context is something that your handler code can use in order to retrieve the rest of the data for the needed row. This data can be accessed in your handler via netsnmp_extract_iterator_context api with the netsnmp_request_info structure that's passed in. The important difference between a loop context and a data context is that multiple data contexts can be kept by the table_iterator helper, where as only one loop context will ever be held by the table_iterator helper. If allocated during iteration the free_data_context pointer should be set to an appropriate function.
-.PP
-.PP
-The table iterator operates in a series of steps that call your code hooks from your netsnmp_iterator_info registration pointer.
-.PP
-.IP "\(bu" 2
-the get_first_data_point hook is called at the beginning of processing. It should set the \fBvariable\fP list to a list of indexes for the given table. It should also set the loop_context and maybe a data_context which you will get a pointer back to when it needs to call your code to retrieve actual data later. The list of indexes should be returned after being update.
-.PP
-.PP
-.IP "\(bu" 2
-the get_next_data_point hook is then called repeatedly and is passed the loop context and the data context for it to update. The indexes, loop context and data context should all be updated if more data is available, otherwise they should be left alone and a NULL should be returned. Ideally, it should update the loop context without the need to reallocate it. If reallocation is necessary for every iterative step, then the free_loop_context function pointer should be set. If not, then the free_loop_context_at_end pointer should be set, which is more efficient since a malloc/free will only be performed once for every iteration. 
-.PP
-
-.SH "Typedef Documentation"
-.PP 
-.SS "struct \fBnetsnmp_iterator_info_s\fP \fBnetsnmp_iterator_info\fP"
-.PP
-Typedefs the \fBnetsnmp_iterator_info_s\fP struct into netsnmp_iterator_info. 
-.SH "Function Documentation"
-.PP 
-.SS "void * netsnmp_extract_iterator_context (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the table_iterator specific data from a request. This function extracts the table iterator specific data from a netsnmp_request_info object. Calls netsnmp_request_get_list_data with request->parent_data set with data from a request that was added previously by a \fBmodule\fP and TABLE_ITERATOR_NAME handler name.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIrequest\fP the netsnmp request info structure
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a void pointer(request->parent_data->data), otherwise NULL is returned if request is NULL or request->parent_data is NULL or request->parent_data object is not found.the net 
-.RE
-.PP
-
-.SS "\fBnetsnmp_mib_handler\fP * netsnmp_get_table_iterator_handler (\fBnetsnmp_iterator_info\fP * iinfo)"
-.PP
-returns a netsnmp_mib_handler object for the table_iterator helper 
-.SS "void netsnmp_insert_iterator_context (\fBnetsnmp_request_info\fP * request, void * data)"
-.PP
-inserts table_iterator specific data for a newly created row into a request 
-.SS "int netsnmp_register_table_iterator (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_iterator_info\fP * iinfo)"
-.PP
-Creates and registers a table iterator helper handler calling netsnmp_create_handler with a handler name set to TABLE_ITERATOR_NAME and access method, netsnmp_table_iterator_helper_handler. If NOT_SERIALIZED is not defined the function injects the serialize handler into the calling chain prior to calling netsnmp_register_table.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreginfo\fP is a pointer to a netsnmp_handler_registration struct
-.br
-\fIiinfo\fP is a pointer to a netsnmp_iterator_info struct
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-MIB_REGISTERED_OK is returned if the registration was a success. Failures are MIB_REGISTRATION_FAILED, MIB_DUPLICATE_REGISTRATION. If iinfo is NULL, SNMPERR_GENERR is returned. 
-.RE
-.PP
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_iterator.h.3 b/man/netsnmp_table_iterator.h.3
deleted file mode 100644
index 5fa3af3..0000000
--- a/man/netsnmp_table_iterator.h.3
+++ /dev/null
@@ -1,111 +0,0 @@
-.TH "table_iterator.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_iterator.h \- 
-.SH SYNOPSIS
-.br
-.PP
-.SS "Data Structures"
-
-.in +1c
-.ti -1c
-.RI "struct \fBnetsnmp_iterator_info_s\fP"
-.br
-.RI "\fIHolds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner. \fP"
-.in -1c
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBNETSNMP_ITERATOR_FLAG_SORTED\fP   0x01"
-.br
-.ti -1c
-.RI "#define \fBTABLE_ITERATOR_NAME\fP   'table_iterator'"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef \fBnetsnmp_variable_list\fP *( \fBNetsnmp_First_Data_Point\fP )(void **loop_context, void **data_context, \fBnetsnmp_variable_list\fP *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef \fBnetsnmp_variable_list\fP *( \fBNetsnmp_Next_Data_Point\fP )(void **loop_context, void **data_context, \fBnetsnmp_variable_list\fP *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void *( \fBNetsnmp_Make_Data_Context\fP )(void *loop_context, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void( \fBNetsnmp_Free_Loop_Context\fP )(void *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef void( \fBNetsnmp_Free_Data_Context\fP )(void *, struct \fBnetsnmp_iterator_info_s\fP *)"
-.br
-.ti -1c
-.RI "typedef struct \fBnetsnmp_iterator_info_s\fP \fBnetsnmp_iterator_info\fP"
-.br
-.RI "\fITypedefs the \fBnetsnmp_iterator_info_s\fP struct into netsnmp_iterator_info. \fP"
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_table_iterator_handler\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.RI "\fIreturns a netsnmp_mib_handler object for the table_iterator helper \fP"
-.ti -1c
-.RI "int \fBnetsnmp_register_table_iterator\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.RI "\fICreates and registers a table iterator helper handler calling netsnmp_create_handler with a handler name set to TABLE_ITERATOR_NAME and access method, netsnmp_table_iterator_helper_handler. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_iterator_delete_table\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.ti -1c
-.RI "NETSNMP_INLINE void * \fBnetsnmp_extract_iterator_context\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the table_iterator specific data from a request. \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_insert_iterator_context\fP (\fBnetsnmp_request_info\fP *request, void *data)"
-.br
-.RI "\fIinserts table_iterator specific data for a newly created row into a request \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_first\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get\fP (\fBnetsnmp_iterator_info\fP *iinfo, void *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next\fP (\fBnetsnmp_iterator_info\fP *iinfo, void *row)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get_byidx\fP (\fBnetsnmp_iterator_info\fP *iinfo, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next_byidx\fP (\fBnetsnmp_iterator_info\fP *iinfo, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_get_byoid\fP (\fBnetsnmp_iterator_info\fP *iinfo, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_iterator_row_next_byoid\fP (\fBnetsnmp_iterator_info\fP *iinfo, oid *instance, size_t len)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_iterator_row_count\fP (\fBnetsnmp_iterator_info\fP *iinfo)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "Netsnmp_Node_Handler \fBnetsnmp_table_iterator_helper_handler\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-
-.PP
-Definition in file \fBtable_iterator.h\fP.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_maintenance.3 b/man/netsnmp_table_maintenance.3
deleted file mode 100644
index c318ecb..0000000
--- a/man/netsnmp_table_maintenance.3
+++ /dev/null
@@ -1,116 +0,0 @@
-.TH "table_maintenance" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_maintenance \- 
-.PP
-Routines for maintaining the contents of a table.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void * \fBnetsnmp_generic_create_table\fP (const char *name, int flags)"
-.br
-.RI "\fICreate a structure to represent the table. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_delete_table\fP (void *table)"
-.br
-.RI "\fIRelease the structure representing a table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_create_row\fP (void)"
-.br
-.RI "\fICreate a new row structure suitable for this style of table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_clone_row\fP (void *row)"
-.br
-.RI "\fICreate a new copy of the specified row. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_copy_row\fP (void *dst_row, void *src_row)"
-.br
-.RI "\fICopy the contents of one row into another. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_delete_row\fP (void *row)"
-.br
-.RI "\fIDelete a row data structure. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_add_row\fP (void *table, void *row)"
-.br
-.RI "\fIAdd a row to the table. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_replace_row\fP (void *table, void *old_row, void *new_row)"
-.br
-.RI "\fIReplace one row with another in the table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_remove_row\fP (void *table, void *row)"
-.br
-.RI "\fIRemove a row from the table. \fP"
-.ti -1c
-.RI "void \fBnetsnmp_generic_remove_delete_row\fP (void *table, void *row)"
-.br
-.RI "\fIRemove and delete a row from the table. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Routines for maintaining the contents of a table. 
-
-This would typically be part of implementing an SNMP MIB, but could potentially also be used for a standalone table.
-.PP
-This section of the generic API is primarily relevant to table helpers where the representation of the table is constructed and maintained within the helper itself. 'External' tables will typically look after such aspects directly, although this section of the abstract API framework could also help direct the design of such table-specific implementations. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_generic_add_row (void * table, void * row)"
-.PP
-Add a row to the table. 
-.PP
-Definition at line 104 of file table_generic.c.
-.SS "void* netsnmp_generic_clone_row (void * row)"
-.PP
-Create a new copy of the specified row. 
-.PP
-Definition at line 82 of file table_generic.c.
-.SS "int netsnmp_generic_copy_row (void * dst_row, void * src_row)"
-.PP
-Copy the contents of one row into another. The destination row structure should be created before this routine is called. 
-.PP
-Definition at line 90 of file table_generic.c.
-.SS "void* netsnmp_generic_create_row (void)"
-.PP
-Create a new row structure suitable for this style of table. Note that this would typically be a 'standalone' row, and would not automatically be inserted into an actual table. 
-.PP
-Definition at line 76 of file table_generic.c.
-.SS "void* netsnmp_generic_create_table (const char * name, int flags)"
-.PP
-Create a structure to represent the table. This could be as simple as the head of a linked list, or a more complex container structure. The 'name' field would typically be used to distinguish between several tables implemented using the same table helper. The 'flags' field would be used to control various (helper-specific) aspects of table behaviour.
-.PP
-The table structure returned should typically be regarded as an opaque, private structure. All operations on the content of the table should ideally use the appropriate routines from this API. 
-.PP
-Definition at line 60 of file table_generic.c.
-.SS "void netsnmp_generic_delete_row (void * row)"
-.PP
-Delete a row data structure. The row should be removed from any relevant table(s) before this routine is called. 
-.PP
-Definition at line 98 of file table_generic.c.
-.SS "void netsnmp_generic_delete_table (void * table)"
-.PP
-Release the structure representing a table. Any rows still contained within the table should also be removed and deleted. 
-.PP
-Definition at line 68 of file table_generic.c.
-.SS "void netsnmp_generic_remove_delete_row (void * table, void * row)"
-.PP
-Remove and delete a row from the table. 
-.PP
-Definition at line 127 of file table_generic.c.
-.SS "void* netsnmp_generic_remove_row (void * table, void * row)"
-.PP
-Remove a row from the table. The data structure for the row should not be released, and would be the return value of this routine. 
-.PP
-Definition at line 121 of file table_generic.c.
-.SS "int netsnmp_generic_replace_row (void * table, void * old_row, void * new_row)"
-.PP
-Replace one row with another in the table. This will typically (but not necessarily) involve two rows sharing the same index information (e.g. to implement update/restore-style SET behaviour). 
-.PP
-Definition at line 113 of file table_generic.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_row.3 b/man/netsnmp_table_row.3
deleted file mode 100644
index d659dcf..0000000
--- a/man/netsnmp_table_row.3
+++ /dev/null
@@ -1,41 +0,0 @@
-.TH "table_row" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_row \- 
-.PP
-Helps you implement a table shared across two or more subagents, or otherwise split into individual row slices.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_table_row_handler_get\fP (void *row)"
-.br
-.RI "\fIreturns a netsnmp_mib_handler object for the table_container helper \fP"
-.ti -1c
-.RI "int \fBnetsnmp_table_row_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_table_registration_info\fP *tabreg, void *row, \fBnetsnmp_variable_list\fP *index)"
-.br
-.ti -1c
-.RI "void * \fBnetsnmp_table_row_extract\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIreturn the row data structure supplied to the table_row helper \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Helps you implement a table shared across two or more subagents, or otherwise split into individual row slices. 
-.SH "Function Documentation"
-.PP 
-.SS "void* netsnmp_table_row_extract (\fBnetsnmp_request_info\fP * request)"
-.PP
-return the row data structure supplied to the table_row helper 
-.PP
-Definition at line 158 of file table_row.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_table_row_handler_get (void * row)"
-.PP
-returns a netsnmp_mib_handler object for the table_container helper 
-.PP
-Definition at line 75 of file table_row.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_table_rows.3 b/man/netsnmp_table_rows.3
deleted file mode 100644
index 4abf388..0000000
--- a/man/netsnmp_table_rows.3
+++ /dev/null
@@ -1,94 +0,0 @@
-.TH "table_rows" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-table_rows \- 
-.PP
-Routines for working with the rows of a table.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_first\fP (void *table)"
-.br
-.RI "\fIRetrieve the first row of the table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_get\fP (void *table, void *row)"
-.br
-.RI "\fIRetrieve the given row from the table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_next\fP (void *table, void *row)"
-.br
-.RI "\fIRetrieve the following row from the table. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_get_byidx\fP (void *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIRetrieve the row with the specified index values. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_next_byidx\fP (void *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIRetrieve the next row after the specified index values. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_get_byoid\fP (void *table, oid *instance, size_t len)"
-.br
-.RI "\fIRetrieve the row with the specified instance OIDs. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_generic_row_next_byoid\fP (void *table, oid *instance, size_t len)"
-.br
-.RI "\fIRetrieve the next row after the specified instance OIDs. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_generic_row_count\fP (void *table)"
-.br
-.RI "\fIReport the number of rows in the table. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Routines for working with the rows of a table. 
-.SH "Function Documentation"
-.PP 
-.SS "int netsnmp_generic_row_count (void * table)"
-.PP
-Report the number of rows in the table. 
-.PP
-Definition at line 282 of file table_generic.c.
-.SS "void* netsnmp_generic_row_first (void * table)"
-.PP
-Retrieve the first row of the table. 
-.PP
-Definition at line 228 of file table_generic.c.
-.SS "void* netsnmp_generic_row_get (void * table, void * row)"
-.PP
-Retrieve the given row from the table. This could either be the same data pointer, passed in, or a separate row structure sharing the same index values (or NULL).
-.PP
-This routine also provides a means to tell whether a given row is present in the table. 
-.PP
-Definition at line 240 of file table_generic.c.
-.SS "void* netsnmp_generic_row_get_byidx (void * table, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-Retrieve the row with the specified index values. 
-.PP
-Definition at line 255 of file table_generic.c.
-.SS "void* netsnmp_generic_row_get_byoid (void * table, oid * instance, size_t len)"
-.PP
-Retrieve the row with the specified instance OIDs. 
-.PP
-Definition at line 270 of file table_generic.c.
-.SS "void* netsnmp_generic_row_next (void * table, void * row)"
-.PP
-Retrieve the following row from the table. If the specified row is not present, this routine should return the entry next after the position this row would have occupied. 
-.PP
-Definition at line 249 of file table_generic.c.
-.SS "void* netsnmp_generic_row_next_byidx (void * table, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-Retrieve the next row after the specified index values. 
-.PP
-Definition at line 262 of file table_generic.c.
-.SS "void* netsnmp_generic_row_next_byoid (void * table, oid * instance, size_t len)"
-.PP
-Retrieve the next row after the specified instance OIDs. 
-.PP
-Definition at line 276 of file table_generic.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_tdata.3 b/man/netsnmp_tdata.3
deleted file mode 100644
index e15478c..0000000
--- a/man/netsnmp_tdata.3
+++ /dev/null
@@ -1,290 +0,0 @@
-.TH "tdata" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-tdata \- 
-.PP
-Implement a table with datamatted storage.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fB_netsnmp_tdata_generate_index_oid\fP (\fBnetsnmp_tdata_row\fP *row)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_tdata\fP * \fBnetsnmp_tdata_create_table\fP (const char *name, long flags)"
-.br
-.RI "\fIcreates and returns a 'tdata' table data structure \fP"
-.ti -1c
-.RI "void \fBnetsnmp_tdata_delete_table\fP (\fBnetsnmp_tdata\fP *table)"
-.br
-.RI "\fIcreates and returns a 'tdata' table data structure \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_create_row\fP (void)"
-.br
-.RI "\fIcreates and returns a pointer to new row data structure \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_clone_row\fP (\fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIclones a 'tdata' row. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_copy_row\fP (\fBnetsnmp_tdata_row\fP *dst_row, \fBnetsnmp_tdata_row\fP *src_row)"
-.br
-.RI "\fIcopy the contents of a 'tdata' row. \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_tdata_delete_row\fP (\fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIdeletes the memory used by the specified row returns the table-specific entry data (that it doesn't know how to delete) \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_add_row\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIAdds a row to the given table (stored in proper lexographical order). \fP"
-.ti -1c
-.RI "void \fBnetsnmp_tdata_replace_row\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *origrow, \fBnetsnmp_tdata_row\fP *newrow)"
-.br
-.RI "\fIswaps out origrow with newrow. \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_remove_row\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIremoves a row from the given table and returns it (no free's called) \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_tdata_remove_and_delete_row\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIremoves and frees a row of the given table and returns the table-specific entry data \fP"
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_tdata_handler\fP (\fBnetsnmp_tdata\fP *table)"
-.br
-.RI "\fICreates a tdata handler and returns it. \fP"
-.ti -1c
-.RI "int \fB_netsnmp_tdata_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_tdata_register\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_tdata\fP *table, \fBnetsnmp_table_registration_info\fP *table_info)"
-.br
-.RI "\fIregisters a tdata-based MIB table \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_unregister\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_tdata\fP * \fBnetsnmp_tdata_extract_table\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the tdata table from the request structure \fP"
-.ti -1c
-.RI "\fBnetsnmp_container\fP * \fBnetsnmp_tdata_extract_container\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the tdata container from the request structure \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_extract_row\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the tdata row being accessed from the request structure \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_tdata_extract_entry\fP (\fBnetsnmp_request_info\fP *request)"
-.br
-.RI "\fIextracts the (table-specific) entry being accessed from the request structure \fP"
-.ti -1c
-.RI "NETSNMP_INLINE void \fBnetsnmp_insert_tdata_row\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIinserts a newly created tdata row into a request \fP"
-.ti -1c
-.RI "void * \fBnetsnmp_tdata_row_entry\fP (\fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIreturns the (table-specific) entry data for a given row \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_first\fP (\fBnetsnmp_tdata\fP *table)"
-.br
-.RI "\fIreturns the first row in the table \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_get\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIfinds a row in the 'tdata' table given another row \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_next\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_tdata_row\fP *row)"
-.br
-.RI "\fIreturns the next row in the table \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_get_byidx\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIfinds a row in the 'tdata' table given the index values \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_get_byoid\fP (\fBnetsnmp_tdata\fP *table, oid *searchfor, size_t searchfor_len)"
-.br
-.RI "\fIfinds a row in the 'tdata' table given the index OID \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_next_byidx\fP (\fBnetsnmp_tdata\fP *table, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIfinds the lexically next row in the 'tdata' table given the index values \fP"
-.ti -1c
-.RI "\fBnetsnmp_tdata_row\fP * \fBnetsnmp_tdata_row_next_byoid\fP (\fBnetsnmp_tdata\fP *table, oid *searchfor, size_t searchfor_len)"
-.br
-.RI "\fIfinds the lexically next row in the 'tdata' table given the index OID \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_row_count\fP (\fBnetsnmp_tdata\fP *table)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_tdata_compare_idx\fP (\fBnetsnmp_tdata_row\fP *row, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.RI "\fIcompare a row with the given index values \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_compare_oid\fP (\fBnetsnmp_tdata_row\fP *row, oid *compareto, size_t compareto_len)"
-.br
-.RI "\fIcompare a row with the given index OID \fP"
-.ti -1c
-.RI "int \fBnetsnmp_tdata_compare_subtree_idx\fP (\fBnetsnmp_tdata_row\fP *row, \fBnetsnmp_variable_list\fP *indexes)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_tdata_compare_subtree_oid\fP (\fBnetsnmp_tdata_row\fP *row, oid *compareto, size_t compareto_len)"
-.br
-.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "Netsnmp_Node_Handler \fB_netsnmp_tdata_helper_handler\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Implement a table with datamatted storage. 
-
-This helper helps you implement a table where all the rows are expected to be stored within the agent itself and not in some external storage location. It can be used to store a list of rows, where a row consists of the indexes to the table and a generic data pointer. You can then implement a subhandler which is passed the exact row definition and data it must return data for or accept data for. Complex GETNEXT handling is greatly simplified in this case. 
-.SH "Function Documentation"
-.PP 
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_tdata_handler (\fBnetsnmp_tdata\fP * table)"
-.PP
-Creates a tdata handler and returns it. 
-.PP
-Definition at line 283 of file table_tdata.c.
-.SS "NETSNMP_INLINE void netsnmp_insert_tdata_row (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-inserts a newly created tdata row into a request 
-.PP
-Definition at line 405 of file table_tdata.c.
-.SS "int netsnmp_tdata_add_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-Adds a row to the given table (stored in proper lexographical order). returns SNMPERR_SUCCESS on successful addition. or SNMPERR_GENERR on failure (E.G., indexes already existed) 
-.PP
-Definition at line 185 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_clone_row (\fBnetsnmp_tdata_row\fP * row)"
-.PP
-clones a 'tdata' row. DOES NOT CLONE THE TABLE-SPECIFIC ENTRY DATA. 
-.PP
-Definition at line 93 of file table_tdata.c.
-.SS "int netsnmp_tdata_compare_idx (\fBnetsnmp_tdata_row\fP * row, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-compare a row with the given index values 
-.PP
-Definition at line 524 of file table_tdata.c.
-.SS "int netsnmp_tdata_compare_oid (\fBnetsnmp_tdata_row\fP * row, oid * compareto, size_t compareto_len)"
-.PP
-compare a row with the given index OID 
-.PP
-Definition at line 537 of file table_tdata.c.
-.SS "int netsnmp_tdata_copy_row (\fBnetsnmp_tdata_row\fP * dst_row, \fBnetsnmp_tdata_row\fP * src_row)"
-.PP
-copy the contents of a 'tdata' row. DOES NOT COPY THE TABLE-SPECIFIC ENTRY DATA. 
-.PP
-Definition at line 129 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_create_row (void)"
-.PP
-creates and returns a pointer to new row data structure 
-.PP
-Definition at line 85 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata\fP* netsnmp_tdata_create_table (const char * name, long flags)"
-.PP
-creates and returns a 'tdata' table data structure 
-.PP
-Definition at line 55 of file table_tdata.c.
-.SS "void* netsnmp_tdata_delete_row (\fBnetsnmp_tdata_row\fP * row)"
-.PP
-deletes the memory used by the specified row returns the table-specific entry data (that it doesn't know how to delete) 
-.PP
-Definition at line 156 of file table_tdata.c.
-.SS "void netsnmp_tdata_delete_table (\fBnetsnmp_tdata\fP * table)"
-.PP
-creates and returns a 'tdata' table data structure 
-.PP
-Definition at line 69 of file table_tdata.c.
-.SS "\fBnetsnmp_container\fP* netsnmp_tdata_extract_container (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the tdata container from the request structure 
-.PP
-Definition at line 376 of file table_tdata.c.
-.SS "void* netsnmp_tdata_extract_entry (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the (table-specific) entry being accessed from the request structure 
-.PP
-Definition at line 393 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_extract_row (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the tdata row being accessed from the request structure 
-.PP
-Definition at line 385 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata\fP* netsnmp_tdata_extract_table (\fBnetsnmp_request_info\fP * request)"
-.PP
-extracts the tdata table from the request structure 
-.PP
-Definition at line 368 of file table_tdata.c.
-.SS "int netsnmp_tdata_register (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_tdata\fP * table, \fBnetsnmp_table_registration_info\fP * table_info)"
-.PP
-registers a tdata-based MIB table 
-.PP
-Definition at line 350 of file table_tdata.c.
-.SS "void* netsnmp_tdata_remove_and_delete_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-removes and frees a row of the given table and returns the table-specific entry data returns the void * pointer on successful deletion. or NULL on failure (bad arguments) 
-.PP
-Definition at line 259 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_remove_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-removes a row from the given table and returns it (no free's called) returns the row pointer itself on successful removing. or NULL on failure (bad arguments) 
-.PP
-Definition at line 241 of file table_tdata.c.
-.SS "void netsnmp_tdata_replace_row (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * origrow, \fBnetsnmp_tdata_row\fP * newrow)"
-.PP
-swaps out origrow with newrow. This does *not* delete/free anything! 
-.PP
-Definition at line 226 of file table_tdata.c.
-.SS "void* netsnmp_tdata_row_entry (\fBnetsnmp_tdata_row\fP * row)"
-.PP
-returns the (table-specific) entry data for a given row 
-.PP
-Definition at line 420 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_first (\fBnetsnmp_tdata\fP * table)"
-.PP
-returns the first row in the table 
-.PP
-Definition at line 430 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-finds a row in the 'tdata' table given another row 
-.PP
-Definition at line 437 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get_byidx (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-finds a row in the 'tdata' table given the index values 
-.PP
-Definition at line 453 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_get_byoid (\fBnetsnmp_tdata\fP * table, oid * searchfor, size_t searchfor_len)"
-.PP
-finds a row in the 'tdata' table given the index OID 
-.PP
-Definition at line 466 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_tdata_row\fP * row)"
-.PP
-returns the next row in the table 
-.PP
-Definition at line 445 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next_byidx (\fBnetsnmp_tdata\fP * table, \fBnetsnmp_variable_list\fP * indexes)"
-.PP
-finds the lexically next row in the 'tdata' table given the index values 
-.PP
-Definition at line 481 of file table_tdata.c.
-.SS "\fBnetsnmp_tdata_row\fP* netsnmp_tdata_row_next_byoid (\fBnetsnmp_tdata\fP * table, oid * searchfor, size_t searchfor_len)"
-.PP
-finds the lexically next row in the 'tdata' table given the index OID 
-.PP
-Definition at line 495 of file table_tdata.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_tools.h.3 b/man/netsnmp_tools.h.3
deleted file mode 100644
index cd0eec0..0000000
--- a/man/netsnmp_tools.h.3
+++ /dev/null
@@ -1,239 +0,0 @@
-.TH "tools.h" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-tools.h \- 
-.SH SYNOPSIS
-.br
-.PP
-\fC#include <inttypes.h>\fP
-.br
-
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSNMP_MAXPATH\fP   PATH_MAX"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF\fP   (1024 * 4)"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_MEDIUM\fP   1024"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_SMALL\fP   512"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_MESSAGE\fP   1500"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXOID\fP   64"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAX_CMDLINE_OIDS\fP   128"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FILEMODE_CLOSED\fP   0600"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FILEMODE_OPEN\fP   0644"
-.br
-.ti -1c
-.RI "#define \fBBYTESIZE\fP(bitsize)   ((bitsize + 7) >> 3)"
-.br
-.ti -1c
-.RI "#define \fBROUNDUP8\fP(x)   ( ( (x+7) >> 3 ) * 8 )"
-.br
-.ti -1c
-.RI "#define \fBSNMP_STRORNULL\fP(x)   ( x ? x : '(null)')"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FREE\fP(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)"
-.br
-.RI "\fIFrees a pointer only if it is !NULL and sets its value to NULL. \fP"
-.ti -1c
-.RI "#define \fBSNMP_SWIPE_MEM\fP(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)"
-.br
-.RI "\fIFrees pointer n only if it is !NULL, sets n to s and sets s to NULL. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MALLOC_STRUCT\fP(s)   (struct s *) calloc(1, sizeof(struct s))"
-.br
-.RI "\fIMallocs memory of sizeof(struct s), zeros it and returns a pointer to it. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MALLOC_TYPEDEF\fP(td)   (td *) calloc(1, sizeof(td))"
-.br
-.RI "\fIMallocs memory of sizeof(t), zeros it and returns a pointer to it. \fP"
-.ti -1c
-.RI "#define \fBSNMP_ZERO\fP(s, l)   do { if (s) memset(s, 0, l); } while(0)"
-.br
-.RI "\fIZeros l bytes of memory starting at s. \fP"
-.ti -1c
-.RI "#define \fBNETSNMP_REMOVE_CONST\fP(t, e)   ((t)(uintptr_t)(e))"
-.br
-.RI "\fICast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fP"
-.ti -1c
-.RI "#define \fBTOUPPER\fP(c)   (c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)"
-.br
-.ti -1c
-.RI "#define \fBTOLOWER\fP(c)   (c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c)"
-.br
-.ti -1c
-.RI "#define \fBHEX2VAL\fP(s)   ((isalpha(s) ? (TOLOWER(s)-'a'+10) : (TOLOWER(s)-'0')) & 0xf)"
-.br
-.ti -1c
-.RI "#define \fBVAL2HEX\fP(s)   ( (s) + (((s) >= 10) ? ('a'-10) : '0') )"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAX\fP(a, b)   ((a) > (b) ? (a) : (b))"
-.br
-.RI "\fIComputers the maximum of a and b. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MIN\fP(a, b)   ((a) > (b) ? (b) : (a))"
-.br
-.RI "\fIComputers the minimum of a and b. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MACRO_VAL_TO_STR\fP(s)   SNMP_MACRO_VAL_TO_STR_PRIV(s)"
-.br
-.RI "\fIExpands to string with value of the s. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MACRO_VAL_TO_STR_PRIV\fP(s)   #s"
-.br
-.ti -1c
-.RI "#define \fBQUITFUN\fP(e, l)"
-.br
-.ti -1c
-.RI "#define \fBDIFFTIMEVAL\fP(now, then, diff)"
-.br
-.ti -1c
-.RI "#define \fBUSM_LENGTH_OID_TRANSFORM\fP   10"
-.br
-.ti -1c
-.RI "#define \fBISTRANSFORM\fP(ttype, toid)"
-.br
-.ti -1c
-.RI "#define \fBENGINETIME_MAX\fP   2147483647"
-.br
-.ti -1c
-.RI "#define \fBENGINEBOOT_MAX\fP   2147483647"
-.br
-.ti -1c
-.RI "#define \fBsnmp_cstrcat\fP(b, l, o, a, s)   snmp_strcat(b,l,o,a,(const u_char *)s)"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef void * \fBmarker_t\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fBsnmp_realloc\fP (u_char **buf, size_t *buf_len)"
-.br
-.RI "\fIThis function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. \fP"
-.ti -1c
-.RI "void \fBfree_zero\fP (void *buf, size_t size)"
-.br
-.RI "\fIzeros memory before freeing it. \fP"
-.ti -1c
-.RI "u_char * \fBmalloc_random\fP (size_t *size)"
-.br
-.RI "\fIReturns pointer to allocaed & set buffer on success, size contains number of random bytes filled. \fP"
-.ti -1c
-.RI "u_char * \fBmalloc_zero\fP (size_t size)"
-.br
-.ti -1c
-.RI "int \fBmemdup\fP (u_char **to, const void *from, size_t size)"
-.br
-.RI "\fIDuplicates a memory block. \fP"
-.ti -1c
-.RI "u_int \fBbinary_to_hex\fP (const u_char *input, size_t len, char **output)"
-.br
-.RI "\fIconverts binary to hexidecimal \fP"
-.ti -1c
-.RI "int \fBnetsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex, const char *delim)"
-.br
-.RI "\fIconvert an ASCII hex string (with specified delimiters) to binary \fP"
-.ti -1c
-.RI "int \fBsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex)"
-.br
-.RI "\fIconvert an ASCII hex string to binary \fP"
-.ti -1c
-.RI "int \fBhex_to_binary2\fP (const u_char *input, size_t len, char **output)"
-.br
-.RI "\fIhex_to_binary2 \fP"
-.ti -1c
-.RI "int \fBsnmp_decimal_to_binary\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const char *decimal)"
-.br
-.ti -1c
-.RI "int \fBsnmp_strcat\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *s)"
-.br
-.ti -1c
-.RI "char * \fBnetsnmp_strdup_and_null\fP (const u_char *from, size_t from_len)"
-.br
-.RI "\fIcopies 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 \fP"
-.ti -1c
-.RI "void \fBdump_chunk\fP (const char *debugtoken, const char *title, const u_char *buf, int size)"
-.br
-.ti -1c
-.RI "char * \fBdump_snmpEngineID\fP (const u_char *buf, size_t *buflen)"
-.br
-.ti -1c
-.RI "marker_t \fBatime_newMarker\fP (void)"
-.br
-.RI "\fIcreate a new time marker. \fP"
-.ti -1c
-.RI "void \fBatime_setMarker\fP (marker_t pm)"
-.br
-.RI "\fIset a time marker. \fP"
-.ti -1c
-.RI "long \fBatime_diff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in msec) between the two markers. \fP"
-.ti -1c
-.RI "u_long \fBuatime_diff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in u_long msec) between the two markers. \fP"
-.ti -1c
-.RI "u_long \fBuatime_hdiff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs). \fP"
-.ti -1c
-.RI "int \fBatime_ready\fP (marker_t pm, int deltaT)"
-.br
-.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
-.ti -1c
-.RI "int \fBuatime_ready\fP (marker_t pm, unsigned int deltaT)"
-.br
-.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
-.ti -1c
-.RI "int \fBmarker_tticks\fP (marker_t pm)"
-.br
-.RI "\fIReturn the number of timeTicks since the given marker. \fP"
-.ti -1c
-.RI "int \fBtimeval_tticks\fP (struct timeval *tv)"
-.br
-.ti -1c
-.RI "NETSNMP_IMPORT char * \fBnetsnmp_getenv\fP (const char *name)"
-.br
-.RI "\fINon Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. \fP"
-.ti -1c
-.RI "NETSNMP_IMPORT int \fBnetsnmp_setenv\fP (const char *envname, const char *envval, int overwrite)"
-.br
-.RI "\fISet an environment \fBvariable\fP. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_addrstr_hton\fP (char *ptr, size_t len)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-
-.PP
-Definition in file \fBtools.h\fP.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/snmp_trap_api.3.def b/man/netsnmp_trap_api.3.def
similarity index 93%
rename from man/snmp_trap_api.3.def
rename to man/netsnmp_trap_api.3.def
index 913d677..424eb6d 100644
--- a/man/snmp_trap_api.3.def
+++ b/man/netsnmp_trap_api.3.def
@@ -1,6 +1,8 @@
-.TH SNMP_TRAP_API 3 "29 Sep 2003" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_TRAP_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-send_easy_trap, send_trap_vars, send_v2trap - send TRAPs or INFORMs from a Net-SNMP MIB module
+send_easy_trap,
+send_trap_vars,
+send_v2trap - send TRAPs or INFORMs from a Net-SNMP MIB module
 .SH SYNOPSIS
 .B #include <net-snmp/agent/agent_trap.h>
 .PP
diff --git a/man/netsnmp_util.3 b/man/netsnmp_util.3
deleted file mode 100644
index f67063c..0000000
--- a/man/netsnmp_util.3
+++ /dev/null
@@ -1,528 +0,0 @@
-.TH "Memory Utility Routines" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-Memory Utility Routines \- 
-.SS "Defines"
-
-.in +1c
-.ti -1c
-.RI "#define \fBSNMP_MAXPATH\fP   PATH_MAX"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF\fP   (1024 * 4)"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_MEDIUM\fP   1024"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_SMALL\fP   512"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXBUF_MESSAGE\fP   1500"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAXOID\fP   64"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAX_CMDLINE_OIDS\fP   128"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FILEMODE_CLOSED\fP   0600"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FILEMODE_OPEN\fP   0644"
-.br
-.ti -1c
-.RI "#define \fBBYTESIZE\fP(bitsize)   ((bitsize + 7) >> 3)"
-.br
-.ti -1c
-.RI "#define \fBROUNDUP8\fP(x)   ( ( (x+7) >> 3 ) * 8 )"
-.br
-.ti -1c
-.RI "#define \fBSNMP_STRORNULL\fP(x)   ( x ? x : '(null)')"
-.br
-.ti -1c
-.RI "#define \fBSNMP_FREE\fP(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)"
-.br
-.RI "\fIFrees a pointer only if it is !NULL and sets its value to NULL. \fP"
-.ti -1c
-.RI "#define \fBSNMP_SWIPE_MEM\fP(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)"
-.br
-.RI "\fIFrees pointer n only if it is !NULL, sets n to s and sets s to NULL. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MALLOC_STRUCT\fP(s)   (struct s *) calloc(1, sizeof(struct s))"
-.br
-.RI "\fIMallocs memory of sizeof(struct s), zeros it and returns a pointer to it. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MALLOC_TYPEDEF\fP(td)   (td *) calloc(1, sizeof(td))"
-.br
-.RI "\fIMallocs memory of sizeof(t), zeros it and returns a pointer to it. \fP"
-.ti -1c
-.RI "#define \fBSNMP_ZERO\fP(s, l)   do { if (s) memset(s, 0, l); } while(0)"
-.br
-.RI "\fIZeros l bytes of memory starting at s. \fP"
-.ti -1c
-.RI "#define \fBNETSNMP_REMOVE_CONST\fP(t, e)   ((t)(uintptr_t)(e))"
-.br
-.RI "\fICast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fP"
-.ti -1c
-.RI "#define \fBTOUPPER\fP(c)   (c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)"
-.br
-.ti -1c
-.RI "#define \fBTOLOWER\fP(c)   (c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c)"
-.br
-.ti -1c
-.RI "#define \fBHEX2VAL\fP(s)   ((isalpha(s) ? (TOLOWER(s)-'a'+10) : (TOLOWER(s)-'0')) & 0xf)"
-.br
-.ti -1c
-.RI "#define \fBVAL2HEX\fP(s)   ( (s) + (((s) >= 10) ? ('a'-10) : '0') )"
-.br
-.ti -1c
-.RI "#define \fBSNMP_MAX\fP(a, b)   ((a) > (b) ? (a) : (b))"
-.br
-.RI "\fIComputers the maximum of a and b. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MIN\fP(a, b)   ((a) > (b) ? (b) : (a))"
-.br
-.RI "\fIComputers the minimum of a and b. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MACRO_VAL_TO_STR\fP(s)   SNMP_MACRO_VAL_TO_STR_PRIV(s)"
-.br
-.RI "\fIExpands to string with value of the s. \fP"
-.ti -1c
-.RI "#define \fBSNMP_MACRO_VAL_TO_STR_PRIV\fP(s)   #s"
-.br
-.ti -1c
-.RI "#define \fBQUITFUN\fP(e, l)"
-.br
-.ti -1c
-.RI "#define \fBDIFFTIMEVAL\fP(now, then, diff)"
-.br
-.ti -1c
-.RI "#define \fBUSM_LENGTH_OID_TRANSFORM\fP   10"
-.br
-.ti -1c
-.RI "#define \fBISTRANSFORM\fP(ttype, toid)"
-.br
-.ti -1c
-.RI "#define \fBENGINETIME_MAX\fP   2147483647"
-.br
-.ti -1c
-.RI "#define \fBENGINEBOOT_MAX\fP   2147483647"
-.br
-.ti -1c
-.RI "#define \fBsnmp_cstrcat\fP(b, l, o, a, s)   snmp_strcat(b,l,o,a,(const u_char *)s)"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef void * \fBmarker_t\fP"
-.br
-.in -1c
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "int \fBsnmp_realloc\fP (u_char **buf, size_t *buf_len)"
-.br
-.RI "\fIThis function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. \fP"
-.ti -1c
-.RI "void \fBfree_zero\fP (void *buf, size_t size)"
-.br
-.RI "\fIzeros memory before freeing it. \fP"
-.ti -1c
-.RI "u_char * \fBmalloc_random\fP (size_t *size)"
-.br
-.RI "\fIReturns pointer to allocaed & set buffer on success, size contains number of random bytes filled. \fP"
-.ti -1c
-.RI "u_char * \fBmalloc_zero\fP (size_t size)"
-.br
-.ti -1c
-.RI "int \fBmemdup\fP (u_char **to, const void *from, size_t size)"
-.br
-.RI "\fIDuplicates a memory block. \fP"
-.ti -1c
-.RI "u_int \fBbinary_to_hex\fP (const u_char *input, size_t len, char **output)"
-.br
-.RI "\fIconverts binary to hexidecimal \fP"
-.ti -1c
-.RI "int \fBnetsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex, const char *delim)"
-.br
-.RI "\fIconvert an ASCII hex string (with specified delimiters) to binary \fP"
-.ti -1c
-.RI "int \fBsnmp_hex_to_binary\fP (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex)"
-.br
-.RI "\fIconvert an ASCII hex string to binary \fP"
-.ti -1c
-.RI "int \fBhex_to_binary2\fP (const u_char *input, size_t len, char **output)"
-.br
-.RI "\fIhex_to_binary2 \fP"
-.ti -1c
-.RI "int \fBsnmp_decimal_to_binary\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const char *decimal)"
-.br
-.ti -1c
-.RI "int \fBsnmp_strcat\fP (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *s)"
-.br
-.ti -1c
-.RI "char * \fBnetsnmp_strdup_and_null\fP (const u_char *from, size_t from_len)"
-.br
-.RI "\fIcopies 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 \fP"
-.ti -1c
-.RI "void \fBdump_chunk\fP (const char *debugtoken, const char *title, const u_char *buf, int size)"
-.br
-.ti -1c
-.RI "char * \fBdump_snmpEngineID\fP (const u_char *buf, size_t *buflen)"
-.br
-.ti -1c
-.RI "marker_t \fBatime_newMarker\fP (void)"
-.br
-.RI "\fIcreate a new time marker. \fP"
-.ti -1c
-.RI "void \fBatime_setMarker\fP (marker_t pm)"
-.br
-.RI "\fIset a time marker. \fP"
-.ti -1c
-.RI "long \fBatime_diff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in msec) between the two markers. \fP"
-.ti -1c
-.RI "u_long \fBuatime_diff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in u_long msec) between the two markers. \fP"
-.ti -1c
-.RI "u_long \fBuatime_hdiff\fP (marker_t first, marker_t second)"
-.br
-.RI "\fIReturns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs). \fP"
-.ti -1c
-.RI "int \fBatime_ready\fP (marker_t pm, int deltaT)"
-.br
-.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
-.ti -1c
-.RI "int \fBuatime_ready\fP (marker_t pm, unsigned int deltaT)"
-.br
-.RI "\fITest: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). \fP"
-.ti -1c
-.RI "int \fBmarker_tticks\fP (marker_t pm)"
-.br
-.RI "\fIReturn the number of timeTicks since the given marker. \fP"
-.ti -1c
-.RI "int \fBtimeval_tticks\fP (struct timeval *tv)"
-.br
-.ti -1c
-.RI "NETSNMP_IMPORT char * \fBnetsnmp_getenv\fP (const char *name)"
-.br
-.RI "\fINon Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. \fP"
-.ti -1c
-.RI "NETSNMP_IMPORT int \fBnetsnmp_setenv\fP (const char *envname, const char *envval, int overwrite)"
-.br
-.RI "\fISet an environment \fBvariable\fP. \fP"
-.ti -1c
-.RI "int \fBnetsnmp_addrstr_hton\fP (char *ptr, size_t len)"
-.br
-.in -1c
-.SH "Define Documentation"
-.PP 
-.SS "#define DIFFTIMEVAL(now, then, diff)"\fBValue:\fP
-.PP
-.nf
-{                                                     \
-        now.tv_sec--;                                   \
-        now.tv_usec += 1000000L;                        \
-        diff.tv_sec  = now.tv_sec  - then.tv_sec;       \
-        diff.tv_usec = now.tv_usec - then.tv_usec;      \
-        if (diff.tv_usec > 1000000L){                   \
-                diff.tv_usec -= 1000000L;               \
-                diff.tv_sec++;                          \
-        }                                               \
-}
-.fi
-.PP
-Definition at line 152 of file tools.h.
-.SS "#define ISTRANSFORM(ttype, toid)"\fBValue:\fP
-.PP
-.nf
-!snmp_oid_compare(ttype, USM_LENGTH_OID_TRANSFORM,            \
-                usm ## toid ## Protocol, USM_LENGTH_OID_TRANSFORM)
-.fi
-.PP
-Definition at line 171 of file tools.h.
-.SS "#define NETSNMP_REMOVE_CONST(t, e)   ((t)(uintptr_t)(e))"
-.PP
-Cast away constness without that gcc -Wcast-qual prints a compiler warning, similar to const_cast<> in C++. \fBParameters:\fP
-.RS 4
-\fIt\fP A pointer type. 
-.br
-\fIe\fP An expression of a type that can be assigned to the type (const t). 
-.RE
-.PP
-
-.PP
-Definition at line 92 of file tools.h.
-.SS "#define QUITFUN(e, l)"\fBValue:\fP
-.PP
-.nf
-if ( (e) != SNMPERR_SUCCESS) {     \
-                rval = SNMPERR_GENERR;  \
-                goto l ;                \
-        }
-.fi
-.PP
-Definition at line 139 of file tools.h.
-.SS "#define SNMP_FREE(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)"
-.PP
-Frees a pointer only if it is !NULL and sets its value to NULL. 
-.PP
-Definition at line 57 of file tools.h.
-.SS "#define SNMP_MACRO_VAL_TO_STR(s)   SNMP_MACRO_VAL_TO_STR_PRIV(s)"
-.PP
-Expands to string with value of the s. If s is macro, the resulting string is value of the macro. Example: #define TEST 1234 \fBSNMP_MACRO_VAL_TO_STR(TEST)\fP expands to '1234' SNMP_MACRO_VAL_TO_STR(TEST+1) expands to '1234+1' 
-.PP
-Definition at line 120 of file tools.h.
-.SS "#define SNMP_MALLOC_STRUCT(s)   (struct s *) calloc(1, sizeof(struct s))"
-.PP
-Mallocs memory of sizeof(struct s), zeros it and returns a pointer to it. 
-.PP
-Definition at line 68 of file tools.h.
-.SS "#define SNMP_MALLOC_TYPEDEF(td)   (td *) calloc(1, sizeof(td))"
-.PP
-Mallocs memory of sizeof(t), zeros it and returns a pointer to it. 
-.PP
-Definition at line 72 of file tools.h.
-.SS "#define SNMP_MAX(a, b)   ((a) > (b) ? (a) : (b))"
-.PP
-Computers the maximum of a and b. 
-.PP
-Definition at line 106 of file tools.h.
-.SS "#define SNMP_MIN(a, b)   ((a) > (b) ? (b) : (a))"
-.PP
-Computers the minimum of a and b. 
-.PP
-Definition at line 110 of file tools.h.
-.SS "#define SNMP_SWIPE_MEM(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)"
-.PP
-Frees pointer n only if it is !NULL, sets n to s and sets s to NULL. 
-.PP
-Definition at line 61 of file tools.h.
-.SS "#define SNMP_ZERO(s, l)   do { if (s) memset(s, 0, l); } while(0)"
-.PP
-Zeros l bytes of memory starting at s. 
-.PP
-Definition at line 76 of file tools.h.
-.SH "Function Documentation"
-.PP 
-.SS "long atime_diff (marker_t first, marker_t second)"
-.PP
-Returns the difference (in msec) between the two markers. 
-.PP
-Definition at line 803 of file tools.c.
-.SS "marker_t atime_newMarker (void)"
-.PP
-create a new time marker. NOTE: Caller must free time marker when no longer needed. 
-.PP
-Definition at line 779 of file tools.c.
-.SS "int atime_ready (marker_t pm, int deltaT)"
-.PP
-Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). 
-.PP
-Definition at line 858 of file tools.c.
-.SS "void atime_setMarker (marker_t pm)"
-.PP
-set a time marker. 
-.PP
-Definition at line 790 of file tools.c.
-.SS "u_int binary_to_hex (const u_char * input, size_t len, char ** output)"
-.PP
-converts binary to hexidecimal \fBParameters:\fP
-.RS 4
-\fI*input\fP Binary data. 
-.br
-\fIlen\fP Length of binary data. 
-.br
-\fI**output\fP NULL terminated string equivalent in hex.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-olen Length of output string not including NULL terminator.
-.RE
-.PP
-FIX Is there already one of these in the UCD SNMP codebase? The old one should be used, or this one should be moved to \fBsnmplib/snmp_api.c\fP. 
-.PP
-Definition at line 299 of file tools.c.
-.SS "void free_zero (void * buf, size_t size)"
-.PP
-zeros memory before freeing it. \fBParameters:\fP
-.RS 4
-\fI*buf\fP Pointer at bytes to free. 
-.br
-\fIsize\fP Number of bytes in buf. 
-.RE
-.PP
-
-.PP
-Definition at line 197 of file tools.c.
-.SS "int hex_to_binary2 (const u_char * input, size_t len, char ** output)"
-.PP
-hex_to_binary2 \fBParameters:\fP
-.RS 4
-\fI*input\fP Printable data in base16. 
-.br
-\fIlen\fP Length in bytes of data. 
-.br
-\fI**output\fP Binary data equivalent to input.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-SNMPERR_GENERR on failure, otherwise length of allocated string.
-.RE
-.PP
-Input of an odd length is right aligned.
-.PP
-FIX Another version of 'hex-to-binary' which takes odd length input strings. It also allocates the memory to hold the binary data. Should be integrated with the official hex_to_binary() function. 
-.PP
-Definition at line 336 of file tools.c.
-.SS "u_char* malloc_random (size_t * size)"
-.PP
-Returns pointer to allocaed & set buffer on success, size contains number of random bytes filled. buf is NULL and *size set to KMT error value upon failure.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIsize\fP Number of bytes to malloc() and fill with random bytes.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-a malloced buffer 
-.RE
-.PP
-
-.PP
-Definition at line 217 of file tools.c.
-.SS "int marker_tticks (marker_t pm)"
-.PP
-Return the number of timeTicks since the given marker. 
-.PP
-Definition at line 906 of file tools.c.
-.SS "void * netsnmp_memdup (const void * from, size_t size)"
-.PP
-Duplicates a memory block. Copies a existing memory location from a pointer to another, newly malloced, pointer.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIto\fP Pointer to allocate and copy memory to. 
-.br
-\fIfrom\fP Pointer to copy memory from. 
-.br
-\fIsize\fP Size of the data to be copied.
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-SNMPERR_SUCCESS on success, SNMPERR_GENERR on failure. 
-.RE
-.PP
-
-.PP
-Definition at line 248 of file tools.c.
-.SS "NETSNMP_IMPORT char* netsnmp_getenv (const char * name)"
-.PP
-Non Windows: Returns a pointer to the desired environment \fBvariable\fP or NULL if the environment \fBvariable\fP does not exist. Windows: Returns a pointer to the desired environment \fBvariable\fP if it exists. If it does not, the \fBvariable\fP is looked up in the registry in HKCU\\Net-SNMP or HKLM\\Net-SNMP (whichever it finds first) and stores the result in the environment \fBvariable\fP. It then returns a pointer to environment \fBvariable\fP. 
-.PP
-Definition at line 934 of file tools.c.
-.SS "int netsnmp_hex_to_binary (u_char ** buf, size_t * buf_len, size_t * offset, int allow_realloc, const char * hex, const char * delim)"
-.PP
-convert an ASCII hex string (with specified delimiters) to binary \fBParameters:\fP
-.RS 4
-\fIbuf\fP address of a pointer (pointer to pointer) for the output buffer. If allow_realloc is set, the buffer may be grown via snmp_realloc to accomodate the data.
-.br
-\fIbuf_len\fP pointer to a size_t containing the initial size of buf.
-.br
-\fIoffset\fP On input, a pointer to a size_t indicating an offset into buf. The binary data will be stored at this offset. On output, this pointer will have updated the offset to be the first byte after the converted data.
-.br
-\fIallow_realloc\fP If true, the buffer can be reallocated. If false, and the buffer is not large enough to contain the string, an error will be returned.
-.br
-\fIhex\fP pointer to hex string to be converted. May be prefixed by '0x' or '0X'.
-.br
-\fIdelim\fP point to a string of allowed delimiters between bytes. If not specified, any non-hex characters will be an error.
-.RE
-.PP
-\fBReturn values:\fP
-.RS 4
-\fI1\fP success 
-.br
-\fI0\fP error 
-.RE
-.PP
-
-.PP
-Definition at line 437 of file tools.c.
-.SS "NETSNMP_IMPORT int netsnmp_setenv (const char * envname, const char * envval, int overwrite)"
-.PP
-Set an environment \fBvariable\fP. This function is only necessary on Windows for the MSVC and MinGW environments. If the process that uses the Net-SNMP DLL (e.g. a Perl interpreter) and the Net-SNMP have been built with a different compiler version then each will have a separate set of environment variables. This function allows to set an environment \fBvariable\fP such that it gets noticed by the Net-SNMP DLL. 
-.PP
-Definition at line 1067 of file tools.c.
-.SS "char* netsnmp_strdup_and_null (const u_char * from, size_t from_len)"
-.PP
-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 
-.PP
-Definition at line 267 of file tools.c.
-.SS "int snmp_hex_to_binary (u_char ** buf, size_t * buf_len, size_t * offset, int allow_realloc, const char * hex)"
-.PP
-convert an ASCII hex string to binary \fBNote:\fP
-.RS 4
-This is a wrapper which calls netsnmp_hex_to_binary with a delimiter string of ' '.
-.RE
-.PP
-See netsnmp_hex_to_binary for parameter descriptions.
-.PP
-\fBReturn values:\fP
-.RS 4
-\fI1\fP success 
-.br
-\fI0\fP error 
-.RE
-.PP
-
-.PP
-Definition at line 497 of file tools.c.
-.SS "int snmp_realloc (u_char ** buf, size_t * buf_len)"
-.PP
-This function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. Contents are preserved **AT THE BOTTOM END OF THE BUFFER**. If memory can be (re-)allocated then it returns 1, else it returns 0.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIbuf\fP pointer to a buffer pointer 
-.br
-\fIbuf_len\fP pointer to current size of buffer in bytes
-.RE
-.PP
-\fBNote:\fP
-.RS 4
-The current re-allocation algorithm is to increase the buffer size by whichever is the greater of 256 bytes or the current buffer size, up to a maximum increase of 8192 bytes. 
-.RE
-.PP
-
-.PP
-Definition at line 133 of file tools.c.
-.SS "u_long uatime_diff (marker_t first, marker_t second)"
-.PP
-Returns the difference (in u_long msec) between the two markers. 
-.PP
-Definition at line 820 of file tools.c.
-.SS "u_long uatime_hdiff (marker_t first, marker_t second)"
-.PP
-Returns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs). 
-.PP
-Definition at line 838 of file tools.c.
-.SS "int uatime_ready (marker_t pm, unsigned int deltaT)"
-.PP
-Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). 
-.PP
-Definition at line 880 of file tools.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_utilities.3 b/man/netsnmp_utilities.3
deleted file mode 100644
index da10696..0000000
--- a/man/netsnmp_utilities.3
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH "utility_handlers" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-utility_handlers \- 
-.PP
-Simplify request processing A group of handlers intended to simplify certain aspects of processing a request for a MIB object.  
-
-.SS "Modules"
-
-.in +1c
-.ti -1c
-.RI "\fBbulk_to_next\fP"
-.br
-.PP
-
-.RI "\fIConvert GETBULK requests into GETNEXT requests for the handler. \fP"
-.ti -1c
-.RI "\fBcache_handler\fP"
-.br
-.PP
-
-.RI "\fIMaintains a cache of data for use by lower level handlers. \fP"
-.ti -1c
-.RI "\fBdebug\fP"
-.br
-.PP
-
-.RI "\fIPrint out debugging information about the handler chain being called. \fP"
-.ti -1c
-.RI "\fBmode_end_call\fP"
-.br
-.PP
-
-.RI "\fIAt the end of a series of requests, call another handler hook. \fP"
-.ti -1c
-.RI "\fBmultiplexer\fP"
-.br
-.PP
-
-.RI "\fISplits mode requests into calls to different handlers. \fP"
-.ti -1c
-.RI "\fBread_only\fP"
-.br
-.PP
-
-.RI "\fIMake your handler read_only automatically The only purpose of this handler is to return an appropriate error for any requests passed to it in a SET mode. \fP"
-.ti -1c
-.RI "\fBrow_merge\fP"
-.br
-.PP
-
-.RI "\fICalls sub handlers with request for one row at a time. \fP"
-.ti -1c
-.RI "\fBserialize\fP"
-.br
-.PP
-
-.RI "\fICalls sub handlers one request at a time. \fP"
-.ti -1c
-.RI "\fBstash_to_next\fP"
-.br
-.PP
-
-.RI "\fIConvert GET_STASH requests into GETNEXT requests for the handler. \fP"
-.in -1c
-.SH "Detailed Description"
-.PP 
-Simplify request processing A group of handlers intended to simplify certain aspects of processing a request for a MIB object. 
-
-These helpers do not implement any MIB objects themselves. Rather they handle specific generic situations, either returning an error, or passing a (possibly simpler) request down to lower level handlers. 
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/varbind_api.3.def b/man/netsnmp_varbind_api.3.def
similarity index 68%
rename from man/varbind_api.3.def
rename to man/netsnmp_varbind_api.3.def
index fd61c75..3941f9f 100644
--- a/man/varbind_api.3.def
+++ b/man/netsnmp_varbind_api.3.def
@@ -1,57 +1,69 @@
-.TH VARBIND_API 3 "20 Apr 2009" VVERSIONINFO "Net-SNMP"
+.TH NETSNMP_VARBIND_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
-snmp_pdu_add_var, snmp_varlist_add_var, snmp_add_null_var,
-snmp_clone_varbind, snmp_free_varbind, snmp_free_var,
-print_variable, fprint_variable, snprint_variable,
-print_value, fprint_value, snprint_value - varbind_api functions
+snmp_pdu_add_variable,
+snmp_varlist_add_variable,
+snmp_add_null_var,
+snmp_clone_varbind,
+snmp_set_var_objid,
+snmp_set_var_value,
+snmp_set_var_typed_value,
+snmp_set_var_typed_integer,
+print_variable,
+fprint_variable,
+snprint_variable,
+print_value,
+fprint_value,
+snprint_value,
+snmp_free_var,
+snmp_free_varbind - netsnmp_varbind_api functions
 .SH SYNOPSIS
 .B #include <net-snmp/varbind_api.h>
 .SS Creation
 .PP
 .B "netsnmp_variable_list *snmp_pdu_add_variable("
 .br
-.BI "        netsnmp_pdu *" pdu ","
+.BI "                     netsnmp_pdu *" pdu ","
 .br
-.BI "        const oid *" objid ", size_t " objidlen ","
+.BI "                     const oid *" objid ", size_t " objidlen ","
 .br
-.BI "        u_char " type ", const void *" value ", size_t " len ");"
+.BI "                     u_char " type ", const void *" value ", size_t " len ");"
 .br
 .B "netsnmp_variable_list *snmp_varlist_add_variable("
 .br
-.BI "        netsnmp_variable_list *" varlist ","
+.BI "                     netsnmp_variable_list *" varlist ","
 .br
-.BI "        const oid *" objid ", size_t " objidlen ","
+.BI "                     const oid *" objid ", size_t " objidlen ","
 .br
-.BI "        u_char " type ", const void *" value ", size_t " len ");"
+.BI "                     u_char " type ", const void *" value ", size_t " len ");"
 .br
 .B "netsnmp_variable_list *snmp_add_null_var("
 .br
-.BI "        netsnmp_pdu *" pdu ","
+.BI "                     netsnmp_pdu *" pdu ","
 .br
-.BI "        const oid *" objid ", size_t " objidlen ");"
+.BI "                     const oid *" objid ", size_t " objidlen ");"
 .PP
 .B "netsnmp_variable_list *snmp_clone_varbind("
 .br
-.BI "        netsnmp_variable_list *" varlist ");"
+.BI "                     netsnmp_variable_list *" varlist ");"
 .SS Setting Values
 .PP
 .BI "int  snmp_set_var_objid( netsnmp_variable_list* " variable ","
 .br
-.BI "                         const oid * " objid ", size_t " objidlen ");"
+.BI "                     const oid * " objid ", size_t " objidlen ");"
 .br
 .BI "int  snmp_set_var_value( netsnmp_variable_list* " variable ","
 .br
-.BI "                         const void * " value ", size_t " vallen ");"
+.BI "                     const void * " value ", size_t " vallen ");"
 .br
 .BI "int  snmp_set_var_typed_value( netsnmp_variable_list* " variable ","
 .br
-.BI "                         u_char " type ","
+.BI "                     u_char " type ","
 .br
-.BI "                         const void * " value ", size_t " vallen ");"
+.BI "                     const void * " value ", size_t " vallen ");"
 .br
 .BI "int  snmp_set_var_typed_integer( netsnmp_variable_list* " variable ","
 .br
-.BI "                         u_char " type ", long " value ");"
+.BI "                     u_char " type ", long " value ");"
 .br
 .SS Output
 .PP
@@ -73,24 +85,24 @@
 .PP
 .BI "void  print_value(const oid *" objid ", size_t " objidlen ","
 .br
-.BI "                  const netsnmp_variable_list *" variable ");"
+.BI "                     const netsnmp_variable_list *" variable ");"
 .br
 .BI "void fprint_value(FILE *" fp ","
 .br
-.BI "                  const oid *" objid ", size_t " objidlen ","
+.BI "                     const oid *" objid ", size_t " objidlen ","
 .br
-.BI "                  const netsnmp_variable_list *" variable ");"
+.BI "                     const netsnmp_variable_list *" variable ");"
 .br
 .BI "int snprint_value(char *" buf ", size_t " "len" ","
 .br
-.BI "                  const oid *" objid ", size_t " objidlen ","
+.BI "                     const oid *" objid ", size_t " objidlen ","
 .br
-.BI "                  const netsnmp_variable_list *" variable ");"
+.BI "                     const netsnmp_variable_list *" variable ");"
 .br
 .br
 .SS Deletion
 .PP
-.BI "void snmp_free_var(     netsnmp_variable_list *" variable ");"
+.BI "void snmp_free_var(       netsnmp_variable_list *" variable ");"
 .br
 .BI "void snmp_free_varbind( netsnmp_variable_list *" variables ");"
 .br
@@ -116,7 +128,13 @@
 When adding the first varbind to an empty list, simply
 pass the address of the head of the list:
 .IP
-"[Insert example code here]"
+  netsnmp_variable_list *vl = NULL;
+  snmp_varlist_add_variable(
+            &vl, name1, name1_len,
+            ASN_\fITYPE\fP, &val1, val1_len);
+  snmp_varlist_add_variable(
+            &vl, name2, name2_len,
+            ASN_\fITYPE\fP, &val2, val2_len);
 .PP
 In both cases, the routine will return a pointer to the new
 varbind structure (or NULL if the varbind creation fails).
@@ -183,6 +201,8 @@
 .B print_variable
 routines, but only displaying the value of the variable, without the
 corresponding object identifier.
+.PP
+For displaying the OID of a varbind, see \fBnetsnmp_mib_api\fP(3).
 .br
 .SS Deletion
 .B snmp_free_var
@@ -192,5 +212,5 @@
 releases all memory used by each varbind structure in the varbind list provided.
 .br
 .SH "SEE ALSO"
-.BR pdu_api "(3)"
-.BR mib_api "(3)"
+.BR netsnmp_pdu_api "(3)"
+.BR netsnmp_mib_api "(3)"
diff --git a/man/netsnmp_variable_list.3 b/man/netsnmp_variable_list.3
deleted file mode 100644
index 1a5841b..0000000
--- a/man/netsnmp_variable_list.3
+++ /dev/null
@@ -1,132 +0,0 @@
-.TH "variable_list" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-variable_list \- 
-.PP
-The netsnmp \fBvariable\fP list binding structure, it's typedef'd to netsnmp_variable_list.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <types.h>\fP
-.SS "Data Fields"
-
-.in +1c
-.ti -1c
-.RI "struct \fBvariable_list\fP * \fBnext_variable\fP"
-.br
-.RI "\fINULL for last \fBvariable\fP. \fP"
-.ti -1c
-.RI "oid * \fBname\fP"
-.br
-.RI "\fIObject identifier of \fBvariable\fP. \fP"
-.ti -1c
-.RI "size_t \fBname_length\fP"
-.br
-.RI "\fInumber of subid's in name \fP"
-.ti -1c
-.RI "u_char \fBtype\fP"
-.br
-.RI "\fIASN type of \fBvariable\fP. \fP"
-.ti -1c
-.RI "\fBnetsnmp_vardata\fP \fBval\fP"
-.br
-.RI "\fIvalue of \fBvariable\fP \fP"
-.ti -1c
-.RI "size_t \fBval_len\fP"
-.br
-.RI "\fIthe length of the value to be copied into buf \fP"
-.ti -1c
-.RI "oid \fBname_loc\fP [MAX_OID_LEN]"
-.br
-.RI "\fIbuffer to hold the OID \fP"
-.ti -1c
-.RI "u_char \fBbuf\fP [40]"
-.br
-.RI "\fI90 percentile < 40. \fP"
-.ti -1c
-.RI "void * \fBdata\fP"
-.br
-.RI "\fI(Opaque) hook for additional data \fP"
-.ti -1c
-.RI "void(* \fBdataFreeHook\fP )(void *)"
-.br
-.RI "\fIcallback to free above \fP"
-.ti -1c
-.RI "int \fBindex\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-The netsnmp \fBvariable\fP list binding structure, it's typedef'd to netsnmp_variable_list. 
-.PP
-\fBExamples: \fP
-.in +1c
-.PP
-\fBnotification.c\fP.
-.PP
-Definition at line 139 of file types.h.
-.SH "Field Documentation"
-.PP 
-.SS "u_char \fBvariable_list::buf\fP[40]"
-.PP
-90 percentile < 40. 
-.PP
-Definition at line 155 of file types.h.
-.SS "void* \fBvariable_list::data\fP"
-.PP
-(Opaque) hook for additional data 
-.PP
-Definition at line 157 of file types.h.
-.SS "void(* \fBvariable_list::dataFreeHook\fP)(void *)"
-.PP
-callback to free above 
-.SS "oid* \fBvariable_list::name\fP"
-.PP
-Object identifier of \fBvariable\fP. 
-.PP
-Definition at line 143 of file types.h.
-.SS "size_t \fBvariable_list::name_length\fP"
-.PP
-number of subid's in name 
-.PP
-Definition at line 145 of file types.h.
-.SS "oid \fBvariable_list::name_loc\fP[MAX_OID_LEN]"
-.PP
-buffer to hold the OID 
-.PP
-Definition at line 153 of file types.h.
-.SS "struct \fBvariable_list\fP* \fBvariable_list::next_variable\fP\fC [read]\fP"
-.PP
-NULL for last \fBvariable\fP. 
-.PP
-Definition at line 141 of file types.h.
-.SS "u_char \fBvariable_list::type\fP"
-.PP
-ASN type of \fBvariable\fP. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 147 of file types.h.
-.SS "\fBnetsnmp_vardata\fP \fBvariable_list::val\fP"
-.PP
-value of \fBvariable\fP 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBdelayed_instance.c\fP.
-.PP
-Definition at line 149 of file types.h.
-.SS "size_t \fBvariable_list::val_len\fP"
-.PP
-the length of the value to be copied into buf 
-.PP
-Definition at line 151 of file types.h.
-
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_watcher.3 b/man/netsnmp_watcher.3
deleted file mode 100644
index de5314e..0000000
--- a/man/netsnmp_watcher.3
+++ /dev/null
@@ -1,162 +0,0 @@
-.TH "watcher" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-watcher \- 
-.PP
-Watch a specified \fBvariable\fP and process it as an instance or scalar object.  
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_watcher_handler\fP (void)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_init_watcher_info6\fP (\fBnetsnmp_watcher_info\fP *winfo, void *data, size_t size, u_char type, int flags, size_t max_size, size_t *size_p)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_create_watcher_info6\fP (void *data, size_t size, u_char type, int flags, size_t max_size, size_t *size_p)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_init_watcher_info\fP (\fBnetsnmp_watcher_info\fP *winfo, void *data, size_t size, u_char type, int flags)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_watcher_info\fP * \fBnetsnmp_create_watcher_info\fP (void *data, size_t size, u_char type, int flags)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_watched_instance\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_watcher_info\fP *watchinfo)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_watched_scalar\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_watcher_info\fP *watchinfo)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_watcher_helper_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_watched_timestamp_handler\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_watched_timestamp_register\fP (\fBnetsnmp_mib_handler\fP *whandler, \fBnetsnmp_handler_registration\fP *reginfo, marker_t timestamp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_watched_timestamp\fP (\fBnetsnmp_handler_registration\fP *reginfo, marker_t timestamp)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_watched_timestamp_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_get_watched_spinlock_handler\fP (void)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_watched_spinlock\fP (\fBnetsnmp_handler_registration\fP *reginfo, int *spinlock)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_watched_spinlock_handler\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_ulong_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_ulong_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_long_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_long_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_int_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_int_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, int *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.ti -1c
-.RI "int \fBnetsnmp_register_read_only_counter32_scalar\fP (const char *name, const oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.in -1c 
-.in +1c
-.ti -1c
-.RI "#define \fBNETSNMP_WATCHER_DIRECT\fP   MIB_HANDLER_CUSTOM1"
-.br
-.ti -1c
-.RI "#define \fBWATCHER_FIXED_SIZE\fP"
-.br
-.RI "\fIThe size of the watched object is constant. \fP"
-.ti -1c
-.RI "#define \fBWATCHER_MAX_SIZE\fP"
-.br
-.RI "\fIThe maximum size of the watched object is stored in max_size. \fP"
-.ti -1c
-.RI "#define \fBWATCHER_SIZE_IS_PTR\fP"
-.br
-.RI "\fIIf set then the \fBvariable\fP data_size_p points to is supposed to hold the current size of the watched object and will be updated on writes. \fP"
-.ti -1c
-.RI "#define \fBWATCHER_SIZE_STRLEN\fP"
-.br
-.RI "\fIIf set then data is suppposed to be a zero-terminated character array and both data_size and data_size_p are ignored. \fP"
-.ti -1c
-.RI "#define \fBWATCHER_SIZE_UNIT_OIDS\fP"
-.br
-.RI "\fIIf set then size is in units of object identifiers. \fP"
-.ti -1c
-.RI "typedef struct \fBnetsnmp_watcher_info_s\fP \fBnetsnmp_watcher_info\fP"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Watch a specified \fBvariable\fP and process it as an instance or scalar object. 
-.SH "Define Documentation"
-.PP 
-.SS "#define WATCHER_FIXED_SIZE"
-.PP
-The size of the watched object is constant. 
-.PP
-Definition at line 26 of file watcher.h.
-.SS "#define WATCHER_MAX_SIZE"
-.PP
-The maximum size of the watched object is stored in max_size. If WATCHER_SIZE_STRLEN is set then it is supposed that max_size + 1 bytes could be stored in the buffer. 
-.PP
-\fBExamples: \fP
-.in +1c
-\fBwatched.c\fP.
-.PP
-Definition at line 32 of file watcher.h.
-.SS "#define WATCHER_SIZE_IS_PTR"
-.PP
-If set then the \fBvariable\fP data_size_p points to is supposed to hold the current size of the watched object and will be updated on writes. \fBSince:\fP
-.RS 4
-Net-SNMP 5.5 
-.RE
-.PP
-
-.PP
-Definition at line 38 of file watcher.h.
-.SS "#define WATCHER_SIZE_STRLEN"
-.PP
-If set then data is suppposed to be a zero-terminated character array and both data_size and data_size_p are ignored. Additionally \\0 is a forbidden character in the data set.
-.PP
-\fBSince:\fP
-.RS 4
-Net-SNMP 5.5 
-.RE
-.PP
-
-.PP
-Definition at line 45 of file watcher.h.
-.SS "#define WATCHER_SIZE_UNIT_OIDS"
-.PP
-If set then size is in units of object identifiers. This is useful if you have an OID and tracks the OID_LENGTH of it as opposed to it's size.
-.PP
-\fBSince:\fP
-.RS 4
-Net-SNMP 5.5.1 
-.RE
-.PP
-
-.PP
-Definition at line 52 of file watcher.h.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/print_description.3 b/man/print_description.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/print_description.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/print_mib.3 b/man/print_mib.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/print_mib.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/print_objid.3 b/man/print_objid.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/print_objid.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/print_value.3 b/man/print_value.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/print_value.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/print_variable.3 b/man/print_variable.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/print_variable.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/read_all_mibs.3 b/man/read_all_mibs.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/read_all_mibs.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/read_mib.3 b/man/read_mib.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/read_mib.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/read_module.3 b/man/read_module.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/read_module.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/read_module_node.3 b/man/read_module_node.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/read_module_node.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/read_objid.3 b/man/read_objid.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/read_objid.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/shutdown_mib.3 b/man/shutdown_mib.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/shutdown_mib.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/snmp-bridge-mib.1 b/man/snmp-bridge-mib.1
new file mode 100644
index 0000000..80f2b5e
--- /dev/null
+++ b/man/snmp-bridge-mib.1
@@ -0,0 +1,208 @@
+'\" t
+.\"     Title: snmp-bridge-mib
+.\"    Author: Jens Osterkamp <jens@linux.vnet.ibm.com>
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\"      Date: 03/26/2010
+.\"    Manual: Net-SNMP
+.\"    Source: http://www.ibm.com/ v6
+.\"  Language: English
+.\"
+.TH "SNMP\-BRIDGE\-MIB" 1 "26 Mar 2010" "http://www\&.ibm\&.com/ v6" "Net\-SNMP"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+snmp-bridge-mib \- provide Linux bridge information via SNMP
+.SH "SYNOPSIS"
+.HP \w'\fBsnmp\-bridge\-mib\fR\ 'u
+\fBsnmp\-bridge\-mib\fR {bridge}
+.SH "ARGUMENTS"
+.PP
+The following arguments are required:
+.PP
+\fBbridge\fR
+.RS 4
+The name of the Linux bridge for which you want to provide information via SNMP, e\&.g\&. br0\&.
+.RE
+.SH "DESCRIPTION"
+.PP
+The snmp\-bridge\-mib is an extension to net\-snmp\&. It collects information about a bridge in a Linux system and exports them for query from other (remote) systems for management purposes\&.
+.SH "CONFIGURATION:"
+.PP
+The preferred method of snmp\-bridge\-mib to attach to net\-snmp is agentx\&. For this to work, you will have to add the following line to /etc/snmp/snmpd\&.conf,
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+    master agentx
+    
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+restart snmpd and start snmp\-bridge\-mib\&. snmp\-bridge\-mib will then connect to the running snmpd daemon\&.
+.PP
+Another way of attaching snmp\-bridge\-mib to is to run it as an embedded perl module\&. You have to add
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+    perl do "path to location of snmp\-bridge\-mib"
+    
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+and restart snmpd\&.
+.SH "EXAMPLE:"
+.PP
+Follow the instructions in this manpage and type
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+    perl /usr/bin/snmp\-bridge\-mib br0
+    
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+You\'ll get the following output:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+     registering at \&.1\&.3\&.6\&.1\&.2\&.1\&.17
+     running as a subagent\&.
+     dot1qbridge agent started\&.
+     NET\-SNMP version 5\&.4\&.2\&.1 AgentX subagent connected
+     
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+Now it\'s time for a first test:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+    $ export MIBS=+BRIDGE\-MIB
+    $ snmpwalk localhost \&.1\&.3\&.6\&.1\&.2\&.1\&.17
+    
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+The output produced should look like
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+    BRIDGE\-MIB::dot1dStpBridgeHelloTime = INTEGER: 199 centi\-seconds
+    BRIDGE\-MIB::dot1dStpBridgeForwardDelay = INTEGER: 1499 centi\-seconds
+    BRIDGE\-MIB::dot1dStpPort\&.1 = INTEGER: 1
+    BRIDGE\-MIB::dot1dStpPort\&.3 = INTEGER: 3
+    BRIDGE\-MIB::dot1dStpPortPriority\&.1 = INTEGER: 32
+    BRIDGE\-MIB::dot1dStpPortPriority\&.3 = INTEGER: 32
+    BRIDGE\-MIB::dot1dStpPortState\&.1 = INTEGER: disabled(1)
+    BRIDGE\-MIB::dot1dStpPortState\&.3 = INTEGER: disabled(1)
+    BRIDGE\-MIB::dot1dStpPortEnable\&.1 = INTEGER: disabled(2)
+    BRIDGE\-MIB::dot1dStpPortEnable\&.3 = INTEGER: disabled(2)
+    BRIDGE\-MIB::dot1dStpPortPathCost\&.1 = INTEGER: 2
+    BRIDGE\-MIB::dot1dStpPortPathCost\&.3 = INTEGER: 4
+    BRIDGE\-MIB::dot1dStpPortDesignatedRoot\&.1 = STRING: "8000\&.001018382c78"
+    BRIDGE\-MIB::dot1dStpPortDesignatedRoot\&.3 = STRING: "8000\&.001018382c78"
+    BRIDGE\-MIB::dot1dStpPortDesignatedCost\&.1 = INTEGER: 0
+    BRIDGE\-MIB::dot1dStpPortDesignatedCost\&.3 = INTEGER: 0
+    BRIDGE\-MIB::dot1dStpPortDesignatedBridge\&.1 = STRING: "8000\&.001018382c78"
+    BRIDGE\-MIB::dot1dStpPortDesignatedBridge\&.3 = STRING: "8000\&.001018382c78"
+    BRIDGE\-MIB::dot1dStpPortDesignatedPort\&.1 = STRING: "32769"
+    BRIDGE\-MIB::dot1dStpPortDesignatedPort\&.3 = STRING: "32770"
+    BRIDGE\-MIB::dot1dStpPortPathCost32\&.1 = INTEGER: 2
+    BRIDGE\-MIB::dot1dStpPortPathCost32\&.3 = INTEGER: 4
+    BRIDGE\-MIB::dot1dTpLearnedEntryDiscards = Counter32: 0
+    BRIDGE\-MIB::dot1dTpAgingTime = INTEGER: 300 seconds
+    BRIDGE\-MIB::dot1dTpFdbAddress\&.\'\&.\&.\&.8,x\' = STRING: 0:10:18:38:2c:78
+    BRIDGE\-MIB::dot1dTpFdbAddress\&.\'\&.!^/B|\' = STRING: 0:21:5e:2f:42:7c
+    BRIDGE\-MIB::dot1dTpFdbPort\&.\'\&.\&.\&.8,x\' = INTEGER: 1
+    BRIDGE\-MIB::dot1dTpFdbPort\&.\'\&.!^/B|\' = INTEGER: 3
+    BRIDGE\-MIB::dot1dTpFdbStatus\&.\'\&.\&.\&.8,x\' = INTEGER: learned(3)
+    BRIDGE\-MIB::dot1dTpFdbStatus\&.\'\&.!^/B|\' = INTEGER: learned(3)
+    BRIDGE\-MIB::dot1dTpPort\&.1 = INTEGER: 1
+    BRIDGE\-MIB::dot1dTpPort\&.3 = INTEGER: 3
+    BRIDGE\-MIB::dot1dTpPortMaxInfo\&.1 = INTEGER: 1500 bytes
+    BRIDGE\-MIB::dot1dTpPortMaxInfo\&.3 = INTEGER: 1500 bytes
+    BRIDGE\-MIB::dot1dTpPortInFrames\&.1 = Counter32: 18082 frames
+    BRIDGE\-MIB::dot1dTpPortInFrames\&.3 = Counter32: 1546072 frames
+    BRIDGE\-MIB::dot1dTpPortOutFrames\&.1 = Counter32: 11601 frames
+    BRIDGE\-MIB::dot1dTpPortOutFrames\&.3 = Counter32: 10988 frames
+    BRIDGE\-MIB::dot1dTpPortInDiscards\&.1 = Counter32: 0 frames
+    BRIDGE\-MIB::dot1dTpPortInDiscards\&.3 = Counter32: 0 frames
+    
+.fi
+.if n \{\
+.RE
+.\}
+.SH "BUGS"
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP "  1." 4.2
+.\}
+snmp\-bridge\-mib currently only supports one bridge which has to be specified on the commandline\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP "  2." 4.2
+.\}
+Not all elements of RFC 4188 because they are either not available in sysfs or difficult to extract from the existing data\&.
+.RE
+.PP
+.SH "SEE ALSO"
+.PP
+\fBsnmpd.conf\fR(5),
+\fBNet::SNMP\fR(3)
+.SH "AUTHOR"
+.PP
+\fBJens Osterkamp\fR <\&jens@linux\&.vnet\&.ibm\&.com\&>
+.RS 4
+Developer
+.RE
+.SH "COPYRIGHT"
+.br
+Copyright \(co 2009, 2010 IBM Corp., All Rights Reserved
+.br
+.PP
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+.PP
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software\&.
+.PP
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\&. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE\&.
+.sp
diff --git a/man/snmp.conf.5.def b/man/snmp.conf.5.def
index 13c15a9..2fe5810 100644
--- a/man/snmp.conf.5.def
+++ b/man/snmp.conf.5.def
@@ -1,4 +1,4 @@
-.TH SNMP.CONF 5 "01 Apr 2009" VVERSIONINFO "Net-SNMP"
+.TH SNMP.CONF 5 "21 Apr 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmp.conf - configuration files for the Net-SNMP applications
 .SH DESCRIPTION
@@ -12,6 +12,32 @@
 containing the settings shared by all users of the system.
 \fC~/.snmp/snmp.conf\fR is a personal file, with the settings
 specific to a particular user.
+.SH HOST-SPECIFIC FILES
+Host-specific files may also be loaded and will be searched for if a
+transport name is specified that matches a \fIPATH/hosts/HOST.conf\fR
+file.  For example, if you wanted a particular host to use SNMPv2c by
+default you could create a ~/.snmp/hosts/NAME.conf file and in it put:
+.RS
+.PP
+defVersion 2c
+.RE
+.PP
+Any connections set to connect to the hostname \fINAME\fR will use
+SNMPv2c.  Also see the \fItransport\fR token below for additional
+host-specific examples.
+.PP
+Host-specific configuration files are loaded at the time the
+connection is opened.  Thus they're generally loaded after all other
+configuration files and can be used to override settings from the
+generic files.
+.PP
+To avoid loading any host-specific config files set
+"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
+turn of loading of the host specific configuration files.
 .SH IMPORTANT NOTE
 Several of these directives may contain sensitive information
 (such as pass phrases).  Configuration files that include such
@@ -38,6 +64,22 @@
 See the \fIsnmpcmd(1)\fR manual page for more details.
 .IP
 If not specified, the default value for this token is 161.
+.IP "transport HOSTSPECIFIER"
+This special token should go into a hostname-specific configuration
+file in a \fIhosts\fR sub-directory.  For example if the file
+\fIhosts/foo.conf\fR exists in the search path it will be loaded if a
+transport name of \fIfoo\fR was used.  Within the foo.conf file you may
+put both general snmp.conf settings as well as a special
+\fItransport\fR string to specify the destination to connect to.  For
+example, putting:
+.RS
+.IP
+transport tcp:foo.example.com:9876
+.RE
+.IP
+in the \fIhosts/foo.conf\fR file will make applications referencing
+the \fIfoo\fR hostname (e.g. \fIsnmpget\fR) to actually connect via
+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.
@@ -124,6 +166,10 @@
 the encoding is basically the same in either case - but working
 backwards typically produces a slightly more efficient encoding,
 and hence a smaller network datagram.
+.IP "dontLoadHostConfig (1|yes|true|0|no|false)"
+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.
 .\"
 .\" XXX - It is probably about time to remove this choice!
 .\"
@@ -338,12 +384,21 @@
 values to set. Equivalent to
 .BR -Ih .
 .SH FILES
-SYSCONFDIR/snmp/snmp.conf,
-SYSCONFDIR/snmp/snmp.local.conf - common configuration settings
+.IP "System-wide configuration files:"
+SYSCONFDIR/snmp/snmp.conf
 .br
-~/.snmp/snmp.conf - user-specific configuration settings
+SYSCONFDIR/snmp/snmp.local.conf
+.IP "User-specific configuration settings:"
+$HOME/.snmp/snmp.conf
+.br
+$HOME/.snmp/snmp.local.conf
+.IP "Destination host specific files:
+SYSCONFDIR/snmp/hosts/HOSTNAME.conf
+.br
+$HOME/.snmp/hosts/HOSTNAME.conf
+
 .SH "SEE ALSO"
-snmp_config(5), read_config(3), snmpcmd(1).
+snmp_config(5), netsnmp_config_api(3), snmpcmd(1).
 .\" Local Variables:
 .\"  mode: nroff
 .\" End:
diff --git a/man/snmp_alarm.3.def b/man/snmp_alarm.3.def
index 091f220..6c79a20 100644
--- a/man/snmp_alarm.3.def
+++ b/man/snmp_alarm.3.def
@@ -1,6 +1,8 @@
 .TH SNMP_ALARM 3 "01 Aug 2002" VVERSIONINFO "Net-SNMP"
 .SH NAME
-snmp_alarm_register, snmp_alarm_register_hr, snmp_alarm_unregister - alarm functions
+snmp_alarm_register,
+snmp_alarm_register_hr,
+snmp_alarm_unregister - alarm functions
 .SH SYNOPSIS
 .B #include <net-snmp/utilities.h>
 .PP
@@ -161,7 +163,7 @@
 system call, although overall precision is of course still determined
 by the underlying operating system.  Recommended.
 .SH "SEE ALSO"
-.BR snmp_api "(3), " default_store "(3), " snmp_select_info "(3), "
+.BR netsnmp_session_api "(3), " default_store "(3), "
 .BR alarm "(2), " setitimer "(2), " select "(2)"
 .\" Local Variables:
 .\"  mode: nroff
diff --git a/man/snmp_api_errstring.3 b/man/snmp_api_errstring.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_api_errstring.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_close.3 b/man/snmp_close.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_close.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_config.5.def b/man/snmp_config.5.def
index 8701d93..fd30873 100644
--- a/man/snmp_config.5.def
+++ b/man/snmp_config.5.def
@@ -1,4 +1,4 @@
-.TH SNMP_CONFIG 5 "5 May 2005" VVERSIONINFO "Net-SNMP"
+.TH SNMP_CONFIG 5 "08 Mar 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmp_config - handling of Net-SNMP configuration files
 .SH DESCRIPTION
@@ -172,15 +172,44 @@
 .PP
 Any lines beginning with the character '#' in the configuration files
 are treated as a comment and are not parsed.
+.SH "INCLUDING OTHER CONFIGURATION FILES"
+It is possible to include other configuration files for processing
+during normal configuration file processing.:
+.PP
+.RS
+.nf
+# include site specific config
+includeFile site.conf
+.RE
+.PP
+This will load the specified configuration file. The
+path to file must be either absolute, starting with '/',
+or relative. The relative path is then relative to the directory
+where the parent file with 'includeFile' directive resides.
+.PP
+The included file name does not need to have '.conf' suffix.
+.PP
+.RS
+.nf
+# include a all *.conf files in a directory
+includeDir /etc/snmp/config.d
+.RE
+.PP
+This will search specified directory for all files with '.conf'
+suffix and process them as if they were included using includeFile
+directive. The configuration files are not processed in any particular
+order.
+.PP
+The specified directory must be absolute directory path.
 .SH "API INTERFACE"
 .PP
 Information about writing C code that makes use of this system in
 either the agent's MIB modules or in applications can be found in the
-.I read_config(3)
+.I netsnmp_config_api(3)
 manual page.
 .SH "SEE ALSO"
 snmpconf(1),
-read_config(3),
+netsnmp_config_api(3),
 snmp.conf(5),
 snmpd.conf(5)
 .\" Local Variables:
diff --git a/man/snmp_error.3 b/man/snmp_error.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_error.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_free_pdu.3 b/man/snmp_free_pdu.3
deleted file mode 100644
index 456d66d..0000000
--- a/man/snmp_free_pdu.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/pdu_api.3
diff --git a/man/snmp_open.3 b/man/snmp_open.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_open.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_perror.3 b/man/snmp_perror.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_perror.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_read.3 b/man/snmp_read.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_read.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_select_info.3 b/man/snmp_select_info.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_select_info.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_send.3 b/man/snmp_send.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_send.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_sess_async_send.3 b/man/snmp_sess_async_send.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_async_send.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_close.3 b/man/snmp_sess_close.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_close.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_error.3 b/man/snmp_sess_error.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_error.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_init.3 b/man/snmp_sess_init.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_init.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_open.3 b/man/snmp_sess_open.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_open.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_perror.3 b/man/snmp_sess_perror.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_sess_perror.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmp_sess_read.3 b/man/snmp_sess_read.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_read.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_select_info.3 b/man/snmp_sess_select_info.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_select_info.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_send.3 b/man/snmp_sess_send.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_send.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_session.3 b/man/snmp_sess_session.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_session.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_sess_timeout.3 b/man/snmp_sess_timeout.3
deleted file mode 100644
index d1e6bc0..0000000
--- a/man/snmp_sess_timeout.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_sess_api.3
diff --git a/man/snmp_set_mib_warnings.3 b/man/snmp_set_mib_warnings.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/snmp_set_mib_warnings.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/snmp_set_save_descriptions.3 b/man/snmp_set_save_descriptions.3
deleted file mode 100644
index 80f348b..0000000
--- a/man/snmp_set_save_descriptions.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/mib_api.3
diff --git a/man/snmp_timeout.3 b/man/snmp_timeout.3
deleted file mode 100644
index fe0a48b..0000000
--- a/man/snmp_timeout.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/session_api.3
diff --git a/man/snmpcmd.1.def b/man/snmpcmd.1.def
index f65b3fd..d97cc14 100644
--- a/man/snmpcmd.1.def
+++ b/man/snmpcmd.1.def
@@ -1,3 +1,4 @@
+.\" -*- 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:
@@ -27,7 +28,7 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPCMD 1 "20 Mar 2009" VVERSIONINFO "Net-SNMP"
+.TH SNMPCMD 1 "20 Jul 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpcmd - options and behaviour common to most of the Net-SNMP command-line tools
 .SH SYNOPSIS
@@ -44,44 +45,24 @@
 applications typically (but not necessarily) take additional
 parameters that are given after the agent specification.  These
 parameters are documented in the manual pages for each application.
-
-.SH OPTIONS
-.TP
-.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
-respectively) or set the localized authentication and encryption keys
-(-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
-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, 
-in the
-.I snmp.conf
-file, see
-.I snmp.conf(5).
-.TP
-.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"
-Set the authentication pass phrase used for authenticated SNMPv3
-messages.  Overrides the \fIdefAuthPassphrase\fR token in the
-.I snmp.conf
-file. It is insecure to specify pass phrases on the command line,
-see
-.I snmp.conf(5).
-.TP
-.BI -c " community"
-Set the community string for SNMPv1/v2c transactions.
-Overrides the \fIdefCommunity\fR token in the
-.I snmp.conf
-file.
+.SH COMMAND-LINE CONFIG OPTIONS
+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
+loading of the host specific configuration files.
+.PP
+The snmp.conf file settings and the double-dash arguments over-ride
+the single-dash arguments.  So it's important to note that if
+single-dash arguments aren't working because you have settings in the
+\fIsnmp.conf\fR file that conflict with them then you'll need to use
+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
+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
 Dump (in hexadecimal) the raw SNMP packets sent and received.
@@ -93,14 +74,6 @@
 .IR ALL
 for extremely verbose output.
 .TP
-.BI -e " engineID"
-Set the authoritative (security) engineID used for SNMPv3 REQUEST
-messages.  It is typically not necessary to specify this, as it will
-usually be discovered automatically.
-.TP
-.BI -E " engineID"
-Set the context engineID used for SNMPv3 REQUEST messages scopedPdu.
-If not specified, this will default to the authoritative engineID.
 .TP
 .B -h, --help
 Display a brief usage message and then exit.
@@ -114,14 +87,6 @@
 .B INPUT OPTIONS 
 below.
 .TP
-.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.
-Overrides the \fIdefSecurityLevel\fR token in the
-.I snmp.conf
-file.
-.TP
 .BI -L " [eEfFoOsS]"
 Specifies output logging options. See 
 .B LOGGING OPTIONS 
@@ -179,13 +144,12 @@
 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
-.BI -n " contextName"
-Set the contextName used for SNMPv3 messages.  The default
-contextName is the empty string "".  Overrides the \fIdefContext\fR token
-in the
+.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. 
-.TP
+file.
 .BI -O " [abeEfnqQsStTuUvxX]"
 Specifies output printing options. See 
 .B OUTPUT OPTIONS
@@ -204,22 +168,147 @@
 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
+Display version information for the application and then exit.
+.TP
+.BI -Y "name"="value"
+.TP
+.BI -- "name"="value"
+Allows 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
+file. See
+.I snmp.conf(5)
+for the full list of tokens.
+
+
+.SH SNMPv3 Options
+The following options are generic to all forms of SNMPv3, regardless
+of whether it's the original SNMPv3 with USM or the newer SNMPv3 over
+(D)TLS support.
+
+.TP
+.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.
+Overrides the \fIdefSecurityLevel\fR token in the
+.I snmp.conf
+file.
+.TP
+.BI -n " contextName"
+Set the contextName used for SNMPv3 messages.  The default
+contextName is the empty string "".  Overrides the \fIdefContext\fR token
+in the
+.I snmp.conf
+file. 
+
+.SH SNMPv3 over TLS Options
+These options pass transport-specific parameters to the TLS layer.  If
+you're using SNMP over TLS or DTLS you'll need to pass a combination
+of these either through these command line options or through
+snmp.conf configuration tokens.
+.PP
+A note about
+.I "<certificate-specifier>s":
+Net-SNMP looks for X.509 certificates in each of the normal SNMP
+configuration directory search paths under a "tls" subdirectory.  IE,
+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,
+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
+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>"
+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
+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.
+.TP
+.BI "-T their_identity=<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.
+.TP
+.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>"
+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
+goodhost.example.com and accept a certificate presented by
+badhost.example.com do you?).  This token can specify the exact host
+name expected to be presented by the remote side, either in a
+subjectAltName field or in the CommonName field of the server's X.509
+certificate.
+.SH SNMPv3 with USM Options
+These options are specific to using SNMPv3 with the original
+User-based Security Model (USM).
+.TP
+.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
+respectively) or set the localized authentication and encryption keys
+(-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
+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, 
+in the
+.I snmp.conf
+file, see
+.I snmp.conf(5).
+.TP
+.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"
+Set the authentication pass phrase used for authenticated SNMPv3
+messages.  Overrides the \fIdefAuthPassphrase\fR token in the
+.I snmp.conf
+file. It is insecure to specify pass phrases on the command line,
+see
+.I snmp.conf(5).
+.TP
+.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"
+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"
 Set the securityName used for authenticated SNMPv3 messages.
 Overrides the \fIdefSecurityName\fR token in the
 .I snmp.conf
 file.
 .TP
-.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.
-.TP
-.B -V, --version
-Display version information for the application and then exit.
-.TP
 .BI -x " privProtocol"
 Set the privacy protocol (DES or AES) used for encrypted SNMPv3 messages. 
 Overrides the \fIdefPrivType\fR token in the
@@ -241,17 +330,15 @@
 boots/time with an authenticated value stored in the LCD.
 It is typically not necessary to specify this option, as these values
 will usually be discovered automatically.
+
+
+.SH SNMPv1 and SNMPv2c Options 
 .TP
-.BI -Y "name"="value"
-.TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.BI -c " community"
+Set the community string for SNMPv1/v2c transactions.
+Overrides the \fIdefCommunity\fR token in the
 .I snmp.conf
-file and sets its value to "value". Overrides the corresponding token in the
-.I snmp.conf
-file. See
-.I snmp.conf(5)
-for the full list of tokens.
+file.
 
 .SH AGENT SPECIFICATION
 .PP
@@ -326,6 +413,35 @@
 on port
 .I 1161
 using TCP/IPv4 and perform query over that connection.
+.IR "udp6:hostname:10161"
+perform the query using UDP/IPv6 datagrams to port
+.I 10161
+on
+.I hostname
+(which will be looked up as an AAAA record).
+.TP 24
+.IR "UDP6:[fe80::2d0:b7ff:fe21:c6c0]"
+perform the query using UDP/IPv6 datagrams to port 161 at address
+.IR fe80::2d0:b7ff:fe21:c6c0 .
+.TP 24
+.IR "tcpipv6:[::1]:1611"
+connect to port 1611 on the local host
+.IR "" ( ::1 
+in IPv6 parlance) using TCP/IPv6 and perform query over that connection.
+.TP 24
+.IR "tls:hostname:10161"
+.TP 24
+.IR "dtls:hostname:10161"
+Connects using SNMP over DTLS or TLS as documented by the ISMS working
+group (RFCs not yet published as of this date).  This will require
+(and automatically ensures) that the TSM security model is in use.
+You'll also need to set up trust paths for the certificates presented
+by the server (see above for descriptions of this).
+.TP 24
+.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).
 .TP 24
 .IR "ipx::00D0B7AAE308"
 perform query using IPX datagrams to node number 
@@ -370,37 +486,6 @@
 perform the query using AAL5 PDUs sent on the permanent virtual
 circuit with VPI=10 (decimal) and VCI=32 (decimal) on the second ATM
 adapter in the machine.  Note that "PVC" is a synonym for "AAL5PVC".
-.TP 24
-.IR "udp6:hostname:10161"
-perform the query using UDP/IPv6 datagrams to port
-.I 10161
-on
-.I hostname
-(which will be looked up as an AAAA record).
-.TP 24
-.IR "UDP6:[fe80::2d0:b7ff:fe21:c6c0]"
-perform the query using UDP/IPv6 datagrams to port 161 at address
-.IR fe80::2d0:b7ff:fe21:c6c0 .
-.TP 24
-.IR "tcpipv6:[::1]:1611"
-connect to port 1611 on the local host
-.IR "" ( ::1 
-in IPv6 parlance) using TCP/IPv6 and perform query over that connection.
-.TP 24
-.IR "dtlsudp:hostname:9161"
-Connects using SNMP over DTLS/UDP 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) and that the
-.IR defX509ServerCerts,
-.IR defX509ClientPriv,
-and
-.IR defX509ClientPub
-configuration tokens have been set.
-.TP 24
-.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).
 .PP
 Note that not all the transport domains listed above will always be
 available; for instance, hosts with no IPv6 support will not be able
diff --git a/man/snmpd.8.def b/man/snmpd.8.def
index b884700..2c92fa2 100644
--- a/man/snmpd.8.def
+++ b/man/snmpd.8.def
@@ -1,4 +1,4 @@
-.TH SNMPD 8 "01 Apr 2009" VVERSIONINFO "Net-SNMP"
+.TH SNMPD 8 "30 Jun 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpd - daemon to respond to SNMP request packets.
 .SH SYNOPSIS
@@ -239,10 +239,7 @@
 .IR "dtlsudp:127.0.0.1:9161"
 Listen for connections over DTLS on UDP port 9161.  The snmp.conf file
 must have the
-.IR defX509ServerPub,
-.IR defX509ServerPriv,
-and
-.IR defX509ClientCerts
+.IR serverCert,
 configuration tokens defined.
 .PP
 Note that not all the transport domains listed above will always be
@@ -307,16 +304,10 @@
 sides.  In order to do this, the client will need to configure the
 snmp.conf file
 with the
-.IR defX509ServerCerts,
-.IR defX509ClientPriv,
-and
-.IR defX509ClientPub
+.IR clientCert
 configuration tokens.  The server will need to configure the snmp.conf
 file with the
-.IR defX509ServerPub,
-.IR defX509ServerPriv,
-and
-.IR defX509ClientCerts
+.IR serverCert
 configuration tokens defined.
 .IP
 Access control setup is similar to the ssh transport as the TSM
diff --git a/man/snmpd.conf.5.def b/man/snmpd.conf.5.def
index c7e4b6a..49d81b6 100644
--- a/man/snmpd.conf.5.def
+++ b/man/snmpd.conf.5.def
@@ -1,4 +1,4 @@
-.TH SNMPD.CONF 5 "01 Jun 2009" VVERSIONINFO "Net-SNMP"
+.TH SNMPD.CONF 5 "30 Jun 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpd.conf - configuration file for the Net-SNMP SNMP agent
 .SH DESCRIPTION
@@ -92,13 +92,42 @@
 the calculated number of repeats allow to fit below this number.
 .IP
 Also not that processing of maxGetbulkRepeats is handled first.
-.SS SNMPv3 Configuration
-SNMPv3 requires an SNMP agent to define a unique "engine ID"
-in order to respond to SNMPv3 requests.
-This ID will normally be determined automatically, using two reasonably
-non-predictable values - a (pseudo-)random number and the current
-time in seconds. This is the recommended approach. However the
-capacity exists to define the engineID in other ways:
+.SS SNMPv3 Configuration - Real Security
+SNMPv3 is added flexible security models to the SNMP packet structure
+so that multiple security solutions could be used.  SNMPv3 was
+original defined with a "User-based Security Model" (USM) [RFC3414]
+that required maintaining a SNMP-specific user database.  This was
+later determined to be troublesome to maintain and had some minor
+security issues.  The IETF has since added additional security models
+to tunnel SNMP over SSH [RFC5592] and DTLS/TLS [RFC-to-be].  Net-SNMP
+contains robust support for SNMPv3/USM, SNMPv3/TLS, and SNMPv3/DTLS.
+It contains partial support for SNMPv3/SSH as well but has not been as
+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
+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
+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
+choice that is best for you.
+.SS SNMPv3 generic parameters
+These parameters are generic to all the forms of SNMPv3.  The SNMPv3
+protocol defines "engineIDs" that uniquely identify an agent.  The
+string must be consistent through time and should not change or
+conflict with another agent's engineID.  Ever.  Internally, Net-SNMP
+by default creates a unique engineID that is based off of the current system
+time and a random number.  This should be sufficient for most users
+unless you're embedding our agent in a device where these numbers
+won't vary between boxes on the devices initial boot.
+.IP
+EngineIDs are used both as a "context" for selecting information from
+the device and SNMPv3 with USM uses it to create unique entries for
+users in its user table.
+.IP
+The Net-SNMP agent offers the following mechanisms for setting the
+engineID, but again you should only use them if you know what you're doing:
 .IP "engineID STRING"
 specifies that the engineID should be built from the given text STRING.
 .IP "engineIDType 1|2|3"
@@ -114,7 +143,117 @@
 .\"
 .\" What if this doesn't exist ?
 .\"
-.SH SNMPv3 AUTHENTICATION
+.SS SNMPv3 over TLS
+SNMPv3 may be tunneled over TLS and DTLS.  TLS runs over TCP and DTLS
+is the UDP equivalent.  Wes Hardaker (the founder of Net-SNMP)
+performed a study and presented it at an IETF meeting that showed that
+TCP based protocols are sufficient for stable networks but quickly
+becomes a problem in unstable networks with even moderate levels of
+packet loss (~ 20-30%).  If you are going to use TLS or DTLS, you
+should use the one appropriate for your networking environment.  You
+should potentially turn them both on so your management system can
+access either the UDP or the TCP port as needed.
+.PP
+Many of the configuration tokens described below are prefixed with
+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>"
+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
+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
+page ciphers(1) for details on the format.  Examples strings include:
+.RS
+.nf
+
+DEFAULT
+ALL
+HIGH
+HIGH:!AES128-SHA
+.fi
+.RE
+.IP
+The default value is whatever openssl itself was configured with.
+.IP "[snmp] x059CRLFile"
+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.
+Note that Net-SNMP will not pull a CRL over http and this must be a
+file, not a URL.  Additionally, OpenSSL does not reload a CRL file
+when it has changed so modifications or updates to the file will only
+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>.
+.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
+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),
+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
+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
+more detailed instructions for setting up (D)TLS.
+.IP "trustCert <specifier>"
+For X509 to properly verify a certificate, it should be verifiable up
+until a trust anchor for it.  This trust anchor is typically a CA
+certificate but it could also be a self-signed certificate.  The
+"trustCert" token should be used to load specific trust anchors into the
+verification engine.
+.PP
+SNMP over (D)TLS requires the use of the Transport Security Model
+(TSM), so read the section on the usage of the Transport Security
+Model as well.  Make sure when you configure the VACM to accept
+connections from (D)TLS that you use the "tsm" security model.  E.G.:
+.fi
+
+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
+program as well as configure the access control settings to allow
+access through the tsm security model using the user name provided to
+snmpd by the ssh transport.
+.SS SNMPv3 with the Transport Security Model (TSM)
+The Transport Security Model [RFC5591] defines a SNMPv3 security
+system for use with "tunneled" security protocols like TLS, DTLS and
+SSH.  It is a very simple security model that simply lets properly
+protected packets to pass through into the snmp application.  The
+transport is required to pass a securityName to use to the TSM and the
+TSM may optionally prefix this with a transport string (see below).
+.IP "tsmUseTransportPrefix (1|yes|true|0|no|false)"
+If set to true, the TSM module will take every securityName passed to
+it from the transports underneath and prefix it with a string that
+specifically identities the transport it came from.  This is useful to
+avoid securityName clashes with transports that generate identical
+security names.  For example, if the ssh security transport delivered
+the security name of "hardaker" for a SSH connection and the TLS
+security transport also delivered the security name of "hardaker" for
+a TLS connection then it would be impossible to separate out these two
+users to provide separate access control rights.  With the
+tsmUseTransportPrefix set to true, however, the securityNames would be
+prefixed appropriately with one of: "tls:", "dtls:" or "ssh:".
+.SS SNMPv3 with the User-based Security Model (USM)
 SNMPv3 was originally defined using the User-Based Security Model
 (USM), which contains a private list of users and keys specific to the
 SNMPv3 protocol.  The operational community, however, declared it a
@@ -185,32 +324,6 @@
 supported algorithms).  Master encryption keys, though, need to be the
 length required by the authentication algorithm not the length
 required by the encrypting algorithm (MD5: 16 bytes, SHA: 20 bytes).
-.SS SSH Support
-To use SSH, you'll need to configure sshd to invoke sshtosnmp as well
-as configure the access control settings to allow access through the
-tsm security model using the user name provided to snmpd by the ssh
-transport.
-.SS DTLS Support
-For DTLS,
-.B snmpd
-will need to be configured with it's own X.509 certificate as well as
-the certificates of the client users to be allowed to connect to the
-agent.  The access control will need to be set up as well to allow
-access through the
-.I tsm
-security model.  The CommonName of the Subject from the X.509
-certificate will be passed to snmpd as the SNMPv3 username to use.
-See the http://www.net-snmp.org/wiki/index.php/Using_DTLS web page for
-more detailed instructions for setting up DTLS.
-.IP "defX509ServerPub FILE"
-.IP "defX509ServerPriv FILE"
-These two directives specify the public and private key files for the
-certificate that
-.B snmpd
-should present to incoming connections.
-.IP "defX509ClientCerts FILE"
-This directive specifies a file containing all of the public keys (or
-CAs of public keys) for clients to connect the server with.
 .SH ACCESS CONTROL
 .B snmpd
 supports the View-Based Access Control Model (VACM) as defined in RFC
@@ -238,7 +351,7 @@
 for that user (note that identical user names may come in over
 different security models and will be appropriately separated via the
 access control settings).  The default security model is "usm" and the
-other common security models are likely "tsm" when using SSH or DTLS
+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]]]"
@@ -499,9 +612,12 @@
 the problem - see the DisMan Event MIB section later.
 .RE
 .IP
-If neither MAX nor MIN are specified (or are both 0), they will
+If neither MAX nor MIN are specified, they will
 default to \fBinfinity\fR and 1 respectively ("at least one").
 If only MAX is specified, MIN will default to 0 ("no more than MAX").
+If MAX is 0 (and MIN is not), this indicates infinity ("at least MIN").
+If both MAX and MIN are 0, this indicates a process that should \fBnot\fP
+be running.
 .IP "procfix NAME PROG ARGS"
 registers a command that can be run to fix errors with the given
 process NAME.  This will be invoked when the corresponding
@@ -563,6 +679,28 @@
 .PP
 If neither any \fIdisk\fR directives or \fIincludeAllDisks\fR are defined,
 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
+default build configuration).
+.PP
+By default, all block devices known to the operating system are
+included in the diskIOTable. On platforms other than Linux, this module
+has no configuration directives.
+.PP
+On Linux systems, it is possible to exclude several classes of block
+devices from the diskIOTable in order to avoid cluttering the table with
+useless zero statistics for pseudo-devices that often are not in use but
+are configured by default to exist in most recent Linux distributions.
+.IP "diskio_exclude_fd yes"
+Excludes all Linux floppy disk block devices, whose names start with "fd",
+e.g. "fd0"
+.IP "diskio_exclude_loop yes"
+Excludes all Linux loopback block devices, whose names start with "loop",
+e.g. "loop0"
+.IP "diskio_exclude_ram yes"
+Excludes all LInux ramdisk block devices, whose names start with "ram", e.g.
+"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
@@ -1542,7 +1680,7 @@
 .SH "FILES"
 SYSCONFDIR/snmp/snmpd.conf
 .SH "SEE ALSO"
-snmpconf(1), snmpusm(1), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, read_config(3).
+snmpconf(1), snmpusm(1), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, netsnmp_config_api(3).
 .\" Local Variables:
 .\"  mode: nroff
 .\" End:
diff --git a/man/snmpd.examples.5.def b/man/snmpd.examples.5.def
index 6890b20..97f9d9c 100644
--- a/man/snmpd.examples.5.def
+++ b/man/snmpd.examples.5.def
@@ -649,7 +649,7 @@
 .SH "FILES"
 SYSCONFDIR/snmp/snmpd.conf
 .SH "SEE ALSO"
-snmpconf(1), snmpd.conf(5), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, read_config(3).
+snmpconf(1), snmpd.conf(5), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, netsnmp_config_api(3).
 .\" Local Variables:
 .\"  mode: nroff
 .\" End:
diff --git a/man/snmpd.internal.5.def b/man/snmpd.internal.5.def
index d1da8b3..81147c7 100644
--- a/man/snmpd.internal.5.def
+++ b/man/snmpd.internal.5.def
@@ -1,4 +1,4 @@
-.TH SNMPD.INTERNAL 5 "05 Dec 2005" VVERSIONINFO "Net-SNMP"
+.TH SNMPD.INTERNAL 5 "06 Dec 2005" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpd.internal - internal configuration of the Net-SNMP agent
 .SH DESCRIPTION
@@ -86,7 +86,7 @@
 .SH "FILES"
 SYSCONFDIR/snmp/snmpd.conf
 .SH "SEE ALSO"
-snmpconf(1), snmpd.conf(5), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, read_config(3).
+snmpconf(1), snmpd.conf(5), snmp.conf(5), snmp_config(5), snmpd(8), EXAMPLE.conf, netsnmp_config_api(3).
 .\" Local Variables:
 .\"  mode: nroff
 .\" End:
diff --git a/man/snmpdelta.1.def b/man/snmpdelta.1.def
index 6fb0326..330151c 100644
--- a/man/snmpdelta.1.def
+++ b/man/snmpdelta.1.def
@@ -155,6 +155,6 @@
 .nf
 $ 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
+.fi
 .SH "SEE ALSO"
 snmpcmd(1), variables(5).
diff --git a/man/snmpget.1.def b/man/snmpget.1.def
index eabe902..6bc1b5a 100644
--- a/man/snmpget.1.def
+++ b/man/snmpget.1.def
@@ -55,10 +55,10 @@
 takes the common options described in the
 .I snmpcmd(1)
 manual page.  
-Note that
+Note that 
 .B snmpget
-REQUIRES  an argument specifying the agent to query
-and at least one OID argument, as described there.
+REQUIRES an argument specifying the agent to query
+and at least one OID argument, as described there. 
 .SH "EXAMPLES"
 The command:
 .PP
diff --git a/man/snmpgetnext.1.def b/man/snmpgetnext.1.def
index 3b13d4d..77c7835 100644
--- a/man/snmpgetnext.1.def
+++ b/man/snmpgetnext.1.def
@@ -50,7 +50,7 @@
 If the network entity has an error processing the request packet, an
 error message will be shown, helping to pinpoint in what way the
 request was malformed.
-.SH OPTIONS
+.SH "OPTIONS"
 .TP 8
 .B -Cf
 If
@@ -69,7 +69,7 @@
 takes the common options described in the
 .I snmpcmd(1)
 manual page.
-Note that
+Note that 
 .B snmpgetnext
 REQUIRES an argument specifying the agent to query
 and at least one OID argument, as described there.
diff --git a/man/snmpset.1.def b/man/snmpset.1.def
index 346ae3a..5c7df46 100644
--- a/man/snmpset.1.def
+++ b/man/snmpset.1.def
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
+.\" 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:
 .\" /***********************************************************
diff --git a/man/snmptrapd.conf.5.def b/man/snmptrapd.conf.5.def
index dcc017d..e2394cb 100644
--- a/man/snmptrapd.conf.5.def
+++ b/man/snmptrapd.conf.5.def
@@ -262,5 +262,5 @@
 .SH FILES
 SYSCONFDIR/snmp/snmptrapd.conf
 .SH "SEE ALSO"
-snmp_config(5), snmptrapd(8), syslog(8), variables(5), snmpd.conf(5), read_config(3).
+snmp_config(5), snmptrapd(8), syslog(8), variables(5), snmpd.conf(5), netsnmp_config_api(3).
 
diff --git a/man/snmpusm.1.def b/man/snmpusm.1.def
index 635273f..2177592 100644
--- a/man/snmpusm.1.def
+++ b/man/snmpusm.1.def
@@ -1,9 +1,9 @@
-.TH SNMPUSM 1 "20 Jan 2006" VVERSIONINFO "Net-SNMP"
+.TH SNMPUSM 1 "11 Dec 2009" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpusm - creates and maintains SNMPv3 users on a network entity
 .SH SYNOPSIS
 .B snmpusm
-[COMMON OPTIONS] AGENT
+[COMMON OPTIONS] [-Cw] AGENT
 .B create
 USER [CLONEFROM-USER]
 .br
@@ -82,7 +82,10 @@
 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.
+to be made active.  The user can be created via the createAndWait
+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.
 
 .PP
 In order to activate this entry, it is necessary to "clone" an existing
diff --git a/mibs/BRIDGE-MIB.txt b/mibs/BRIDGE-MIB.txt
new file mode 100644
index 0000000..1e77a19
--- /dev/null
+++ b/mibs/BRIDGE-MIB.txt
@@ -0,0 +1,1472 @@
+BRIDGE-MIB DEFINITIONS ::= BEGIN
+
+-- ---------------------------------------------------------- --
+-- MIB for IEEE 802.1D devices
+-- ---------------------------------------------------------- --
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
+    Counter32, Integer32, TimeTicks, mib-2
+        FROM SNMPv2-SMI
+    TEXTUAL-CONVENTION, MacAddress
+        FROM SNMPv2-TC
+    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+        FROM SNMPv2-CONF
+    InterfaceIndex FROM IF-MIB
+    ;
+
+dot1dBridge MODULE-IDENTITY
+    LAST-UPDATED "200509190000Z"
+    ORGANIZATION "IETF Bridge MIB Working Group"
+    CONTACT-INFO
+        "Email: bridge-mib@ietf.org
+
+                 K.C. Norseth (Editor)
+                 L-3 Communications
+            Tel: +1 801-594-2809
+          Email: kenyon.c.norseth@L-3com.com
+         Postal: 640 N. 2200 West.
+                 Salt Lake City, Utah 84116-0850
+
+                 Les Bell (Editor)
+                 3Com Europe Limited
+          Phone: +44 1442 438025
+          Email: elbell@ntlworld.com
+         Postal: 3Com Centre, Boundary Way
+                 Hemel Hempstead
+                 Herts.  HP2 7YU
+                 UK
+
+         Send comments to <bridge-mib@ietf.org>"
+    DESCRIPTION
+        "The Bridge MIB module for managing devices that support
+        IEEE 802.1D.
+
+        Copyright (C) The Internet Society (2005).  This version of
+        this MIB module is part of RFC 4188; see the RFC itself for
+        full legal notices."
+    REVISION     "200509190000Z"
+    DESCRIPTION
+         "Third revision, published as part of RFC 4188.
+
+         The MIB module has been converted to SMIv2 format.
+         Conformance statements have been added and some
+         description and reference clauses have been updated.
+
+         The object dot1dStpPortPathCost32 was added to
+         support IEEE 802.1t and the permissible values of
+         dot1dStpPriority and dot1dStpPortPriority have been
+         clarified for bridges supporting IEEE 802.1t or
+         IEEE 802.1w.
+
+         The interpretation of dot1dStpTimeSinceTopologyChange
+         has been clarified for bridges supporting the Rapid
+         Spanning Tree Protocol (RSTP)."
+    REVISION     "199307310000Z"
+    DESCRIPTION
+         "Second revision, published as part of RFC 1493."
+    REVISION     "199112310000Z"
+    DESCRIPTION
+         "Initial revision, published as part of RFC 1286."
+    ::= { mib-2 17 }
+
+-- ---------------------------------------------------------- --
+-- Textual Conventions
+-- ---------------------------------------------------------- --
+
+BridgeId ::= TEXTUAL-CONVENTION
+    STATUS      current
+    DESCRIPTION
+        "The Bridge-Identifier, as used in the Spanning Tree
+        Protocol, to uniquely identify a bridge.  Its first two
+        octets (in network byte order) contain a priority value,
+        and its last 6 octets contain the MAC address used to
+        refer to a bridge in a unique fashion (typically, the
+        numerically smallest MAC address of all ports on the
+        bridge)."
+    SYNTAX      OCTET STRING (SIZE (8))
+
+Timeout ::= TEXTUAL-CONVENTION
+    DISPLAY-HINT "d"
+    STATUS      current
+    DESCRIPTION
+        "A Spanning Tree Protocol (STP) timer in units of 1/100
+        seconds.  Several objects in this MIB module represent
+        values of timers used by the Spanning Tree Protocol.
+        In this MIB, these timers have values in units of
+        hundredths of a second (i.e., 1/100 secs).
+
+        These timers, when stored in a Spanning Tree Protocol's
+        BPDU, are in units of 1/256 seconds.  Note, however, that
+        802.1D-1998 specifies a settable granularity of no more
+        than one second for these timers.  To avoid ambiguity,
+        a conversion algorithm is defined below for converting
+        between the different units, which ensures a timer's
+        value is not distorted by multiple conversions.
+
+        To convert a Timeout value into a value in units of
+        1/256 seconds, the following algorithm should be used:
+
+            b = floor( (n * 256) / 100)
+
+        where:
+            floor   =  quotient [ignore remainder]
+            n is the value in 1/100 second units
+            b is the value in 1/256 second units
+
+        To convert the value from 1/256 second units back to
+        1/100 seconds, the following algorithm should be used:
+
+            n = ceiling( (b * 100) / 256)
+
+        where:
+            ceiling = quotient [if remainder is 0], or
+                      quotient + 1 [if remainder is nonzero]
+            n is the value in 1/100 second units
+
+            b is the value in 1/256 second units
+
+        Note: it is important that the arithmetic operations are
+        done in the order specified (i.e., multiply first,
+        divide second)."
+    SYNTAX      Integer32
+
+-- ---------------------------------------------------------- --
+-- subtrees in the Bridge MIB
+-- ---------------------------------------------------------- --
+
+dot1dNotifications  OBJECT IDENTIFIER ::= { dot1dBridge 0 }
+
+dot1dBase           OBJECT IDENTIFIER ::= { dot1dBridge 1 }
+dot1dStp            OBJECT IDENTIFIER ::= { dot1dBridge 2 }
+
+dot1dSr             OBJECT IDENTIFIER ::= { dot1dBridge 3 }
+-- documented in RFC 1525
+
+dot1dTp             OBJECT IDENTIFIER ::= { dot1dBridge 4 }
+dot1dStatic         OBJECT IDENTIFIER ::= { dot1dBridge 5 }
+
+-- Subtrees used by Bridge MIB Extensions:
+--      pBridgeMIB  MODULE-IDENTITY   ::= { dot1dBridge 6 }
+--      qBridgeMIB  MODULE-IDENTITY   ::= { dot1dBridge 7 }
+-- Note that the practice of registering related MIB modules
+-- below dot1dBridge has been discouraged since there is no
+-- robust mechanism to track such registrations.
+
+dot1dConformance    OBJECT IDENTIFIER ::= { dot1dBridge 8 }
+
+-- ---------------------------------------------------------- --
+-- the dot1dBase subtree
+-- ---------------------------------------------------------- --
+-- Implementation of the dot1dBase subtree is mandatory for all
+-- bridges.
+-- ---------------------------------------------------------- --
+
+dot1dBaseBridgeAddress OBJECT-TYPE
+    SYNTAX      MacAddress
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The MAC address used by this bridge when it must be
+        referred to in a unique fashion.  It is recommended
+        that this be the numerically smallest MAC address of
+        all ports that belong to this bridge.  However, it is only
+
+        required to be unique.  When concatenated with
+        dot1dStpPriority, a unique BridgeIdentifier is formed,
+        which is used in the Spanning Tree Protocol."
+    REFERENCE
+        "IEEE 802.1D-1998: clauses 14.4.1.1.3 and 7.12.5"
+    ::= { dot1dBase 1 }
+
+dot1dBaseNumPorts OBJECT-TYPE
+    SYNTAX      Integer32
+    UNITS       "ports"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of ports controlled by this bridging
+        entity."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.4.1.1.3"
+    ::= { dot1dBase 2 }
+
+dot1dBaseType OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    unknown(1),
+                    transparent-only(2),
+                    sourceroute-only(3),
+                    srt(4)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "Indicates what type of bridging this bridge can
+        perform.  If a bridge is actually performing a
+        certain type of bridging, this will be indicated by
+        entries in the port table for the given type."
+    ::= { dot1dBase 3 }
+
+-- ---------------------------------------------------------- --
+-- The Generic Bridge Port Table
+-- ---------------------------------------------------------- --
+dot1dBasePortTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF Dot1dBasePortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table that contains generic information about every
+        port that is associated with this bridge.  Transparent,
+        source-route, and srt ports are included."
+    ::= { dot1dBase 4 }
+
+dot1dBasePortEntry OBJECT-TYPE
+    SYNTAX      Dot1dBasePortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A list of information for each port of the bridge."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.4.2, 14.6.1"
+    INDEX  { dot1dBasePort }
+    ::= { dot1dBasePortTable 1 }
+
+Dot1dBasePortEntry ::=
+    SEQUENCE {
+        dot1dBasePort
+            Integer32,
+        dot1dBasePortIfIndex
+            InterfaceIndex,
+        dot1dBasePortCircuit
+            OBJECT IDENTIFIER,
+        dot1dBasePortDelayExceededDiscards
+            Counter32,
+        dot1dBasePortMtuExceededDiscards
+            Counter32
+    }
+
+dot1dBasePort OBJECT-TYPE
+    SYNTAX      Integer32 (1..65535)
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The port number of the port for which this entry
+        contains bridge management information."
+    ::= { dot1dBasePortEntry 1 }
+
+dot1dBasePortIfIndex OBJECT-TYPE
+    SYNTAX      InterfaceIndex
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The value of the instance of the ifIndex object,
+        defined in IF-MIB, for the interface corresponding
+        to this port."
+    ::= { dot1dBasePortEntry 2 }
+
+dot1dBasePortCircuit OBJECT-TYPE
+    SYNTAX      OBJECT IDENTIFIER
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "For a port that (potentially) has the same value of
+        dot1dBasePortIfIndex as another port on the same bridge.
+        This object contains the name of an object instance
+        unique to this port.  For example, in the case where
+        multiple ports correspond one-to-one with multiple X.25
+        virtual circuits, this value might identify an (e.g.,
+        the first) object instance associated with the X.25
+        virtual circuit corresponding to this port.
+
+        For a port which has a unique value of
+        dot1dBasePortIfIndex, this object can have the value
+        { 0 0 }."
+    ::= { dot1dBasePortEntry 3 }
+
+dot1dBasePortDelayExceededDiscards OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of frames discarded by this port due
+        to excessive transit delay through the bridge.  It
+        is incremented by both transparent and source
+        route bridges."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.6.1.1.3"
+    ::= { dot1dBasePortEntry 4 }
+
+dot1dBasePortMtuExceededDiscards OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of frames discarded by this port due
+        to an excessive size.  It is incremented by both
+        transparent and source route bridges."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.6.1.1.3"
+    ::= { dot1dBasePortEntry 5 }
+
+-- ---------------------------------------------------------- --
+-- the dot1dStp subtree
+-- ---------------------------------------------------------- --
+-- Implementation of the dot1dStp subtree is optional.  It is
+-- implemented by those bridges that support the Spanning Tree
+-- Protocol.
+-- ---------------------------------------------------------- --
+
+dot1dStpProtocolSpecification OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    unknown(1),
+                    decLb100(2),
+                    ieee8021d(3)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "An indication of what version of the Spanning Tree
+        Protocol is being run.  The value 'decLb100(2)'
+        indicates the DEC LANbridge 100 Spanning Tree protocol.
+        IEEE 802.1D implementations will return 'ieee8021d(3)'.
+        If future versions of the IEEE Spanning Tree Protocol
+        that are incompatible with the current version
+        are released a new value will be defined."
+    ::= { dot1dStp 1 }
+
+dot1dStpPriority OBJECT-TYPE
+    SYNTAX      Integer32 (0..65535)
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The value of the write-able portion of the Bridge ID
+        (i.e., the first two octets of the (8 octet long) Bridge
+        ID).  The other (last) 6 octets of the Bridge ID are
+        given by the value of dot1dBaseBridgeAddress.
+        On bridges supporting IEEE 802.1t or IEEE 802.1w,
+        permissible values are 0-61440, in steps of 4096."
+    REFERENCE
+        "IEEE 802.1D-1998 clause 8.10.2, Table 8-4,
+        IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3."
+    ::= { dot1dStp 2 }
+
+dot1dStpTimeSinceTopologyChange OBJECT-TYPE
+    SYNTAX      TimeTicks
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The time (in hundredths of a second) since the
+        last time a topology change was detected by the
+        bridge entity.
+        For RSTP, this reports the time since the tcWhile
+        timer for any port on this Bridge was nonzero."
+    REFERENCE
+        "IEEE 802.1D-1998 clause 14.8.1.1.,
+        IEEE 802.1w clause 14.8.1.1."
+    ::= { dot1dStp 3 }
+
+dot1dStpTopChanges OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The total number of topology changes detected by
+        this bridge since the management entity was last
+        reset or initialized."
+    REFERENCE
+        "IEEE 802.1D-1998 clause 14.8.1.1."
+    ::= { dot1dStp 4 }
+
+dot1dStpDesignatedRoot OBJECT-TYPE
+    SYNTAX      BridgeId
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The bridge identifier of the root of the spanning
+        tree, as determined by the Spanning Tree Protocol,
+        as executed by this node.  This value is used as
+        the Root Identifier parameter in all Configuration
+        Bridge PDUs originated by this node."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.1"
+    ::= { dot1dStp 5 }
+
+dot1dStpRootCost OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The cost of the path to the root as seen from
+        this bridge."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.2"
+    ::= { dot1dStp 6 }
+
+dot1dStpRootPort OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The port number of the port that offers the lowest
+        cost path from this bridge to the root bridge."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.3"
+    ::= { dot1dStp 7 }
+
+dot1dStpMaxAge OBJECT-TYPE
+    SYNTAX      Timeout
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The maximum age of Spanning Tree Protocol information
+        learned from the network on any port before it is
+        discarded, in units of hundredths of a second.  This is
+        the actual value that this bridge is currently using."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.4"
+    ::= { dot1dStp 8 }
+
+dot1dStpHelloTime OBJECT-TYPE
+    SYNTAX      Timeout
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The amount of time between the transmission of
+        Configuration bridge PDUs by this node on any port when
+        it is the root of the spanning tree, or trying to become
+        so, in units of hundredths of a second.  This is the
+        actual value that this bridge is currently using."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.5"
+    ::= { dot1dStp 9 }
+
+dot1dStpHoldTime OBJECT-TYPE
+    SYNTAX      Integer32
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This time value determines the interval length
+        during which no more than two Configuration bridge
+        PDUs shall be transmitted by this node, in units
+        of hundredths of a second."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.14"
+    ::= { dot1dStp 10 }
+
+dot1dStpForwardDelay OBJECT-TYPE
+    SYNTAX      Timeout
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This time value, measured in units of hundredths of a
+        second, controls how fast a port changes its spanning
+        state when moving towards the Forwarding state.  The
+        value determines how long the port stays in each of the
+        Listening and Learning states, which precede the
+        Forwarding state.  This value is also used when a
+        topology change has been detected and is underway, to
+        age all dynamic entries in the Forwarding Database.
+        [Note that this value is the one that this bridge is
+        currently using, in contrast to
+        dot1dStpBridgeForwardDelay, which is the value that this
+        bridge and all others would start using if/when this
+        bridge were to become the root.]"
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.6"
+    ::= { dot1dStp 11 }
+
+dot1dStpBridgeMaxAge OBJECT-TYPE
+    SYNTAX      Timeout (600..4000)
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The value that all bridges use for MaxAge when this
+        bridge is acting as the root.  Note that 802.1D-1998
+        specifies that the range for this parameter is related
+        to the value of dot1dStpBridgeHelloTime.  The
+        granularity of this timer is specified by 802.1D-1998 to
+        be 1 second.  An agent may return a badValue error if a
+        set is attempted to a value that is not a whole number
+        of seconds."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.8"
+    ::= { dot1dStp 12 }
+
+dot1dStpBridgeHelloTime OBJECT-TYPE
+    SYNTAX      Timeout (100..1000)
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The value that all bridges use for HelloTime when this
+        bridge is acting as the root.  The granularity of this
+        timer is specified by 802.1D-1998 to be 1 second.  An
+        agent may return a badValue error if a set is attempted
+
+        to a value that is not a whole number of seconds."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.9"
+    ::= { dot1dStp 13 }
+
+dot1dStpBridgeForwardDelay OBJECT-TYPE
+    SYNTAX      Timeout (400..3000)
+    UNITS       "centi-seconds"
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The value that all bridges use for ForwardDelay when
+        this bridge is acting as the root.  Note that
+        802.1D-1998 specifies that the range for this parameter
+        is related to the value of dot1dStpBridgeMaxAge.  The
+        granularity of this timer is specified by 802.1D-1998 to
+        be 1 second.  An agent may return a badValue error if a
+        set is attempted to a value that is not a whole number
+        of seconds."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.3.10"
+    ::= { dot1dStp 14 }
+
+-- ---------------------------------------------------------- --
+-- The Spanning Tree Port Table
+-- ---------------------------------------------------------- --
+
+dot1dStpPortTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF Dot1dStpPortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table that contains port-specific information
+        for the Spanning Tree Protocol."
+    ::= { dot1dStp 15 }
+
+dot1dStpPortEntry OBJECT-TYPE
+    SYNTAX      Dot1dStpPortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A list of information maintained by every port about
+        the Spanning Tree Protocol state for that port."
+    INDEX   { dot1dStpPort }
+    ::= { dot1dStpPortTable 1 }
+
+Dot1dStpPortEntry ::=
+    SEQUENCE {
+
+        dot1dStpPort
+            Integer32,
+        dot1dStpPortPriority
+            Integer32,
+        dot1dStpPortState
+            INTEGER,
+        dot1dStpPortEnable
+            INTEGER,
+        dot1dStpPortPathCost
+            Integer32,
+        dot1dStpPortDesignatedRoot
+            BridgeId,
+        dot1dStpPortDesignatedCost
+            Integer32,
+        dot1dStpPortDesignatedBridge
+            BridgeId,
+        dot1dStpPortDesignatedPort
+            OCTET STRING,
+        dot1dStpPortForwardTransitions
+            Counter32,
+        dot1dStpPortPathCost32
+            Integer32
+    }
+
+dot1dStpPort OBJECT-TYPE
+    SYNTAX      Integer32 (1..65535)
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The port number of the port for which this entry
+        contains Spanning Tree Protocol management information."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.8.2.1.2"
+    ::= { dot1dStpPortEntry 1 }
+
+dot1dStpPortPriority OBJECT-TYPE
+    SYNTAX      Integer32 (0..255)
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The value of the priority field that is contained in
+        the first (in network byte order) octet of the (2 octet
+        long) Port ID.  The other octet of the Port ID is given
+        by the value of dot1dStpPort.
+        On bridges supporting IEEE 802.1t or IEEE 802.1w,
+        permissible values are 0-240, in steps of 16."
+    REFERENCE
+        "IEEE 802.1D-1998 clause 8.10.2, Table 8-4,
+        IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3."
+    ::= { dot1dStpPortEntry 2 }
+
+dot1dStpPortState OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    disabled(1),
+                    blocking(2),
+                    listening(3),
+                    learning(4),
+                    forwarding(5),
+                    broken(6)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The port's current state, as defined by application of
+        the Spanning Tree Protocol.  This state controls what
+        action a port takes on reception of a frame.  If the
+        bridge has detected a port that is malfunctioning, it
+        will place that port into the broken(6) state.  For
+        ports that are disabled (see dot1dStpPortEnable), this
+        object will have a value of disabled(1)."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.2"
+    ::= { dot1dStpPortEntry 3 }
+
+dot1dStpPortEnable OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    enabled(1),
+                    disabled(2)
+                }
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The enabled/disabled status of the port."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.2"
+    ::= { dot1dStpPortEntry 4 }
+
+dot1dStpPortPathCost OBJECT-TYPE
+    SYNTAX      Integer32 (1..65535)
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The contribution of this port to the path cost of
+        paths towards the spanning tree root which include
+        this port.  802.1D-1998 recommends that the default
+        value of this parameter be in inverse proportion to
+
+        the speed of the attached LAN.
+
+        New implementations should support dot1dStpPortPathCost32.
+        If the port path costs exceeds the maximum value of this
+        object then this object should report the maximum value,
+        namely 65535.  Applications should try to read the
+        dot1dStpPortPathCost32 object if this object reports
+        the maximum value."
+    REFERENCE "IEEE 802.1D-1998: clause 8.5.5.3"
+        ::= { dot1dStpPortEntry 5 }
+
+dot1dStpPortDesignatedRoot OBJECT-TYPE
+    SYNTAX      BridgeId
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The unique Bridge Identifier of the Bridge
+        recorded as the Root in the Configuration BPDUs
+        transmitted by the Designated Bridge for the
+        segment to which the port is attached."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.4"
+    ::= { dot1dStpPortEntry 6 }
+
+dot1dStpPortDesignatedCost OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The path cost of the Designated Port of the segment
+        connected to this port.  This value is compared to the
+        Root Path Cost field in received bridge PDUs."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.5"
+    ::= { dot1dStpPortEntry 7 }
+
+dot1dStpPortDesignatedBridge OBJECT-TYPE
+    SYNTAX      BridgeId
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The Bridge Identifier of the bridge that this
+        port considers to be the Designated Bridge for
+        this port's segment."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.6"
+    ::= { dot1dStpPortEntry 8 }
+
+dot1dStpPortDesignatedPort OBJECT-TYPE
+    SYNTAX      OCTET STRING (SIZE (2))
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The Port Identifier of the port on the Designated
+        Bridge for this port's segment."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 8.5.5.7"
+    ::= { dot1dStpPortEntry 9 }
+
+dot1dStpPortForwardTransitions OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of times this port has transitioned
+        from the Learning state to the Forwarding state."
+    ::= { dot1dStpPortEntry 10 }
+
+dot1dStpPortPathCost32 OBJECT-TYPE
+    SYNTAX      Integer32 (1..200000000)
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The contribution of this port to the path cost of
+        paths towards the spanning tree root which include
+        this port.  802.1D-1998 recommends that the default
+        value of this parameter be in inverse proportion to
+        the speed of the attached LAN.
+
+        This object replaces dot1dStpPortPathCost to support
+        IEEE 802.1t."
+    REFERENCE
+        "IEEE 802.1t clause 8.10.2, Table 8-5."
+    ::= { dot1dStpPortEntry 11 }
+
+-- ---------------------------------------------------------- --
+-- the dot1dTp subtree
+-- ---------------------------------------------------------- --
+-- Implementation of the dot1dTp subtree is optional.  It is
+-- implemented by those bridges that support the transparent
+-- bridging mode.  A transparent or SRT bridge will implement
+-- this subtree.
+-- ---------------------------------------------------------- --
+
+dot1dTpLearnedEntryDiscards OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The total number of Forwarding Database entries that
+        have been or would have been learned, but have been
+        discarded due to a lack of storage space in the
+        Forwarding Database.  If this counter is increasing, it
+        indicates that the Forwarding Database is regularly
+        becoming full (a condition that has unpleasant
+        performance effects on the subnetwork).  If this counter
+        has a significant value but is not presently increasing,
+        it indicates that the problem has been occurring but is
+        not persistent."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.7.1.1.3"
+    ::= { dot1dTp 1 }
+
+dot1dTpAgingTime OBJECT-TYPE
+    SYNTAX      Integer32 (10..1000000)
+    UNITS       "seconds"
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION
+        "The timeout period in seconds for aging out
+        dynamically-learned forwarding information.
+        802.1D-1998 recommends a default of 300 seconds."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.7.1.1.3"
+    ::= { dot1dTp 2 }
+
+-- ---------------------------------------------------------- --
+--  The Forwarding Database for Transparent Bridges
+-- ---------------------------------------------------------- --
+
+dot1dTpFdbTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF Dot1dTpFdbEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table that contains information about unicast
+        entries for which the bridge has forwarding and/or
+        filtering information.  This information is used
+        by the transparent bridging function in
+        determining how to propagate a received frame."
+    ::= { dot1dTp 3 }
+
+dot1dTpFdbEntry OBJECT-TYPE
+    SYNTAX      Dot1dTpFdbEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "Information about a specific unicast MAC address
+        for which the bridge has some forwarding and/or
+        filtering information."
+    INDEX   { dot1dTpFdbAddress }
+    ::= { dot1dTpFdbTable 1 }
+
+Dot1dTpFdbEntry ::=
+    SEQUENCE {
+        dot1dTpFdbAddress
+            MacAddress,
+        dot1dTpFdbPort
+            Integer32,
+        dot1dTpFdbStatus
+            INTEGER
+    }
+
+dot1dTpFdbAddress OBJECT-TYPE
+    SYNTAX      MacAddress
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "A unicast MAC address for which the bridge has
+        forwarding and/or filtering information."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 7.9.1, 7.9.2"
+    ::= { dot1dTpFdbEntry 1 }
+
+dot1dTpFdbPort OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "Either the value '0', or the port number of the port on
+        which a frame having a source address equal to the value
+        of the corresponding instance of dot1dTpFdbAddress has
+        been seen.  A value of '0' indicates that the port
+        number has not been learned, but that the bridge does
+        have some forwarding/filtering information about this
+        address (e.g., in the dot1dStaticTable).  Implementors
+        are encouraged to assign the port value to this object
+        whenever it is learned, even for addresses for which the
+        corresponding value of dot1dTpFdbStatus is not
+        learned(3)."
+    ::= { dot1dTpFdbEntry 2 }
+
+dot1dTpFdbStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    other(1),
+                    invalid(2),
+                    learned(3),
+                    self(4),
+                    mgmt(5)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The status of this entry.  The meanings of the
+        values are:
+            other(1) - none of the following.  This would
+                include the case where some other MIB object
+                (not the corresponding instance of
+                dot1dTpFdbPort, nor an entry in the
+                dot1dStaticTable) is being used to determine if
+                and how frames addressed to the value of the
+                corresponding instance of dot1dTpFdbAddress are
+                being forwarded.
+            invalid(2) - this entry is no longer valid (e.g.,
+                it was learned but has since aged out), but has
+                not yet been flushed from the table.
+            learned(3) - the value of the corresponding instance
+                of dot1dTpFdbPort was learned, and is being
+                used.
+            self(4) - the value of the corresponding instance of
+                dot1dTpFdbAddress represents one of the bridge's
+                addresses.  The corresponding instance of
+                dot1dTpFdbPort indicates which of the bridge's
+                ports has this address.
+            mgmt(5) - the value of the corresponding instance of
+                dot1dTpFdbAddress is also the value of an
+                existing instance of dot1dStaticAddress."
+    ::= { dot1dTpFdbEntry 3 }
+
+-- ---------------------------------------------------------- --
+--  Port Table for Transparent Bridges
+-- ---------------------------------------------------------- --
+
+dot1dTpPortTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF Dot1dTpPortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table that contains information about every port that
+        is associated with this transparent bridge."
+    ::= { dot1dTp 4 }
+
+dot1dTpPortEntry OBJECT-TYPE
+    SYNTAX      Dot1dTpPortEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A list of information for each port of a transparent
+        bridge."
+    INDEX   { dot1dTpPort }
+    ::= { dot1dTpPortTable 1 }
+
+Dot1dTpPortEntry ::=
+    SEQUENCE {
+        dot1dTpPort
+            Integer32,
+        dot1dTpPortMaxInfo
+            Integer32,
+        dot1dTpPortInFrames
+            Counter32,
+        dot1dTpPortOutFrames
+            Counter32,
+        dot1dTpPortInDiscards
+            Counter32
+    }
+
+dot1dTpPort OBJECT-TYPE
+    SYNTAX      Integer32 (1..65535)
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The port number of the port for which this entry
+        contains Transparent bridging management information."
+    ::= { dot1dTpPortEntry 1 }
+
+-- It would be nice if we could use ifMtu as the size of the
+-- largest INFO field, but we can't because ifMtu is defined
+-- to be the size that the (inter-)network layer can use, which
+-- can differ from the MAC layer (especially if several layers
+-- of encapsulation are used).
+
+dot1dTpPortMaxInfo OBJECT-TYPE
+    SYNTAX      Integer32
+    UNITS       "bytes"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The maximum size of the INFO (non-MAC) field that
+
+        this port will receive or transmit."
+    ::= { dot1dTpPortEntry 2 }
+
+dot1dTpPortInFrames OBJECT-TYPE
+    SYNTAX      Counter32
+    UNITS       "frames"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of frames that have been received by this
+        port from its segment.  Note that a frame received on the
+        interface corresponding to this port is only counted by
+        this object if and only if it is for a protocol being
+        processed by the local bridging function, including
+        bridge management frames."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.6.1.1.3"
+    ::= { dot1dTpPortEntry 3 }
+
+dot1dTpPortOutFrames OBJECT-TYPE
+    SYNTAX      Counter32
+    UNITS       "frames"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of frames that have been transmitted by this
+        port to its segment.  Note that a frame transmitted on
+        the interface corresponding to this port is only counted
+        by this object if and only if it is for a protocol being
+        processed by the local bridging function, including
+        bridge management frames."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.6.1.1.3"
+    ::= { dot1dTpPortEntry 4 }
+
+dot1dTpPortInDiscards OBJECT-TYPE
+    SYNTAX      Counter32
+    UNITS       "frames"
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "Count of received valid frames that were discarded
+        (i.e., filtered) by the Forwarding Process."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.6.1.1.3"
+    ::= { dot1dTpPortEntry 5 }
+
+-- ---------------------------------------------------------- --
+
+-- The Static (Destination-Address Filtering) Database
+-- ---------------------------------------------------------- --
+-- Implementation of this subtree is optional.
+-- ---------------------------------------------------------- --
+
+dot1dStaticTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF Dot1dStaticEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table containing filtering information configured
+        into the bridge by (local or network) management
+        specifying the set of ports to which frames received
+        from specific ports and containing specific destination
+        addresses are allowed to be forwarded.  The value of
+        zero in this table, as the port number from which frames
+        with a specific destination address are received, is
+        used to specify all ports for which there is no specific
+        entry in this table for that particular destination
+        address.  Entries are valid for unicast and for
+        group/broadcast addresses."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.7.2"
+    ::= { dot1dStatic 1 }
+
+dot1dStaticEntry OBJECT-TYPE
+    SYNTAX      Dot1dStaticEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "Filtering information configured into the bridge by
+        (local or network) management specifying the set of
+        ports to which frames received from a specific port and
+        containing a specific destination address are allowed to
+        be forwarded."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 14.7.2"
+    INDEX   { dot1dStaticAddress, dot1dStaticReceivePort }
+    ::= { dot1dStaticTable 1 }
+
+Dot1dStaticEntry ::=
+    SEQUENCE {
+        dot1dStaticAddress       MacAddress,
+        dot1dStaticReceivePort   Integer32,
+        dot1dStaticAllowedToGoTo OCTET STRING,
+        dot1dStaticStatus        INTEGER
+    }
+
+dot1dStaticAddress OBJECT-TYPE
+    SYNTAX      MacAddress
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The destination MAC address in a frame to which this
+        entry's filtering information applies.  This object can
+        take the value of a unicast address, a group address, or
+        the broadcast address."
+    REFERENCE
+        "IEEE 802.1D-1998: clause 7.9.1, 7.9.2"
+    ::= { dot1dStaticEntry 1 }
+
+dot1dStaticReceivePort OBJECT-TYPE
+    SYNTAX      Integer32 (0..65535)
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "Either the value '0', or the port number of the port
+        from which a frame must be received in order for this
+        entry's filtering information to apply.  A value of zero
+        indicates that this entry applies on all ports of the
+        bridge for which there is no other applicable entry."
+    ::= { dot1dStaticEntry 2 }
+
+dot1dStaticAllowedToGoTo OBJECT-TYPE
+    SYNTAX      OCTET STRING (SIZE (0..512))
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The set of ports to which frames received from a
+        specific port and destined for a specific MAC address,
+        are allowed to be forwarded.  Each octet within the
+        value of this object specifies a set of eight ports,
+        with the first octet specifying ports 1 through 8, the
+        second octet specifying ports 9 through 16, etc.  Within
+        each octet, the most significant bit represents the
+        lowest numbered port, and the least significant bit
+        represents the highest numbered port.  Thus, each port
+        of the bridge is represented by a single bit within the
+        value of this object.  If that bit has a value of '1',
+        then that port is included in the set of ports; the port
+        is not included if its bit has a value of '0'.  (Note
+        that the setting of the bit corresponding to the port
+        from which a frame is received is irrelevant.)  The
+        default value of this object is a string of ones of
+        appropriate length.
+
+        The value of this object may exceed the required minimum
+        maximum message size of some SNMP transport (484 bytes,
+        in the case of SNMP over UDP, see RFC 3417, section 3.2).
+        SNMP engines on bridges supporting a large number of
+        ports must support appropriate maximum message sizes."
+    ::= { dot1dStaticEntry 3 }
+
+dot1dStaticStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    other(1),
+                    invalid(2),
+                    permanent(3),
+                    deleteOnReset(4),
+                    deleteOnTimeout(5)
+                }
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "This object indicates the status of this entry.
+        The default value is permanent(3).
+            other(1) - this entry is currently in use but the
+                conditions under which it will remain so are
+                different from each of the following values.
+            invalid(2) - writing this value to the object
+                removes the corresponding entry.
+            permanent(3) - this entry is currently in use and
+                will remain so after the next reset of the
+                bridge.
+            deleteOnReset(4) - this entry is currently in use
+                and will remain so until the next reset of the
+                bridge.
+            deleteOnTimeout(5) - this entry is currently in use
+                and will remain so until it is aged out."
+    ::= { dot1dStaticEntry 4 }
+
+-- ---------------------------------------------------------- --
+-- Notifications for use by Bridges
+-- ---------------------------------------------------------- --
+-- Notifications for the Spanning Tree Protocol
+-- ---------------------------------------------------------- --
+
+newRoot NOTIFICATION-TYPE
+    -- OBJECTS     { }
+    STATUS      current
+    DESCRIPTION
+        "The newRoot trap indicates that the sending agent has
+        become the new root of the Spanning Tree; the trap is
+        sent by a bridge soon after its election as the new
+
+        root, e.g., upon expiration of the Topology Change Timer,
+        immediately subsequent to its election.  Implementation
+        of this trap is optional."
+    ::= { dot1dNotifications 1 }
+
+topologyChange NOTIFICATION-TYPE
+    -- OBJECTS     { }
+    STATUS      current
+    DESCRIPTION
+        "A topologyChange trap is sent by a bridge when any of
+        its configured ports transitions from the Learning state
+        to the Forwarding state, or from the Forwarding state to
+        the Blocking state.  The trap is not sent if a newRoot
+        trap is sent for the same transition.  Implementation of
+        this trap is optional."
+    ::= { dot1dNotifications 2 }
+
+-- ---------------------------------------------------------- --
+-- IEEE 802.1D MIB - Conformance Information
+-- ---------------------------------------------------------- --
+
+dot1dGroups         OBJECT IDENTIFIER ::= { dot1dConformance 1 }
+dot1dCompliances    OBJECT IDENTIFIER ::= { dot1dConformance 2 }
+
+-- ---------------------------------------------------------- --
+-- units of conformance
+-- ---------------------------------------------------------- --
+
+-- ---------------------------------------------------------- --
+-- the dot1dBase group
+-- ---------------------------------------------------------- --
+
+dot1dBaseBridgeGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dBaseBridgeAddress,
+        dot1dBaseNumPorts,
+        dot1dBaseType
+    }
+    STATUS      current
+    DESCRIPTION
+        "Bridge level information for this device."
+    ::= { dot1dGroups 1 }
+
+dot1dBasePortGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dBasePort,
+        dot1dBasePortIfIndex,
+        dot1dBasePortCircuit,
+        dot1dBasePortDelayExceededDiscards,
+        dot1dBasePortMtuExceededDiscards
+    }
+    STATUS      current
+    DESCRIPTION
+        "Information for each port on this device."
+    ::= { dot1dGroups 2 }
+
+-- ---------------------------------------------------------- --
+-- the dot1dStp group
+-- ---------------------------------------------------------- --
+
+dot1dStpBridgeGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dStpProtocolSpecification,
+        dot1dStpPriority,
+        dot1dStpTimeSinceTopologyChange,
+        dot1dStpTopChanges,
+        dot1dStpDesignatedRoot,
+        dot1dStpRootCost,
+        dot1dStpRootPort,
+        dot1dStpMaxAge,
+        dot1dStpHelloTime,
+        dot1dStpHoldTime,
+        dot1dStpForwardDelay,
+        dot1dStpBridgeMaxAge,
+        dot1dStpBridgeHelloTime,
+        dot1dStpBridgeForwardDelay
+    }
+    STATUS      current
+    DESCRIPTION
+        "Bridge level Spanning Tree data for this device."
+    ::= { dot1dGroups 3 }
+
+dot1dStpPortGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dStpPort,
+        dot1dStpPortPriority,
+        dot1dStpPortState,
+        dot1dStpPortEnable,
+        dot1dStpPortPathCost,
+        dot1dStpPortDesignatedRoot,
+        dot1dStpPortDesignatedCost,
+        dot1dStpPortDesignatedBridge,
+        dot1dStpPortDesignatedPort,
+        dot1dStpPortForwardTransitions
+    }
+    STATUS      current
+    DESCRIPTION
+        "Spanning Tree data for each port on this device."
+    ::= { dot1dGroups 4 }
+
+dot1dStpPortGroup2 OBJECT-GROUP
+    OBJECTS {
+        dot1dStpPort,
+        dot1dStpPortPriority,
+        dot1dStpPortState,
+        dot1dStpPortEnable,
+        dot1dStpPortDesignatedRoot,
+        dot1dStpPortDesignatedCost,
+        dot1dStpPortDesignatedBridge,
+        dot1dStpPortDesignatedPort,
+        dot1dStpPortForwardTransitions,
+        dot1dStpPortPathCost32
+    }
+    STATUS      current
+    DESCRIPTION
+        "Spanning Tree data for each port on this device."
+    ::= { dot1dGroups 5 }
+
+dot1dStpPortGroup3 OBJECT-GROUP
+    OBJECTS {
+        dot1dStpPortPathCost32
+    }
+    STATUS      current
+    DESCRIPTION
+        "Spanning Tree data for devices supporting 32-bit
+         path costs."
+    ::= { dot1dGroups 6 }
+
+-- ---------------------------------------------------------- --
+-- the dot1dTp group
+-- ---------------------------------------------------------- --
+
+dot1dTpBridgeGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dTpLearnedEntryDiscards,
+        dot1dTpAgingTime
+    }
+    STATUS      current
+    DESCRIPTION
+        "Bridge level Transparent Bridging data."
+    ::= { dot1dGroups 7 }
+
+dot1dTpFdbGroup OBJECT-GROUP
+    OBJECTS {
+
+        dot1dTpFdbAddress,
+        dot1dTpFdbPort,
+        dot1dTpFdbStatus
+    }
+    STATUS      current
+    DESCRIPTION
+        "Filtering Database information for the Bridge."
+    ::= { dot1dGroups 8 }
+
+dot1dTpGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dTpPort,
+        dot1dTpPortMaxInfo,
+        dot1dTpPortInFrames,
+        dot1dTpPortOutFrames,
+        dot1dTpPortInDiscards
+    }
+    STATUS      current
+    DESCRIPTION
+        "Dynamic Filtering Database information for each port of
+        the Bridge."
+    ::= { dot1dGroups 9 }
+
+-- ---------------------------------------------------------- --
+-- The Static (Destination-Address Filtering) Database
+-- ---------------------------------------------------------- --
+
+dot1dStaticGroup OBJECT-GROUP
+    OBJECTS {
+        dot1dStaticAddress,
+        dot1dStaticReceivePort,
+        dot1dStaticAllowedToGoTo,
+        dot1dStaticStatus
+    }
+    STATUS      current
+    DESCRIPTION
+        "Static Filtering Database information for each port of
+        the Bridge."
+    ::= { dot1dGroups 10 }
+
+-- ---------------------------------------------------------- --
+-- The Trap Notification Group
+-- ---------------------------------------------------------- --
+
+dot1dNotificationGroup NOTIFICATION-GROUP
+    NOTIFICATIONS {
+        newRoot,
+        topologyChange
+    }
+    STATUS      current
+    DESCRIPTION
+        "Group of objects describing notifications (traps)."
+    ::= { dot1dGroups 11 }
+
+-- ---------------------------------------------------------- --
+-- compliance statements
+-- ---------------------------------------------------------- --
+
+bridgeCompliance1493 MODULE-COMPLIANCE
+    STATUS      current
+    DESCRIPTION
+        "The compliance statement for device support of bridging
+        services, as per RFC1493."
+
+    MODULE
+        MANDATORY-GROUPS {
+            dot1dBaseBridgeGroup,
+            dot1dBasePortGroup
+        }
+
+    GROUP   dot1dStpBridgeGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+        that support the Spanning Tree Protocol."
+
+    GROUP   dot1dStpPortGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+        that support the Spanning Tree Protocol."
+
+    GROUP   dot1dTpBridgeGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+        that support the transparent bridging mode.  A
+        transparent or SRT bridge will implement this group."
+
+    GROUP   dot1dTpFdbGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+        that support the transparent bridging mode.  A
+        transparent or SRT bridge will implement this group."
+
+    GROUP   dot1dTpGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+
+        that support the transparent bridging mode.  A
+        transparent or SRT bridge will implement this group."
+
+    GROUP   dot1dStaticGroup
+    DESCRIPTION
+        "Implementation of this group is optional."
+
+    GROUP dot1dNotificationGroup
+    DESCRIPTION
+        "Implementation of this group is optional."
+    ::= { dot1dCompliances 1 }
+
+bridgeCompliance4188 MODULE-COMPLIANCE
+    STATUS      current
+    DESCRIPTION
+        "The compliance statement for device support of bridging
+        services.  This supports 32-bit Path Cost values and the
+        more restricted bridge and port priorities, as per IEEE
+        802.1t.
+
+        Full support for the 802.1D management objects requires that
+        the SNMPv2-MIB [RFC3418] objects sysDescr, and sysUpTime, as
+        well as the IF-MIB [RFC2863] objects ifIndex, ifType,
+        ifDescr, ifPhysAddress, and ifLastChange are implemented."
+
+    MODULE
+        MANDATORY-GROUPS {
+            dot1dBaseBridgeGroup,
+            dot1dBasePortGroup
+        }
+
+    GROUP   dot1dStpBridgeGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for
+        bridges that support the Spanning Tree Protocol."
+
+    OBJECT dot1dStpPriority
+    SYNTAX Integer32 (0|4096|8192|12288|16384|20480|24576
+                     |28672|32768|36864|40960|45056|49152
+                     |53248|57344|61440)
+    DESCRIPTION
+        "The possible values defined by IEEE 802.1t."
+
+    GROUP   dot1dStpPortGroup2
+    DESCRIPTION
+        "Implementation of this group is mandatory for
+        bridges that support the Spanning Tree Protocol."
+
+    GROUP   dot1dStpPortGroup3
+    DESCRIPTION
+        "Implementation of this group is mandatory for bridges
+         that support the Spanning Tree Protocol and 32-bit path
+         costs.  In particular, this includes devices supporting
+         IEEE 802.1t and IEEE 802.1w."
+
+    OBJECT dot1dStpPortPriority
+    SYNTAX Integer32 (0|16|32|48|64|80|96|112|128
+                     |144|160|176|192|208|224|240)
+    DESCRIPTION
+        "The possible values defined by IEEE 802.1t."
+
+    GROUP   dot1dTpBridgeGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for
+        bridges that support the transparent bridging
+        mode.  A transparent or SRT bridge will implement
+        this group."
+
+    GROUP   dot1dTpFdbGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for
+        bridges that support the transparent bridging
+        mode.  A transparent or SRT bridge will implement
+        this group."
+
+    GROUP   dot1dTpGroup
+    DESCRIPTION
+        "Implementation of this group is mandatory for
+        bridges that support the transparent bridging
+        mode.  A transparent or SRT bridge will implement
+        this group."
+
+    GROUP   dot1dStaticGroup
+    DESCRIPTION
+        "Implementation of this group is optional."
+
+    GROUP dot1dNotificationGroup
+    DESCRIPTION
+        "Implementation of this group is optional."
+    ::= { dot1dCompliances 2 }
+
+END
diff --git a/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt b/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
index 3d88a0f..7995fc4 100644
--- a/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
+++ b/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
@@ -6,17 +6,17 @@
       TEXTUAL-CONVENTION                  FROM SNMPv2-TC;
 
   ianaAddressFamilyNumbers MODULE-IDENTITY
-      LAST-UPDATED "200203140000Z"  -- March 14, 2002
+      LAST-UPDATED "201309250000Z"  -- September 25, 2013
       ORGANIZATION "IANA"
       CONTACT-INFO
           "Postal:    Internet Assigned Numbers Authority
                       Internet Corporation for Assigned Names
 		      and Numbers
-                      4676 Admiralty Way, Suite 330
-                      Marina del Rey, CA 90292-6601
+                      12025 Waterfront Drive, Suite 300
+                      Los Angeles, CA 90094-2536
                       USA
 
-          Tel:    +1  310-823-9358
+          Tel:    +1  310-301-5800
           E-Mail: iana&iana.org"
       DESCRIPTION
           "The MIB module defines the AddressFamilyNumbers
@@ -24,6 +24,19 @@
 
       -- revision history
 
+      REVISION     "201309250000Z"  -- September 25, 2013
+      DESCRIPTION  "Fixed labels for 16389-16390."
+
+      REVISION     "201307160000Z"  -- July 16, 2013
+      DESCRIPTION  "Fixed labels for 16389-16390."
+
+      REVISION     "201306260000Z"  -- June 26, 2013
+      DESCRIPTION  "Added assignments 26-28."
+
+      REVISION     "201306180000Z"  -- June 18, 2013
+      DESCRIPTION  "Added assignments 16384-16390. Assignment 
+                    25 added in 2007 revision."
+
       REVISION     "200203140000Z"  -- March 14, 2002
       DESCRIPTION  "AddressFamilyNumbers assignment 22 to 
                    fibreChannelWWPN. AddressFamilyNumbers 
@@ -87,6 +100,21 @@
           fibreChannelWWNN(23),  -- Fibre Channel World-Wide Node Name
           gwid(24),    -- Gateway Identifier 
           afi(25),  -- AFI for L2VPN information
+          mplsTpSectionEndpointIdentifier(26),  -- MPLS-TP Section Endpoint Identifier
+          mplsTpLspEndpointIdentifier(27),  -- MPLS-TP LSP Endpoint Identifier
+          mplsTpPseudowireEndpointIdentifier(28),  -- MPLS-TP Pseudowire Endpoint Identifier
+          eigrpCommonServiceFamily(16384),  -- EIGRP Common Service Family
+          eigrpIpv4ServiceFamily(16385),  -- EIGRP IPv4 Service Family
+          eigrpIpv6ServiceFamily(16386),  -- EIGRP IPv6 Service Family
+          lispCanonicalAddressFormat(16387),  -- LISP Canonical Address Format (LCAF)
+          bgpLs(16388),  -- BGP-LS
+          fortyeightBitMacBitMac(16389),  -- 48-bit MAC
+          sixtyfourBitMac(16390),  -- 64-bit MAC
+          oui(16391),  -- OUI
+          mac24(16392),  -- MAC/24
+          mac40(16393),  -- MAC/40
+          ipv664(16394),  -- IPv6/64
+          rBridgePortID(16395),  -- RBridge Port ID
           reserved(65535)
 
           Requests for new values should be made to IANA via
@@ -118,6 +146,21 @@
                   fibreChannelWWNN(23),
                   gwid(24),
                   afi(25),
+                  mplsTpSectionEndpointIdentifier(26),
+                  mplsTpLspEndpointIdentifier(27),
+                  mplsTpPseudowireEndpointIdentifier(28),
+                  eigrpCommonServiceFamily(16384),
+                  eigrpIpv4ServiceFamily(16385),
+                  eigrpIpv6ServiceFamily(16386),
+                  lispCanonicalAddressFormat(16387),
+                  bgpLs(16388),
+                  fortyeightBitMac(16389),
+                  sixtyfourBitMac(16390),
+                  oui(16391),
+                  mac24(16392),
+                  mac40(16393),
+                  ipv664(16394),
+                  rBridgePortID(16395),
                   reserved(65535)
               }
       END
diff --git a/mibs/IANA-LANGUAGE-MIB.txt b/mibs/IANA-LANGUAGE-MIB.txt
index 773c101..4b97bdd 100644
--- a/mibs/IANA-LANGUAGE-MIB.txt
+++ b/mibs/IANA-LANGUAGE-MIB.txt
@@ -5,16 +5,16 @@
         FROM SNMPv2-SMI;
 
 ianaLanguages MODULE-IDENTITY
-    LAST-UPDATED "200005100000Z"  -- May 10, 2000
+    LAST-UPDATED "201405220000Z" -- May 22, 2014
     ORGANIZATION "IANA"
     CONTACT-INFO
         "Internet Assigned Numbers Authority (IANA)
 
          Postal: ICANN
-                 4676 Admiralty Way, Suite 330
-                 Marina del Rey, CA 90292
+                 12025 Waterfront Drive, Suite 300
+                 Los Angeles, CA 90094-2536
 
-         Tel:    +1 310 823 9358 x20
+         Tel:    +1 310-301-5800
          E-Mail: iana&iana.org"
     DESCRIPTION
         "The MIB module registers object identifier values for
@@ -39,6 +39,9 @@
 
  -- Revision log, in reverse chronological order
 
+    REVISION    "201405220000Z" -- May 22, 2014
+    DESCRIPTION "Updated contact info."
+
     REVISION    "200005100000Z" -- May 10, 2000
     DESCRIPTION "Import mib-2 instead of experimental, so that
                  this module compiles"
diff --git a/mibs/IANA-RTPROTO-MIB.txt b/mibs/IANA-RTPROTO-MIB.txt
index 6f04143..f7bc1eb 100644
--- a/mibs/IANA-RTPROTO-MIB.txt
+++ b/mibs/IANA-RTPROTO-MIB.txt
@@ -5,15 +5,15 @@
     TEXTUAL-CONVENTION               FROM SNMPv2-TC;
 
 ianaRtProtoMIB  MODULE-IDENTITY
-    LAST-UPDATED "200009260000Z" -- September 26, 2000
+    LAST-UPDATED "201208300000Z" -- August 30, 2012
     ORGANIZATION "IANA"
     CONTACT-INFO
             " Internet Assigned Numbers Authority
               Internet Corporation for Assigned Names and Numbers
-              4676 Admiralty Way, Suite 330
-              Marina del Rey, CA 90292-6601
+              12025 Waterfront Drive, Suite 300
+              Los Angeles, CA 90094-2536
 
-              Phone: +1 310 823 9358
+              Phone: +1 310 301 5800
               EMail: iana&iana.org"
     DESCRIPTION
             "This MIB module defines the IANAipRouteProtocol and
@@ -28,6 +28,12 @@
             will be selected by the IESG Area Director(s) of the Routing
             Area."
 
+    REVISION     "201208300000Z"  -- August 30, 2012 
+    DESCRIPTION  "Added dhcp(19)."
+
+    REVISION     "201107220000Z"  -- July 22, 2011 
+    DESCRIPTION  "Added rpl(18) ."
+
     REVISION     "200009260000Z"  -- September 26, 2000 
     DESCRIPTION  "Original version, published in coordination
                  with RFC 2932."
@@ -60,7 +66,9 @@
                 bgp        (14), -- Border Gateway Protocol
                 idpr       (15), -- InterDomain Policy Routing
                 ciscoEigrp (16), -- Cisco EIGRP
-                dvmrp      (17)  -- DVMRP
+                dvmrp      (17), -- DVMRP
+                rpl        (18), -- RPL [RFC-ietf-roll-rpl-19]
+                dhcp       (19)  -- DHCP [RFC2132]
                }
 
 IANAipMRouteProtocol ::= TEXTUAL-CONVENTION
diff --git a/mibs/IANAifType-MIB.txt b/mibs/IANAifType-MIB.txt
index 9594650..027a153 100644
--- a/mibs/IANAifType-MIB.txt
+++ b/mibs/IANAifType-MIB.txt
@@ -5,20 +5,59 @@
        TEXTUAL-CONVENTION          FROM SNMPv2-TC;
 
    ianaifType MODULE-IDENTITY
-       LAST-UPDATED "200905060000Z"  -- May 06, 2009
+       LAST-UPDATED "201407030000Z" -- July 3, 2014
        ORGANIZATION "IANA"
        CONTACT-INFO "        Internet Assigned Numbers Authority
 
                      Postal: ICANN
-                             4676 Admiralty Way, Suite 330
-                             Marina del Rey, CA 90292
+                             12025 Waterfront Drive, Suite 300
+                             Los Angeles, CA 90094-2536
 
-                     Tel:    +1 310 823 9358
+                     Tel:    +1 310-301-5800
                      E-Mail: iana&iana.org"
        DESCRIPTION  "This MIB module defines the IANAifType Textual
                      Convention, and thus the enumerated values of
                      the ifType object defined in MIB-II's ifTable."
 
+       REVISION     "201407030000Z"  -- July 3, 2014
+	   DESCRIPTION  "Registration of new IANAifTypes 277-278."
+
+       REVISION     "201405220000Z" -- May 22, 2014
+       DESCRIPTION  "Updated contact info."
+
+       REVISION     "201205170000Z"  -- May 17, 2012
+       DESCRIPTION  "Registration of new IANAifType 272."
+
+       REVISION     "201201110000Z"  -- January 11, 2012
+       DESCRIPTION  "Registration of new IANAifTypes 266-271."
+
+       REVISION     "201112180000Z"  -- December 18, 2011
+       DESCRIPTION  "Registration of new IANAifTypes 263-265."
+
+       REVISION     "201110260000Z"  -- October 26, 2011
+       DESCRIPTION  "Registration of new IANAifType 262."
+
+       REVISION     "201109070000Z"  -- September 7, 2011
+       DESCRIPTION  "Registration of new IANAifTypes 260 and 261."
+
+       REVISION     "201107220000Z"  -- July 22, 2011
+       DESCRIPTION  "Registration of new IANAifType 259."
+
+       REVISION     "201106030000Z"  -- June 03, 2011
+       DESCRIPTION  "Registration of new IANAifType 258."
+
+       REVISION     "201009210000Z"  -- September 21, 2010
+       DESCRIPTION  "Registration of new IANAifTypes 256 and 257."
+
+       REVISION     "201007210000Z"  -- July 21, 2010
+       DESCRIPTION  "Registration of new IANAifType 255."
+
+       REVISION     "201002110000Z"  -- February 11, 2010
+       DESCRIPTION  "Registration of new IANAifType 254."
+
+       REVISION     "201002080000Z"  -- February 08, 2010
+       DESCRIPTION  "Registration of new IANAifTypes 252 and 253."
+
        REVISION     "200905060000Z"  -- May 06, 2009
        DESCRIPTION  "Registration of new IANAifType 251."
 
@@ -328,7 +367,7 @@
                    ieee80212(55),      -- 100BaseVG
                    fibreChannel(56),   -- Fibre Channel
                    hippiInterface(57), -- HIPPI interfaces     
-                   frameRelayInterconnect(58), -- Obsolete use either
+                   frameRelayInterconnect(58), -- Obsolete, use either
                                        -- frameRelay(32) or 
                                        -- frameRelayService(44).
                    aflane8023(59),     -- ATM Emulated LAN for 802.3
@@ -488,7 +527,7 @@
                    pon155 (207), -- FSAN 155Mb Symetrical PON interface
                    pon622 (208), -- FSAN622Mb Symetrical PON interface
                    bridge (209), -- Transparent bridge interface
-                   linegroup (210), -- Interface common to multiple lines		   
+                   linegroup (210), -- Interface common to multiple lines   
                    voiceEMFGD (211), -- voice E&M Feature Group D
                    voiceFGDEANA (212), -- voice FGD Exchange Access North American
                    voiceDID (213), -- voice Direct Inward Dialing
@@ -498,7 +537,7 @@
                    pdnEtherLoop1 (217), -- Paradyne EtherLoop 1
                    pdnEtherLoop2 (218), -- Paradyne EtherLoop 2
                    opticalChannelGroup (219), -- Optical Channel Group
-                   homepna (220), -- HomePNA ITU-T G.989				   
+                   homepna (220), -- HomePNA ITU-T G.989
                    gfp (221), -- Generic Framing Procedure (GFP)
                    ciscoISLvlan (222), -- Layer 2 Virtual LAN using Cisco ISL
                    actelisMetaLOOP (223), -- Acteleis proprietary MetaLOOP High Speed Link 
@@ -532,7 +571,30 @@
                    pip (248), -- Provider Instance Port on a bridge per IEEE 802.1ah PBB
                    aluELP (249), -- Alcatel-Lucent Ethernet Link Protection
                    gpon (250), -- Gigabit-capable passive optical networks (G-PON) as per ITU-T G.948
-                   vdsl2 (251) -- Very high speed digital subscriber line Version 2 (as per ITU-T Recommendation G.993.2)
+                   vdsl2 (251), -- Very high speed digital subscriber line Version 2 (as per ITU-T Recommendation G.993.2)
+                   capwapDot11Profile (252), -- WLAN Profile Interface
+                   capwapDot11Bss (253), -- WLAN BSS Interface
+                   capwapWtpVirtualRadio (254), -- WTP Virtual Radio Interface
+                   bits (255), -- bitsport
+                   docsCableUpstreamRfPort (256), -- DOCSIS CATV Upstream RF Port
+                   cableDownstreamRfPort (257), -- CATV downstream RF port
+                   vmwareVirtualNic (258), -- VMware Virtual Network Interface
+                   ieee802154 (259), -- IEEE 802.15.4 WPAN interface
+                   otnOdu (260), -- OTN Optical Data Unit
+                   otnOtu (261), -- OTN Optical channel Transport Unit
+                   ifVfiType (262), -- VPLS Forwarding Instance Interface Type
+                   g9981 (263), -- G.998.1 bonded interface
+                   g9982 (264), -- G.998.2 bonded interface
+                   g9983 (265), -- G.998.3 bonded interface
+                   aluEpon (266), -- Ethernet Passive Optical Networks (E-PON)
+                   aluEponOnu (267), -- EPON Optical Network Unit
+                   aluEponPhysicalUni (268), -- EPON physical User to Network interface
+                   aluEponLogicalLink (269), -- The emulation of a point-to-point link over the EPON layer
+                   aluGponOnu (270), -- GPON Optical Network Unit
+                   aluGponPhysicalUni (271), -- GPON physical User to Network interface
+                   vmwareNicTeam (272), -- VMware NIC Team
+                   docsOfdmDownstream (277), -- CATV Downstream OFDM interface
+                   docsOfdmaUpstream (278) -- CATV Upstream OFDMA interface
                    }
 
 IANAtunnelType ::= TEXTUAL-CONVENTION
diff --git a/mibs/Makefile.in b/mibs/Makefile.in
index ea97e67..f185002 100644
--- a/mibs/Makefile.in
+++ b/mibs/Makefile.in
@@ -36,11 +36,12 @@
 	HOST-RESOURCES-MIB.txt HOST-RESOURCES-TYPES.txt \
 	RMON-MIB.txt \
 	IPV6-TC.txt IPV6-MIB.txt IPV6-ICMP-MIB.txt IPV6-TCP-MIB.txt \
-	IPV6-UDP-MIB.txt \
+	IPV6-UDP-MIB.txt IPV6-FLOW-LABEL-MIB.txt TUNNEL-MIB.txt \
 	DISMAN-EVENT-MIB.txt DISMAN-SCRIPT-MIB.txt DISMAN-SCHEDULE-MIB.txt \
 	NOTIFICATION-LOG-MIB.txt SNMP-USM-AES-MIB.txt \
 	SNMP-USM-DH-OBJECTS-MIB.txt \
-	SCTP-MIB.txt
+	SNMP-TLS-TM-MIB.txt SNMP-TSM-MIB.txt \
+	SCTP-MIB.txt BRIDGE-MIB.txt
 
 NETSNMPMIBS = NET-SNMP-TC.txt NET-SNMP-MIB.txt NET-SNMP-AGENT-MIB.txt \
 	NET-SNMP-EXAMPLES-MIB.txt NET-SNMP-EXTEND-MIB.txt NET-SNMP-PASS-MIB.txt
diff --git a/mibs/Makefile.mib b/mibs/Makefile.mib
index e5871f1..6d31242 100644
--- a/mibs/Makefile.mib
+++ b/mibs/Makefile.mib
@@ -15,6 +15,7 @@
 	SNMP-VIEW-BASED-ACM-MIB.txt SNMP-COMMUNITY-MIB.txt \
 	SNMP-TARGET-MIB.txt SNMP-NOTIFICATION-MIB.txt SNMP-PROXY-MIB.txt \
 	SNMP-USM-DH-OBJECTS-MIB.txt SNMP-USM-AES-MIB.txt \
+	SNMP-TLS-TM-MIB.txt \
 	AGENTX-MIB.txt SMUX-MIB.txt \
 	DISMAN-SCRIPT-MIB.txt DISMAN-SCHEDULE-MIB.txt \
 	DISMAN-PING-MIB.txt DISMAN-TRACEROUTE-MIB.txt \
@@ -32,7 +33,7 @@
 	TUNNEL-MIB.txt \
 	TRANSPORT-ADDRESS-MIB.txt \
 	RFC1155-SMI.txt RFC1213-MIB.txt\
-	SCTP-MIB.txt
+	SCTP-MIB.txt BRIDGE-MIB.txt
 
 MIBDEPS = Makefile.mib mibfetch smistrip
 
@@ -74,6 +75,9 @@
 SNMP-USM-AES-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 3826
 
+SNMP-TLS-TM-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 6353
+
 SNMP-USM-DH-OBJECTS-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2786
 
@@ -197,6 +201,9 @@
 SCTP-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 3873
 
+BRIDGE-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 4188
+
 ianamibs:	ianalist
 	[ -d $(ALLDIR) ] || mkdir $(ALLDIR)
 	cat ianalist | while read file mibs; \
diff --git a/mibs/NET-SNMP-TC.txt b/mibs/NET-SNMP-TC.txt
index b3d76a9..46f7302 100644
--- a/mibs/NET-SNMP-TC.txt
+++ b/mibs/NET-SNMP-TC.txt
@@ -123,5 +123,6 @@
 netSnmpAliasDomain	OBJECT IDENTIFIER ::= { netSnmpDomains 7 }
 netSnmpDTLSUDPDomain	OBJECT IDENTIFIER ::= { netSnmpDomains 8 }
 netSnmpDTLSSCTPDomain	OBJECT IDENTIFIER ::= { netSnmpDomains 9 }
+netSnmpTLSTCPDomain	OBJECT IDENTIFIER ::= { netSnmpDomains 10 }
 
 END
diff --git a/mibs/SNMP-TLS-TM-MIB.txt b/mibs/SNMP-TLS-TM-MIB.txt
new file mode 100644
index 0000000..848dff1
--- /dev/null
+++ b/mibs/SNMP-TLS-TM-MIB.txt
@@ -0,0 +1,1065 @@
+SNMP-TLS-TM-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE,
+    OBJECT-IDENTITY, mib-2, snmpDomains,
+    Counter32, Unsigned32, Gauge32, NOTIFICATION-TYPE
+      FROM SNMPv2-SMI                 -- RFC 2578 or any update thereof
+    TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType,
+    AutonomousType
+      FROM SNMPv2-TC                  -- RFC 2579 or any update thereof
+    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+      FROM SNMPv2-CONF                -- RFC 2580 or any update thereof
+    SnmpAdminString
+      FROM SNMP-FRAMEWORK-MIB         -- RFC 3411 or any update thereof
+    snmpTargetParamsName, snmpTargetAddrName
+      FROM SNMP-TARGET-MIB            -- RFC 3413 or any update thereof
+    ;
+
+snmpTlstmMIB MODULE-IDENTITY
+    LAST-UPDATED "201107190000Z"
+
+    ORGANIZATION "ISMS Working Group"
+    CONTACT-INFO "WG-EMail:   isms@lists.ietf.org
+                  Subscribe:  isms-request@lists.ietf.org
+
+                  Chairs:
+                     Juergen Schoenwaelder
+                     Jacobs University Bremen
+                     Campus Ring 1
+                     28725 Bremen
+                     Germany
+                     +49 421 200-3587
+                     j.schoenwaelder@jacobs-university.de
+
+                     Russ Mundy
+                     SPARTA, Inc.
+                     7110 Samuel Morse Drive
+                     Columbia, MD  21046
+                     USA
+
+                  Editor:
+                     Wes Hardaker
+                     SPARTA, Inc.
+                     P.O. Box 382
+                     Davis, CA  95617
+                     USA
+                     ietf@hardakers.net
+                  "
+    DESCRIPTION  "
+        The TLS Transport Model MIB
+
+        Copyright (c) 2010-2011 IETF Trust and the persons identified
+        as authors of the code.  All rights reserved.
+
+        Redistribution and use in source and binary forms, with or
+        without modification, is permitted pursuant to, and subject
+        to the license terms contained in, the Simplified BSD License
+        set forth in Section 4.c of the IETF Trust's Legal Provisions
+        Relating to IETF Documents
+        (http://trustee.ietf.org/license-info)."
+
+       REVISION     "201107190000Z"
+       DESCRIPTION  "This version of this MIB module is part of
+                     RFC 6353; see the RFC itself for full legal
+                     notices.  The only change was to introduce
+                     new wording to reflect require changes for
+                     IDNA addresses in the SnmpTLSAddress TC."
+
+       REVISION     "201005070000Z"
+       DESCRIPTION  "This version of this MIB module is part of
+                     RFC 5953; see the RFC itself for full legal
+                     notices."
+    ::= { mib-2 198 }
+
+-- ************************************************
+-- subtrees of the SNMP-TLS-TM-MIB
+-- ************************************************
+
+snmpTlstmNotifications OBJECT IDENTIFIER ::= { snmpTlstmMIB 0 }
+snmpTlstmIdentities    OBJECT IDENTIFIER ::= { snmpTlstmMIB 1 }
+snmpTlstmObjects       OBJECT IDENTIFIER ::= { snmpTlstmMIB 2 }
+snmpTlstmConformance   OBJECT IDENTIFIER ::= { snmpTlstmMIB 3 }
+
+-- ************************************************
+-- snmpTlstmObjects - Objects
+-- ************************************************
+
+snmpTLSTCPDomain OBJECT-IDENTITY
+    STATUS      current
+    DESCRIPTION
+        "The SNMP over TLS via TCP transport domain.  The
+        corresponding transport address is of type SnmpTLSAddress.
+
+        The securityName prefix to be associated with the
+        snmpTLSTCPDomain is 'tls'.  This prefix may be used by
+        security models or other components to identify which secure
+        transport infrastructure authenticated a securityName."
+    REFERENCE
+      "RFC 2579: Textual Conventions for SMIv2"
+    ::= { snmpDomains 8 }
+
+snmpDTLSUDPDomain OBJECT-IDENTITY
+    STATUS      current
+    DESCRIPTION
+        "The SNMP over DTLS via UDP transport domain.  The
+        corresponding transport address is of type SnmpTLSAddress.
+
+        The securityName prefix to be associated with the
+        snmpDTLSUDPDomain is 'dtls'.  This prefix may be used by
+        security models or other components to identify which secure
+        transport infrastructure authenticated a securityName."
+    REFERENCE
+      "RFC 2579: Textual Conventions for SMIv2"
+    ::= { snmpDomains 9 }
+
+SnmpTLSAddress ::= TEXTUAL-CONVENTION
+    DISPLAY-HINT "1a"
+    STATUS       current
+    DESCRIPTION
+        "Represents an IPv4 address, an IPv6 address, or a
+         US-ASCII-encoded hostname and port number.
+
+        An IPv4 address must be in dotted decimal format followed by a
+        colon ':' (US-ASCII character 0x3A) and a decimal port number
+        in US-ASCII.
+
+        An IPv6 address must be a colon-separated format (as described
+        in RFC 5952), surrounded by square brackets ('[', US-ASCII
+        character 0x5B, and ']', US-ASCII character 0x5D), followed by
+        a colon ':' (US-ASCII character 0x3A) and a decimal port number
+        in US-ASCII.
+
+        A hostname is always in US-ASCII (as per RFC 1123);
+        internationalized hostnames are encoded as A-labels as specified
+        in  RFC 5890.  The hostname is followed by a
+        colon ':' (US-ASCII character 0x3A) and a decimal port number
+        in US-ASCII.  The name SHOULD be fully qualified whenever
+        possible.
+
+        Values of this textual convention may not be directly usable
+        as transport-layer addressing information, and may require
+        run-time resolution.  As such, applications that write them
+        must be prepared for handling errors if such values are not
+        supported, or cannot be resolved (if resolution occurs at the
+        time of the management operation).
+
+        The DESCRIPTION clause of TransportAddress objects that may
+        have SnmpTLSAddress values must fully describe how (and
+        when) such names are to be resolved to IP addresses and vice
+        versa.
+
+        This textual convention SHOULD NOT be used directly in object
+        definitions since it restricts addresses to a specific
+        format.  However, if it is used, it MAY be used either on its
+        own or in conjunction with TransportAddressType or
+        TransportDomain as a pair.
+
+        When this textual convention is used as a syntax of an index
+        object, there may be issues with the limit of 128
+        sub-identifiers specified in SMIv2 (STD 58).  It is RECOMMENDED
+        that all MIB documents using this textual convention make
+        explicit any limitations on index component lengths that
+        management software must observe.  This may be done either by
+
+        including SIZE constraints on the index components or by
+        specifying applicable constraints in the conceptual row
+        DESCRIPTION clause or in the surrounding documentation."
+    REFERENCE
+      "RFC 1123: Requirements for Internet Hosts - Application and
+                 Support
+       RFC 5890: Internationalized Domain Names for Applications (IDNA):
+                 Definitions and Document Framework
+       RFC 5952: A Recommendation for IPv6 Address Text Representation
+      "
+    SYNTAX       OCTET STRING (SIZE (1..255))
+
+SnmpTLSFingerprint ::= TEXTUAL-CONVENTION
+    DISPLAY-HINT "1x:1x"
+    STATUS       current
+    DESCRIPTION
+       "A fingerprint value that can be used to uniquely reference
+       other data of potentially arbitrary length.
+
+       An SnmpTLSFingerprint value is composed of a 1-octet hashing
+       algorithm identifier followed by the fingerprint value.  The
+       octet value encoded is taken from the IANA TLS HashAlgorithm
+       Registry (RFC 5246).  The remaining octets are filled using the
+       results of the hashing algorithm.
+
+       This TEXTUAL-CONVENTION allows for a zero-length (blank)
+       SnmpTLSFingerprint value for use in tables where the
+       fingerprint value may be optional.  MIB definitions or
+       implementations may refuse to accept a zero-length value as
+       appropriate."
+       REFERENCE "RFC 5246: The Transport Layer
+                  Security (TLS) Protocol Version 1.2
+                  http://www.iana.org/assignments/tls-parameters/
+       "
+    SYNTAX OCTET STRING (SIZE (0..255))
+
+-- Identities for use in the snmpTlstmCertToTSNTable
+
+snmpTlstmCertToTSNMIdentities OBJECT IDENTIFIER
+    ::= { snmpTlstmIdentities 1 }
+
+snmpTlstmCertSpecified OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Directly specifies the tmSecurityName to be used for
+                  this certificate.  The value of the tmSecurityName
+                  to use is specified in the snmpTlstmCertToTSNData
+                  column.  The snmpTlstmCertToTSNData column must
+                  contain a non-zero length SnmpAdminString compliant
+
+                  value or the mapping described in this row must be
+                  considered a failure."
+    ::= { snmpTlstmCertToTSNMIdentities 1 }
+
+snmpTlstmCertSANRFC822Name OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Maps a subjectAltName's rfc822Name to a
+                  tmSecurityName.  The local part of the rfc822Name is
+                  passed unaltered but the host-part of the name must
+                  be passed in lowercase.  This mapping results in a
+                  1:1 correspondence between equivalent subjectAltName
+                  rfc822Name values and tmSecurityName values except
+                  that the host-part of the name MUST be passed in
+                  lowercase.
+
+                  Example rfc822Name Field:  FooBar@Example.COM
+                  is mapped to tmSecurityName: FooBar@example.com."
+    ::= { snmpTlstmCertToTSNMIdentities 2 }
+
+snmpTlstmCertSANDNSName OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Maps a subjectAltName's dNSName to a
+                  tmSecurityName after first converting it to all
+                  lowercase (RFC 5280 does not specify converting to
+                  lowercase so this involves an extra step).  This
+                  mapping results in a 1:1 correspondence between
+                  subjectAltName dNSName values and the tmSecurityName
+                  values."
+    REFERENCE "RFC 5280 - Internet X.509 Public Key Infrastructure
+                         Certificate and Certificate Revocation
+                         List (CRL) Profile."
+    ::= { snmpTlstmCertToTSNMIdentities 3 }
+
+snmpTlstmCertSANIpAddress OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Maps a subjectAltName's iPAddress to a
+                  tmSecurityName by transforming the binary encoded
+                  address as follows:
+
+                  1) for IPv4, the value is converted into a
+                     decimal-dotted quad address (e.g., '192.0.2.1').
+
+                  2) for IPv6 addresses, the value is converted into a
+                     32-character all lowercase hexadecimal string
+                     without any colon separators.
+
+                  This mapping results in a 1:1 correspondence between
+                  subjectAltName iPAddress values and the
+                  tmSecurityName values.
+
+                  The resulting length of an encoded IPv6 address is
+                  the maximum length supported by the View-Based
+                  Access Control Model (VACM).  Using both the
+                  Transport Security Model's support for transport
+                  prefixes (see the SNMP-TSM-MIB's
+                  snmpTsmConfigurationUsePrefix object for details)
+                  will result in securityName lengths that exceed what
+                  VACM can handle."
+    ::= { snmpTlstmCertToTSNMIdentities 4 }
+
+snmpTlstmCertSANAny OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Maps any of the following fields using the
+                  corresponding mapping algorithms:
+
+                  |------------+----------------------------|
+                  | Type       | Algorithm                  |
+                  |------------+----------------------------|
+                  | rfc822Name | snmpTlstmCertSANRFC822Name |
+                  | dNSName    | snmpTlstmCertSANDNSName    |
+                  | iPAddress  | snmpTlstmCertSANIpAddress  |
+                  |------------+----------------------------|
+
+                  The first matching subjectAltName value found in the
+                  certificate of the above types MUST be used when
+                  deriving the tmSecurityName.  The mapping algorithm
+                  specified in the 'Algorithm' column MUST be used to
+                  derive the tmSecurityName.
+
+                  This mapping results in a 1:1 correspondence between
+                  subjectAltName values and tmSecurityName values.  The
+                  three sub-mapping algorithms produced by this
+                  combined algorithm cannot produce conflicting
+                  results between themselves."
+    ::= { snmpTlstmCertToTSNMIdentities 5 }
+
+snmpTlstmCertCommonName OBJECT-IDENTITY
+    STATUS        current
+    DESCRIPTION  "Maps a certificate's CommonName to a tmSecurityName
+                  after converting it to a UTF-8 encoding.  The usage
+                  of CommonNames is deprecated and users are
+                  encouraged to use subjectAltName mapping methods
+                  instead.  This mapping results in a 1:1
+
+                  correspondence between certificate CommonName values
+                  and tmSecurityName values."
+    ::= { snmpTlstmCertToTSNMIdentities 6 }
+
+-- The snmpTlstmSession Group
+
+snmpTlstmSession           OBJECT IDENTIFIER ::= { snmpTlstmObjects 1 }
+
+snmpTlstmSessionOpens  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+       "The number of times an openSession() request has been executed
+       as a (D)TLS client, regardless of whether it succeeded or
+       failed."
+    ::= { snmpTlstmSession 1 }
+
+snmpTlstmSessionClientCloses  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times a closeSession() request has been
+        executed as a (D)TLS client, regardless of whether it
+        succeeded or failed."
+    ::= { snmpTlstmSession 2 }
+
+snmpTlstmSessionOpenErrors  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times an openSession() request failed to open a
+        session as a (D)TLS client, for any reason."
+    ::= { snmpTlstmSession 3 }
+
+snmpTlstmSessionAccepts  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+       "The number of times a (D)TLS server has accepted a new
+       connection from a client and has received at least one SNMP
+       message through it."
+    ::= { snmpTlstmSession 4 }
+
+snmpTlstmSessionServerCloses  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times a closeSession() request has been
+        executed as a (D)TLS server, regardless of whether it
+        succeeded or failed."
+    ::= { snmpTlstmSession 5 }
+
+snmpTlstmSessionNoSessions  OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times an outgoing message was dropped because
+        the session associated with the passed tmStateReference was no
+        longer (or was never) available."
+    ::= { snmpTlstmSession 6 }
+
+snmpTlstmSessionInvalidClientCertificates OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times an incoming session was not established
+        on a (D)TLS server because the presented client certificate
+        was invalid.  Reasons for invalidation include, but are not
+        limited to, cryptographic validation failures or lack of a
+        suitable mapping row in the snmpTlstmCertToTSNTable."
+    ::= { snmpTlstmSession 7 }
+
+snmpTlstmSessionUnknownServerCertificate OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times an outgoing session was not established
+         on a (D)TLS client because the server certificate presented
+         by an SNMP over (D)TLS server was invalid because no
+         configured fingerprint or Certification Authority (CA) was
+         acceptable to validate it.
+         This may result because there was no entry in the
+         snmpTlstmAddrTable or because no path could be found to a
+         known CA."
+    ::= { snmpTlstmSession 8 }
+
+snmpTlstmSessionInvalidServerCertificates OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of times an outgoing session was not established
+         on a (D)TLS client because the server certificate presented
+         by an SNMP over (D)TLS server could not be validated even if
+         the fingerprint or expected validation path was known.  That
+         is, a cryptographic validation error occurred during
+         certificate validation processing.
+
+        Reasons for invalidation include, but are not
+        limited to, cryptographic validation failures."
+    ::= { snmpTlstmSession 9 }
+
+snmpTlstmSessionInvalidCaches OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION
+        "The number of outgoing messages dropped because the
+        tmStateReference referred to an invalid cache."
+    ::= { snmpTlstmSession 10 }
+
+-- Configuration Objects
+
+snmpTlstmConfig             OBJECT IDENTIFIER ::= { snmpTlstmObjects 2 }
+
+-- Certificate mapping
+
+snmpTlstmCertificateMapping OBJECT IDENTIFIER ::= { snmpTlstmConfig 1 }
+
+snmpTlstmCertToTSNCount OBJECT-TYPE
+    SYNTAX      Gauge32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "A count of the number of entries in the
+        snmpTlstmCertToTSNTable."
+    ::= { snmpTlstmCertificateMapping 1 }
+
+snmpTlstmCertToTSNTableLastChanged OBJECT-TYPE
+    SYNTAX      TimeStamp
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The value of sysUpTime.0 when the snmpTlstmCertToTSNTable was
+        last modified through any means, or 0 if it has not been
+        modified since the command responder was started."
+    ::= { snmpTlstmCertificateMapping 2 }
+
+snmpTlstmCertToTSNTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF SnmpTlstmCertToTSNEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "This table is used by a (D)TLS server to map the (D)TLS
+        client's presented X.509 certificate to a tmSecurityName.
+
+        On an incoming (D)TLS/SNMP connection, the client's presented
+        certificate must either be validated based on an established
+        trust anchor, or it must directly match a fingerprint in this
+        table.  This table does not provide any mechanisms for
+        configuring the trust anchors; the transfer of any needed
+        trusted certificates for path validation is expected to occur
+        through an out-of-band transfer.
+
+        Once the certificate has been found acceptable (either by path
+        validation or directly matching a fingerprint in this table),
+        this table is consulted to determine the appropriate
+        tmSecurityName to identify with the remote connection.  This
+        is done by considering each active row from this table in
+        prioritized order according to its snmpTlstmCertToTSNID value.
+        Each row's snmpTlstmCertToTSNFingerprint value determines
+        whether the row is a match for the incoming connection:
+
+            1) If the row's snmpTlstmCertToTSNFingerprint value
+               identifies the presented certificate, then consider the
+               row as a successful match.
+
+            2) If the row's snmpTlstmCertToTSNFingerprint value
+               identifies a locally held copy of a trusted CA
+               certificate and that CA certificate was used to
+               validate the path to the presented certificate, then
+               consider the row as a successful match.
+
+        Once a matching row has been found, the
+        snmpTlstmCertToTSNMapType value can be used to determine how
+        the tmSecurityName to associate with the session should be
+        determined.  See the snmpTlstmCertToTSNMapType column's
+        DESCRIPTION for details on determining the tmSecurityName
+        value.  If it is impossible to determine a tmSecurityName from
+        the row's data combined with the data presented in the
+
+        certificate, then additional rows MUST be searched looking for
+        another potential match.  If a resulting tmSecurityName mapped
+        from a given row is not compatible with the needed
+        requirements of a tmSecurityName (e.g., VACM imposes a
+        32-octet-maximum length and the certificate derived
+        securityName could be longer), then it must be considered an
+        invalid match and additional rows MUST be searched looking for
+        another potential match.
+
+        If no matching and valid row can be found, the connection MUST
+        be closed and SNMP messages MUST NOT be accepted over it.
+
+        Missing values of snmpTlstmCertToTSNID are acceptable and
+        implementations should continue to the next highest numbered
+        row.  It is recommended that administrators skip index values
+        to leave room for the insertion of future rows (for example,
+        use values of 10 and 20 when creating initial rows).
+
+        Users are encouraged to make use of certificates with
+        subjectAltName fields that can be used as tmSecurityNames so
+        that a single root CA certificate can allow all child
+        certificate's subjectAltName to map directly to a
+        tmSecurityName via a 1:1 transformation.  However, this table
+        is flexible to allow for situations where existing deployed
+        certificate infrastructures do not provide adequate
+        subjectAltName values for use as tmSecurityNames.
+        Certificates may also be mapped to tmSecurityNames using the
+        CommonName portion of the Subject field.  However, the usage
+        of the CommonName field is deprecated and thus this usage is
+        NOT RECOMMENDED.  Direct mapping from each individual
+        certificate fingerprint to a tmSecurityName is also possible
+        but requires one entry in the table per tmSecurityName and
+        requires more management operations to completely configure a
+        device."
+    ::= { snmpTlstmCertificateMapping 3 }
+
+snmpTlstmCertToTSNEntry OBJECT-TYPE
+    SYNTAX      SnmpTlstmCertToTSNEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A row in the snmpTlstmCertToTSNTable that specifies a mapping
+        for an incoming (D)TLS certificate to a tmSecurityName to use
+        for a connection."
+    INDEX   { snmpTlstmCertToTSNID }
+    ::= { snmpTlstmCertToTSNTable 1 }
+
+SnmpTlstmCertToTSNEntry ::= SEQUENCE {
+    snmpTlstmCertToTSNID           Unsigned32,
+    snmpTlstmCertToTSNFingerprint  SnmpTLSFingerprint,
+    snmpTlstmCertToTSNMapType      AutonomousType,
+    snmpTlstmCertToTSNData         OCTET STRING,
+    snmpTlstmCertToTSNStorageType  StorageType,
+    snmpTlstmCertToTSNRowStatus    RowStatus
+}
+
+snmpTlstmCertToTSNID OBJECT-TYPE
+    SYNTAX      Unsigned32 (1..4294967295)
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A unique, prioritized index for the given entry.  Lower
+        numbers indicate a higher priority."
+    ::= { snmpTlstmCertToTSNEntry 1 }
+
+snmpTlstmCertToTSNFingerprint OBJECT-TYPE
+    SYNTAX      SnmpTLSFingerprint (SIZE(1..255))
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "A cryptographic hash of an X.509 certificate.  The results of
+        a successful matching fingerprint to either the trusted CA in
+        the certificate validation path or to the certificate itself
+        is dictated by the snmpTlstmCertToTSNMapType column."
+    ::= { snmpTlstmCertToTSNEntry 2 }
+
+snmpTlstmCertToTSNMapType OBJECT-TYPE
+    SYNTAX      AutonomousType
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "Specifies the mapping type for deriving a tmSecurityName from
+        a certificate.  Details for mapping of a particular type SHALL
+        be specified in the DESCRIPTION clause of the OBJECT-IDENTITY
+        that describes the mapping.  If a mapping succeeds it will
+        return a tmSecurityName for use by the TLSTM model and
+        processing stops.
+
+        If the resulting mapped value is not compatible with the
+        needed requirements of a tmSecurityName (e.g., VACM imposes a
+        32-octet-maximum length and the certificate derived
+        securityName could be longer), then future rows MUST be
+        searched for additional snmpTlstmCertToTSNFingerprint matches
+        to look for a mapping that succeeds.
+
+        Suitable values for assigning to this object that are defined
+        within the SNMP-TLS-TM-MIB can be found in the
+        snmpTlstmCertToTSNMIdentities portion of the MIB tree."
+    DEFVAL { snmpTlstmCertSpecified }
+    ::= { snmpTlstmCertToTSNEntry 3 }
+
+snmpTlstmCertToTSNData OBJECT-TYPE
+    SYNTAX      OCTET STRING (SIZE(0..1024))
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "Auxiliary data used as optional configuration information for
+        a given mapping specified by the snmpTlstmCertToTSNMapType
+        column.  Only some mapping systems will make use of this
+        column.  The value in this column MUST be ignored for any
+        mapping type that does not require data present in this
+        column."
+    DEFVAL { "" }
+    ::= { snmpTlstmCertToTSNEntry 4 }
+
+snmpTlstmCertToTSNStorageType OBJECT-TYPE
+    SYNTAX       StorageType
+    MAX-ACCESS   read-create
+    STATUS       current
+    DESCRIPTION
+        "The storage type for this conceptual row.  Conceptual rows
+        having the value 'permanent' need not allow write-access to
+        any columnar objects in the row."
+    DEFVAL      { nonVolatile }
+    ::= { snmpTlstmCertToTSNEntry 5 }
+
+snmpTlstmCertToTSNRowStatus OBJECT-TYPE
+    SYNTAX      RowStatus
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The status of this conceptual row.  This object may be used
+        to create or remove rows from this table.
+
+        To create a row in this table, an administrator must set this
+        object to either createAndGo(4) or createAndWait(5).
+
+        Until instances of all corresponding columns are appropriately
+        configured, the value of the corresponding instance of the
+        snmpTlstmParamsRowStatus column is notReady(3).
+
+        In particular, a newly created row cannot be made active until
+        the corresponding snmpTlstmCertToTSNFingerprint,
+        snmpTlstmCertToTSNMapType, and snmpTlstmCertToTSNData columns
+        have been set.
+
+        The following objects may not be modified while the
+        value of this object is active(1):
+            - snmpTlstmCertToTSNFingerprint
+            - snmpTlstmCertToTSNMapType
+            - snmpTlstmCertToTSNData
+        An attempt to set these objects while the value of
+        snmpTlstmParamsRowStatus is active(1) will result in
+        an inconsistentValue error."
+    ::= { snmpTlstmCertToTSNEntry 6 }
+
+-- Maps tmSecurityNames to certificates for use by the SNMP-TARGET-MIB
+
+snmpTlstmParamsCount OBJECT-TYPE
+    SYNTAX      Gauge32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "A count of the number of entries in the snmpTlstmParamsTable."
+    ::= { snmpTlstmCertificateMapping 4 }
+
+snmpTlstmParamsTableLastChanged OBJECT-TYPE
+    SYNTAX      TimeStamp
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The value of sysUpTime.0 when the snmpTlstmParamsTable
+        was last modified through any means, or 0 if it has not been
+        modified since the command responder was started."
+    ::= { snmpTlstmCertificateMapping 5 }
+
+snmpTlstmParamsTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF SnmpTlstmParamsEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "This table is used by a (D)TLS client when a (D)TLS
+        connection is being set up using an entry in the
+        SNMP-TARGET-MIB.  It extends the SNMP-TARGET-MIB's
+        snmpTargetParamsTable with a fingerprint of a certificate to
+        use when establishing such a (D)TLS connection."
+    ::= { snmpTlstmCertificateMapping 6 }
+
+snmpTlstmParamsEntry OBJECT-TYPE
+    SYNTAX      SnmpTlstmParamsEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A conceptual row containing a fingerprint hash of a locally
+        held certificate for a given snmpTargetParamsEntry.  The
+        values in this row should be ignored if the connection that
+        needs to be established, as indicated by the SNMP-TARGET-MIB
+        infrastructure, is not a certificate and (D)TLS based
+        connection.  The connection SHOULD NOT be established if the
+        certificate fingerprint stored in this entry does not point to
+        a valid locally held certificate or if it points to an
+        unusable certificate (such as might happen when the
+        certificate's expiration date has been reached)."
+    INDEX    { IMPLIED snmpTargetParamsName }
+    ::= { snmpTlstmParamsTable 1 }
+
+SnmpTlstmParamsEntry ::= SEQUENCE {
+    snmpTlstmParamsClientFingerprint SnmpTLSFingerprint,
+    snmpTlstmParamsStorageType       StorageType,
+    snmpTlstmParamsRowStatus         RowStatus
+}
+
+snmpTlstmParamsClientFingerprint OBJECT-TYPE
+    SYNTAX      SnmpTLSFingerprint
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "This object stores the hash of the public portion of a
+        locally held X.509 certificate.  The X.509 certificate, its
+        public key, and the corresponding private key will be used
+        when initiating a (D)TLS connection as a (D)TLS client."
+    ::= { snmpTlstmParamsEntry 1 }
+
+snmpTlstmParamsStorageType OBJECT-TYPE
+    SYNTAX       StorageType
+    MAX-ACCESS   read-create
+    STATUS       current
+    DESCRIPTION
+        "The storage type for this conceptual row.  Conceptual rows
+        having the value 'permanent' need not allow write-access to
+        any columnar objects in the row."
+    DEFVAL      { nonVolatile }
+    ::= { snmpTlstmParamsEntry 2 }
+
+snmpTlstmParamsRowStatus OBJECT-TYPE
+    SYNTAX      RowStatus
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The status of this conceptual row.  This object may be used
+        to create or remove rows from this table.
+
+        To create a row in this table, an administrator must set this
+        object to either createAndGo(4) or createAndWait(5).
+
+        Until instances of all corresponding columns are appropriately
+        configured, the value of the corresponding instance of the
+        snmpTlstmParamsRowStatus column is notReady(3).
+
+        In particular, a newly created row cannot be made active until
+        the corresponding snmpTlstmParamsClientFingerprint column has
+        been set.
+
+        The snmpTlstmParamsClientFingerprint object may not be modified
+        while the value of this object is active(1).
+
+        An attempt to set these objects while the value of
+        snmpTlstmParamsRowStatus is active(1) will result in
+        an inconsistentValue error."
+    ::= { snmpTlstmParamsEntry 3 }
+
+snmpTlstmAddrCount OBJECT-TYPE
+    SYNTAX      Gauge32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "A count of the number of entries in the snmpTlstmAddrTable."
+    ::= { snmpTlstmCertificateMapping 7 }
+
+snmpTlstmAddrTableLastChanged OBJECT-TYPE
+    SYNTAX      TimeStamp
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The value of sysUpTime.0 when the snmpTlstmAddrTable
+        was last modified through any means, or 0 if it has not been
+        modified since the command responder was started."
+    ::= { snmpTlstmCertificateMapping 8 }
+
+snmpTlstmAddrTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF SnmpTlstmAddrEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "This table is used by a (D)TLS client when a (D)TLS
+        connection is being set up using an entry in the
+        SNMP-TARGET-MIB.  It extends the SNMP-TARGET-MIB's
+
+        snmpTargetAddrTable so that the client can verify that the
+        correct server has been reached.  This verification can use
+        either a certificate fingerprint, or an identity
+        authenticated via certification path validation.
+
+        If there is an active row in this table corresponding to the
+        entry in the SNMP-TARGET-MIB that was used to establish the
+        connection, and the row's snmpTlstmAddrServerFingerprint
+        column has non-empty value, then the server's presented
+        certificate is compared with the
+        snmpTlstmAddrServerFingerprint value (and the
+        snmpTlstmAddrServerIdentity column is ignored).  If the
+        fingerprint matches, the verification has succeeded.  If the
+        fingerprint does not match, then the connection MUST be
+        closed.
+
+        If the server's presented certificate has passed
+        certification path validation [RFC5280] to a configured
+        trust anchor, and an active row exists with a zero-length
+        snmpTlstmAddrServerFingerprint value, then the
+        snmpTlstmAddrServerIdentity column contains the expected
+        host name.  This expected host name is then compared against
+        the server's certificate as follows:
+
+          - Implementations MUST support matching the expected host
+          name against a dNSName in the subjectAltName extension
+          field and MAY support checking the name against the
+          CommonName portion of the subject distinguished name.
+
+          - The '*' (ASCII 0x2a) wildcard character is allowed in the
+          dNSName of the subjectAltName extension (and in common
+          name, if used to store the host name), but only as the
+          left-most (least significant) DNS label in that value.
+          This wildcard matches any left-most DNS label in the
+          server name.  That is, the subject *.example.com matches
+          the server names a.example.com and b.example.com, but does
+          not match example.com or a.b.example.com.  Implementations
+          MUST support wildcards in certificates as specified above,
+          but MAY provide a configuration option to disable them.
+
+          - If the locally configured name is an internationalized
+          domain name, conforming implementations MUST convert it to
+          the ASCII Compatible Encoding (ACE) format for performing
+          comparisons, as specified in Section 7 of [RFC5280].
+
+        If the expected host name fails these conditions then the
+        connection MUST be closed.
+
+        If there is no row in this table corresponding to the entry
+        in the SNMP-TARGET-MIB and the server can be authorized by
+        another, implementation-dependent means, then the connection
+        MAY still proceed."
+    ::= { snmpTlstmCertificateMapping 9 }
+
+snmpTlstmAddrEntry OBJECT-TYPE
+    SYNTAX      SnmpTlstmAddrEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A conceptual row containing a copy of a certificate's
+        fingerprint for a given snmpTargetAddrEntry.  The values in
+        this row should be ignored if the connection that needs to be
+        established, as indicated by the SNMP-TARGET-MIB
+        infrastructure, is not a (D)TLS based connection.  If an
+        snmpTlstmAddrEntry exists for a given snmpTargetAddrEntry, then
+        the presented server certificate MUST match or the connection
+        MUST NOT be established.  If a row in this table does not
+        exist to match an snmpTargetAddrEntry row, then the connection
+        SHOULD still proceed if some other certificate validation path
+        algorithm (e.g., RFC 5280) can be used."
+    INDEX    { IMPLIED snmpTargetAddrName }
+    ::= { snmpTlstmAddrTable 1 }
+
+SnmpTlstmAddrEntry ::= SEQUENCE {
+    snmpTlstmAddrServerFingerprint    SnmpTLSFingerprint,
+    snmpTlstmAddrServerIdentity       SnmpAdminString,
+    snmpTlstmAddrStorageType          StorageType,
+    snmpTlstmAddrRowStatus            RowStatus
+}
+
+snmpTlstmAddrServerFingerprint OBJECT-TYPE
+    SYNTAX      SnmpTLSFingerprint
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "A cryptographic hash of a public X.509 certificate.  This
+        object should store the hash of the public X.509 certificate
+        that the remote server should present during the (D)TLS
+        connection setup.  The fingerprint of the presented
+        certificate and this hash value MUST match exactly or the
+        connection MUST NOT be established."
+    DEFVAL { "" }
+    ::= { snmpTlstmAddrEntry 1 }
+
+snmpTlstmAddrServerIdentity OBJECT-TYPE
+    SYNTAX      SnmpAdminString
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The reference identity to check against the identity
+        presented by the remote system."
+    DEFVAL { "" }
+    ::= { snmpTlstmAddrEntry 2 }
+
+snmpTlstmAddrStorageType OBJECT-TYPE
+    SYNTAX       StorageType
+    MAX-ACCESS   read-create
+    STATUS       current
+    DESCRIPTION
+        "The storage type for this conceptual row.  Conceptual rows
+        having the value 'permanent' need not allow write-access to
+        any columnar objects in the row."
+    DEFVAL      { nonVolatile }
+    ::= { snmpTlstmAddrEntry 3 }
+
+snmpTlstmAddrRowStatus OBJECT-TYPE
+    SYNTAX      RowStatus
+    MAX-ACCESS  read-create
+    STATUS      current
+    DESCRIPTION
+        "The status of this conceptual row.  This object may be used
+        to create or remove rows from this table.
+
+        To create a row in this table, an administrator must set this
+        object to either createAndGo(4) or createAndWait(5).
+
+        Until instances of all corresponding columns are
+        appropriately configured, the value of the
+        corresponding instance of the snmpTlstmAddrRowStatus
+        column is notReady(3).
+
+        In particular, a newly created row cannot be made active until
+        the corresponding snmpTlstmAddrServerFingerprint column has been
+        set.
+
+        Rows MUST NOT be active if the snmpTlstmAddrServerFingerprint
+        column is blank and the snmpTlstmAddrServerIdentity is set to
+        '*' since this would insecurely accept any presented
+        certificate.
+
+        The snmpTlstmAddrServerFingerprint object may not be modified
+        while the value of this object is active(1).
+
+        An attempt to set these objects while the value of
+        snmpTlstmAddrRowStatus is active(1) will result in
+        an inconsistentValue error."
+    ::= { snmpTlstmAddrEntry 4 }
+
+-- ************************************************
+--  snmpTlstmNotifications - Notifications Information
+-- ************************************************
+
+snmpTlstmServerCertificateUnknown NOTIFICATION-TYPE
+    OBJECTS { snmpTlstmSessionUnknownServerCertificate }
+    STATUS  current
+    DESCRIPTION
+        "Notification that the server certificate presented by an SNMP
+         over (D)TLS server was invalid because no configured
+         fingerprint or CA was acceptable to validate it.  This may be
+         because there was no entry in the snmpTlstmAddrTable or
+         because no path could be found to known Certification
+         Authority.
+
+         To avoid notification loops, this notification MUST NOT be
+         sent to servers that themselves have triggered the
+         notification."
+    ::= { snmpTlstmNotifications 1 }
+
+snmpTlstmServerInvalidCertificate NOTIFICATION-TYPE
+    OBJECTS { snmpTlstmAddrServerFingerprint,
+              snmpTlstmSessionInvalidServerCertificates}
+    STATUS  current
+    DESCRIPTION
+        "Notification that the server certificate presented by an SNMP
+         over (D)TLS server could not be validated even if the
+         fingerprint or expected validation path was known.  That is, a
+         cryptographic validation error occurred during certificate
+         validation processing.
+
+         To avoid notification loops, this notification MUST NOT be
+         sent to servers that themselves have triggered the
+         notification."
+    ::= { snmpTlstmNotifications 2 }
+
+-- ************************************************
+-- snmpTlstmCompliances - Conformance Information
+-- ************************************************
+
+snmpTlstmCompliances OBJECT IDENTIFIER ::= { snmpTlstmConformance 1 }
+
+snmpTlstmGroups OBJECT IDENTIFIER ::= { snmpTlstmConformance 2 }
+
+-- ************************************************
+-- Compliance statements
+-- ************************************************
+
+snmpTlstmCompliance MODULE-COMPLIANCE
+    STATUS      current
+    DESCRIPTION
+        "The compliance statement for SNMP engines that support the
+        SNMP-TLS-TM-MIB"
+    MODULE
+        MANDATORY-GROUPS { snmpTlstmStatsGroup,
+                           snmpTlstmIncomingGroup,
+                           snmpTlstmOutgoingGroup,
+                           snmpTlstmNotificationGroup }
+    ::= { snmpTlstmCompliances 1 }
+
+-- ************************************************
+-- Units of conformance
+-- ************************************************
+snmpTlstmStatsGroup OBJECT-GROUP
+    OBJECTS {
+        snmpTlstmSessionOpens,
+        snmpTlstmSessionClientCloses,
+        snmpTlstmSessionOpenErrors,
+        snmpTlstmSessionAccepts,
+        snmpTlstmSessionServerCloses,
+        snmpTlstmSessionNoSessions,
+        snmpTlstmSessionInvalidClientCertificates,
+        snmpTlstmSessionUnknownServerCertificate,
+        snmpTlstmSessionInvalidServerCertificates,
+        snmpTlstmSessionInvalidCaches
+    }
+    STATUS      current
+    DESCRIPTION
+        "A collection of objects for maintaining
+        statistical information of an SNMP engine that
+        implements the SNMP TLS Transport Model."
+    ::= { snmpTlstmGroups 1 }
+
+snmpTlstmIncomingGroup OBJECT-GROUP
+    OBJECTS {
+        snmpTlstmCertToTSNCount,
+        snmpTlstmCertToTSNTableLastChanged,
+        snmpTlstmCertToTSNFingerprint,
+        snmpTlstmCertToTSNMapType,
+        snmpTlstmCertToTSNData,
+        snmpTlstmCertToTSNStorageType,
+        snmpTlstmCertToTSNRowStatus
+    }
+    STATUS      current
+    DESCRIPTION
+        "A collection of objects for maintaining
+        incoming connection certificate mappings to
+        tmSecurityNames of an SNMP engine that implements the
+        SNMP TLS Transport Model."
+    ::= { snmpTlstmGroups 2 }
+
+snmpTlstmOutgoingGroup OBJECT-GROUP
+    OBJECTS {
+        snmpTlstmParamsCount,
+        snmpTlstmParamsTableLastChanged,
+        snmpTlstmParamsClientFingerprint,
+        snmpTlstmParamsStorageType,
+        snmpTlstmParamsRowStatus,
+        snmpTlstmAddrCount,
+        snmpTlstmAddrTableLastChanged,
+        snmpTlstmAddrServerFingerprint,
+        snmpTlstmAddrServerIdentity,
+        snmpTlstmAddrStorageType,
+        snmpTlstmAddrRowStatus
+    }
+    STATUS      current
+    DESCRIPTION
+        "A collection of objects for maintaining
+        outgoing connection certificates to use when opening
+        connections as a result of SNMP-TARGET-MIB settings."
+    ::= { snmpTlstmGroups 3 }
+
+snmpTlstmNotificationGroup NOTIFICATION-GROUP
+    NOTIFICATIONS {
+        snmpTlstmServerCertificateUnknown,
+        snmpTlstmServerInvalidCertificate
+    }
+    STATUS current
+    DESCRIPTION
+        "Notifications"
+    ::= { snmpTlstmGroups 4 }
+
+END
diff --git a/mibs/SNMP-TSM-MIB.txt b/mibs/SNMP-TSM-MIB.txt
new file mode 100644
index 0000000..4ccf09b
--- /dev/null
+++ b/mibs/SNMP-TSM-MIB.txt
@@ -0,0 +1,234 @@
+SNMP-TSM-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE,
+    mib-2, Counter32
+      FROM SNMPv2-SMI -- RFC2578
+    MODULE-COMPLIANCE, OBJECT-GROUP
+      FROM SNMPv2-CONF -- RFC2580
+    TruthValue
+       FROM SNMPv2-TC -- RFC2579
+    ;
+
+snmpTsmMIB MODULE-IDENTITY
+    LAST-UPDATED "200906090000Z"
+    ORGANIZATION "ISMS Working Group"
+    CONTACT-INFO "WG-EMail:   isms@lists.ietf.org
+                  Subscribe:  isms-request@lists.ietf.org
+
+                  Chairs:
+                    Juergen Quittek
+                    NEC Europe Ltd.
+                    Network Laboratories
+                    Kurfuersten-Anlage 36
+                    69115 Heidelberg
+                    Germany
+                    +49 6221 90511-15
+                    quittek@netlab.nec.de
+
+                    Juergen Schoenwaelder
+                    Jacobs University Bremen
+                    Campus Ring 1
+                    28725 Bremen
+                    Germany
+                    +49 421 200-3587
+                    j.schoenwaelder@jacobs-university.de
+
+                  Editor:
+                    David Harrington
+                    Huawei Technologies USA
+                    1700 Alma Dr.
+                    Plano TX 75075
+                    USA
+                    +1 603-436-8634
+                    ietfdbh@comcast.net
+
+                    Wes Hardaker
+                    Cobham Analytic Solutions
+                    P.O. Box 382
+                    Davis, CA  95617
+                    USA
+                    +1 530 792 1913
+                    ietf@hardakers.net
+                 "
+    DESCRIPTION
+       "The Transport Security Model MIB.
+
+        In keeping with the RFC 3411 design decisions to use
+        self-contained documents, the RFC that contains the definition
+        of this MIB module also includes the elements of procedure
+        that are needed for processing the Transport Security Model
+        for SNMP.  These MIB objects SHOULD NOT be modified via other
+        subsystems or models defined in other documents.  This allows
+        the Transport Security Model for SNMP to be designed and
+        documented as independent and self-contained, having no direct
+        impact on other modules, and this allows this module to be
+        upgraded and supplemented as the need arises, and to move
+        along the standards track on different time-lines from other
+        modules.
+
+        Copyright (c) 2009 IETF Trust and the persons
+        identified as authors of the code.  All rights reserved.
+
+        Redistribution and use in source and binary forms, with or
+        without modification, are permitted provided that the
+        following conditions are met:
+
+        - Redistributions of source code must retain the above copyright
+          notice, this list of conditions and the following disclaimer.
+
+        - 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.
+
+        - Neither the name of Internet Society, IETF or IETF Trust,
+          nor the names of specific contributors, may be used to endorse
+          or promote products derived from this software without
+          specific prior written permission.
+
+        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+
+        This version of this MIB module is part of RFC 5591;
+        see the RFC itself for full legal notices."
+
+    REVISION    "200906090000Z"
+    DESCRIPTION "The initial version, published in RFC 5591."
+    ::= { mib-2 190 }
+
+-- ---------------------------------------------------------- --
+-- subtrees in the SNMP-TSM-MIB
+-- ---------------------------------------------------------- --
+
+snmpTsmNotifications OBJECT IDENTIFIER ::= { snmpTsmMIB 0 }
+snmpTsmMIBObjects    OBJECT IDENTIFIER ::= { snmpTsmMIB 1 }
+snmpTsmConformance   OBJECT IDENTIFIER ::= { snmpTsmMIB 2 }
+
+-- -------------------------------------------------------------
+-- Objects
+-- -------------------------------------------------------------
+
+-- Statistics for the Transport Security Model
+
+snmpTsmStats         OBJECT IDENTIFIER ::= { snmpTsmMIBObjects 1 }
+
+snmpTsmInvalidCaches OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION "The number of incoming messages dropped because the
+
+                 tmStateReference referred to an invalid cache.
+                "
+    ::= { snmpTsmStats 1 }
+
+snmpTsmInadequateSecurityLevels OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION "The number of incoming messages dropped because
+                 the securityLevel asserted by the Transport Model was
+                 less than the securityLevel requested by the
+                 application.
+                "
+    ::= { snmpTsmStats 2 }
+
+snmpTsmUnknownPrefixes OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION "The number of messages dropped because
+                 snmpTsmConfigurationUsePrefix was set to true and
+                 there is no known prefix for the specified transport
+                 domain.
+                "
+    ::= { snmpTsmStats 3 }
+
+snmpTsmInvalidPrefixes OBJECT-TYPE
+    SYNTAX       Counter32
+    MAX-ACCESS   read-only
+    STATUS       current
+    DESCRIPTION "The number of messages dropped because
+                 the securityName associated with an outgoing message
+                 did not contain a valid transport domain prefix.
+                "
+    ::= { snmpTsmStats 4 }
+
+-- -------------------------------------------------------------
+-- Configuration
+-- -------------------------------------------------------------
+
+-- Configuration for the Transport Security Model
+
+snmpTsmConfiguration   OBJECT IDENTIFIER ::= { snmpTsmMIBObjects 2 }
+
+snmpTsmConfigurationUsePrefix OBJECT-TYPE
+    SYNTAX      TruthValue
+    MAX-ACCESS  read-write
+    STATUS      current
+    DESCRIPTION "If this object is set to true, then securityNames
+                 passing to and from the application are expected to
+                 contain a transport-domain-specific prefix.  If this
+                 object is set to true, then a domain-specific prefix
+                 will be added by the TSM to the securityName for
+                 incoming messages and removed from the securityName
+                 when processing outgoing messages.  Transport domains
+                 and prefixes are maintained in a registry by IANA.
+                 This object SHOULD persist across system reboots.
+                "
+    DEFVAL { false }
+    ::= { snmpTsmConfiguration 1 }
+
+-- -------------------------------------------------------------
+-- snmpTsmMIB - Conformance Information
+-- -------------------------------------------------------------
+
+snmpTsmCompliances OBJECT IDENTIFIER ::= { snmpTsmConformance 1 }
+
+snmpTsmGroups      OBJECT IDENTIFIER ::= { snmpTsmConformance 2 }
+
+-- -------------------------------------------------------------
+-- Compliance statements
+-- -------------------------------------------------------------
+
+snmpTsmCompliance MODULE-COMPLIANCE
+    STATUS      current
+    DESCRIPTION "The compliance statement for SNMP engines that support
+                 the SNMP-TSM-MIB.
+                "
+    MODULE
+        MANDATORY-GROUPS { snmpTsmGroup }
+    ::= { snmpTsmCompliances 1 }
+
+-- -------------------------------------------------------------
+-- Units of conformance
+-- -------------------------------------------------------------
+snmpTsmGroup OBJECT-GROUP
+    OBJECTS {
+        snmpTsmInvalidCaches,
+        snmpTsmInadequateSecurityLevels,
+        snmpTsmUnknownPrefixes,
+        snmpTsmInvalidPrefixes,
+        snmpTsmConfigurationUsePrefix
+    }
+    STATUS      current
+    DESCRIPTION "A collection of objects for maintaining
+                 information of an SNMP engine that implements
+
+                 the SNMP Transport Security Model.
+                "
+    ::= { snmpTsmGroups 2 }
+
+END
diff --git a/mibs/UCD-SNMP-MIB.txt b/mibs/UCD-SNMP-MIB.txt
index 0697124..69f9ac5 100644
--- a/mibs/UCD-SNMP-MIB.txt
+++ b/mibs/UCD-SNMP-MIB.txt
@@ -901,7 +901,7 @@
 
 laConfig OBJECT-TYPE
     SYNTAX	DisplayString
-    MAX-ACCESS	read-only
+    MAX-ACCESS	read-write
     STATUS	current
     DESCRIPTION
 	"The watch point for load-averages to signal an
diff --git a/mibs/ianalist b/mibs/ianalist
index f2345f1..8b31ad6 100644
--- a/mibs/ianalist
+++ b/mibs/ianalist
@@ -1,13 +1,17 @@
-# updated 2007-05-03
-ianaiftype-mib			IANAifType-MIB
-ianalanguage-mib		IANA-LANGUAGE-MIB
+# updated 2014-08-14
 ianaaddressfamilynumbers-mib	IANA-ADDRESS-FAMILY-NUMBERS-MIB
-ianaiprouteprotocol-mib		IANA-RTPROTO-MIB
-ianatn3270etc-mib		IANATn3270eTC-MIB
-ianamalloc-mib			IANA-MALLOC-MIB
+ianabfdtcstd-mib		IANA-BFD-TC-STD-MIB
 ianacharset-mib			IANA-CHARSET-MIB
-ianaprinter-mib			IANA-PRINTER-MIB
+ianaentity-mib			IANA-ENTITY-MIB
 ianafinisher-mib		IANA-FINISHER-MIB
-ianaitualarmtc-mib		IANA-ITU-ALARM-TC-MIB
-ianamau-mib			IANA-MAU-MIB
 ianagmplstc-mib			IANA-GMPLS-TC-MIB
+ianaiftype-mib			IANAifType-MIB
+ianaiprouteprotocol-mib		IANA-RTPROTO-MIB
+ianaippmmetricsregistry-mib	IANA-IPPM-METRICS-REGISTRY-MIB
+ianaitualarmtc-mib		IANA-ITU-ALARM-TC-MIB
+ianalanguage-mib		IANA-LANGUAGE-MIB
+ianamalloc-mib			IANA-MALLOC-MIB
+ianamau-mib			IANA-MAU-MIB
+ianaolsrv2linkmetrictype-mib	IANA-OLSRv2-LINK-METRIC-TYPE-MIB
+ianaprinter-mib			IANA-PRINTER-MIB
+ianatn3270etc-mib		IANATn3270eTC-MIB
diff --git a/mibs/rfclist b/mibs/rfclist
index a4659c2..e0d3eef 100644
--- a/mibs/rfclist
+++ b/mibs/rfclist
@@ -1,4 +1,4 @@
-# updated 2009-07-27
+# updated 2014-08-15
 1155	RFC1155-SMI
 1213	RFC1213-MIB
 1227	SMUX-MIB
@@ -77,7 +77,6 @@
 2613	SMON-MIB
 2662	ADSL-TC-MIB:ADSL-LINE-MIB
 2666	ETHER-CHIPSET-MIB
-2670	DOCS-IF-MIB
 2677	NHRP-MIB
 2707	Job-Monitoring-MIB
 2720	FLOW-METER-MIB
@@ -168,7 +167,6 @@
 4087	TUNNEL-MIB
 4113	UDP-MIB
 4131	DOCS-IETF-BPI2-MIB
-4133	ENTITY-MIB
 4149	SSPM-MIB
 4188	BRIDGE-MIB
 4220	TE-LINK-STD-MIB
@@ -183,7 +181,6 @@
 4323	DOCS-IETF-QOS-MIB
 4363	P-BRIDGE-MIB:Q-BRIDGE-MIB
 4368	MPLS-LC-ATM-STD-MIB:MPLS-LC-FR-STD-MIB
-4369	IFCP-MGMT-MIB
 4382	MPLS-L3VPN-STD-MIB
 4404	FCIP-MGMT-MIB
 4438	T11-FC-NAME-SERVER-MIB
@@ -192,8 +189,9 @@
 4455	SCSI-MIB
 4498	AGGREGATE-MIB:TIME-AGGREGATE-MIB
 4502	RMON2-MIB
-4544	ISCSI-MIB
 4545	IPS-AUTH-MIB
+4546	DOCS-IF-MIB
+4547	DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB
 4560	DISMAN-PING-MIB:DISMAN-TRACEROUTE-MIB:DISMAN-NSLOOKUP-MIB
 4624	MSDP-MIB
 4625	T11-FC-ROUTE-MIB
@@ -215,6 +213,7 @@
 4801	GMPLS-TC-STD-MIB
 4802	GMPLS-TE-STD-MIB
 4803	GMPLS-LSR-STD-MIB:GMPLS-LABEL-STD-MIB
+4807	IPSEC-SPD-MIB
 4836	MAU-MIB
 4837	DOT3-EPON-MIB
 4878	DOT3-OAM-MIB
@@ -239,7 +238,42 @@
 5519	MGMD-STD-MIB
 5525	RSERPOOL-MIB
 5542	PW-TC-STD-MIB
+5591    SNMP-TSM-MIB
 5601	PW-STD-MIB:IANA-PWE3-MIB
 5602	PW-MPLS-STD-MIB
 5603	PW-ENET-STD-MIB
+5604	PW-TDM-MIB
 5605	PW-ATM-MIB
+5643	OSPFV3-MIB
+5650	VDSL2-LINE-TC-MIB:VDSL2-LINE-MIB
+5676	SYSLOG-MSG-MIB
+5728	DVB-RCS-MIB
+5813	FORCES-MIB
+5833	CAPWAP-BASE-MIB
+5834	CAPWAP-DOT11-MIB
+5907	NTPv4-MIB
+6065	SNMP-VACM-AAA-MIB
+6173	IFCP-MGMT-MIB
+6240	PW-CEP-STD-MIB
+6340	FLOAT-TC-MIB
+6353	SNMP-TLS-TM-MIB
+6445	MPLS-FRR-GENERAL-STD-MIB:MPLS-FRR-ONE2ONE-STD-MIB:MPLS-FRR-FACILITY-STD-MIB
+6475	PMIPV6-TC-MIB:PMIPV6-MIB
+6527	VRRPV3-MIB
+6615	IPFIX-MIB:IPFIX-SELECTOR-MIB
+6727	PSAMP-MIB
+6765	GBOND-MIB:IANA-GBOND-TC-MIB
+6766	G9983-MIB
+6767	G9982-MIB
+6768	G9981-MIB
+6779	NHDP-MIB
+6825	TED-MIB
+6850	RBRIDGE-MIB
+6933	ENTITY-MIB:UUID-TC-MIB
+6945	RPKI-ROUTER-MIB
+7052	LISP-MIB
+7147	ISCSI-MIB
+7184	OLSRv2-MIB
+7257	VPLS-GENERIC-MIB:VPLS-LDP-MIB:VPLS-BGP-MIB
+7330	BFD-TC-STD-MIB
+7331	BFD-STD-MIB
diff --git a/net-snmp-config.in b/net-snmp-config.in
index 652832d..d55872c 100644
--- a/net-snmp-config.in
+++ b/net-snmp-config.in
@@ -57,7 +57,7 @@
 NSC_LIBDIR=-L${libdir}
 
 NSC_SNMPLIBS="-lnetsnmp ${NSC_LNETSNMPLIBS}"
-NSC_SUBAGENTLIBS="-lnetsnmpagent -lnetsnmphelpers ${NSC_LAGENTLIBS} ${NSC_SNMPLIBS}"
+NSC_SUBAGENTLIBS="-lnetsnmpagent ${NSC_LAGENTLIBS} ${NSC_SNMPLIBS}"
 NSC_AGENTLIBS="-lnetsnmpmibs ${NSC_LMIBLIBS} ${NSC_SUBAGENTLIBS}"
 
 NSC_PREFIX=$prefix
@@ -66,11 +66,11 @@
 NSC_INCDIR=${NSC_PREFIX}/include
 
 NSC_BASE_SNMP_LIBS="-lnetsnmp"
-NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers ${NSC_BASE_SNMP_LIBS}"
+NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent ${NSC_BASE_SNMP_LIBS}"
 NSC_BASE_AGENT_LIBS="-lnetsnmpmibs ${NSC_BASE_SUBAGENT_LIBS}"
 
-NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
-NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
+NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs"
+NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a snmplib/.libs/libnetsnmp.a"
 
 if test "x$NSC_SRCDIR" = "x." ; then
    NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
@@ -124,6 +124,9 @@
     --env-separator)
       echo "@ENV_SEPARATOR@"
       ;;
+    --exeext)
+      echo "@EXEEXT@"
+      ;;
     --snmpconfpath|--SNMPCONFPATH)
       echo "@SNMPCONFPATH@@ENV_SEPARATOR@@SNMPSHAREPATH@@ENV_SEPARATOR@@SNMPLIBPATH@@ENV_SEPARATOR@$HOME/.snmp@ENV_SEPARATOR@@PERSISTENT_DIRECTORY@"
       ;;
@@ -179,6 +182,9 @@
       fi
       echo $result
       ;;
+    --build-command)
+      echo "@CC@ @CFLAGS@ @DEVFLAGS@"
+      ;;
     #################################################### client lib
     --libs)
       # use this one == --netsnmp-libs + --external-libs
@@ -188,7 +194,7 @@
       echo $NSC_LIBDIR $NSC_BASE_SNMP_LIBS
       ;;
     --external-libs)
-      echo $NSC_LDFLAGS $NSC_LNETSNMPLIBS $NSC_LIBS
+      echo $NSC_LDFLAGS $NSC_LNETSNMPLIBS $NSC_LIBS @PERLLDOPTS_FOR_APPS@
       ;;
     #################################################### agent lib
     --base-agent-libs)
@@ -667,6 +673,7 @@
   echo "    --build-includes      include path to build/source includes"
   echo "    --build-lib-dirs      link path to libraries"
   echo "    --build-lib-deps      path to libraries for dependency target"
+  echo "    --build-command       command to compile \$3... to \$2"
   echo ""
   echo "  Automated subagent building (produces an OUTPUTNAME binary file):"
   echo "  [this feature has not been tested very well yet.  use at your risk.]"
diff --git a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
index e435009..5288f3b 100644
--- a/net-snmp-create-v3-user.in
+++ b/net-snmp-create-v3-user.in
@@ -19,10 +19,10 @@
 NSC_EXEC_PREFIX=$exec_prefix
 NSC_SRCDIR=@srcdir@
 NSC_INCDIR=${NSC_PREFIX}/include
-NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
-NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp"
-NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
-NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
+NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmp"
+NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmpmibs -lnetsnmp"
+NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs"
+NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a snmplib/.libs/libnetsnmp.a"
 
 if test "x$NSC_SRCDIR" = "x." ; then
    NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
diff --git a/perl/ASN/ASN.pm b/perl/ASN/ASN.pm
index 07858ae..6f0603f 100644
--- a/perl/ASN/ASN.pm
+++ b/perl/ASN/ASN.pm
@@ -66,7 +66,7 @@
 	ASN_UNSIGNED
 	ASN_UNSIGNED64
 );
-$VERSION = '5.0502';
+$VERSION = '5.0602';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/AnyData_SNMP/Storage.pm b/perl/AnyData_SNMP/Storage.pm
index df3c4af..44b85ae 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.0502';
+$AnyData::Storage::VERSION = '5.0602';
 use strict;
 use warnings;
 
diff --git a/perl/OID/OID.pm b/perl/OID/OID.pm
index b943872..dc3a427 100644
--- a/perl/OID/OID.pm
+++ b/perl/OID/OID.pm
@@ -92,7 +92,7 @@
 	snmp_oid_compare
         compare
 );
-$VERSION = '5.0502';
+$VERSION = '5.0602';
 
 sub new {
     my $type = shift;
diff --git a/perl/OID/OID.xs b/perl/OID/OID.xs
index e9c838f..10485f9 100644
--- a/perl/OID/OID.xs
+++ b/perl/OID/OID.xs
@@ -146,7 +146,7 @@
    int i;
    buf[0] = '\0';
    for (i=0; i < len; i++) {
-	sprintf(buf, ".%lu", *objid++);
+	sprintf(buf,".%" NETSNMP_PRIo "u",*objid++);
 	buf += strlen(buf);
    }
    return SNMPERR_SUCCESS;
diff --git a/perl/SNMP/SNMP.pm b/perl/SNMP/SNMP.pm
index a79cb91..ca62339 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.0502';   # current release version number
+$VERSION = '5.0602';   # current release version number
 
 use strict;
 use warnings;
@@ -504,6 +504,11 @@
        $this->{DestHost} = $this->{DestHost} . ":" . $this->{RemotePort};
    }
 
+   if ($this->{DestHost} =~ /^(dtls|tls|ssh)/) {
+       # only works with version 3
+       $this->{Version} = 3;
+   }
+
    if ($this->{Version} eq '1' or $this->{Version} eq '2'
        or $this->{Version} eq '2c') {
        $this->{SessPtr} = SNMP::_new_session($this->{Version},
@@ -531,51 +536,84 @@
        $this->{Context} ||= 
 	   NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
 		         NetSNMP::default_store::NETSNMP_DS_LIB_CONTEXT()) || '';
-       $this->{AuthProto} ||= 'DEFAULT'; # use the library's default
-       $this->{AuthPass} ||=
-       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
-		     NetSNMP::default_store::NETSNMP_DS_LIB_AUTHPASSPHRASE()) ||
-       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
-		     NetSNMP::default_store::NETSNMP_DS_LIB_PASSPHRASE()) || '';
 
-       $this->{AuthMasterKey} ||= '';
-       $this->{PrivMasterKey} ||= '';
-       $this->{AuthLocalizedKey} ||= '';
-       $this->{PrivLocalizedKey} ||= '';
+       if ($this->{DestHost} =~ /^(dtls|tls|ssh)/) {
+	   # this is a tunneled protocol
 
-       $this->{PrivProto} ||= 'DEFAULT';  # use the library's default
-       $this->{PrivPass} ||=
-       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
-		     NetSNMP::default_store::NETSNMP_DS_LIB_PRIVPASSPHRASE()) ||
-       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
-		     NetSNMP::default_store::NETSNMP_DS_LIB_PASSPHRASE()) || '';
-       $this->{EngineBoots} = 0 if not defined $this->{EngineBoots};
-       $this->{EngineTime} = 0 if not defined $this->{EngineTime};
+	   $this->{'OurIdentity'} ||= '';
+	   $this->{'TheirIdentity'} ||= '';
+	   $this->{'TheirHostname'} ||= '';
+	   $this->{'TrustCert'} ||= '';
 
-       $this->{SessPtr} = SNMP::_new_v3_session($this->{Version},
-						$this->{DestHost},
-						$this->{Retries},
-						$this->{Timeout},
-						$this->{SecName},
-						$this->{SecLevel},
-						$this->{SecEngineId},
-						$this->{ContextEngineId},
-						$this->{Context},
-						$this->{AuthProto},
-						$this->{AuthPass},
-						$this->{PrivProto},
-						$this->{PrivPass},
-						$this->{EngineBoots},
-						$this->{EngineTime},
-						$this->{AuthMasterKey},
-						length($this->{AuthMasterKey}),
-						$this->{PrivMasterKey},
-						length($this->{PrivMasterKey}),
-						$this->{AuthLocalizedKey},
-						length($this->{AuthLocalizedKey}),
-						$this->{PrivLocalizedKey},
-						length($this->{PrivLocalizedKey}),
-					       );
+	   $this->{'SecLevel'} = $SNMP::V3_SEC_LEVEL_MAP{'authPriv'};
+
+	   $this->{SessPtr} =
+	     SNMP::_new_tunneled_session($this->{Version},
+					 $this->{DestHost},
+					 $this->{Retries},
+					 $this->{Timeout},
+					 $this->{SecName},
+					 $this->{SecLevel},
+					 $this->{ContextEngineId},
+					 $this->{Context},
+					 $this->{'OurIdentity'},
+					 $this->{'TheirIdentity'},
+					 $this->{'TheirHostname'},
+					 $this->{'TrustCert'},
+					);
+
+
+       } else {
+	   # USM or some other internal security protocol
+
+	   # USM specific parameters:
+	   $this->{AuthProto} ||= 'DEFAULT'; # use the library's default
+	   $this->{AuthPass} ||=
+	     NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
+							   NetSNMP::default_store::NETSNMP_DS_LIB_AUTHPASSPHRASE()) ||
+							       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
+													     NetSNMP::default_store::NETSNMP_DS_LIB_PASSPHRASE()) || '';
+
+	   $this->{AuthMasterKey} ||= '';
+	   $this->{PrivMasterKey} ||= '';
+	   $this->{AuthLocalizedKey} ||= '';
+	   $this->{PrivLocalizedKey} ||= '';
+
+	   $this->{PrivProto} ||= 'DEFAULT'; # use the library's default
+	   $this->{PrivPass} ||=
+	     NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
+							   NetSNMP::default_store::NETSNMP_DS_LIB_PRIVPASSPHRASE()) ||
+							       NetSNMP::default_store::netsnmp_ds_get_string(NetSNMP::default_store::NETSNMP_DS_LIBRARY_ID(), 
+													     NetSNMP::default_store::NETSNMP_DS_LIB_PASSPHRASE()) || '';
+	   $this->{EngineBoots} = 0 if not defined $this->{EngineBoots};
+	   $this->{EngineTime} = 0 if not defined $this->{EngineTime};
+
+	   $this->{SessPtr} =
+	     SNMP::_new_v3_session($this->{Version},
+				   $this->{DestHost},
+				   $this->{Retries},
+				   $this->{Timeout},
+				   $this->{SecName},
+				   $this->{SecLevel},
+				   $this->{SecEngineId},
+				   $this->{ContextEngineId},
+				   $this->{Context},
+				   $this->{AuthProto},
+				   $this->{AuthPass},
+				   $this->{PrivProto},
+				   $this->{PrivPass},
+				   $this->{EngineBoots},
+				   $this->{EngineTime},
+				   $this->{AuthMasterKey},
+				   length($this->{AuthMasterKey}),
+				   $this->{PrivMasterKey},
+				   length($this->{PrivMasterKey}),
+				   $this->{AuthLocalizedKey},
+				   length($this->{AuthLocalizedKey}),
+				   $this->{PrivLocalizedKey},
+				   length($this->{PrivLocalizedKey}),
+				  );
+       }
    }
    unless ($this->{SessPtr}) {
        warn("unable to create session") if $SNMP::verbose;
@@ -1522,77 +1560,148 @@
 
 The following arguments may be passed to new as a hash.
 
+=head2 Basic Options
+
 =over 4
 
 =item DestHost
 
-default 'localhost', hostname or ip addr of SNMP agent
+Hostname or IP address of the SNMP agent you want to talk to.
+Specified in Net-SNMP formatted agent addresses.  These addresses
+typically look like one of the following:
 
-=item Community
+  localhost
+  tcp:localhost
+  tls:localhost
+  tls:localhost:9876
+  udp6:[::1]:9876
+  unix:/some/path/to/file/socket
 
-default 'public', SNMP community string (used for both R/W)
+Defaults to 'localhost'.
 
 =item Version
 
-default taken from library configuration - probably 3 [1, 2 (same as 2c), 2c, 3]
+SNMP version to use.
 
-=item RemotePort
-
-default '161', allow remote UDP port to be overriden
+The default is taken from library configuration - probably 3 [1, 2
+(same as 2c), 2c, 3].
 
 =item Timeout
 
-default '1000000', micro-seconds before retry
+The number of micro-seconds to wait before resending a request.
+
+The default is '1000000'
 
 =item Retries
 
-default '5', retries before failure
+The number of times to retry a request.
+
+The default is '5'
 
 =item RetryNoSuch
 
-default '0', if enabled NOSUCH errors in 'get' pdus will
+If enabled NOSUCH errors in 'get' pdus will
 be repaired, removing the varbind in error, and resent -
 undef will be returned for all NOSUCH varbinds, when set
 to '0' this feature is disabled and the entire get request
 will fail on any NOSUCH error (applies to v1 only)
 
+The default is '0'.
+
+=back
+
+=head2 SNMPv3/TLS Options
+
+=over
+
+=item OurIdentity
+
+Our X.509 identity to use, which should either be a fingerprint or the
+filename that holds the certificate.
+
+=item TheirIdentity
+
+The remote server's identity to connect to, specified as eihter a
+fingerprint or a file name.  Either this must be specified, or the
+hostname below along with a trust anchor.
+
+=item TheirHostname
+
+The remote server's hostname that is expected.  If their certificate
+was signed by a CA then their hostname presented in the certificate
+must match this value or the connection fails to be established (to
+avoid man-in-the-middle attacks).
+
+=item TrustCert
+
+A trusted certificate to use a trust anchor (like a CA certificate)
+for verifying a remote server's certificate.  If a CA certificate is
+used to validate a certificate then the TheirHostname parameter must
+also be specified to ensure their presente hostname in the certificate
+matches.
+
+=back
+
+=head2 SNMPv3/USM Options
+
+=over
+
 =item SecName
 
-default 'initial', security name (v3)
+The SNMPv3 security name to use (most for SNMPv3 with USM).
+
+The default is 'initial'.
 
 =item SecLevel
 
-default 'noAuthNoPriv', security level [noAuthNoPriv,
-authNoPriv, authPriv] (v3)
+The SNMPv3 security level to use [noAuthNoPriv, authNoPriv, authPriv] (v3)
+
+The default is 'noAuthNoPriv'.
 
 =item SecEngineId
 
-default <none>, security engineID, will be probed if not
+The SNMPv3 security engineID to use (if the snmpv3 security model
+needs it; for example USM).
+
+The default is <none>, security engineID and it will be probed if not
 supplied (v3)
 
 =item ContextEngineId
 
-default <SecEngineId>, context engineID, will be
-probed if not supplied (v3)
+The SNMPv3 context engineID to use.
+
+The default is the <none> and will be set either to the SecEngineId
+value if set or discovered or will be discovered in other ways if
+using TLS (RFC5343 based discovery).
 
 =item Context
 
-default '', context name (v3)
+The SNMPv3 context name to use.
+
+The default is '' (an empty string)
 
 =item AuthProto
 
-default 'MD5', authentication protocol [MD5, SHA] (v3)
+The SNMPv3/USM authentication protocol to use [MD5, SHA].
+
+The default is 'MD5'.
 
 =item AuthPass
 
+The SNMPv3/USM authentication passphrase to use.
+
 default <none>, authentication passphrase
 
 =item PrivProto
 
-default 'DES', privacy protocol [DES, AES] (v3)
+The SNMPv3/USM privacy protocol to use [DES, AES].
+
+The default is 'DES'.
 
 =item PrivPass
 
+The SNMPv3/USM privacy passphrase to use.
+
 default <none>, privacy passphrase (v3)
 
 =item AuthMasterKey
@@ -1606,6 +1715,20 @@
 Directly specified SNMPv3 USM user keys (used if you want to specify
 the keys instead of deriving them from a password as above).
 
+=back
+
+=head2 SNMPv1 and SNMPv2c Options
+
+=item Community
+
+For SNMPv1 and SNMPv2c, the clear-text community name to use.
+
+The default is 'public'.
+
+=head2 Other Configuration Options
+
+=over
+
 =item VarFormats
 
 default 'undef', used by 'fget[next]', holds an hash
@@ -1699,6 +1822,11 @@
 
 internal field used to cache a created session structure
 
+=item RemotePort
+
+Obsolete.  Please use the DestHost specifier to indicate the hostname
+and port combination instead of this paramet.
+
 =back
 
 =head2 SNMP::Session methods
diff --git a/perl/SNMP/SNMP.xs b/perl/SNMP/SNMP.xs
index 361ca58..ce0fb5c 100644
--- a/perl/SNMP/SNMP.xs
+++ b/perl/SNMP/SNMP.xs
@@ -242,6 +242,8 @@
             return;
         have_inited = 1;
 
+        SOCK_STARTUP;
+
         snmp_set_quick_print(1);
         init_snmp(appname);
     
@@ -249,8 +251,6 @@
         netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY, 1);
 	netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
                                               NETSNMP_OID_OUTPUT_SUFFIX);
-        SOCK_STARTUP;
-    
     }
 
 static void
@@ -563,7 +563,7 @@
    int i;
    buf[0] = '\0';
    for (i=0; i < len; i++) {
-	sprintf(buf, ".%lu", *objid++);
+	sprintf(buf,".%" NETSNMP_PRIo "u",*objid++);
 	buf += strlen(buf);
    }
    return SUCCESS;
@@ -596,7 +596,7 @@
    cp = buf;
    while (*buf) {
       if (*buf++ == '.') {
-         sscanf(cp, "%lu", objid++);
+         sscanf(cp, "%" NETSNMP_PRIo "u", objid++);
          /* *objid++ = atoi(cp); */
          (*len)++;
          cp = buf;
@@ -606,7 +606,7 @@
          }
       }
    }
-   sscanf(cp, "%lu", objid++);
+   sscanf(cp, "%" NETSNMP_PRIo "u", objid++);
    /* *objid++ = atoi(cp); */
    (*len)++;
    return SUCCESS;
@@ -946,7 +946,7 @@
        return FAILURE;
    cp = strtok_r(soid_buf,".",&st);
    while (cp) {
-     sscanf(cp, "%lu", &(doid_arr[(*doid_arr_len)++]));
+     sscanf(cp, "%" NETSNMP_PRIo "u", &(doid_arr[(*doid_arr_len)++]));
      /* doid_arr[(*doid_arr_len)++] =  atoi(cp); */
      cp = strtok_r(NULL,".",&st);
    }
@@ -2784,6 +2784,96 @@
         OUTPUT:
         RETVAL
 
+SnmpSession *
+snmp_new_tunneled_session(version, peer, retries, timeout, sec_name, sec_level, context_eng_id, context, our_identity, their_identity, their_hostname, trust_cert)
+        int	version
+        char *	peer
+        int	retries
+        int	timeout
+        char *  sec_name
+        int     sec_level
+        char *  context_eng_id
+        char *  context
+        char *  our_identity
+        char *  their_identity
+        char *  their_hostname
+        char *  trust_cert
+	CODE:
+	{
+	   SnmpSession session = {0};
+	   SnmpSession *ss = NULL;
+           int verbose = SvIV(perl_get_sv("SNMP::verbose", 0x01 | 0x04));
+
+           __libraries_init("perl");
+
+           session.version = version;
+
+	   session.peername = peer;
+           session.retries = retries; /* 5 */
+           session.timeout = timeout; /* 1000000L */
+           session.contextNameLen = strlen(context);
+           session.contextName = context;
+           session.securityNameLen = strlen(sec_name);
+           session.securityName = sec_name;
+           session.securityLevel = sec_level;
+           session.securityModel = NETSNMP_TSM_SECURITY_MODEL;
+           session.contextEngineIDLen =
+              hex_to_binary2((u_char*)context_eng_id, strlen(context_eng_id),
+                             (char **) &session.contextEngineID);
+
+           /* create the transport configuration store */
+           if (!session.transport_configuration) {
+               netsnmp_container_init_list();
+               session.transport_configuration =
+                   netsnmp_container_find("transport_configuration:fifo");
+               if (!session.transport_configuration) {
+                   fprintf(stderr, "failed to initialize the transport configuration container\n");
+                   RETVAL = NULL;
+                   return;
+               }
+
+               session.transport_configuration->compare =
+                   (netsnmp_container_compare*)
+                   netsnmp_transport_config_compare;
+           }
+
+           if (our_identity && our_identity[0] != '\0')
+               CONTAINER_INSERT(session.transport_configuration,
+                                netsnmp_transport_create_config("our_identity",
+                                                                our_identity));
+
+           if (their_identity && their_identity[0] != '\0')
+               CONTAINER_INSERT(session.transport_configuration,
+                                netsnmp_transport_create_config("their_identity",
+                                                                their_identity));
+
+           if (their_hostname && their_hostname[0] != '\0')
+               CONTAINER_INSERT(session.transport_configuration,
+                                netsnmp_transport_create_config("their_hostname",
+                                                                their_hostname));
+
+           if (trust_cert && trust_cert[0] != '\0')
+               CONTAINER_INSERT(session.transport_configuration,
+                                netsnmp_transport_create_config("trust_cert",
+                                                                trust_cert));
+           
+
+           ss = snmp_open(&session);
+
+           if (ss == NULL) {
+	      if (verbose) warn("error:snmp_new_v3_session:Couldn't open SNMP session");
+           }
+
+           RETVAL = ss;
+	   netsnmp_free(session.securityPrivLocalKey);
+	   netsnmp_free(session.securityPrivProto);
+	   netsnmp_free(session.securityAuthLocalKey);
+	   netsnmp_free(session.securityAuthProto);
+	   netsnmp_free(session.contextEngineID);
+	   netsnmp_free(session.securityEngineID);
+	}
+        OUTPUT:
+        RETVAL
 
 SnmpSession *
 snmp_update_session(sess_ref, version, community, peer, lport, retries, timeout)
diff --git a/perl/TrapReceiver/Makefile.PL b/perl/TrapReceiver/Makefile.PL
index 4bcf2a4..874ee21 100644
--- a/perl/TrapReceiver/Makefile.PL
+++ b/perl/TrapReceiver/Makefile.PL
@@ -64,7 +64,6 @@
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
       $agent_link_lib = 'netsnmpagent';
-      $helpers_link_lib = 'netsnmphelpers';
       $mibs_link_lib = 'netsnmpmibs';
       $trapd_link_lib = 'netsnmptrapd';
 
@@ -76,7 +75,7 @@
       }
     
       if (lc($opts->{'insource'}) eq "true") {
-	$Params{'LIBS'} = "-L$basedir\\win32\\$lib_dir\\ -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib " .
+	$Params{'LIBS'} = "-L$basedir\\win32\\$lib_dir\\ -l$snmp_link_lib -l$agent_link_lib " .
                 "-l$mibs_link_lib -l$trapd_link_lib ";
       }
       else {
@@ -100,7 +99,7 @@
 	    $LibDirs[0] =~ s/\\$//;
 	  }
 	}
-	$Params{LIBS} = "-L$LibDir -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib -l$mibs_link_lib -l$trapd_link_lib ";
+	$Params{LIBS} = "-L$LibDir -l$snmp_link_lib -l$agent_link_lib -l$mibs_link_lib -l$trapd_link_lib ";
       }
 
       $Params{'INC'} = "-I$basedir\\include\\ -I$basedir\\include\\net-snmp\\ -I$basedir\\win32\\ ";
@@ -119,7 +118,7 @@
 	}
 
 	if (lc($opts->{'insource'}) eq "true") {
-            $Params{'LIBS'} = "-L../../apps/.libs -L../../apps -L../../agent/.libs -L../../agent -L../../agent/helpers/.libs -L../../agent/helpers -L../../snmplib/.libs -L../../snmplib " . $Params{'LIBS'};
+            $Params{'LIBS'} = "-L../../apps/.libs -L../../apps -L../../agent/.libs -L../../agent -L../../snmplib/.libs -L../../snmplib " . $Params{'LIBS'};
 	    $Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
 	} else {
             $Params{'LIBS'} = `$opts->{'nsconfig'} --libdir` . " $Params{'LIBS'}";
diff --git a/perl/TrapReceiver/TrapReceiver.pm b/perl/TrapReceiver/TrapReceiver.pm
index f012da5..bd90e3c 100644
--- a/perl/TrapReceiver/TrapReceiver.pm
+++ b/perl/TrapReceiver/TrapReceiver.pm
@@ -47,7 +47,7 @@
 	NETSNMPTRAPD_PRE_HANDLER
 );
 
-$VERSION = '5.0502';
+$VERSION = '5.0602';
 
 # sub new {
 #     my $type = shift;
diff --git a/perl/agent/Makefile.PL b/perl/agent/Makefile.PL
index b2e3bd8..4f7bee3 100644
--- a/perl/agent/Makefile.PL
+++ b/perl/agent/Makefile.PL
@@ -37,7 +37,6 @@
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
       $agent_link_lib = 'netsnmpagent';
-      $helpers_link_lib = 'netsnmphelpers';
       $mibs_link_lib = 'netsnmpmibs';
 
       if (lc($opts->{'debug'}) eq "true") {
@@ -48,7 +47,7 @@
       }
     
       if (lc($opts->{'insource'}) eq "true") {
-	$Params{'LIBS'} = "-L$basedir\\win32\\$lib_dir\\ -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib " .
+	$Params{'LIBS'} = "-L$basedir\\win32\\$lib_dir\\ -l$snmp_link_lib -l$agent_link_lib " .
                 "-l$mibs_link_lib";
       }
       else {
@@ -72,7 +71,7 @@
 	    $LibDirs[0] =~ s/\\$//;
 	  }
 	}
-	$Params{LIBS} = "-L$LibDir -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib -l$mibs_link_lib";
+	$Params{LIBS} = "-L$LibDir -l$snmp_link_lib -l$agent_link_lib -l$mibs_link_lib";
       }
 
       $Params{'INC'} = "-I$basedir\\include\\ -I$basedir\\include\\net-snmp\\ -I$basedir\\win32\\ ";
@@ -87,7 +86,7 @@
 	$Params{'CCFLAGS'} .= " " . $Config{'ccflags'};
         $lib_version = `$opts->{'nsconfig'} --version`;
 	if (lc($opts->{'insource'}) eq "true") {
-	    $Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ -L../../agent/.libs -L../../agent/ -L../../agent/helpers/.libs -L../../agent/helpers/ " . $Params{'LIBS'};
+	    $Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ -L../../agent/.libs -L../../agent/ " . $Params{'LIBS'};
 	    $Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
 #	} else {
 	    $Params{'LIBS'} = `$opts->{'nsconfig'} --libdir` . $Params{'LIBS'};
diff --git a/perl/agent/Support/Support.pm b/perl/agent/Support/Support.pm
index 88beeed..06541cd 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.0502';
+$VERSION = '5.0602';
 
 use strict;
 use warnings;
diff --git a/perl/agent/agent.pm b/perl/agent/agent.pm
index 530772e..1e2dad5 100644
--- a/perl/agent/agent.pm
+++ b/perl/agent/agent.pm
@@ -87,7 +87,7 @@
 	SNMP_ERR_AUTHORIZATIONERROR
 	SNMP_ERR_NOTWRITABLE
 );
-$VERSION = '5.0502';
+$VERSION = '5.0602';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/agent/agent.xs b/perl/agent/agent.xs
index ab77c75..99e8ecb 100644
--- a/perl/agent/agent.xs
+++ b/perl/agent/agent.xs
@@ -19,11 +19,11 @@
 
 typedef netsnmp_handler_registration *NetSNMP__agent__netsnmp_handler_registration;
 
-/* Copied from snmpUDPDomain.c */
-typedef struct netsnmp_udp_addr_pair_s {
-	struct sockaddr_in remote_addr;
-	struct in_addr local_addr;
-} netsnmp_udp_addr_pair;
+/*
+ * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
+ * and snmplib/snmpTCPDomain.c
+ */
+typedef netsnmp_indexed_addr_pair netsnmp_udp_addr_pair;
 
 typedef struct handler_cb_data_s {
    SV *perl_cb;
@@ -868,7 +868,7 @@
         SV *me;
     PREINIT:
         netsnmp_agent_request_info *reqinfo;
-	struct netsnmp_udp_addr_pair_s *addr_pair;
+	netsnmp_udp_addr_pair *addr_pair;
 	struct sockaddr_in *from;
         SV *rarg;
 
@@ -876,7 +876,7 @@
         reqinfo = (netsnmp_agent_request_info *) SvIV(SvRV(me));
 
         /* XXX: transport-specific: UDP/IPv4 only! */
-	addr_pair = (struct netsnmp_udp_addr_pair_s *) (reqinfo->asp->pdu->transport_data);
+	addr_pair = (netsnmp_udp_addr_pair *) (reqinfo->asp->pdu->transport_data);
 	from = (struct sockaddr_in *) &(addr_pair->remote_addr);
         rarg = newSVpv((const char *)(&from->sin_addr.s_addr), sizeof(from->sin_addr.s_addr));
         RETVAL = rarg;
@@ -889,7 +889,7 @@
         SV *me;
     PREINIT:
         netsnmp_agent_request_info *reqinfo;
-	struct netsnmp_udp_addr_pair_s *addr_pair;
+	netsnmp_udp_addr_pair *addr_pair;
 	struct in_addr *to;
         SV *rarg;
 
@@ -897,7 +897,7 @@
         reqinfo = (netsnmp_agent_request_info *) SvIV(SvRV(me));
 
         /* XXX: transport-specific: UDP/IPv4 only! */
-	addr_pair = (struct netsnmp_udp_addr_pair_s *) (reqinfo->asp->pdu->transport_data);
+	addr_pair = (netsnmp_udp_addr_pair *) (reqinfo->asp->pdu->transport_data);
 	to = (struct in_addr *) &(addr_pair->local_addr);
         rarg = newSVpv((const char *)(&to->s_addr), sizeof(to->s_addr));
         RETVAL = rarg;
diff --git a/perl/agent/default_store/default_store.pm b/perl/agent/default_store/default_store.pm
index 9b568ec..39b8a14 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.0502';
+$VERSION = '5.0602';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/default_store/default_store.pm b/perl/default_store/default_store.pm
index 1af7f0c..ccae606 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.0502';
+$VERSION = '5.0602';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/python/LICENSE b/python/LICENSE
index ebebf4a..4c7638f 100644
--- a/python/LICENSE
+++ b/python/LICENSE
@@ -1,3 +1,39 @@
+Various copyrights apply to this package, listed in various separate
+parts below.  Please make sure that you read all the parts.
+
+---- Part 1: Sparta, Inc (BSD) -----
+
+Copyright (c) 2003-2010, Sparta, Inc
+All rights reserved.
+ 
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ 
+*  Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+ 
+*  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.
+ 
+*  Neither the name of Sparta, Inc 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDERS 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.
+
+---- Part 2: ScienceLogic, LLC (BSD) ----
+
 Copyright (c) 2006, ScienceLogic, LLC
 All rights reserved.
  
diff --git a/python/README b/python/README
index ef5b477..f998f8b 100644
--- a/python/README
+++ b/python/README
@@ -89,7 +89,6 @@
    netsnmp.Session(<tag>=<value>, ... )
 
     DestHost    - default 'localhost', hostname or ip addr of SNMP agent
-    Community   - default 'public', SNMP community string (used for both R/W)
     Version     - default '3', [1, 2 (equiv to 2c), 3]
     RemotePort  - default '161', allow remote UDP port to be overridden
     Timeout     - default '500000', micro-seconds before retry
@@ -99,18 +98,6 @@
                   undef will be returned for all NOSUCH varbinds, when set
                   to '0' this feature is disabled and the entire get request
                   will fail on any NOSUCH error (applies to v1 only)
-    SecName     - default 'initial', security name (v3)
-    SecLevel    - default 'noAuthNoPriv', security level [noAuthNoPriv,
-                  authNoPriv, authPriv] (v3)
-    SecEngineId - default <none>, security engineID, will be probed if not
-                  supplied (v3)
-    ContextEngineId - default <SecEngineId>, context engineID, will be
-                      probed if not supplied (v3)
-    Context     - default '', context name (v3)
-    AuthProto   - default 'MD5', authentication protocol [MD5, SHA] (v3)
-    AuthPass    - default <none>, authentication passphrase
-    PrivProto   - default 'DES', privacy protocol [DES] (v3)
-    PrivPass    - default <none>, privacy passphrase (v3)
     UseLongNames - set to non-zero to have <tags> for 'getnext' methods 
                   generated preferring longer Mib name convention (e.g., 
 		  system.sysDescr vs just sysDescr)
@@ -136,8 +123,40 @@
     ErrorNum    - read-only, holds the snmp_err or status of last request
     ErrorInd    - read-only, holds the snmp_err_index when appropriate
 
+   SNMPv1/SNMPv2c options:
+    Community   - default 'public', SNMP community string (used for both R/W)
+
+   SNMPv3 Options:
+    SecName     - default 'initial', security name (v3)
+    SecLevel    - default 'noAuthNoPriv', security level [noAuthNoPriv,
+                  authNoPriv, authPriv] (v3)
+    ContextEngineId - default <SecEngineId>, context engineID, will be
+                      probed if not supplied (v3)
+    Context     - default '', context name (v3)
+
+   SNMPv3 over TLS or DTLS options:
+    OurIdentity   - The fingerprint or file name for the local X.509
+                    certificate to use for our identity.  Run
+                    net-snmp-cert to create and manage certificates.
+    TheirIdentity - The fingerprint or file name for the local X.509
+                    certificate to use for their identity.  
+    TrustCert     - A trusted certificate to use for validating
+                    certificates.  Typically this would be a CA
+                    certificate.
+    TheirHostname - Their hostname to expect.  Either "TheirIdentity"
+    		    or a trusted certificate plus a hostname is needed
+    		    to validate the server is the proper server.
+    
+   SNMPv3 with USM security Options:
+    SecEngineId - default <none>, security engineID, will be probed if not
+                  supplied (v3)
+    AuthProto   - default 'MD5', authentication protocol [MD5, SHA] (v3)
+    AuthPass    - default <none>, authentication passphrase
+    PrivProto   - default 'DES', privacy protocol [DES] (v3)
+    PrivPass    - default <none>, privacy passphrase (v3)
+
    private:
-    sess_ptr   - internal field used to cache a created session structure
+    sess_ptr    - internal field used to cache a created session structure
 
    methods:
 
diff --git a/python/netsnmp/client.py b/python/netsnmp/client.py
index aa0472d..6fc4b2e 100644
--- a/python/netsnmp/client.py
+++ b/python/netsnmp/client.py
@@ -30,6 +30,10 @@
         'Engineboots':0,
         'Enginetime':0,
         'UseNumeric':0,
+        'OurIdentity':'',
+        'TheirIdentity':'',
+        'TheirHostname':'',
+        'TrustCert':''
         }
     keys = kargs.keys()
     for key in keys:
@@ -126,7 +130,28 @@
         for k,v in sess_args.items():
             self.__dict__[k] = v
 
-        if sess_args['Version'] == 3:
+            
+        # check for transports that may be tunneled
+        transportCheck = re.compile('^(tls|dtls|ssh)');
+        match = transportCheck.match(sess_args['DestHost'])
+
+        if match:
+            self.sess_ptr = client_intf.session_tunneled(
+                sess_args['Version'],
+                sess_args['DestHost'],
+                sess_args['LocalPort'],
+                sess_args['Retries'],
+                sess_args['Timeout'],
+                sess_args['SecName'],
+                secLevelMap[sess_args['SecLevel']],
+                sess_args['ContextEngineId'],
+                sess_args['Context'],
+                sess_args['OurIdentity'],
+                sess_args['TheirIdentity'],
+                sess_args['TheirHostname'],
+                sess_args['TrustCert'],
+                );
+        elif sess_args['Version'] == 3:
             self.sess_ptr = client_intf.session_v3(
                 sess_args['Version'],
                 sess_args['DestHost'],
diff --git a/python/netsnmp/client_intf.c b/python/netsnmp/client_intf.c
index 7fc74dc..9f726f5 100644
--- a/python/netsnmp/client_intf.c
+++ b/python/netsnmp/client_intf.c
@@ -881,6 +881,7 @@
    if (ss == NULL) {
        *err_num = 0;
        *err_ind = SNMPERR_BAD_SESSION;
+       status = SNMPERR_BAD_SESSION;
        strlcpy(err_str, snmp_api_errstring(*err_ind), STR_BUF_SIZE);
        goto done;
    }
@@ -1296,6 +1297,99 @@
 }
 
 static PyObject *
+netsnmp_create_session_tunneled(PyObject *self, PyObject *args)
+{
+  int version;
+  char *peer;
+  int  lport;
+  int  retries;
+  int  timeout;
+  char *  sec_name;
+  int     sec_level;
+  char *  context_eng_id;
+  char *  context;
+  char *  our_identity;
+  char *  their_identity;
+  char *  their_hostname;
+  char *  trust_cert;
+  SnmpSession session = {0};
+  SnmpSession *ss = NULL;
+  int verbose = py_netsnmp_verbose();
+
+  if (!PyArg_ParseTuple(args, "isiiisissssss", &version,
+			&peer, &lport, &retries, &timeout,
+			&sec_name, &sec_level,
+			&context_eng_id, &context, 
+			&our_identity, &their_identity, 
+			&their_hostname, &trust_cert))
+    return NULL;
+
+  __libraries_init("python");
+  snmp_sess_init(&session);
+
+  if (version != 3) {
+    session.version = SNMP_VERSION_3;
+    if (verbose)
+        printf("Using version 3 as it's the only version that supports tunneling\n");
+  }
+
+  session.peername = peer;
+  session.retries = retries; /* 5 */
+  session.timeout = timeout; /* 1000000L */
+  session.contextNameLen = STRLEN(context);
+  session.contextName = context;
+  session.securityNameLen = STRLEN(sec_name);
+  session.securityName = sec_name;
+  session.securityLevel = sec_level;
+  session.securityModel = NETSNMP_TSM_SECURITY_MODEL;
+
+  /* create the transport configuration store */
+  if (!session.transport_configuration) {
+      netsnmp_container_init_list();
+      session.transport_configuration =
+          netsnmp_container_find("transport_configuration:fifo");
+      if (!session.transport_configuration) {
+          fprintf(stderr, "failed to initialize the transport configuration container\n");
+          return NULL;
+      }
+
+      session.transport_configuration->compare =
+          (netsnmp_container_compare*)
+          netsnmp_transport_config_compare;
+  }
+
+  if (our_identity && our_identity[0] != '\0')
+      CONTAINER_INSERT(session.transport_configuration,
+                       netsnmp_transport_create_config("our_identity",
+                                                       our_identity));
+
+  if (their_identity && their_identity[0] != '\0')
+      CONTAINER_INSERT(session.transport_configuration,
+                       netsnmp_transport_create_config("their_identity",
+                                                       their_identity));
+
+  if (their_hostname && their_hostname[0] != '\0')
+      CONTAINER_INSERT(session.transport_configuration,
+                       netsnmp_transport_create_config("their_hostname",
+                                                       their_hostname));
+
+  if (trust_cert && trust_cert[0] != '\0')
+      CONTAINER_INSERT(session.transport_configuration,
+                       netsnmp_transport_create_config("trust_cert",
+                                                       trust_cert));
+  
+  ss = snmp_sess_open(&session);
+
+  if (!ss)
+      return NULL;
+  /*
+   * Note: on a 64-bit system the statement below discards the upper 32 bits of
+   * "ss", which is most likely a bug.
+   */
+  return Py_BuildValue("i", (int)(uintptr_t)ss);
+}
+
+static PyObject *
 netsnmp_delete_session(PyObject *self, PyObject *args)
 {
   PyObject *session;
@@ -1760,11 +1854,14 @@
   int varlist_ind;
   netsnmp_session *ss;
   netsnmp_pdu *pdu, *response;
-  netsnmp_variable_list *vars;
+  netsnmp_pdu *newpdu;
+  netsnmp_variable_list *vars, *oldvars;
   struct tree *tp;
   int len;
-  oid *oid_arr;
-  int oid_arr_len;
+  oid **oid_arr = NULL;
+  int *oid_arr_len = NULL;
+  oid **oid_arr_broken_check = NULL;
+  int *oid_arr_broken_check_len = NULL;
   int type;
   char type_str[MAX_TYPE_NAME_LEN];
   int status;
@@ -1788,9 +1885,7 @@
   char *tmpstr;
   Py_ssize_t tmplen;
 	   
-  oid_arr = calloc(MAX_OID_LEN, sizeof(oid));
-
-  if (oid_arr && args) {
+  if (args) {
 
     if (!PyArg_ParseTuple(args, "OO", &session, &varlist)) {
       goto done;
@@ -1823,27 +1918,52 @@
     best_guess = py_netsnmp_attr_long(session, "BestGuess");
     retry_nosuch = py_netsnmp_attr_long(session, "RetryNoSuch");
         
-    varlist_iter = PyObject_GetIter(varlist);
-
     pdu = snmp_pdu_create(SNMP_MSG_GETNEXT);
     
-    /* get the initial starting oids*/
+    /* we need an initial count for memory allocation */
+    varlist_iter = PyObject_GetIter(varlist);
+    varlist_len = 0;
     while (varlist_iter && (varbind = PyIter_Next(varlist_iter))) {
+        varlist_len++;
+    }
+    Py_DECREF(varlist_iter);
+
+    oid_arr_len              = calloc(varlist_len, sizeof(int));
+    oid_arr_broken_check_len = calloc(varlist_len, sizeof(int));
+
+    oid_arr                  = calloc(varlist_len, sizeof(oid *));
+    oid_arr_broken_check     = calloc(varlist_len, sizeof(oid *));
+
+    for(varlist_ind = 0; varlist_ind < varlist_len; varlist_ind++) {
+
+        oid_arr[varlist_ind] = calloc(MAX_OID_LEN, sizeof(oid));
+        oid_arr_broken_check[varlist_ind] = calloc(MAX_OID_LEN, sizeof(oid));
+
+        oid_arr_len[varlist_ind]              = MAX_OID_LEN;
+        oid_arr_broken_check_len[varlist_ind] = MAX_OID_LEN;
+    }
+
+    /* get the initial starting oids*/
+    varlist_iter = PyObject_GetIter(varlist);
+    varlist_ind = 0;
+    while (varlist_iter && (varbind = PyIter_Next(varlist_iter))) {
+
       if (py_netsnmp_attr_string(varbind, "tag", &tag, NULL) < 0 ||
          py_netsnmp_attr_string(varbind, "iid", &iid, NULL) < 0)
       {
-        oid_arr_len = 0;
+        oid_arr_len[varlist_ind] = 0;
       } else {
-        tp = __tag2oid(tag, iid, oid_arr, &oid_arr_len, NULL, best_guess);
+        tp = __tag2oid(tag, iid,
+                       oid_arr[varlist_ind], &oid_arr_len[varlist_ind],
+                       NULL, best_guess);
       }
 
       if (_debug_level) 
 	printf("netsnmp_walk: filling request: %s:%s:%d:%d\n", 
-	       tag, iid, oid_arr_len,best_guess);
+	       tag, iid, oid_arr_len[varlist_ind],best_guess);
 
-      if (oid_arr_len) {
-        snmp_add_null_var(pdu, oid_arr, oid_arr_len);
-        varlist_len++;
+      if (oid_arr_len[varlist_ind]) {
+        snmp_add_null_var(pdu, oid_arr[varlist_ind], oid_arr_len[varlist_ind]);
       } else {
         if (verbose)
           printf("error: walk: unknown object ID (%s)",
@@ -1854,6 +1974,7 @@
       }
       /* release reference when done */
       Py_DECREF(varbind);
+      varlist_ind++;
     }
 
     if (varlist_iter)
@@ -1918,6 +2039,19 @@
       goto done;
     }
 
+    /* save the starting OID */
+
+    for(vars = pdu->variables, varlist_ind = 0;
+        vars != NULL;
+        vars = vars->next_variable, varlist_ind++) {
+
+        oid_arr_broken_check[varlist_ind] = calloc(MAX_OID_LEN, sizeof(oid));
+
+        oid_arr_broken_check_len[varlist_ind] = vars->name_length;
+        memcpy(oid_arr_broken_check[varlist_ind],
+               vars->name, vars->name_length * sizeof(oid));
+    }
+
     while(notdone) {
 
       status = __send_sync_pdu(ss, pdu, &response, retry_nosuch, 
@@ -1925,81 +2059,112 @@
       __py_netsnmp_update_session_errors(session, err_str, err_num, err_ind);
 
       if (!response || !response->variables ||
-          (response->variables->name_length < oid_arr_len) ||
-          (memcmp(oid_arr, response->variables->name,
-                  oid_arr_len * sizeof(oid))) ||
           status != STAT_SUCCESS ||
           response->errstat != SNMP_ERR_NOERROR) {
           notdone = 0;
       } else {
-        for(vars = (response ? response->variables : NULL), varlist_ind = 0;
-    	vars && (varlist_ind < varlist_len);
-    	vars = vars->next_variable, varlist_ind++) {
+          newpdu = snmp_pdu_create(SNMP_MSG_GETNEXT);
 
-          if ((vars->type == SNMP_ENDOFMIBVIEW) ||
-              (vars->type == SNMP_NOSUCHOBJECT) ||
-              (vars->type == SNMP_NOSUCHINSTANCE)) {
-              notdone = 0;
-              break;
-          }
+          for(vars = (response ? response->variables : NULL),
+                  varlist_ind = 0,
+                  oldvars = (pdu ? pdu->variables : NULL);
+              vars && (varlist_ind < varlist_len);
+              vars = vars->next_variable, varlist_ind++,
+                  oldvars = (oldvars ? oldvars->next_variable : NULL)) {
 
-          varbind = py_netsnmp_construct_varbind();
+              if ((vars->name_length < oid_arr_len[varlist_ind]) ||
+                  (memcmp(oid_arr[varlist_ind], vars->name,
+                          oid_arr_len[varlist_ind] * sizeof(oid)) != 0)) {
+                  notdone = 0;
+                  break;
+              }
 
-          if (PyObject_HasAttrString(varbind, "tag")) {
-    	  str_buf[0] = '.';
-    	  str_buf[1] = '\0';
-    	  out_len = 0;
-    	  tp = netsnmp_sprint_realloc_objid_tree(&str_bufp, &str_buf_len,
-                                                   &out_len, 0, &buf_over,
-                                                   vars->name,vars->name_length);
-    	  str_buf[sizeof(str_buf)-1] = '\0';
+              if ((vars->type == SNMP_ENDOFMIBVIEW) ||
+                  (vars->type == SNMP_NOSUCHOBJECT) ||
+                  (vars->type == SNMP_NOSUCHINSTANCE)) {
+                  notdone = 0;
+                  break;
+              }
 
-    	  if (__is_leaf(tp)) {
-	    type = (tp->type ? tp->type : tp->parent->type);
-    	    getlabel_flag &= ~NON_LEAF_NAME;
-    	  } else {
-    	    getlabel_flag |= NON_LEAF_NAME;
-    	    type = __translate_asn_type(vars->type);
-    	  }
+              if (snmp_oid_compare(vars->name, vars->name_length,
+                                   oid_arr_broken_check[varlist_ind],
+                                   oid_arr_broken_check_len[varlist_ind]) <= 0) {
+                  /* The agent responded with an illegal response
+                     as the returning OID was lexogragically less
+                     then or equal to the requested OID...
+                     We need to give up here because an infite
+                     loop will result otherwise.
 
-          __get_label_iid((char *) str_buf, &tag, &iid, getlabel_flag);
+                     XXX: this really should be an option to
+                     continue like the -Cc option to the snmpwalk
+                     application.
+                  */
+                  notdone = 0;
+                  break;
+              }
 
-    	  if (_debug_level) printf("netsnmp_walk: filling response: %s:%s\n", tag, iid);
+              varbind = py_netsnmp_construct_varbind();
 
-	  py_netsnmp_attr_set_string(varbind, "tag", tag, STRLEN(tag));
-	  py_netsnmp_attr_set_string(varbind, "iid", iid, STRLEN(iid));
+              if (PyObject_HasAttrString(varbind, "tag")) {
+                  str_buf[0] = '.';
+                  str_buf[1] = '\0';
+                  out_len = 0;
+                  tp = netsnmp_sprint_realloc_objid_tree(&str_bufp, &str_buf_len,
+                                                         &out_len, 0, &buf_over,
+                                                         vars->name,vars->name_length);
+                  str_buf[sizeof(str_buf)-1] = '\0';
 
-    	  __get_type_str(type, type_str);
+                  if (__is_leaf(tp)) {
+                      type = (tp->type ? tp->type : tp->parent->type);
+                      getlabel_flag &= ~NON_LEAF_NAME;
+                  } else {
+                      getlabel_flag |= NON_LEAF_NAME;
+                      type = __translate_asn_type(vars->type);
+                  }
 
-	  py_netsnmp_attr_set_string(varbind, "type", type_str, 
-				     strlen(type_str));
+                  __get_label_iid((char *) str_buf, &tag, &iid, getlabel_flag);
 
-    	  len = __snprint_value((char *) str_buf,sizeof(str_buf),
-				vars,tp,type,sprintval_flag);
-    	  str_buf[len] = '\0';
+                  if (_debug_level) printf("netsnmp_walk: filling response: %s:%s\n", tag, iid);
 
-	  py_netsnmp_attr_set_string(varbind, "val", (char *) str_buf, len);
+                  py_netsnmp_attr_set_string(varbind, "tag", tag, STRLEN(tag));
+                  py_netsnmp_attr_set_string(varbind, "iid", iid, STRLEN(iid));
+
+                  __get_type_str(type, type_str);
+
+                  py_netsnmp_attr_set_string(varbind, "type", type_str,
+                                             strlen(type_str));
+
+                  len = __snprint_value((char *) str_buf,sizeof(str_buf),
+                                        vars,tp,type,sprintval_flag);
+                  str_buf[len] = '\0';
+
+                  py_netsnmp_attr_set_string(varbind, "val", (char *) str_buf,
+                                             len);
             
-	  /* push the varbind onto the return varbinds */
-	  PyList_Append(varbinds, varbind);
+                  /* push the varbind onto the return varbinds */
+                  PyList_Append(varbinds, varbind);
 
-    	  /* save in return tuple as well */
-	  /* save in return tuple as well - steals ref */
-	  _PyTuple_Resize(&val_tuple, result_count+1);
-	  PyTuple_SetItem(val_tuple, result_count++,
-			Py_BuildValue("s#", str_buf, len));
-          } else {
-	    /* Return None for this variable. */
-            _PyTuple_Resize(&val_tuple, result_count+1);
-	    PyTuple_SetItem(val_tuple, result_count++, Py_BuildValue(""));
-	    printf("netsnmp_walk: bad varbind (%d)\n", varlist_ind);
-          }	
-          Py_XDECREF(varbind);
-        }
-        /* reuse the response as the next pdu to send */
-        pdu = snmp_pdu_create(SNMP_MSG_GETNEXT);
-        snmp_add_null_var(pdu, response->variables->name,
-                          response->variables->name_length);
+                  /* save in return tuple as well */
+                  /* save in return tuple as well - steals ref */
+                  _PyTuple_Resize(&val_tuple, result_count+1);
+                  PyTuple_SetItem(val_tuple, result_count++, 
+                                  Py_BuildValue("s#", str_buf, len));
+              } else {
+                  /* Return None for this variable. */
+                  _PyTuple_Resize(&val_tuple, result_count+1);
+                  PyTuple_SetItem(val_tuple, result_count++, Py_BuildValue(""));
+                  printf("netsnmp_walk: bad varbind (%d)\n", varlist_ind);
+              }
+              Py_XDECREF(varbind);
+
+              memcpy(oid_arr_broken_check[varlist_ind], vars->name,
+                     sizeof(oid) * vars->name_length);
+              oid_arr_broken_check_len[varlist_ind] = vars->name_length;
+
+              snmp_add_null_var(newpdu, vars->name,
+                                vars->name_length);
+          }
+          pdu = newpdu;
       }
       if (response)
 	snmp_free_pdu(response);
@@ -2021,7 +2186,14 @@
 
  done:
   Py_XDECREF(varbinds);
+  SAFE_FREE(oid_arr_len);
+  SAFE_FREE(oid_arr_broken_check_len);
+  for(varlist_ind = 0; varlist_ind < varlist_len; varlist_ind ++) {
+      SAFE_FREE(oid_arr[varlist_ind]);
+      SAFE_FREE(oid_arr_broken_check[varlist_ind]);
+  }
   SAFE_FREE(oid_arr);
+  SAFE_FREE(oid_arr_broken_check);
   return (val_tuple ? val_tuple : Py_BuildValue(""));
 }
 
@@ -2418,6 +2590,8 @@
    "create a netsnmp session."},
   {"session_v3",  netsnmp_create_session_v3, METH_VARARGS,
    "create a netsnmp session."},
+  {"session_tunneled",  netsnmp_create_session_tunneled, METH_VARARGS,
+   "create a tunneled netsnmp session over tls, dtls or ssh."},
   {"delete_session",  netsnmp_delete_session, METH_VARARGS,
    "create a netsnmp session."},
   {"get",  netsnmp_get, METH_VARARGS,
diff --git a/python/netsnmp/tests/snmpd.conf b/python/netsnmp/tests/snmpd.conf
index 16a0bf2..b62e4c7 100644
--- a/python/netsnmp/tests/snmpd.conf
+++ b/python/netsnmp/tests/snmpd.conf
@@ -418,3 +418,8 @@
 #  See the snmpd.conf manual page, and the output of "snmpd -H".
 #  MUCH more can be done with the snmpd.conf than is shown as an
 #  example here.
+
+certSecName 10 D020A78EAF99FCE276AA9F43063A69698E4F75D1 --rfc822
+rwuser -s tsm hardaker@wjh.hardakers.net
+
+trustCert D020A78EAF99FCE276AA9F43063A69698E4F75D1
diff --git a/python/netsnmp/tests/test.py b/python/netsnmp/tests/test.py
index a3230b2..e3982f4 100644
--- a/python/netsnmp/tests/test.py
+++ b/python/netsnmp/tests/test.py
@@ -19,7 +19,7 @@
 
         var = netsnmp.Varbind('.1.3.6.1.2.1.1.1','0')
 
-        print "----------------------------------------\n"
+        print "---v1 GET tests -------------------------------------\n"
         res = netsnmp.snmpget(var,
                               Version = 1,
                               DestHost='localhost',
@@ -29,7 +29,7 @@
 
         print "v1 get var: ",  var.tag, var.iid, "=", var.val, '(',var.type,')'
         
-        print "----------------------------------------\n"
+        print "---v1 GETNEXT tests-------------------------------------\n"
         res = netsnmp.snmpgetnext(var,
                                   Version = 1,
                                   DestHost='localhost',
@@ -39,7 +39,7 @@
                 
         print "v1 getnext var: ",  var.tag, var.iid, "=", var.val, '(',var.type,')'
         
-        print "----------------------------------------\n"
+        print "---v1 SET tests-------------------------------------\n"
         var = netsnmp.Varbind('sysLocation','0', 'my new location')
         res = netsnmp.snmpset(var,
                         Version = 1,
@@ -50,7 +50,7 @@
 
         print "v1 set var: ",  var.tag, var.iid, "=", var.val, '(',var.type,')'
         
-        print "----------------------------------------\n"
+        print "---v1 walk tests-------------------------------------\n"
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
 
         print "v1 varlist walk in: "
@@ -67,7 +67,7 @@
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
        
         
-        print "----------------------------------------\n"
+        print "---v1 walk 2-------------------------------------\n"
 
         print "v1 varbind walk in: "
         var = netsnmp.Varbind('system')
@@ -79,7 +79,7 @@
 
         print var.tag, var.iid, "=", var.val, '(',var.type,')'
         
-        print "----------------------------------------\n"
+        print "---v1 multi-varbind test-------------------------------------\n"
         sess = netsnmp.Session(Version=1,
                                DestHost='localhost',
                                Community='public')
@@ -111,14 +111,14 @@
         for var in vars:
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
 
-        print "----------------------------------------\n"
+        print "---v1 set2-------------------------------------\n"
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation', '0', 'my newer location'))
         res = sess.set(vars)
         print "v1 sess.set result: ", res, "\n"
 
-        print "----------------------------------------\n"
+        print "---v1 walk3-------------------------------------\n"
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
@@ -127,7 +127,7 @@
         for var in vars:
             print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
             
-        print "----------------------------------------\n"
+        print "---v2c get-------------------------------------\n"
 
         sess = netsnmp.Session(Version=2,
                                DestHost='localhost',
@@ -142,7 +142,7 @@
         vals = sess.get(vars)
         print "v2 sess.get result: ", vals, "\n"
 
-        print "----------------------------------------\n"
+        print "---v2c getnext-------------------------------------\n"
 
         for var in vars:
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
@@ -155,7 +155,7 @@
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
         print "\n"
        
-        print "----------------------------------------\n"
+        print "---v2c getbulk-------------------------------------\n"
 
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'),
                                netsnmp.Varbind('sysORLastChange'),
@@ -170,7 +170,7 @@
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
         print "\n"
 
-        print "----------------------------------------\n"
+        print "---v2c set-------------------------------------\n"
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation','0','my even newer location'))
@@ -178,7 +178,7 @@
         res = sess.set(vars)
         print "v2 sess.set result: ", res, "\n"
 
-        print "----------------------------------------\n"
+        print "---v2c walk-------------------------------------\n"
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
@@ -187,7 +187,7 @@
         for var in vars:
             print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
             
-        print "----------------------------------------\n"
+        print "---v3 setup-------------------------------------\n"
         sess = netsnmp.Session(Version=3,
                                DestHost='localhost',
                                SecLevel='authPriv',
@@ -200,7 +200,7 @@
         vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime', 0),
                                netsnmp.Varbind('sysContact', 0),
                                netsnmp.Varbind('sysLocation', 0))
-        print "----------------------------------------\n"
+        print "---v3 get-------------------------------------\n"
         vals = sess.get(vars)
         print "v3 sess.get result: ", vals, "\n"
         
@@ -208,7 +208,7 @@
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
         print "\n"
 
-        print "----------------------------------------\n"
+        print "---v3 getnext-------------------------------------\n"
        
         vals = sess.getnext(vars)
         print "v3 sess.getnext result: ", vals, "\n"
@@ -230,14 +230,14 @@
             print var.tag, var.iid, "=", var.val, '(',var.type,')'
         print "\n"
 
-        print "----------------------------------------\n"
+        print "---v3 set-------------------------------------\n"
 
         vars = netsnmp.VarList(
             netsnmp.Varbind('sysLocation','0', 'my final destination'))
         res = sess.set(vars)
         print "v3 sess.set result: ", res, "\n"
         
-        print "----------------------------------------\n"
+        print "---v3 walk-------------------------------------\n"
         vars = netsnmp.VarList(netsnmp.Varbind('system'))
                 
         vals = sess.walk(vars)
@@ -245,7 +245,7 @@
         
         for var in vars:
             print "  ",var.tag, var.iid, "=", var.val, '(',var.type,')'
-            
+
 
 class SetTests(unittest.TestCase):
     def testFuncs(self):        
diff --git a/snmplib/Makefile.depend b/snmplib/Makefile.depend
index 6c088f1..20fc653 100644
--- a/snmplib/Makefile.depend
+++ b/snmplib/Makefile.depend
@@ -7,6 +7,7 @@
 ./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/library/oid.h
 ./asn1.lo: ../include/net-snmp/library/types.h
 ./asn1.lo: ../include/net-snmp/definitions.h
 ./asn1.lo: ../include/net-snmp/library/snmp_api.h
@@ -20,8 +21,12 @@
 ./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/snmpUDPIPv6Domain.h
+./asn1.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./asn1.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./asn1.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./asn1.lo: ../include/net-snmp/library/ucd_compat.h
@@ -55,6 +60,7 @@
 ./callback.lo: ../include/net-snmp/system/generic.h
 ./callback.lo: ../include/net-snmp/machine/generic.h
 ./callback.lo: ../include/net-snmp/types.h
+./callback.lo: ../include/net-snmp/library/oid.h
 ./callback.lo: ../include/net-snmp/library/types.h
 ./callback.lo: ../include/net-snmp/definitions.h
 ./callback.lo: ../include/net-snmp/library/snmp_api.h
@@ -62,6 +68,9 @@
 ./callback.lo: ../include/net-snmp/library/snmp_client.h
 ./callback.lo: ../include/net-snmp/pdu_api.h
 ./callback.lo: ../include/net-snmp/library/asn1.h
+./callback.lo: ../include/net-snmp/output_api.h
+./callback.lo: ../include/net-snmp/library/snmp_debug.h
+./callback.lo: ../include/net-snmp/library/snmp_logging.h
 ./callback.lo: ../include/net-snmp/session_api.h
 ./callback.lo: ../include/net-snmp/library/callback.h
 ./callback.lo: ../include/net-snmp/library/snmp_transport.h
@@ -69,8 +78,12 @@
 ./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/snmpUDPIPv6Domain.h
+./callback.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./callback.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./callback.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./callback.lo: ../include/net-snmp/library/ucd_compat.h
@@ -81,9 +94,6 @@
 ./callback.lo: ../include/net-snmp/library/snmp_impl.h
 ./callback.lo: ../include/net-snmp/library/snmp.h
 ./callback.lo: ../include/net-snmp/library/snmp-tc.h
-./callback.lo: ../include/net-snmp/output_api.h
-./callback.lo: ../include/net-snmp/library/snmp_debug.h
-./callback.lo: ../include/net-snmp/library/snmp_logging.h
 ./callback.lo: ../include/net-snmp/utilities.h
 ./callback.lo: ../include/net-snmp/library/system.h
 ./callback.lo: ../include/net-snmp/library/tools.h
@@ -100,6 +110,11 @@
 ./callback.lo: ../include/net-snmp/library/container.h
 ./callback.lo: ../include/net-snmp/library/snmp_assert.h
 ./callback.lo: ../include/net-snmp/version.h
+./cert_util.lo: ../include/net-snmp/net-snmp-config.h
+./cert_util.lo: ../include/net-snmp/system/linux.h
+./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
 ./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
@@ -108,12 +123,16 @@
 ./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
+./check_varbind.lo: ../include/net-snmp/library/oid.h
 ./check_varbind.lo: ../include/net-snmp/library/types.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_api.h
 ./check_varbind.lo: ../include/net-snmp/varbind_api.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_client.h
 ./check_varbind.lo: ../include/net-snmp/pdu_api.h
 ./check_varbind.lo: ../include/net-snmp/library/asn1.h
+./check_varbind.lo: ../include/net-snmp/output_api.h
+./check_varbind.lo: ../include/net-snmp/library/snmp_debug.h
+./check_varbind.lo: ../include/net-snmp/library/snmp_logging.h
 ./check_varbind.lo: ../include/net-snmp/session_api.h
 ./check_varbind.lo: ../include/net-snmp/library/callback.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_transport.h
@@ -121,8 +140,12 @@
 ./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/snmpUDPIPv6Domain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./check_varbind.lo: ../include/net-snmp/library/ucd_compat.h
@@ -144,7 +167,6 @@
 ./check_varbind.lo: ../include/net-snmp/library/check_varbind.h
 ./check_varbind.lo: ../include/net-snmp/library/container.h
 ./check_varbind.lo: ../include/net-snmp/library/factory.h
-./check_varbind.lo: ../include/net-snmp/library/snmp_logging.h
 ./check_varbind.lo: ../include/net-snmp/library/container_binary_array.h
 ./check_varbind.lo: ../include/net-snmp/library/container_list_ssll.h
 ./check_varbind.lo: ../include/net-snmp/library/container_iterator.h
@@ -154,11 +176,10 @@
 ./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
-./check_varbind.lo: ../include/net-snmp/output_api.h
-./check_varbind.lo: ../include/net-snmp/library/snmp_debug.h
 ./check_varbind.lo: ../include/net-snmp/snmpv3_api.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpv3.h
 ./check_varbind.lo: ../include/net-snmp/library/transform_oids.h
@@ -168,25 +189,58 @@
 ./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/snmpusm.h
+./closedir.lo: ../include/net-snmp/net-snmp-config.h
+./closedir.lo: ../include/net-snmp/types.h
+./closedir.lo: ../include/net-snmp/library/oid.h
+./closedir.lo: ../include/net-snmp/library/types.h
+./closedir.lo: ../include/net-snmp/definitions.h
+./closedir.lo: ../include/net-snmp/library/snmp_api.h
+./closedir.lo: ../include/net-snmp/varbind_api.h
+./closedir.lo: ../include/net-snmp/library/snmp_client.h
+./closedir.lo: ../include/net-snmp/pdu_api.h
+./closedir.lo: ../include/net-snmp/library/asn1.h
+./closedir.lo: ../include/net-snmp/output_api.h
+./closedir.lo: ../include/net-snmp/library/snmp_debug.h
+./closedir.lo: ../include/net-snmp/library/snmp_logging.h
+./closedir.lo: ../include/net-snmp/session_api.h
+./closedir.lo: ../include/net-snmp/library/callback.h
+./closedir.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./closedir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./closedir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./closedir.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./closedir.lo: ../include/net-snmp/library/ucd_compat.h
+./closedir.lo: ../include/net-snmp/library/mib.h
+./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/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
-./cmu_compat.lo: ../include/net-snmp/system/linux.h
-./cmu_compat.lo: ../include/net-snmp/system/sysv.h
-./cmu_compat.lo: ../include/net-snmp/system/generic.h
-./cmu_compat.lo: ../include/net-snmp/machine/generic.h
 ./container_binary_array.lo: ../include/net-snmp/net-snmp-config.h
-./container_binary_array.lo: ../include/net-snmp/system/linux.h
-./container_binary_array.lo: ../include/net-snmp/system/sysv.h
-./container_binary_array.lo: ../include/net-snmp/system/generic.h
-./container_binary_array.lo: ../include/net-snmp/machine/generic.h
 ./container_binary_array.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_binary_array.lo: ../include/net-snmp/definitions.h
 ./container_binary_array.lo: ../include/net-snmp/types.h
+./container_binary_array.lo: ../include/net-snmp/library/oid.h
 ./container_binary_array.lo: ../include/net-snmp/library/types.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_api.h
 ./container_binary_array.lo: ../include/net-snmp/varbind_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_client.h
 ./container_binary_array.lo: ../include/net-snmp/pdu_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/asn1.h
+./container_binary_array.lo: ../include/net-snmp/output_api.h
+./container_binary_array.lo: ../include/net-snmp/library/snmp_debug.h
+./container_binary_array.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_binary_array.lo: ../include/net-snmp/session_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/callback.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_transport.h
@@ -194,8 +248,12 @@
 ./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/snmpUDPIPv6Domain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./container_binary_array.lo: ../include/net-snmp/library/ucd_compat.h
@@ -217,7 +275,6 @@
 ./container_binary_array.lo: ../include/net-snmp/library/check_varbind.h
 ./container_binary_array.lo: ../include/net-snmp/library/container.h
 ./container_binary_array.lo: ../include/net-snmp/library/factory.h
-./container_binary_array.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_binary_array.lo: ../include/net-snmp/library/container_binary_array.h
 ./container_binary_array.lo: ../include/net-snmp/library/container_list_ssll.h
 ./container_binary_array.lo: ../include/net-snmp/library/container_iterator.h
@@ -230,8 +287,6 @@
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_enum.h
 ./container_binary_array.lo: ../include/net-snmp/library/vacm.h
-./container_binary_array.lo: ../include/net-snmp/output_api.h
-./container_binary_array.lo: ../include/net-snmp/library/snmp_debug.h
 ./container_binary_array.lo: ../include/net-snmp/snmpv3_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpv3.h
 ./container_binary_array.lo: ../include/net-snmp/library/transform_oids.h
@@ -242,18 +297,18 @@
 ./container_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./container.lo: ../include/net-snmp/system/sysv.h
-./container.lo: ../include/net-snmp/system/generic.h
-./container.lo: ../include/net-snmp/machine/generic.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
 ./container.lo: ../include/net-snmp/library/types.h
 ./container.lo: ../include/net-snmp/library/snmp_api.h
 ./container.lo: ../include/net-snmp/varbind_api.h
 ./container.lo: ../include/net-snmp/library/snmp_client.h
 ./container.lo: ../include/net-snmp/pdu_api.h
 ./container.lo: ../include/net-snmp/library/asn1.h
+./container.lo: ../include/net-snmp/output_api.h
+./container.lo: ../include/net-snmp/library/snmp_debug.h
+./container.lo: ../include/net-snmp/library/snmp_logging.h
 ./container.lo: ../include/net-snmp/session_api.h
 ./container.lo: ../include/net-snmp/library/callback.h
 ./container.lo: ../include/net-snmp/library/snmp_transport.h
@@ -261,8 +316,12 @@
 ./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/snmpUDPIPv6Domain.h
+./container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./container.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./container.lo: ../include/net-snmp/library/ucd_compat.h
@@ -284,7 +343,6 @@
 ./container.lo: ../include/net-snmp/library/check_varbind.h
 ./container.lo: ../include/net-snmp/library/container.h
 ./container.lo: ../include/net-snmp/library/factory.h
-./container.lo: ../include/net-snmp/library/snmp_logging.h
 ./container.lo: ../include/net-snmp/library/container_binary_array.h
 ./container.lo: ../include/net-snmp/library/container_list_ssll.h
 ./container.lo: ../include/net-snmp/library/container_iterator.h
@@ -297,8 +355,6 @@
 ./container.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./container.lo: ../include/net-snmp/library/snmp_enum.h
 ./container.lo: ../include/net-snmp/library/vacm.h
-./container.lo: ../include/net-snmp/output_api.h
-./container.lo: ../include/net-snmp/library/snmp_debug.h
 ./container.lo: ../include/net-snmp/snmpv3_api.h
 ./container.lo: ../include/net-snmp/library/snmpv3.h
 ./container.lo: ../include/net-snmp/library/transform_oids.h
@@ -310,19 +366,19 @@
 ./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/system/linux.h
-./container_iterator.lo: ../include/net-snmp/system/sysv.h
-./container_iterator.lo: ../include/net-snmp/system/generic.h
-./container_iterator.lo: ../include/net-snmp/machine/generic.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
+./container_iterator.lo: ../include/net-snmp/library/oid.h
 ./container_iterator.lo: ../include/net-snmp/library/types.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_api.h
 ./container_iterator.lo: ../include/net-snmp/varbind_api.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_client.h
 ./container_iterator.lo: ../include/net-snmp/pdu_api.h
 ./container_iterator.lo: ../include/net-snmp/library/asn1.h
+./container_iterator.lo: ../include/net-snmp/output_api.h
+./container_iterator.lo: ../include/net-snmp/library/snmp_debug.h
+./container_iterator.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_iterator.lo: ../include/net-snmp/session_api.h
 ./container_iterator.lo: ../include/net-snmp/library/callback.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_transport.h
@@ -330,8 +386,12 @@
 ./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/snmpUDPIPv6Domain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./container_iterator.lo: ../include/net-snmp/library/ucd_compat.h
@@ -353,7 +413,6 @@
 ./container_iterator.lo: ../include/net-snmp/library/check_varbind.h
 ./container_iterator.lo: ../include/net-snmp/library/container.h
 ./container_iterator.lo: ../include/net-snmp/library/factory.h
-./container_iterator.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_iterator.lo: ../include/net-snmp/library/container_binary_array.h
 ./container_iterator.lo: ../include/net-snmp/library/container_list_ssll.h
 ./container_iterator.lo: ../include/net-snmp/library/container_iterator.h
@@ -366,8 +425,6 @@
 ./container_iterator.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_enum.h
 ./container_iterator.lo: ../include/net-snmp/library/vacm.h
-./container_iterator.lo: ../include/net-snmp/output_api.h
-./container_iterator.lo: ../include/net-snmp/library/snmp_debug.h
 ./container_iterator.lo: ../include/net-snmp/snmpv3_api.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpv3.h
 ./container_iterator.lo: ../include/net-snmp/library/transform_oids.h
@@ -378,19 +435,19 @@
 ./container_iterator.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./container_list_ssll.lo: ../include/net-snmp/system/sysv.h
-./container_list_ssll.lo: ../include/net-snmp/system/generic.h
-./container_list_ssll.lo: ../include/net-snmp/machine/generic.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
+./container_list_ssll.lo: ../include/net-snmp/library/oid.h
 ./container_list_ssll.lo: ../include/net-snmp/library/types.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_api.h
 ./container_list_ssll.lo: ../include/net-snmp/varbind_api.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_client.h
 ./container_list_ssll.lo: ../include/net-snmp/pdu_api.h
 ./container_list_ssll.lo: ../include/net-snmp/library/asn1.h
+./container_list_ssll.lo: ../include/net-snmp/output_api.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmp_debug.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_list_ssll.lo: ../include/net-snmp/session_api.h
 ./container_list_ssll.lo: ../include/net-snmp/library/callback.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_transport.h
@@ -398,8 +455,12 @@
 ./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/snmpUDPIPv6Domain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./container_list_ssll.lo: ../include/net-snmp/library/ucd_compat.h
@@ -421,7 +482,6 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/check_varbind.h
 ./container_list_ssll.lo: ../include/net-snmp/library/container.h
 ./container_list_ssll.lo: ../include/net-snmp/library/factory.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_list_ssll.lo: ../include/net-snmp/library/container_binary_array.h
 ./container_list_ssll.lo: ../include/net-snmp/library/container_list_ssll.h
 ./container_list_ssll.lo: ../include/net-snmp/library/container_iterator.h
@@ -434,8 +494,6 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_enum.h
 ./container_list_ssll.lo: ../include/net-snmp/library/vacm.h
-./container_list_ssll.lo: ../include/net-snmp/output_api.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmp_debug.h
 ./container_list_ssll.lo: ../include/net-snmp/snmpv3_api.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpv3.h
 ./container_list_ssll.lo: ../include/net-snmp/library/transform_oids.h
@@ -446,19 +504,19 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./container_null.lo: ../include/net-snmp/system/sysv.h
-./container_null.lo: ../include/net-snmp/system/generic.h
-./container_null.lo: ../include/net-snmp/machine/generic.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
+./container_null.lo: ../include/net-snmp/library/oid.h
 ./container_null.lo: ../include/net-snmp/library/types.h
 ./container_null.lo: ../include/net-snmp/library/snmp_api.h
 ./container_null.lo: ../include/net-snmp/varbind_api.h
 ./container_null.lo: ../include/net-snmp/library/snmp_client.h
 ./container_null.lo: ../include/net-snmp/pdu_api.h
 ./container_null.lo: ../include/net-snmp/library/asn1.h
+./container_null.lo: ../include/net-snmp/output_api.h
+./container_null.lo: ../include/net-snmp/library/snmp_debug.h
+./container_null.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_null.lo: ../include/net-snmp/session_api.h
 ./container_null.lo: ../include/net-snmp/library/callback.h
 ./container_null.lo: ../include/net-snmp/library/snmp_transport.h
@@ -466,8 +524,12 @@
 ./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/snmpUDPIPv6Domain.h
+./container_null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./container_null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./container_null.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./container_null.lo: ../include/net-snmp/library/ucd_compat.h
@@ -489,7 +551,6 @@
 ./container_null.lo: ../include/net-snmp/library/check_varbind.h
 ./container_null.lo: ../include/net-snmp/library/container.h
 ./container_null.lo: ../include/net-snmp/library/factory.h
-./container_null.lo: ../include/net-snmp/library/snmp_logging.h
 ./container_null.lo: ../include/net-snmp/library/container_binary_array.h
 ./container_null.lo: ../include/net-snmp/library/container_list_ssll.h
 ./container_null.lo: ../include/net-snmp/library/container_iterator.h
@@ -502,8 +563,6 @@
 ./container_null.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./container_null.lo: ../include/net-snmp/library/snmp_enum.h
 ./container_null.lo: ../include/net-snmp/library/vacm.h
-./container_null.lo: ../include/net-snmp/output_api.h
-./container_null.lo: ../include/net-snmp/library/snmp_debug.h
 ./container_null.lo: ../include/net-snmp/snmpv3_api.h
 ./container_null.lo: ../include/net-snmp/library/snmpv3.h
 ./container_null.lo: ../include/net-snmp/library/transform_oids.h
@@ -515,18 +574,18 @@
 ./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/system/linux.h
-./data_list.lo: ../include/net-snmp/system/sysv.h
-./data_list.lo: ../include/net-snmp/system/generic.h
-./data_list.lo: ../include/net-snmp/machine/generic.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
 ./data_list.lo: ../include/net-snmp/library/types.h
 ./data_list.lo: ../include/net-snmp/library/snmp_api.h
 ./data_list.lo: ../include/net-snmp/varbind_api.h
 ./data_list.lo: ../include/net-snmp/library/snmp_client.h
 ./data_list.lo: ../include/net-snmp/pdu_api.h
 ./data_list.lo: ../include/net-snmp/library/asn1.h
+./data_list.lo: ../include/net-snmp/output_api.h
+./data_list.lo: ../include/net-snmp/library/snmp_debug.h
+./data_list.lo: ../include/net-snmp/library/snmp_logging.h
 ./data_list.lo: ../include/net-snmp/session_api.h
 ./data_list.lo: ../include/net-snmp/library/callback.h
 ./data_list.lo: ../include/net-snmp/library/snmp_transport.h
@@ -534,8 +593,12 @@
 ./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/snmpUDPIPv6Domain.h
+./data_list.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./data_list.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./data_list.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./data_list.lo: ../include/net-snmp/library/ucd_compat.h
@@ -557,7 +620,6 @@
 ./data_list.lo: ../include/net-snmp/library/check_varbind.h
 ./data_list.lo: ../include/net-snmp/library/container.h
 ./data_list.lo: ../include/net-snmp/library/factory.h
-./data_list.lo: ../include/net-snmp/library/snmp_logging.h
 ./data_list.lo: ../include/net-snmp/library/container_binary_array.h
 ./data_list.lo: ../include/net-snmp/library/container_list_ssll.h
 ./data_list.lo: ../include/net-snmp/library/container_iterator.h
@@ -570,8 +632,6 @@
 ./data_list.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./data_list.lo: ../include/net-snmp/library/snmp_enum.h
 ./data_list.lo: ../include/net-snmp/library/vacm.h
-./data_list.lo: ../include/net-snmp/output_api.h
-./data_list.lo: ../include/net-snmp/library/snmp_debug.h
 ./data_list.lo: ../include/net-snmp/snmpv3_api.h
 ./data_list.lo: ../include/net-snmp/library/snmpv3.h
 ./data_list.lo: ../include/net-snmp/library/transform_oids.h
@@ -582,11 +642,8 @@
 ./data_list.lo: ../include/net-snmp/library/snmpv3-security-includes.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/system/linux.h
-./default_store.lo: ../include/net-snmp/system/sysv.h
-./default_store.lo: ../include/net-snmp/system/generic.h
-./default_store.lo: ../include/net-snmp/machine/generic.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
 ./default_store.lo: ../include/net-snmp/definitions.h
 ./default_store.lo: ../include/net-snmp/library/snmp_api.h
@@ -594,6 +651,9 @@
 ./default_store.lo: ../include/net-snmp/library/snmp_client.h
 ./default_store.lo: ../include/net-snmp/pdu_api.h
 ./default_store.lo: ../include/net-snmp/library/asn1.h
+./default_store.lo: ../include/net-snmp/output_api.h
+./default_store.lo: ../include/net-snmp/library/snmp_debug.h
+./default_store.lo: ../include/net-snmp/library/snmp_logging.h
 ./default_store.lo: ../include/net-snmp/session_api.h
 ./default_store.lo: ../include/net-snmp/library/callback.h
 ./default_store.lo: ../include/net-snmp/library/snmp_transport.h
@@ -601,8 +661,12 @@
 ./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/snmpUDPIPv6Domain.h
+./default_store.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./default_store.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./default_store.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./default_store.lo: ../include/net-snmp/library/ucd_compat.h
@@ -613,9 +677,6 @@
 ./default_store.lo: ../include/net-snmp/library/snmp_impl.h
 ./default_store.lo: ../include/net-snmp/library/snmp.h
 ./default_store.lo: ../include/net-snmp/library/snmp-tc.h
-./default_store.lo: ../include/net-snmp/output_api.h
-./default_store.lo: ../include/net-snmp/library/snmp_debug.h
-./default_store.lo: ../include/net-snmp/library/snmp_logging.h
 ./default_store.lo: ../include/net-snmp/config_api.h
 ./default_store.lo: ../include/net-snmp/library/read_config.h
 ./default_store.lo: ../include/net-snmp/library/default_store.h
@@ -639,18 +700,18 @@
 ./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/system/linux.h
-./dir_utils.lo: ../include/net-snmp/system/sysv.h
-./dir_utils.lo: ../include/net-snmp/system/generic.h
-./dir_utils.lo: ../include/net-snmp/machine/generic.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
 ./dir_utils.lo: ../include/net-snmp/library/types.h
 ./dir_utils.lo: ../include/net-snmp/library/snmp_api.h
 ./dir_utils.lo: ../include/net-snmp/varbind_api.h
 ./dir_utils.lo: ../include/net-snmp/library/snmp_client.h
 ./dir_utils.lo: ../include/net-snmp/pdu_api.h
 ./dir_utils.lo: ../include/net-snmp/library/asn1.h
+./dir_utils.lo: ../include/net-snmp/output_api.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_debug.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./dir_utils.lo: ../include/net-snmp/session_api.h
 ./dir_utils.lo: ../include/net-snmp/library/callback.h
 ./dir_utils.lo: ../include/net-snmp/library/snmp_transport.h
@@ -658,8 +719,12 @@
 ./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/snmpUDPIPv6Domain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./dir_utils.lo: ../include/net-snmp/library/ucd_compat.h
@@ -681,7 +746,6 @@
 ./dir_utils.lo: ../include/net-snmp/library/check_varbind.h
 ./dir_utils.lo: ../include/net-snmp/library/container.h
 ./dir_utils.lo: ../include/net-snmp/library/factory.h
-./dir_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./dir_utils.lo: ../include/net-snmp/library/container_binary_array.h
 ./dir_utils.lo: ../include/net-snmp/library/container_list_ssll.h
 ./dir_utils.lo: ../include/net-snmp/library/container_iterator.h
@@ -694,8 +758,6 @@
 ./dir_utils.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./dir_utils.lo: ../include/net-snmp/library/snmp_enum.h
 ./dir_utils.lo: ../include/net-snmp/library/vacm.h
-./dir_utils.lo: ../include/net-snmp/output_api.h
-./dir_utils.lo: ../include/net-snmp/library/snmp_debug.h
 ./dir_utils.lo: ../include/net-snmp/snmpv3_api.h
 ./dir_utils.lo: ../include/net-snmp/library/snmpv3.h
 ./dir_utils.lo: ../include/net-snmp/library/transform_oids.h
@@ -705,21 +767,22 @@
 ./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/snmpusm.h
+./dir_utils.lo: ../include/net-snmp/library/file_utils.h
 ./dir_utils.lo: ../include/net-snmp/library/dir_utils.h
 ./fd_event_manager.lo: ../include/net-snmp/net-snmp-config.h
-./fd_event_manager.lo: ../include/net-snmp/system/linux.h
-./fd_event_manager.lo: ../include/net-snmp/system/sysv.h
-./fd_event_manager.lo: ../include/net-snmp/system/generic.h
-./fd_event_manager.lo: ../include/net-snmp/machine/generic.h
 ./fd_event_manager.lo: ../include/net-snmp/net-snmp-includes.h
 ./fd_event_manager.lo: ../include/net-snmp/definitions.h
 ./fd_event_manager.lo: ../include/net-snmp/types.h
+./fd_event_manager.lo: ../include/net-snmp/library/oid.h
 ./fd_event_manager.lo: ../include/net-snmp/library/types.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_api.h
 ./fd_event_manager.lo: ../include/net-snmp/varbind_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_client.h
 ./fd_event_manager.lo: ../include/net-snmp/pdu_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/asn1.h
+./fd_event_manager.lo: ../include/net-snmp/output_api.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmp_debug.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmp_logging.h
 ./fd_event_manager.lo: ../include/net-snmp/session_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/callback.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_transport.h
@@ -727,8 +790,12 @@
 ./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/snmpUDPIPv6Domain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./fd_event_manager.lo: ../include/net-snmp/library/ucd_compat.h
@@ -750,7 +817,6 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/check_varbind.h
 ./fd_event_manager.lo: ../include/net-snmp/library/container.h
 ./fd_event_manager.lo: ../include/net-snmp/library/factory.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmp_logging.h
 ./fd_event_manager.lo: ../include/net-snmp/library/container_binary_array.h
 ./fd_event_manager.lo: ../include/net-snmp/library/container_list_ssll.h
 ./fd_event_manager.lo: ../include/net-snmp/library/container_iterator.h
@@ -763,8 +829,6 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_enum.h
 ./fd_event_manager.lo: ../include/net-snmp/library/vacm.h
-./fd_event_manager.lo: ../include/net-snmp/output_api.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmp_debug.h
 ./fd_event_manager.lo: ../include/net-snmp/snmpv3_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpv3.h
 ./fd_event_manager.lo: ../include/net-snmp/library/transform_oids.h
@@ -776,17 +840,20 @@
 ./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
-./fd_event_manager.lo: ../include/net-snmp/net-snmp-config.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-config.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
+./file_utils.lo: ../include/net-snmp/library/oid.h
 ./file_utils.lo: ../include/net-snmp/library/types.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_api.h
 ./file_utils.lo: ../include/net-snmp/varbind_api.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_client.h
 ./file_utils.lo: ../include/net-snmp/pdu_api.h
 ./file_utils.lo: ../include/net-snmp/library/asn1.h
+./file_utils.lo: ../include/net-snmp/output_api.h
+./file_utils.lo: ../include/net-snmp/library/snmp_debug.h
+./file_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./file_utils.lo: ../include/net-snmp/session_api.h
 ./file_utils.lo: ../include/net-snmp/library/callback.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_transport.h
@@ -794,8 +861,12 @@
 ./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/snmpUDPIPv6Domain.h
+./file_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./file_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./file_utils.lo: ../include/net-snmp/library/ucd_compat.h
@@ -817,7 +888,6 @@
 ./file_utils.lo: ../include/net-snmp/library/check_varbind.h
 ./file_utils.lo: ../include/net-snmp/library/container.h
 ./file_utils.lo: ../include/net-snmp/library/factory.h
-./file_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./file_utils.lo: ../include/net-snmp/library/container_binary_array.h
 ./file_utils.lo: ../include/net-snmp/library/container_list_ssll.h
 ./file_utils.lo: ../include/net-snmp/library/container_iterator.h
@@ -830,8 +900,6 @@
 ./file_utils.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_enum.h
 ./file_utils.lo: ../include/net-snmp/library/vacm.h
-./file_utils.lo: ../include/net-snmp/output_api.h
-./file_utils.lo: ../include/net-snmp/library/snmp_debug.h
 ./file_utils.lo: ../include/net-snmp/snmpv3_api.h
 ./file_utils.lo: ../include/net-snmp/library/snmpv3.h
 ./file_utils.lo: ../include/net-snmp/library/transform_oids.h
@@ -842,8 +910,48 @@
 ./file_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.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
+./getopt.lo: ../include/net-snmp/library/getopt.h
+./gettimeofday.lo: ../include/net-snmp/net-snmp-config.h
+./gettimeofday.lo: ../include/net-snmp/types.h
+./gettimeofday.lo: ../include/net-snmp/library/oid.h
+./gettimeofday.lo: ../include/net-snmp/library/types.h
+./gettimeofday.lo: ../include/net-snmp/definitions.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_api.h
+./gettimeofday.lo: ../include/net-snmp/varbind_api.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_client.h
+./gettimeofday.lo: ../include/net-snmp/pdu_api.h
+./gettimeofday.lo: ../include/net-snmp/library/asn1.h
+./gettimeofday.lo: ../include/net-snmp/output_api.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_debug.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_logging.h
+./gettimeofday.lo: ../include/net-snmp/session_api.h
+./gettimeofday.lo: ../include/net-snmp/library/callback.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/ucd_compat.h
+./gettimeofday.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp-tc.h
+./gettimeofday.lo: ../include/net-snmp/library/system.h
 ./inet_ntop.lo: ../include/net-snmp/net-snmp-config.h
 ./inet_ntop.lo: ../include/net-snmp/types.h
+./inet_ntop.lo: ../include/net-snmp/library/oid.h
 ./inet_ntop.lo: ../include/net-snmp/library/types.h
 ./inet_ntop.lo: ../include/net-snmp/definitions.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_api.h
@@ -851,6 +959,9 @@
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_client.h
 ./inet_ntop.lo: ../include/net-snmp/pdu_api.h
 ./inet_ntop.lo: ../include/net-snmp/library/asn1.h
+./inet_ntop.lo: ../include/net-snmp/output_api.h
+./inet_ntop.lo: ../include/net-snmp/library/snmp_debug.h
+./inet_ntop.lo: ../include/net-snmp/library/snmp_logging.h
 ./inet_ntop.lo: ../include/net-snmp/session_api.h
 ./inet_ntop.lo: ../include/net-snmp/library/callback.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_transport.h
@@ -858,8 +969,12 @@
 ./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/snmpUDPIPv6Domain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./inet_ntop.lo: ../include/net-snmp/library/ucd_compat.h
@@ -869,9 +984,10 @@
 ./inet_ntop.lo: ../include/net-snmp/library/oid_stash.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.lo: ../include/net-snmp/library/snmp-tc.h inet_ntop.h
 ./inet_pton.lo: ../include/net-snmp/net-snmp-config.h
 ./inet_pton.lo: ../include/net-snmp/types.h
+./inet_pton.lo: ../include/net-snmp/library/oid.h
 ./inet_pton.lo: ../include/net-snmp/library/types.h
 ./inet_pton.lo: ../include/net-snmp/definitions.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp_api.h
@@ -879,6 +995,9 @@
 ./inet_pton.lo: ../include/net-snmp/library/snmp_client.h
 ./inet_pton.lo: ../include/net-snmp/pdu_api.h
 ./inet_pton.lo: ../include/net-snmp/library/asn1.h
+./inet_pton.lo: ../include/net-snmp/output_api.h
+./inet_pton.lo: ../include/net-snmp/library/snmp_debug.h
+./inet_pton.lo: ../include/net-snmp/library/snmp_logging.h
 ./inet_pton.lo: ../include/net-snmp/session_api.h
 ./inet_pton.lo: ../include/net-snmp/library/callback.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp_transport.h
@@ -886,8 +1005,12 @@
 ./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/snmpUDPIPv6Domain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./inet_pton.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./inet_pton.lo: ../include/net-snmp/library/ucd_compat.h
@@ -897,15 +1020,19 @@
 ./inet_pton.lo: ../include/net-snmp/library/oid_stash.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.lo: ../include/net-snmp/library/snmp-tc.h inet_pton.h
 ./int64.lo: ../include/net-snmp/net-snmp-config.h
 ./int64.lo: ../include/net-snmp/types.h
+./int64.lo: ../include/net-snmp/library/oid.h
 ./int64.lo: ../include/net-snmp/library/types.h
 ./int64.lo: ../include/net-snmp/definitions.h
 ./int64.lo: ../include/net-snmp/library/snmp_api.h
 ./int64.lo: ../include/net-snmp/varbind_api.h
 ./int64.lo: ../include/net-snmp/library/snmp_client.h
 ./int64.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./int64.lo: ../include/net-snmp/output_api.h
+./int64.lo: ../include/net-snmp/library/snmp_debug.h
+./int64.lo: ../include/net-snmp/library/snmp_logging.h
 ./int64.lo: ../include/net-snmp/session_api.h
 ./int64.lo: ../include/net-snmp/library/callback.h
 ./int64.lo: ../include/net-snmp/library/snmp_transport.h
@@ -913,8 +1040,12 @@
 ./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/snmpUDPIPv6Domain.h
+./int64.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./int64.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./int64.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./int64.lo: ../include/net-snmp/library/ucd_compat.h
@@ -926,10 +1057,9 @@
 ./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
-./int64.lo: ../include/net-snmp/library/snmp_logging.h
-./int64.lo: ../include/net-snmp/library/snmp_debug.h
 ./keytools.lo: ../include/net-snmp/net-snmp-config.h
 ./keytools.lo: ../include/net-snmp/types.h
+./keytools.lo: ../include/net-snmp/library/oid.h
 ./keytools.lo: ../include/net-snmp/library/types.h
 ./keytools.lo: ../include/net-snmp/definitions.h
 ./keytools.lo: ../include/net-snmp/library/snmp_api.h
@@ -937,6 +1067,9 @@
 ./keytools.lo: ../include/net-snmp/library/snmp_client.h
 ./keytools.lo: ../include/net-snmp/pdu_api.h
 ./keytools.lo: ../include/net-snmp/library/asn1.h
+./keytools.lo: ../include/net-snmp/output_api.h
+./keytools.lo: ../include/net-snmp/library/snmp_debug.h
+./keytools.lo: ../include/net-snmp/library/snmp_logging.h
 ./keytools.lo: ../include/net-snmp/session_api.h
 ./keytools.lo: ../include/net-snmp/library/callback.h
 ./keytools.lo: ../include/net-snmp/library/snmp_transport.h
@@ -944,8 +1077,12 @@
 ./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/snmpUDPIPv6Domain.h
+./keytools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./keytools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./keytools.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./keytools.lo: ../include/net-snmp/library/ucd_compat.h
@@ -956,9 +1093,6 @@
 ./keytools.lo: ../include/net-snmp/library/snmp_impl.h
 ./keytools.lo: ../include/net-snmp/library/snmp.h
 ./keytools.lo: ../include/net-snmp/library/snmp-tc.h
-./keytools.lo: ../include/net-snmp/output_api.h
-./keytools.lo: ../include/net-snmp/library/snmp_debug.h
-./keytools.lo: ../include/net-snmp/library/snmp_logging.h
 ./keytools.lo: ../include/net-snmp/utilities.h
 ./keytools.lo: ../include/net-snmp/library/system.h
 ./keytools.lo: ../include/net-snmp/library/tools.h
@@ -979,17 +1113,19 @@
 ./keytools.lo: ../include/net-snmp/library/keytools.h
 ./keytools.lo: ../include/net-snmp/library/transform_oids.h
 ./large_fd_set.lo: ../include/net-snmp/net-snmp-config.h
-./large_fd_set.lo: ../include/net-snmp/library/snmp_assert.h
-./large_fd_set.lo: ../include/net-snmp/library/snmp_logging.h
-./large_fd_set.lo: ../include/net-snmp/library/large_fd_set.h
-./large_fd_set.lo: ../include/net-snmp/types.h
-./large_fd_set.lo: ../include/net-snmp/library/types.h
+./large_fd_set.lo: ../include/net-snmp/net-snmp-includes.h
 ./large_fd_set.lo: ../include/net-snmp/definitions.h
+./large_fd_set.lo: ../include/net-snmp/types.h
+./large_fd_set.lo: ../include/net-snmp/library/oid.h
+./large_fd_set.lo: ../include/net-snmp/library/types.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_api.h
 ./large_fd_set.lo: ../include/net-snmp/varbind_api.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_client.h
 ./large_fd_set.lo: ../include/net-snmp/pdu_api.h
 ./large_fd_set.lo: ../include/net-snmp/library/asn1.h
+./large_fd_set.lo: ../include/net-snmp/output_api.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_debug.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_logging.h
 ./large_fd_set.lo: ../include/net-snmp/session_api.h
 ./large_fd_set.lo: ../include/net-snmp/library/callback.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmp_transport.h
@@ -997,8 +1133,12 @@
 ./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/snmpUDPIPv6Domain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./large_fd_set.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./large_fd_set.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1009,8 +1149,42 @@
 ./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
+./large_fd_set.lo: ../include/net-snmp/library/getopt.h
+./large_fd_set.lo: ../include/net-snmp/utilities.h
+./large_fd_set.lo: ../include/net-snmp/library/system.h
+./large_fd_set.lo: ../include/net-snmp/library/tools.h
+./large_fd_set.lo: ../include/net-snmp/library/int64.h
+./large_fd_set.lo: ../include/net-snmp/library/mt_support.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_alarm.h
+./large_fd_set.lo: ../include/net-snmp/library/data_list.h
+./large_fd_set.lo: ../include/net-snmp/library/check_varbind.h
+./large_fd_set.lo: ../include/net-snmp/library/container.h
+./large_fd_set.lo: ../include/net-snmp/library/factory.h
+./large_fd_set.lo: ../include/net-snmp/library/container_binary_array.h
+./large_fd_set.lo: ../include/net-snmp/library/container_list_ssll.h
+./large_fd_set.lo: ../include/net-snmp/library/container_iterator.h
+./large_fd_set.lo: ../include/net-snmp/library/container.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_assert.h
+./large_fd_set.lo: ../include/net-snmp/version.h
+./large_fd_set.lo: ../include/net-snmp/config_api.h
+./large_fd_set.lo: ../include/net-snmp/library/read_config.h
+./large_fd_set.lo: ../include/net-snmp/library/default_store.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_parse_args.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_enum.h
+./large_fd_set.lo: ../include/net-snmp/library/vacm.h
+./large_fd_set.lo: ../include/net-snmp/snmpv3_api.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpv3.h
+./large_fd_set.lo: ../include/net-snmp/library/transform_oids.h
+./large_fd_set.lo: ../include/net-snmp/library/keytools.h
+./large_fd_set.lo: ../include/net-snmp/library/scapi.h
+./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/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/types.h
+./lcd_time.lo: ../include/net-snmp/library/oid.h
 ./lcd_time.lo: ../include/net-snmp/library/types.h
 ./lcd_time.lo: ../include/net-snmp/definitions.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp_api.h
@@ -1018,6 +1192,9 @@
 ./lcd_time.lo: ../include/net-snmp/library/snmp_client.h
 ./lcd_time.lo: ../include/net-snmp/pdu_api.h
 ./lcd_time.lo: ../include/net-snmp/library/asn1.h
+./lcd_time.lo: ../include/net-snmp/output_api.h
+./lcd_time.lo: ../include/net-snmp/library/snmp_debug.h
+./lcd_time.lo: ../include/net-snmp/library/snmp_logging.h
 ./lcd_time.lo: ../include/net-snmp/session_api.h
 ./lcd_time.lo: ../include/net-snmp/library/callback.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1025,8 +1202,12 @@
 ./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/snmpUDPIPv6Domain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./lcd_time.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1037,9 +1218,6 @@
 ./lcd_time.lo: ../include/net-snmp/library/snmp_impl.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp-tc.h
-./lcd_time.lo: ../include/net-snmp/output_api.h
-./lcd_time.lo: ../include/net-snmp/library/snmp_debug.h
-./lcd_time.lo: ../include/net-snmp/library/snmp_logging.h
 ./lcd_time.lo: ../include/net-snmp/utilities.h
 ./lcd_time.lo: ../include/net-snmp/library/system.h
 ./lcd_time.lo: ../include/net-snmp/library/tools.h
@@ -1063,13 +1241,17 @@
 ./lcd_time.lo: ../include/net-snmp/library/snmpv3.h
 ./lcd_time.lo: ../include/net-snmp/library/transform_oids.h
 ./md5.lo: ../include/net-snmp/net-snmp-config.h
-./md5.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./md5.lo: ../include/net-snmp/net-snmp-includes.h
+./md5.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./md5.lo: ../include/net-snmp/library/oid.h
 ./md5.lo: ../include/net-snmp/library/types.h
-./md5.lo: ../include/net-snmp/definitions.h
 ./md5.lo: ../include/net-snmp/library/snmp_api.h
 ./md5.lo: ../include/net-snmp/varbind_api.h
 ./md5.lo: ../include/net-snmp/library/snmp_client.h
 ./md5.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./md5.lo: ../include/net-snmp/output_api.h
+./md5.lo: ../include/net-snmp/library/snmp_debug.h
+./md5.lo: ../include/net-snmp/library/snmp_logging.h
 ./md5.lo: ../include/net-snmp/session_api.h
 ./md5.lo: ../include/net-snmp/library/callback.h
 ./md5.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1077,8 +1259,12 @@
 ./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/snmpUDPIPv6Domain.h
+./md5.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./md5.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./md5.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./md5.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1088,6 +1274,8 @@
 ./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
+./md5.lo: ../include/net-snmp/library/getopt.h
+./md5.lo: ../include/net-snmp/utilities.h
 ./md5.lo: ../include/net-snmp/library/system.h
 ./md5.lo: ../include/net-snmp/library/tools.h
 ./md5.lo: ../include/net-snmp/library/int64.h
@@ -1097,21 +1285,38 @@
 ./md5.lo: ../include/net-snmp/library/check_varbind.h
 ./md5.lo: ../include/net-snmp/library/container.h
 ./md5.lo: ../include/net-snmp/library/factory.h
-./md5.lo: ../include/net-snmp/library/snmp_logging.h
 ./md5.lo: ../include/net-snmp/library/container_binary_array.h
 ./md5.lo: ../include/net-snmp/library/container_list_ssll.h
 ./md5.lo: ../include/net-snmp/library/container_iterator.h
 ./md5.lo: ../include/net-snmp/library/container.h
 ./md5.lo: ../include/net-snmp/library/snmp_assert.h
-./md5.lo: ../include/net-snmp/version.h ../include/net-snmp/library/md5.h
+./md5.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
+./md5.lo: ../include/net-snmp/library/read_config.h
+./md5.lo: ../include/net-snmp/library/default_store.h
+./md5.lo: ../include/net-snmp/library/snmp_parse_args.h
+./md5.lo: ../include/net-snmp/library/snmp_enum.h
+./md5.lo: ../include/net-snmp/library/vacm.h ../include/net-snmp/snmpv3_api.h
+./md5.lo: ../include/net-snmp/library/snmpv3.h
+./md5.lo: ../include/net-snmp/library/transform_oids.h
+./md5.lo: ../include/net-snmp/library/keytools.h
+./md5.lo: ../include/net-snmp/library/scapi.h
+./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/snmpusm.h
+./md5.lo: ../include/net-snmp/library/md5.h
 ./mib.lo: ../include/net-snmp/net-snmp-config.h
 ./mib.lo: ../include/net-snmp/types.h
+./mib.lo: ../include/net-snmp/library/oid.h
 ./mib.lo: ../include/net-snmp/library/types.h
 ./mib.lo: ../include/net-snmp/definitions.h
 ./mib.lo: ../include/net-snmp/library/snmp_api.h
 ./mib.lo: ../include/net-snmp/varbind_api.h
 ./mib.lo: ../include/net-snmp/library/snmp_client.h
 ./mib.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./mib.lo: ../include/net-snmp/output_api.h
+./mib.lo: ../include/net-snmp/library/snmp_debug.h
+./mib.lo: ../include/net-snmp/library/snmp_logging.h
 ./mib.lo: ../include/net-snmp/session_api.h
 ./mib.lo: ../include/net-snmp/library/callback.h
 ./mib.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1119,8 +1324,12 @@
 ./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/snmpUDPIPv6Domain.h
+./mib.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./mib.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./mib.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./mib.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1130,9 +1339,6 @@
 ./mib.lo: ../include/net-snmp/library/snmp_impl.h
 ./mib.lo: ../include/net-snmp/library/snmp.h
 ./mib.lo: ../include/net-snmp/library/snmp-tc.h
-./mib.lo: ../include/net-snmp/output_api.h
-./mib.lo: ../include/net-snmp/library/snmp_debug.h
-./mib.lo: ../include/net-snmp/library/snmp_logging.h
 ./mib.lo: ../include/net-snmp/config_api.h
 ./mib.lo: ../include/net-snmp/library/read_config.h
 ./mib.lo: ../include/net-snmp/library/default_store.h
@@ -1159,12 +1365,16 @@
 ./oid_stash.lo: ../include/net-snmp/net-snmp-config.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
 ./oid_stash.lo: ../include/net-snmp/library/types.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_api.h
 ./oid_stash.lo: ../include/net-snmp/varbind_api.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_client.h
 ./oid_stash.lo: ../include/net-snmp/pdu_api.h
 ./oid_stash.lo: ../include/net-snmp/library/asn1.h
+./oid_stash.lo: ../include/net-snmp/output_api.h
+./oid_stash.lo: ../include/net-snmp/library/snmp_debug.h
+./oid_stash.lo: ../include/net-snmp/library/snmp_logging.h
 ./oid_stash.lo: ../include/net-snmp/session_api.h
 ./oid_stash.lo: ../include/net-snmp/library/callback.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1172,8 +1382,12 @@
 ./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/snmpUDPIPv6Domain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./oid_stash.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1195,7 +1409,6 @@
 ./oid_stash.lo: ../include/net-snmp/library/check_varbind.h
 ./oid_stash.lo: ../include/net-snmp/library/container.h
 ./oid_stash.lo: ../include/net-snmp/library/factory.h
-./oid_stash.lo: ../include/net-snmp/library/snmp_logging.h
 ./oid_stash.lo: ../include/net-snmp/library/container_binary_array.h
 ./oid_stash.lo: ../include/net-snmp/library/container_list_ssll.h
 ./oid_stash.lo: ../include/net-snmp/library/container_iterator.h
@@ -1208,8 +1421,6 @@
 ./oid_stash.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_enum.h
 ./oid_stash.lo: ../include/net-snmp/library/vacm.h
-./oid_stash.lo: ../include/net-snmp/output_api.h
-./oid_stash.lo: ../include/net-snmp/library/snmp_debug.h
 ./oid_stash.lo: ../include/net-snmp/snmpv3_api.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpv3.h
 ./oid_stash.lo: ../include/net-snmp/library/transform_oids.h
@@ -1219,14 +1430,54 @@
 ./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/snmpusm.h
+./opendir.lo: ../include/net-snmp/net-snmp-config.h
+./opendir.lo: ../include/net-snmp/types.h
+./opendir.lo: ../include/net-snmp/library/oid.h
+./opendir.lo: ../include/net-snmp/library/types.h
+./opendir.lo: ../include/net-snmp/definitions.h
+./opendir.lo: ../include/net-snmp/library/snmp_api.h
+./opendir.lo: ../include/net-snmp/varbind_api.h
+./opendir.lo: ../include/net-snmp/library/snmp_client.h
+./opendir.lo: ../include/net-snmp/pdu_api.h
+./opendir.lo: ../include/net-snmp/library/asn1.h
+./opendir.lo: ../include/net-snmp/output_api.h
+./opendir.lo: ../include/net-snmp/library/snmp_debug.h
+./opendir.lo: ../include/net-snmp/library/snmp_logging.h
+./opendir.lo: ../include/net-snmp/session_api.h
+./opendir.lo: ../include/net-snmp/library/callback.h
+./opendir.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./opendir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./opendir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./opendir.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./opendir.lo: ../include/net-snmp/library/ucd_compat.h
+./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/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/types.h
+./parse.lo: ../include/net-snmp/library/oid.h
 ./parse.lo: ../include/net-snmp/library/types.h
 ./parse.lo: ../include/net-snmp/definitions.h
 ./parse.lo: ../include/net-snmp/library/snmp_api.h
 ./parse.lo: ../include/net-snmp/varbind_api.h
 ./parse.lo: ../include/net-snmp/library/snmp_client.h
 ./parse.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./parse.lo: ../include/net-snmp/output_api.h
+./parse.lo: ../include/net-snmp/library/snmp_debug.h
+./parse.lo: ../include/net-snmp/library/snmp_logging.h
 ./parse.lo: ../include/net-snmp/session_api.h
 ./parse.lo: ../include/net-snmp/library/callback.h
 ./parse.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1234,8 +1485,12 @@
 ./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/snmpUDPIPv6Domain.h
+./parse.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./parse.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./parse.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./parse.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1245,9 +1500,6 @@
 ./parse.lo: ../include/net-snmp/library/snmp_impl.h
 ./parse.lo: ../include/net-snmp/library/snmp.h
 ./parse.lo: ../include/net-snmp/library/snmp-tc.h
-./parse.lo: ../include/net-snmp/output_api.h
-./parse.lo: ../include/net-snmp/library/snmp_debug.h
-./parse.lo: ../include/net-snmp/library/snmp_logging.h
 ./parse.lo: ../include/net-snmp/config_api.h
 ./parse.lo: ../include/net-snmp/library/read_config.h
 ./parse.lo: ../include/net-snmp/library/default_store.h
@@ -1273,6 +1525,7 @@
 ./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/types.h
+./read_config.lo: ../include/net-snmp/library/oid.h
 ./read_config.lo: ../include/net-snmp/library/types.h
 ./read_config.lo: ../include/net-snmp/definitions.h
 ./read_config.lo: ../include/net-snmp/library/snmp_api.h
@@ -1280,6 +1533,9 @@
 ./read_config.lo: ../include/net-snmp/library/snmp_client.h
 ./read_config.lo: ../include/net-snmp/pdu_api.h
 ./read_config.lo: ../include/net-snmp/library/asn1.h
+./read_config.lo: ../include/net-snmp/output_api.h
+./read_config.lo: ../include/net-snmp/library/snmp_debug.h
+./read_config.lo: ../include/net-snmp/library/snmp_logging.h
 ./read_config.lo: ../include/net-snmp/session_api.h
 ./read_config.lo: ../include/net-snmp/library/callback.h
 ./read_config.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1287,8 +1543,12 @@
 ./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/snmpUDPIPv6Domain.h
+./read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./read_config.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./read_config.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1299,9 +1559,6 @@
 ./read_config.lo: ../include/net-snmp/library/snmp_impl.h
 ./read_config.lo: ../include/net-snmp/library/snmp.h
 ./read_config.lo: ../include/net-snmp/library/snmp-tc.h
-./read_config.lo: ../include/net-snmp/output_api.h
-./read_config.lo: ../include/net-snmp/library/snmp_debug.h
-./read_config.lo: ../include/net-snmp/library/snmp_logging.h
 ./read_config.lo: ../include/net-snmp/config_api.h
 ./read_config.lo: ../include/net-snmp/library/read_config.h
 ./read_config.lo: ../include/net-snmp/library/default_store.h
@@ -1324,14 +1581,54 @@
 ./read_config.lo: ../include/net-snmp/library/container.h
 ./read_config.lo: ../include/net-snmp/library/snmp_assert.h
 ./read_config.lo: ../include/net-snmp/version.h
+./readdir.lo: ../include/net-snmp/net-snmp-config.h
+./readdir.lo: ../include/net-snmp/types.h
+./readdir.lo: ../include/net-snmp/library/oid.h
+./readdir.lo: ../include/net-snmp/library/types.h
+./readdir.lo: ../include/net-snmp/definitions.h
+./readdir.lo: ../include/net-snmp/library/snmp_api.h
+./readdir.lo: ../include/net-snmp/varbind_api.h
+./readdir.lo: ../include/net-snmp/library/snmp_client.h
+./readdir.lo: ../include/net-snmp/pdu_api.h
+./readdir.lo: ../include/net-snmp/library/asn1.h
+./readdir.lo: ../include/net-snmp/output_api.h
+./readdir.lo: ../include/net-snmp/library/snmp_debug.h
+./readdir.lo: ../include/net-snmp/library/snmp_logging.h
+./readdir.lo: ../include/net-snmp/session_api.h
+./readdir.lo: ../include/net-snmp/library/callback.h
+./readdir.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./readdir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./readdir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./readdir.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./readdir.lo: ../include/net-snmp/library/ucd_compat.h
+./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/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/types.h
+./scapi.lo: ../include/net-snmp/library/oid.h
 ./scapi.lo: ../include/net-snmp/library/types.h
 ./scapi.lo: ../include/net-snmp/definitions.h
 ./scapi.lo: ../include/net-snmp/library/snmp_api.h
 ./scapi.lo: ../include/net-snmp/varbind_api.h
 ./scapi.lo: ../include/net-snmp/library/snmp_client.h
 ./scapi.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./scapi.lo: ../include/net-snmp/output_api.h
+./scapi.lo: ../include/net-snmp/library/snmp_debug.h
+./scapi.lo: ../include/net-snmp/library/snmp_logging.h
 ./scapi.lo: ../include/net-snmp/session_api.h
 ./scapi.lo: ../include/net-snmp/library/callback.h
 ./scapi.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1339,8 +1636,12 @@
 ./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/snmpUDPIPv6Domain.h
+./scapi.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./scapi.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./scapi.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./scapi.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1350,9 +1651,6 @@
 ./scapi.lo: ../include/net-snmp/library/snmp_impl.h
 ./scapi.lo: ../include/net-snmp/library/snmp.h
 ./scapi.lo: ../include/net-snmp/library/snmp-tc.h
-./scapi.lo: ../include/net-snmp/output_api.h
-./scapi.lo: ../include/net-snmp/library/snmp_debug.h
-./scapi.lo: ../include/net-snmp/library/snmp_logging.h
 ./scapi.lo: ../include/net-snmp/utilities.h
 ./scapi.lo: ../include/net-snmp/library/system.h
 ./scapi.lo: ../include/net-snmp/library/tools.h
@@ -1374,46 +1672,9 @@
 ./scapi.lo: ../include/net-snmp/library/keytools.h
 ./scapi.lo: ../include/net-snmp/library/scapi.h
 ./scapi.lo: ../include/net-snmp/library/transform_oids.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/types.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/types.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/definitions.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/session_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/callback.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/mib.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/mib_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/parse.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/output_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/config_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpAAL5PVCDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_alarm.lo: ../include/net-snmp/types.h
+./snmp_alarm.lo: ../include/net-snmp/library/oid.h
 ./snmp_alarm.lo: ../include/net-snmp/library/types.h
 ./snmp_alarm.lo: ../include/net-snmp/definitions.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_api.h
@@ -1421,6 +1682,9 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_alarm.lo: ../include/net-snmp/pdu_api.h
 ./snmp_alarm.lo: ../include/net-snmp/library/asn1.h
+./snmp_alarm.lo: ../include/net-snmp/output_api.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_alarm.lo: ../include/net-snmp/session_api.h
 ./snmp_alarm.lo: ../include/net-snmp/library/callback.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1428,8 +1692,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_alarm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1440,9 +1708,6 @@
 ./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
-./snmp_alarm.lo: ../include/net-snmp/output_api.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_alarm.lo: ../include/net-snmp/config_api.h
 ./snmp_alarm.lo: ../include/net-snmp/library/read_config.h
 ./snmp_alarm.lo: ../include/net-snmp/library/default_store.h
@@ -1465,61 +1730,9 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/container.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_alarm.lo: ../include/net-snmp/version.h
-./snmpAliasDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpAliasDomain.lo: ../include/net-snmp/types.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/types.h
-./snmpAliasDomain.lo: ../include/net-snmp/definitions.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpAliasDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpAliasDomain.lo: ../include/net-snmp/session_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/callback.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/mib.h
-./snmpAliasDomain.lo: ../include/net-snmp/mib_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/parse.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpAliasDomain.lo: ../include/net-snmp/output_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpAliasDomain.lo: ../include/net-snmp/utilities.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/system.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/tools.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/int64.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/mt_support.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/data_list.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/check_varbind.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/container.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/factory.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/container_binary_array.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/container_iterator.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/container.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpAliasDomain.lo: ../include/net-snmp/version.h
-./snmpAliasDomain.lo: ../include/net-snmp/config_api.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpAliasDomain.lo: ../include/net-snmp/library/vacm.h
 ./snmp_api.lo: ../include/net-snmp/net-snmp-config.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
 ./snmp_api.lo: ../include/net-snmp/definitions.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_api.h
@@ -1527,6 +1740,9 @@
 ./snmp_api.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_api.lo: ../include/net-snmp/pdu_api.h
 ./snmp_api.lo: ../include/net-snmp/library/asn1.h
+./snmp_api.lo: ../include/net-snmp/output_api.h
+./snmp_api.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_api.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_api.lo: ../include/net-snmp/session_api.h
 ./snmp_api.lo: ../include/net-snmp/library/callback.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1534,8 +1750,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_api.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1546,9 +1766,6 @@
 ./snmp_api.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_api.lo: ../include/net-snmp/output_api.h
-./snmp_api.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_api.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_api.lo: ../include/net-snmp/config_api.h
 ./snmp_api.lo: ../include/net-snmp/library/read_config.h
 ./snmp_api.lo: ../include/net-snmp/library/default_store.h
@@ -1580,6 +1797,7 @@
 ./snmp_api.lo: ../include/net-snmp/library/transform_oids.h
 ./snmp_auth.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_auth.lo: ../include/net-snmp/types.h
+./snmp_auth.lo: ../include/net-snmp/library/oid.h
 ./snmp_auth.lo: ../include/net-snmp/library/types.h
 ./snmp_auth.lo: ../include/net-snmp/definitions.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_api.h
@@ -1587,6 +1805,9 @@
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_auth.lo: ../include/net-snmp/pdu_api.h
 ./snmp_auth.lo: ../include/net-snmp/library/asn1.h
+./snmp_auth.lo: ../include/net-snmp/output_api.h
+./snmp_auth.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_auth.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_auth.lo: ../include/net-snmp/session_api.h
 ./snmp_auth.lo: ../include/net-snmp/library/callback.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1594,8 +1815,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_auth.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1606,9 +1831,6 @@
 ./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
-./snmp_auth.lo: ../include/net-snmp/output_api.h
-./snmp_auth.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_auth.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_auth.lo: ../include/net-snmp/utilities.h
 ./snmp_auth.lo: ../include/net-snmp/library/system.h
 ./snmp_auth.lo: ../include/net-snmp/library/tools.h
@@ -1629,12 +1851,16 @@
 ./snmp_auth.lo: ../include/net-snmp/library/scapi.h
 ./snmp.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp.lo: ../include/net-snmp/types.h
+./snmp.lo: ../include/net-snmp/library/oid.h
 ./snmp.lo: ../include/net-snmp/library/types.h
 ./snmp.lo: ../include/net-snmp/definitions.h
 ./snmp.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp.lo: ../include/net-snmp/varbind_api.h
 ./snmp.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./snmp.lo: ../include/net-snmp/output_api.h
+./snmp.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp.lo: ../include/net-snmp/session_api.h
 ./snmp.lo: ../include/net-snmp/library/callback.h
 ./snmp.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1642,8 +1868,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1653,64 +1883,9 @@
 ./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.lo: ../include/net-snmp/output_api.h
-./snmp.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpCallbackDomain.lo: ../include/net-snmp/types.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/types.h
-./snmpCallbackDomain.lo: ../include/net-snmp/definitions.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpCallbackDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpCallbackDomain.lo: ../include/net-snmp/session_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/callback.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/mib.h
-./snmpCallbackDomain.lo: ../include/net-snmp/mib_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/parse.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpCallbackDomain.lo: ../include/net-snmp/output_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpCallbackDomain.lo: ../include/net-snmp/config_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpCallbackDomain.lo: ../include/net-snmp/utilities.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/system.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/tools.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/int64.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/mt_support.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/data_list.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/check_varbind.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/factory.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/container_binary_array.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/container_iterator.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpCallbackDomain.lo: ../include/net-snmp/version.h
 ./snmp_client.lo: ../include/net-snmp/net-snmp-config.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
 ./snmp_client.lo: ../include/net-snmp/definitions.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_api.h
@@ -1718,6 +1893,9 @@
 ./snmp_client.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_client.lo: ../include/net-snmp/pdu_api.h
 ./snmp_client.lo: ../include/net-snmp/library/asn1.h
+./snmp_client.lo: ../include/net-snmp/output_api.h
+./snmp_client.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_client.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_client.lo: ../include/net-snmp/session_api.h
 ./snmp_client.lo: ../include/net-snmp/library/callback.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1725,8 +1903,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_client.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1741,11 +1923,10 @@
 ./snmp_client.lo: ../include/net-snmp/library/default_store.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpusm.h
-./snmp_client.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_assert.h
-./snmp_client.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_debug.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_debug.lo: ../include/net-snmp/types.h
+./snmp_debug.lo: ../include/net-snmp/library/oid.h
 ./snmp_debug.lo: ../include/net-snmp/library/types.h
 ./snmp_debug.lo: ../include/net-snmp/definitions.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_api.h
@@ -1753,6 +1934,9 @@
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_debug.lo: ../include/net-snmp/pdu_api.h
 ./snmp_debug.lo: ../include/net-snmp/library/asn1.h
+./snmp_debug.lo: ../include/net-snmp/output_api.h
+./snmp_debug.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_debug.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_debug.lo: ../include/net-snmp/session_api.h
 ./snmp_debug.lo: ../include/net-snmp/library/callback.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1760,8 +1944,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_debug.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1772,9 +1960,6 @@
 ./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
-./snmp_debug.lo: ../include/net-snmp/output_api.h
-./snmp_debug.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_debug.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_debug.lo: ../include/net-snmp/config_api.h
 ./snmp_debug.lo: ../include/net-snmp/library/read_config.h
 ./snmp_debug.lo: ../include/net-snmp/library/default_store.h
@@ -1797,49 +1982,9 @@
 ./snmp_debug.lo: ../include/net-snmp/library/container.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_debug.lo: ../include/net-snmp/version.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/types.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/types.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/definitions.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/session_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/callback.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/mib.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/mib_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/parse.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/output_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/config_api.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmpDTLSUDPDomain.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/system.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/tools.h
-./snmpDTLSUDPDomain.lo: ../include/net-snmp/library/snmp_openssl.h
 ./snmp_enum.lo: ../include/net-snmp/net-snmp-config.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
 ./snmp_enum.lo: ../include/net-snmp/definitions.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_api.h
@@ -1847,6 +1992,9 @@
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_enum.lo: ../include/net-snmp/pdu_api.h
 ./snmp_enum.lo: ../include/net-snmp/library/asn1.h
+./snmp_enum.lo: ../include/net-snmp/output_api.h
+./snmp_enum.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_enum.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_enum.lo: ../include/net-snmp/session_api.h
 ./snmp_enum.lo: ../include/net-snmp/library/callback.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1854,8 +2002,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_enum.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1873,45 +2025,10 @@
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_enum.lo: ../include/net-snmp/library/vacm.h
 ./snmp_enum.lo: ../include/net-snmp/library/tools.h
-./snmpIPXDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpIPXDomain.lo: ../include/net-snmp/types.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/types.h
-./snmpIPXDomain.lo: ../include/net-snmp/definitions.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpIPXDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpIPXDomain.lo: ../include/net-snmp/session_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/callback.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/mib.h
-./snmpIPXDomain.lo: ../include/net-snmp/mib_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/parse.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpIPXDomain.lo: ../include/net-snmp/output_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpIPXDomain.lo: ../include/net-snmp/config_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/vacm.h
+./snmp_enum.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpksm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpksm.lo: ../include/net-snmp/output_api.h ../include/net-snmp/types.h
+./snmpksm.lo: ../include/net-snmp/library/oid.h
 ./snmpksm.lo: ../include/net-snmp/library/types.h
 ./snmpksm.lo: ../include/net-snmp/definitions.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_api.h
@@ -1926,8 +2043,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpksm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1969,6 +2090,7 @@
 ./snmpksm.lo: ../include/net-snmp/library/snmpksm.h
 ./snmp_logging.lo: ../include/net-snmp/net-snmp-config.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
 ./snmp_logging.lo: ../include/net-snmp/definitions.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmp_api.h
@@ -1976,6 +2098,9 @@
 ./snmp_logging.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_logging.lo: ../include/net-snmp/pdu_api.h
 ./snmp_logging.lo: ../include/net-snmp/library/asn1.h
+./snmp_logging.lo: ../include/net-snmp/output_api.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_logging.lo: ../include/net-snmp/session_api.h
 ./snmp_logging.lo: ../include/net-snmp/library/callback.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmp_transport.h
@@ -1983,8 +2108,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_logging.lo: ../include/net-snmp/library/ucd_compat.h
@@ -1995,9 +2124,6 @@
 ./snmp_logging.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmp.h
 ./snmp_logging.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_logging.lo: ../include/net-snmp/output_api.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_logging.lo: ../include/net-snmp/config_api.h
 ./snmp_logging.lo: ../include/net-snmp/library/read_config.h
 ./snmp_logging.lo: ../include/net-snmp/library/default_store.h
@@ -2024,12 +2150,16 @@
 ./snmp_openssl.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_openssl.lo: ../include/net-snmp/definitions.h
 ./snmp_openssl.lo: ../include/net-snmp/types.h
+./snmp_openssl.lo: ../include/net-snmp/library/oid.h
 ./snmp_openssl.lo: ../include/net-snmp/library/types.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_openssl.lo: ../include/net-snmp/varbind_api.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_openssl.lo: ../include/net-snmp/pdu_api.h
 ./snmp_openssl.lo: ../include/net-snmp/library/asn1.h
+./snmp_openssl.lo: ../include/net-snmp/output_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_openssl.lo: ../include/net-snmp/session_api.h
 ./snmp_openssl.lo: ../include/net-snmp/library/callback.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2037,8 +2167,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_openssl.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2060,7 +2194,6 @@
 ./snmp_openssl.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_openssl.lo: ../include/net-snmp/library/container.h
 ./snmp_openssl.lo: ../include/net-snmp/library/factory.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_openssl.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmp_openssl.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmp_openssl.lo: ../include/net-snmp/library/container_iterator.h
@@ -2073,8 +2206,6 @@
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_openssl.lo: ../include/net-snmp/library/vacm.h
-./snmp_openssl.lo: ../include/net-snmp/output_api.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_openssl.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_openssl.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_openssl.lo: ../include/net-snmp/library/transform_oids.h
@@ -2084,16 +2215,20 @@
 ./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/snmpusm.h
-./snmp_openssl.lo: ../include/net-snmp/library/snmp_openssl.h
 ./snmp_parse_args.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_parse_args.lo: ../include/net-snmp/types.h
-./snmp_parse_args.lo: ../include/net-snmp/library/types.h
+./snmp_parse_args.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_parse_args.lo: ../include/net-snmp/definitions.h
+./snmp_parse_args.lo: ../include/net-snmp/types.h
+./snmp_parse_args.lo: ../include/net-snmp/library/oid.h
+./snmp_parse_args.lo: ../include/net-snmp/library/types.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/varbind_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_parse_args.lo: ../include/net-snmp/pdu_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/asn1.h
+./snmp_parse_args.lo: ../include/net-snmp/output_api.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_parse_args.lo: ../include/net-snmp/session_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/callback.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2101,8 +2236,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2113,15 +2252,7 @@
 ./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
-./snmp_parse_args.lo: ../include/net-snmp/output_api.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_logging.h
-./snmp_parse_args.lo: ../include/net-snmp/config_api.h
-./snmp_parse_args.lo: ../include/net-snmp/library/read_config.h
-./snmp_parse_args.lo: ../include/net-snmp/library/default_store.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_enum.h
-./snmp_parse_args.lo: ../include/net-snmp/library/vacm.h
+./snmp_parse_args.lo: ../include/net-snmp/library/getopt.h
 ./snmp_parse_args.lo: ../include/net-snmp/utilities.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/system.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/tools.h
@@ -2138,12 +2269,24 @@
 ./snmp_parse_args.lo: ../include/net-snmp/library/container.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_parse_args.lo: ../include/net-snmp/version.h
-./snmp_parse_args.lo: ../include/net-snmp/library/scapi.h
-./snmp_parse_args.lo: ../include/net-snmp/library/keytools.h
+./snmp_parse_args.lo: ../include/net-snmp/config_api.h
+./snmp_parse_args.lo: ../include/net-snmp/library/read_config.h
+./snmp_parse_args.lo: ../include/net-snmp/library/default_store.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_enum.h
+./snmp_parse_args.lo: ../include/net-snmp/library/vacm.h
+./snmp_parse_args.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_parse_args.lo: ../include/net-snmp/library/transform_oids.h
+./snmp_parse_args.lo: ../include/net-snmp/library/keytools.h
+./snmp_parse_args.lo: ../include/net-snmp/library/scapi.h
+./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/snmpusm.h
 ./snmp_secmod.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_secmod.lo: ../include/net-snmp/types.h
+./snmp_secmod.lo: ../include/net-snmp/library/oid.h
 ./snmp_secmod.lo: ../include/net-snmp/library/types.h
 ./snmp_secmod.lo: ../include/net-snmp/definitions.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_api.h
@@ -2151,6 +2294,9 @@
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_secmod.lo: ../include/net-snmp/pdu_api.h
 ./snmp_secmod.lo: ../include/net-snmp/library/asn1.h
+./snmp_secmod.lo: ../include/net-snmp/output_api.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_secmod.lo: ../include/net-snmp/session_api.h
 ./snmp_secmod.lo: ../include/net-snmp/library/callback.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2158,8 +2304,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_secmod.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2170,9 +2320,6 @@
 ./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
-./snmp_secmod.lo: ../include/net-snmp/output_api.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_secmod.lo: ../include/net-snmp/config_api.h
 ./snmp_secmod.lo: ../include/net-snmp/library/read_config.h
 ./snmp_secmod.lo: ../include/net-snmp/library/default_store.h
@@ -2196,17 +2343,22 @@
 ./snmp_secmod.lo: ../include/net-snmp/library/snmp_assert.h
 ./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/snmpusm.h snmpsm_init.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
 ./snmp_service.lo: ../include/net-snmp/types.h
+./snmp_service.lo: ../include/net-snmp/library/oid.h
 ./snmp_service.lo: ../include/net-snmp/library/types.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_api.h
 ./snmp_service.lo: ../include/net-snmp/varbind_api.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_service.lo: ../include/net-snmp/pdu_api.h
 ./snmp_service.lo: ../include/net-snmp/library/asn1.h
+./snmp_service.lo: ../include/net-snmp/output_api.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_service.lo: ../include/net-snmp/session_api.h
 ./snmp_service.lo: ../include/net-snmp/library/callback.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2214,8 +2366,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_service.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2237,7 +2393,6 @@
 ./snmp_service.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_service.lo: ../include/net-snmp/library/container.h
 ./snmp_service.lo: ../include/net-snmp/library/factory.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_service.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmp_service.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmp_service.lo: ../include/net-snmp/library/container_iterator.h
@@ -2250,8 +2405,6 @@
 ./snmp_service.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmp_service.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmp_service.lo: ../include/net-snmp/library/vacm.h
-./snmp_service.lo: ../include/net-snmp/output_api.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmp_service.lo: ../include/net-snmp/snmpv3_api.h
 ./snmp_service.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_service.lo: ../include/net-snmp/library/transform_oids.h
@@ -2261,81 +2414,9 @@
 ./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/snmpusm.h
-./snmpSSHDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpSSHDomain.lo: ../include/net-snmp/types.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/types.h
-./snmpSSHDomain.lo: ../include/net-snmp/definitions.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpSSHDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpSSHDomain.lo: ../include/net-snmp/session_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/callback.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/mib.h
-./snmpSSHDomain.lo: ../include/net-snmp/mib_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/parse.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpSSHDomain.lo: ../include/net-snmp/output_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/tools.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/system.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmpSSHDomain.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpSSHDomain.lo: ../include/net-snmp/config_api.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpSSHDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpSTDDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpSTDDomain.lo: ../include/net-snmp/types.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/types.h
-./snmpSTDDomain.lo: ../include/net-snmp/definitions.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpSTDDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpSTDDomain.lo: ../include/net-snmp/session_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/callback.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/mib.h
-./snmpSTDDomain.lo: ../include/net-snmp/mib_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/parse.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpSTDDomain.lo: ../include/net-snmp/output_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpSTDDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/tools.h
 ./snmp-tc.lo: ../include/net-snmp/net-snmp-config.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
 ./snmp-tc.lo: ../include/net-snmp/definitions.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmp_api.h
@@ -2343,6 +2424,9 @@
 ./snmp-tc.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp-tc.lo: ../include/net-snmp/pdu_api.h
 ./snmp-tc.lo: ../include/net-snmp/library/asn1.h
+./snmp-tc.lo: ../include/net-snmp/output_api.h
+./snmp-tc.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp-tc.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp-tc.lo: ../include/net-snmp/session_api.h
 ./snmp-tc.lo: ../include/net-snmp/library/callback.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2350,8 +2434,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp-tc.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2361,41 +2449,9 @@
 ./snmp-tc.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmp.h
 ./snmp-tc.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpTCPDomain.lo: ../include/net-snmp/types.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/types.h
-./snmpTCPDomain.lo: ../include/net-snmp/definitions.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpTCPDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpTCPDomain.lo: ../include/net-snmp/session_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/callback.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/mib.h
-./snmpTCPDomain.lo: ../include/net-snmp/mib_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/parse.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpTCPDomain.lo: ../include/net-snmp/output_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
 ./snmp_transport.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_transport.lo: ../include/net-snmp/output_api.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
 ./snmp_transport.lo: ../include/net-snmp/definitions.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_api.h
@@ -2403,6 +2459,9 @@
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_transport.lo: ../include/net-snmp/pdu_api.h
 ./snmp_transport.lo: ../include/net-snmp/library/asn1.h
+./snmp_transport.lo: ../include/net-snmp/output_api.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_debug.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_transport.lo: ../include/net-snmp/session_api.h
 ./snmp_transport.lo: ../include/net-snmp/library/callback.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2410,8 +2469,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmp_transport.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2422,8 +2485,6 @@
 ./snmp_transport.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmp.h
 ./snmp_transport.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_transport.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp_transport.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_transport.lo: ../include/net-snmp/utilities.h
 ./snmp_transport.lo: ../include/net-snmp/library/system.h
 ./snmp_transport.lo: ../include/net-snmp/library/tools.h
@@ -2440,15 +2501,26 @@
 ./snmp_transport.lo: ../include/net-snmp/library/container.h
 ./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/read_config.h
+./snmp_transport.lo: ../include/net-snmp/config_api.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_enum.h
+./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-includes.h
 ./snmptsm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptsm.lo: ../include/net-snmp/library/oid.h
 ./snmptsm.lo: ../include/net-snmp/library/types.h
 ./snmptsm.lo: ../include/net-snmp/library/snmp_api.h
 ./snmptsm.lo: ../include/net-snmp/varbind_api.h
 ./snmptsm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptsm.lo: ../include/net-snmp/pdu_api.h
 ./snmptsm.lo: ../include/net-snmp/library/asn1.h
+./snmptsm.lo: ../include/net-snmp/output_api.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptsm.lo: ../include/net-snmp/session_api.h
 ./snmptsm.lo: ../include/net-snmp/library/callback.h
 ./snmptsm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2456,8 +2528,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmptsm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2478,7 +2554,6 @@
 ./snmptsm.lo: ../include/net-snmp/library/check_varbind.h
 ./snmptsm.lo: ../include/net-snmp/library/container.h
 ./snmptsm.lo: ../include/net-snmp/library/factory.h
-./snmptsm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmptsm.lo: ../include/net-snmp/library/container_binary_array.h
 ./snmptsm.lo: ../include/net-snmp/library/container_list_ssll.h
 ./snmptsm.lo: ../include/net-snmp/library/container_iterator.h
@@ -2490,8 +2565,6 @@
 ./snmptsm.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./snmptsm.lo: ../include/net-snmp/library/snmp_enum.h
 ./snmptsm.lo: ../include/net-snmp/library/vacm.h
-./snmptsm.lo: ../include/net-snmp/output_api.h
-./snmptsm.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmptsm.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptsm.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptsm.lo: ../include/net-snmp/library/transform_oids.h
@@ -2502,86 +2575,9 @@
 ./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
-./snmpUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpUDPDomain.lo: ../include/net-snmp/types.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/types.h
-./snmpUDPDomain.lo: ../include/net-snmp/definitions.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpUDPDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpUDPDomain.lo: ../include/net-snmp/session_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/callback.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/mib.h
-./snmpUDPDomain.lo: ../include/net-snmp/mib_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/parse.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpUDPDomain.lo: ../include/net-snmp/output_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpUDPDomain.lo: ../include/net-snmp/config_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/system.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/tools.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpUnixDomain.lo: ../include/net-snmp/types.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/types.h
-./snmpUnixDomain.lo: ../include/net-snmp/definitions.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/varbind_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpUnixDomain.lo: ../include/net-snmp/pdu_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/asn1.h
-./snmpUnixDomain.lo: ../include/net-snmp/session_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/callback.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_service.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/ucd_compat.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/mib.h
-./snmpUnixDomain.lo: ../include/net-snmp/mib_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/parse.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/oid_stash.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpUnixDomain.lo: ../include/net-snmp/output_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpUnixDomain.lo: ../include/net-snmp/config_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/read_config.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/default_store.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/vacm.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/system.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpusm.lo: ../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/definitions.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_api.h
@@ -2589,6 +2585,9 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpusm.lo: ../include/net-snmp/pdu_api.h
 ./snmpusm.lo: ../include/net-snmp/library/asn1.h
+./snmpusm.lo: ../include/net-snmp/output_api.h
+./snmpusm.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpusm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpusm.lo: ../include/net-snmp/session_api.h
 ./snmpusm.lo: ../include/net-snmp/library/callback.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2596,8 +2595,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpusm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2607,9 +2610,6 @@
 ./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
-./snmpusm.lo: ../include/net-snmp/output_api.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpusm.lo: ../include/net-snmp/config_api.h
 ./snmpusm.lo: ../include/net-snmp/library/read_config.h
 ./snmpusm.lo: ../include/net-snmp/library/default_store.h
@@ -2640,12 +2640,16 @@
 ./snmpusm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpv3.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpv3.lo: ../include/net-snmp/types.h
+./snmpv3.lo: ../include/net-snmp/library/oid.h
 ./snmpv3.lo: ../include/net-snmp/library/types.h
 ./snmpv3.lo: ../include/net-snmp/definitions.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_api.h
 ./snmpv3.lo: ../include/net-snmp/varbind_api.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpv3.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./snmpv3.lo: ../include/net-snmp/output_api.h
+./snmpv3.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpv3.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpv3.lo: ../include/net-snmp/session_api.h
 ./snmpv3.lo: ../include/net-snmp/library/callback.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2653,8 +2657,12 @@
 ./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/snmpUDPIPv6Domain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./snmpv3.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2664,9 +2672,6 @@
 ./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
-./snmpv3.lo: ../include/net-snmp/output_api.h
-./snmpv3.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpv3.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpv3.lo: ../include/net-snmp/config_api.h
 ./snmpv3.lo: ../include/net-snmp/library/read_config.h
 ./snmpv3.lo: ../include/net-snmp/library/default_store.h
@@ -2702,6 +2707,7 @@
 ./strlcat.lo: ../include/net-snmp/net-snmp-config.h
 ./strlcat.lo: ../include/net-snmp/library/system.h
 ./strlcat.lo: ../include/net-snmp/types.h
+./strlcat.lo: ../include/net-snmp/library/oid.h
 ./strlcat.lo: ../include/net-snmp/library/types.h
 ./strlcat.lo: ../include/net-snmp/definitions.h
 ./strlcat.lo: ../include/net-snmp/library/snmp_api.h
@@ -2709,6 +2715,9 @@
 ./strlcat.lo: ../include/net-snmp/library/snmp_client.h
 ./strlcat.lo: ../include/net-snmp/pdu_api.h
 ./strlcat.lo: ../include/net-snmp/library/asn1.h
+./strlcat.lo: ../include/net-snmp/output_api.h
+./strlcat.lo: ../include/net-snmp/library/snmp_debug.h
+./strlcat.lo: ../include/net-snmp/library/snmp_logging.h
 ./strlcat.lo: ../include/net-snmp/session_api.h
 ./strlcat.lo: ../include/net-snmp/library/callback.h
 ./strlcat.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2716,8 +2725,12 @@
 ./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/snmpUDPIPv6Domain.h
+./strlcat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./strlcat.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./strlcat.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2728,18 +2741,129 @@
 ./strlcat.lo: ../include/net-snmp/library/snmp.h
 ./strlcat.lo: ../include/net-snmp/library/snmp-tc.h
 ./strlcpy.lo: ../include/net-snmp/net-snmp-config.h
+./strlcpy.lo: ../include/net-snmp/library/system.h
+./strlcpy.lo: ../include/net-snmp/types.h
+./strlcpy.lo: ../include/net-snmp/library/oid.h
+./strlcpy.lo: ../include/net-snmp/library/types.h
+./strlcpy.lo: ../include/net-snmp/definitions.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_api.h
+./strlcpy.lo: ../include/net-snmp/varbind_api.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_client.h
+./strlcpy.lo: ../include/net-snmp/pdu_api.h
+./strlcpy.lo: ../include/net-snmp/library/asn1.h
+./strlcpy.lo: ../include/net-snmp/output_api.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_debug.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_logging.h
+./strlcpy.lo: ../include/net-snmp/session_api.h
+./strlcpy.lo: ../include/net-snmp/library/callback.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./strlcpy.lo: ../include/net-snmp/library/ucd_compat.h
+./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/library/snmp_impl.h
+./strlcpy.lo: ../include/net-snmp/library/snmp.h
+./strlcpy.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtok_r.lo: ../include/net-snmp/net-snmp-config.h
+./strtok_r.lo: ../include/net-snmp/library/system.h
+./strtok_r.lo: ../include/net-snmp/types.h
+./strtok_r.lo: ../include/net-snmp/library/oid.h
+./strtok_r.lo: ../include/net-snmp/library/types.h
+./strtok_r.lo: ../include/net-snmp/definitions.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_api.h
+./strtok_r.lo: ../include/net-snmp/varbind_api.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_client.h
+./strtok_r.lo: ../include/net-snmp/pdu_api.h
+./strtok_r.lo: ../include/net-snmp/library/asn1.h
+./strtok_r.lo: ../include/net-snmp/output_api.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_debug.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_logging.h
+./strtok_r.lo: ../include/net-snmp/session_api.h
+./strtok_r.lo: ../include/net-snmp/library/callback.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./strtok_r.lo: ../include/net-snmp/library/ucd_compat.h
+./strtok_r.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./strtok_r.lo: ../include/net-snmp/library/snmp.h
+./strtok_r.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtol.lo: ../include/net-snmp/net-snmp-config.h
 ./strtoul.lo: ../include/net-snmp/net-snmp-config.h
 ./strtoull.lo: ../include/net-snmp/net-snmp-config.h
+./strtoull.lo: ../include/net-snmp/types.h
+./strtoull.lo: ../include/net-snmp/library/oid.h
+./strtoull.lo: ../include/net-snmp/library/types.h
+./strtoull.lo: ../include/net-snmp/definitions.h
+./strtoull.lo: ../include/net-snmp/library/snmp_api.h
+./strtoull.lo: ../include/net-snmp/varbind_api.h
+./strtoull.lo: ../include/net-snmp/library/snmp_client.h
+./strtoull.lo: ../include/net-snmp/pdu_api.h
+./strtoull.lo: ../include/net-snmp/library/asn1.h
+./strtoull.lo: ../include/net-snmp/output_api.h
+./strtoull.lo: ../include/net-snmp/library/snmp_debug.h
+./strtoull.lo: ../include/net-snmp/library/snmp_logging.h
+./strtoull.lo: ../include/net-snmp/session_api.h
+./strtoull.lo: ../include/net-snmp/library/callback.h
+./strtoull.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./strtoull.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strtoull.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./strtoull.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./strtoull.lo: ../include/net-snmp/library/ucd_compat.h
+./strtoull.lo: ../include/net-snmp/library/mib.h
+./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/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/types.h
+./system.lo: ../include/net-snmp/library/oid.h
 ./system.lo: ../include/net-snmp/library/types.h
 ./system.lo: ../include/net-snmp/definitions.h
 ./system.lo: ../include/net-snmp/library/snmp_api.h
 ./system.lo: ../include/net-snmp/varbind_api.h
 ./system.lo: ../include/net-snmp/library/snmp_client.h
 ./system.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./system.lo: ../include/net-snmp/output_api.h
+./system.lo: ../include/net-snmp/library/snmp_debug.h
+./system.lo: ../include/net-snmp/library/snmp_logging.h
 ./system.lo: ../include/net-snmp/session_api.h
 ./system.lo: ../include/net-snmp/library/callback.h
 ./system.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2747,8 +2871,12 @@
 ./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/snmpUDPIPv6Domain.h
+./system.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./system.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./system.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./system.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2758,9 +2886,6 @@
 ./system.lo: ../include/net-snmp/library/snmp_impl.h
 ./system.lo: ../include/net-snmp/library/snmp.h
 ./system.lo: ../include/net-snmp/library/snmp-tc.h
-./system.lo: ../include/net-snmp/output_api.h
-./system.lo: ../include/net-snmp/library/snmp_debug.h
-./system.lo: ../include/net-snmp/library/snmp_logging.h
 ./system.lo: ../include/net-snmp/utilities.h
 ./system.lo: ../include/net-snmp/library/system.h
 ./system.lo: ../include/net-snmp/library/tools.h
@@ -2787,12 +2912,16 @@
 ./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
@@ -2800,8 +2929,12 @@
 ./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
@@ -2823,7 +2956,6 @@
 ./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/snmp_logging.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
@@ -2836,8 +2968,6 @@
 ./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/output_api.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_debug.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
@@ -2851,12 +2981,16 @@
 ./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
+./text_utils.lo: ../include/net-snmp/library/oid.h
 ./text_utils.lo: ../include/net-snmp/library/types.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_api.h
 ./text_utils.lo: ../include/net-snmp/varbind_api.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_client.h
 ./text_utils.lo: ../include/net-snmp/pdu_api.h
 ./text_utils.lo: ../include/net-snmp/library/asn1.h
+./text_utils.lo: ../include/net-snmp/output_api.h
+./text_utils.lo: ../include/net-snmp/library/snmp_debug.h
+./text_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./text_utils.lo: ../include/net-snmp/session_api.h
 ./text_utils.lo: ../include/net-snmp/library/callback.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2864,8 +2998,12 @@
 ./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/snmpUDPIPv6Domain.h
+./text_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./text_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./text_utils.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2887,7 +3025,6 @@
 ./text_utils.lo: ../include/net-snmp/library/check_varbind.h
 ./text_utils.lo: ../include/net-snmp/library/container.h
 ./text_utils.lo: ../include/net-snmp/library/factory.h
-./text_utils.lo: ../include/net-snmp/library/snmp_logging.h
 ./text_utils.lo: ../include/net-snmp/library/container_binary_array.h
 ./text_utils.lo: ../include/net-snmp/library/container_list_ssll.h
 ./text_utils.lo: ../include/net-snmp/library/container_iterator.h
@@ -2900,8 +3037,6 @@
 ./text_utils.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_enum.h
 ./text_utils.lo: ../include/net-snmp/library/vacm.h
-./text_utils.lo: ../include/net-snmp/output_api.h
-./text_utils.lo: ../include/net-snmp/library/snmp_debug.h
 ./text_utils.lo: ../include/net-snmp/snmpv3_api.h
 ./text_utils.lo: ../include/net-snmp/library/snmpv3.h
 ./text_utils.lo: ../include/net-snmp/library/transform_oids.h
@@ -2915,12 +3050,16 @@
 ./text_utils.lo: ../include/net-snmp/library/text_utils.h
 ./tools.lo: ../include/net-snmp/net-snmp-config.h
 ./tools.lo: ../include/net-snmp/types.h
+./tools.lo: ../include/net-snmp/library/oid.h
 ./tools.lo: ../include/net-snmp/library/types.h
 ./tools.lo: ../include/net-snmp/definitions.h
 ./tools.lo: ../include/net-snmp/library/snmp_api.h
 ./tools.lo: ../include/net-snmp/varbind_api.h
 ./tools.lo: ../include/net-snmp/library/snmp_client.h
 ./tools.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./tools.lo: ../include/net-snmp/output_api.h
+./tools.lo: ../include/net-snmp/library/snmp_debug.h
+./tools.lo: ../include/net-snmp/library/snmp_logging.h
 ./tools.lo: ../include/net-snmp/session_api.h
 ./tools.lo: ../include/net-snmp/library/callback.h
 ./tools.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2928,8 +3067,12 @@
 ./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/snmpUDPIPv6Domain.h
+./tools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./tools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./tools.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./tools.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2939,9 +3082,6 @@
 ./tools.lo: ../include/net-snmp/library/snmp_impl.h
 ./tools.lo: ../include/net-snmp/library/snmp.h
 ./tools.lo: ../include/net-snmp/library/snmp-tc.h
-./tools.lo: ../include/net-snmp/output_api.h
-./tools.lo: ../include/net-snmp/library/snmp_debug.h
-./tools.lo: ../include/net-snmp/library/snmp_logging.h
 ./tools.lo: ../include/net-snmp/utilities.h
 ./tools.lo: ../include/net-snmp/library/system.h
 ./tools.lo: ../include/net-snmp/library/tools.h
@@ -2960,6 +3100,7 @@
 ./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/types.h
+./ucd_compat.lo: ../include/net-snmp/library/oid.h
 ./ucd_compat.lo: ../include/net-snmp/library/types.h
 ./ucd_compat.lo: ../include/net-snmp/definitions.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_api.h
@@ -2967,6 +3108,9 @@
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_client.h
 ./ucd_compat.lo: ../include/net-snmp/pdu_api.h
 ./ucd_compat.lo: ../include/net-snmp/library/asn1.h
+./ucd_compat.lo: ../include/net-snmp/output_api.h
+./ucd_compat.lo: ../include/net-snmp/library/snmp_debug.h
+./ucd_compat.lo: ../include/net-snmp/library/snmp_logging.h
 ./ucd_compat.lo: ../include/net-snmp/session_api.h
 ./ucd_compat.lo: ../include/net-snmp/library/callback.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_transport.h
@@ -2974,8 +3118,12 @@
 ./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/snmpUDPIPv6Domain.h
+./ucd_compat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/ucd_compat.h
@@ -2994,12 +3142,16 @@
 ./ucd_compat.lo: ../include/net-snmp/library/vacm.h
 ./vacm.lo: ../include/net-snmp/net-snmp-config.h
 ./vacm.lo: ../include/net-snmp/types.h
+./vacm.lo: ../include/net-snmp/library/oid.h
 ./vacm.lo: ../include/net-snmp/library/types.h
 ./vacm.lo: ../include/net-snmp/definitions.h
 ./vacm.lo: ../include/net-snmp/library/snmp_api.h
 ./vacm.lo: ../include/net-snmp/varbind_api.h
 ./vacm.lo: ../include/net-snmp/library/snmp_client.h
 ./vacm.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./vacm.lo: ../include/net-snmp/output_api.h
+./vacm.lo: ../include/net-snmp/library/snmp_debug.h
+./vacm.lo: ../include/net-snmp/library/snmp_logging.h
 ./vacm.lo: ../include/net-snmp/session_api.h
 ./vacm.lo: ../include/net-snmp/library/callback.h
 ./vacm.lo: ../include/net-snmp/library/snmp_transport.h
@@ -3007,8 +3159,12 @@
 ./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/snmpUDPIPv6Domain.h
+./vacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./vacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./vacm.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./vacm.lo: ../include/net-snmp/library/ucd_compat.h
@@ -3018,12 +3174,828 @@
 ./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
-./vacm.lo: ../include/net-snmp/output_api.h
-./vacm.lo: ../include/net-snmp/library/snmp_debug.h
-./vacm.lo: ../include/net-snmp/library/snmp_logging.h
 ./vacm.lo: ../include/net-snmp/config_api.h
 ./vacm.lo: ../include/net-snmp/library/read_config.h
 ./vacm.lo: ../include/net-snmp/library/default_store.h
 ./vacm.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./vacm.lo: ../include/net-snmp/library/snmp_enum.h
 ./vacm.lo: ../include/net-snmp/library/vacm.h
+./vacm.lo: ../include/net-snmp/library/tools.h
+./openssl/openssl_aes_cfb.lo: ../include/net-snmp/library/openssl_aes.h
+./openssl/openssl_aes_cfb.lo: openssl/openssl_modes.h
+./openssl/openssl_aes_core.lo: ../include/net-snmp/library/openssl_aes.h
+./openssl/openssl_aes_core.lo: ./openssl/openssl_aes_local.h
+./openssl/openssl_cbc_enc.lo: ./openssl/openssl_ncbc_enc.c
+./openssl/openssl_cbc_enc.lo: ./openssl/openssl_des_local.h
+./openssl/openssl_cbc_enc.lo: ../include/net-snmp/library/openssl_des.h
+./openssl/openssl_cfb128.lo: ./openssl/openssl_modes.h
+./openssl/openssl_des_enc.lo: ./openssl/openssl_des_local.h
+./openssl/openssl_des_enc.lo: ../include/net-snmp/library/openssl_des.h
+./openssl/openssl_des_enc.lo: ./openssl/openssl_spr.h
+./openssl/openssl_des_enc.lo: ./openssl/openssl_ncbc_enc.c
+./openssl/openssl_md5.lo: ./openssl/openssl_md5_local.h
+./openssl/openssl_md5.lo: ../include/net-snmp/openssl_md5.h
+./openssl/openssl_md5.lo: ./openssl/openssl_md32_common.h
+./openssl/openssl_ncbc_enc.lo: ./openssl/openssl_des_local.h
+./openssl/openssl_ncbc_enc.lo: ../include/net-snmp/library/openssl_des.h
+./openssl/openssl_set_key.lo: ./openssl/openssl_des_local.h
+./openssl/openssl_set_key.lo: ../include/net-snmp/library/openssl_des.h
+./openssl/openssl_sha1.lo: openssl/openssl_sha_local.h
+./openssl/openssl_sha1.lo: openssl/openssl_sha.h
+./openssl/openssl_sha1.lo: ./openssl/openssl_md32_common.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpAAL5PVCDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/types.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/default_store.h
+./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/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
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpAliasDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/net-snmp-includes.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/getopt.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/utilities.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/int64.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/mt_support.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_alarm.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/data_list.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/check_varbind.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/factory.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/container_binary_array.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/container_list_ssll.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/container_iterator.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/version.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/snmpv3_api.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpv3.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/transform_oids.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/keytools.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/scapi.h
+./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/snmpusm.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/types.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/callback.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/utilities.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/int64.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/mt_support.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_alarm.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/data_list.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/check_varbind.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/factory.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/container_binary_array.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/container_list_ssll.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/container_iterator.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/version.h
+./transports/snmpDTLSUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/mib.h
+./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/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
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/types.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/callback.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/default_store.h
+./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/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
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/default_store.h
+./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/library/snmpSSHDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/types.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/mib.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/mib_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/parse.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpSTDDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/types.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpTCPBaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/types.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/mib.h
+./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/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/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/library/snmpTLSBaseDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/callback.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/mib.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/mib_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/parse.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./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/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/library/snmpTLSTCPDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/types.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/callback.h
+./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
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/mib.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/mib_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/parse.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpTLSBaseDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/container.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/factory.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/cert_util.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_openssl.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/mib.h
+./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/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/snmpSocketBaseDomain.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
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/types.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/mib.h
+./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/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/config_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpUDPDomain.lo: inet_ntop.h inet_pton.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/session_api.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/mib.h
+./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/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/tools.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/types.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/types.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/definitions.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/asn1.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/output_api.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/session_api.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/callback.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/snmpTCPIPv6Domain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/mib.h
+./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/library/snmp_impl.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.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
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/oid.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/types.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/types.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/definitions.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/varbind_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_client.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/pdu_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/output_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_debug.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_logging.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/session_api.h
+./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/snmpUDPIPv6Domain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/ucd_compat.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/mib.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/mib_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/parse.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/oid_stash.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./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
diff --git a/snmplib/Makefile.in b/snmplib/Makefile.in
index afd5624..c1a086d 100644
--- a/snmplib/Makefile.in
+++ b/snmplib/Makefile.in
@@ -47,6 +47,7 @@
 INCLUDESUBDIRHEADERS=README \
 	asn1.h \
 	callback.h \
+	cert_util.h \
 	container.h \
 	container_binary_array.h \
 	container_list_ssll.h \
@@ -87,6 +88,7 @@
         getopt.h \
         lcd_time.h \
         mt_support.h \
+        oid.h \
         oid_stash.h \
         snmp_enum.h \
         snmp_secmod.h \
@@ -138,7 +140,7 @@
 # Things to build
 #
 CSRCS=	snmp_client.c mib.c parse.c snmp_api.c snmp.c 		\
-	large_fd_set.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	\
@@ -146,15 +148,16 @@
 	scapi.c callback.c default_store.c snmp_alarm.c		\
 	data_list.c oid_stash.c fd_event_manager.c 		\
 	mt_support.c snmp_enum.c snmp-tc.c snmp_service.c	\
-	snprintf.c strlcat.c strlcpy.c strtol.c strtoul.c	\
-	strtok_r.c snmp_transport.c @transport_src_list@	\
+	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@
+	cmu_compat.c ucd_compat.c                               \
+	snmp_openssl.c @other_src_list@ @crypto_files_c@
 
 OBJS=	snmp_client.o mib.o parse.o snmp_api.o snmp.o 		\
-	large_fd_set.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	\
@@ -162,15 +165,16 @@
 	scapi.o callback.o default_store.o snmp_alarm.o		\
 	data_list.o oid_stash.o fd_event_manager.o		\
 	mt_support.o snmp_enum.o snmp-tc.o snmp_service.o	\
-	snprintf.o strlcat.o strlcpy.o strtol.o strtoul.o	\
-	strtok_r.o snmp_transport.o @transport_obj_list@	\
+	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 @other_objs_list@
+	cmu_compat.o ucd_compat.o                               \
+        snmp_openssl.o @crypto_files_o@ @other_objs_list@ @LIBOBJS@
 
 LOBJS=	snmp_client.lo mib.lo parse.lo snmp_api.lo snmp.lo 	\
-	large_fd_set.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	\
@@ -178,12 +182,13 @@
 	scapi.lo callback.lo default_store.lo snmp_alarm.lo		\
 	data_list.lo oid_stash.lo fd_event_manager.lo		\
 	mt_support.lo snmp_enum.lo snmp-tc.lo snmp_service.lo	\
-	snprintf.lo strlcat.lo strlcpy.lo strtol.lo strtoul.lo	\
-	strtok_r.lo snmp_transport.lo @transport_lobj_list@	\
-	snmp_secmod.lo @security_lobj_list@ snmp_version.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 @other_lobjs_list@
+	cmu_compat.lo ucd_compat.lo                             \
+        snmp_openssl.lo @crypto_files_lo@ @other_lobjs_list@ @LTLIBOBJS@
 
 # just in case someone wants to remove libtool, change this to OBJS.
 TOBJS=$(LOBJS)
@@ -195,11 +200,11 @@
 
 # how to build the libraries.
 libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ @LD_NO_UNDEFINED@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 libsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ @LD_NO_UNDEFINED@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 #
diff --git a/snmplib/asn1.c b/snmplib/asn1.c
index f9632ef..bea8d0b 100644
--- a/snmplib/asn1.c
+++ b/snmplib/asn1.c
@@ -170,9 +170,6 @@
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -582,8 +579,8 @@
         (errpre, bufp, data, asn_length, *datalength))
         return NULL;
 
-    if (((int) asn_length > (intsize + 1)) || ((int) asn_length == 0) ||
-        (((int) asn_length == intsize + 1) && *bufp != 0x00)) {
+    if ((asn_length > (intsize + 1)) || ((int) asn_length == 0) ||
+        ((asn_length == intsize + 1) && *bufp != 0x00)) {
         _asn_length_err(errpre, (size_t) asn_length, intsize);
         return NULL;
     }
@@ -828,7 +825,7 @@
         return NULL;
     }
 
-    if ((int) asn_length > *strlength) {
+    if (asn_length > *strlength) {
         _asn_length_err(errpre, (size_t) asn_length, *strlength);
         return NULL;
     }
@@ -836,10 +833,10 @@
     DEBUGDUMPSETUP("recv", data, bufp - data + asn_length);
 
     memmove(str, bufp, asn_length);
-    if (*strlength > (int) asn_length)
+    if (*strlength > asn_length)
         str[asn_length] = 0;
-    *strlength = (int) asn_length;
-    *datalength -= (int) asn_length + (bufp - data);
+    *strlength = asn_length;
+    *datalength -= asn_length + (bufp - data);
 
     DEBUGIF("dumpv_recv") {
         u_char         *buf = (u_char *) malloc(1 + asn_length);
diff --git a/snmplib/callback.c b/snmplib/callback.c
index e434042..fea0f25 100644
--- a/snmplib/callback.c
+++ b/snmplib/callback.c
@@ -22,9 +22,6 @@
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -115,7 +112,7 @@
 #endif
 
 NETSNMP_STATIC_INLINE int
-_callback_lock(int major, int minor, const char* warn, int assert)
+_callback_lock(int major, int minor, const char* warn, int do_assert)
 {
     int lock_holded=0;
     struct timeval lock_time = { 0, 1000 };
@@ -139,7 +136,7 @@
         if (NULL != warn)
             snmp_log(LOG_WARNING,
                      "lock in _callback_lock sleeps more than 100 milliseconds in %s\n", warn);
-        if (assert)
+        if (do_assert)
             netsnmp_assert(lock_holded < 100);
         
         return 1;
diff --git a/snmplib/cert_util.c b/snmplib/cert_util.c
new file mode 100644
index 0000000..6b2cb30
--- /dev/null
+++ b/snmplib/cert_util.c
@@ -0,0 +1,3299 @@
+#include <net-snmp/net-snmp-config.h>
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <ctype.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+
+#if HAVE_SYS_STAT_H
+#   include <sys/stat.h>
+#endif
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/config_api.h>
+
+#include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/container.h>
+#include <net-snmp/library/data_list.h>
+#include <net-snmp/library/file_utils.h>
+#include <net-snmp/library/dir_utils.h>
+#include <net-snmp/library/read_config.h>
+
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#include <openssl/x509v3.h>
+#include <net-snmp/library/cert_util.h>
+#include <net-snmp/library/snmp_openssl.h>
+
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+
+/*
+ * bump this value whenever cert index format changes, so indexes
+ * will be regenerated with new format.
+ */
+#define CERT_INDEX_FORMAT  1
+
+static netsnmp_container *_certs = NULL;
+static netsnmp_container *_keys = NULL;
+static netsnmp_container *_maps = NULL;
+static netsnmp_container *_tlstmParams = NULL;
+static netsnmp_container *_tlstmAddr = NULL;
+static struct snmp_enum_list *_certindexes = NULL;
+
+static netsnmp_container *_trusted_certs = NULL;
+
+static void _setup_containers(void);
+
+static void _cert_indexes_load(void);
+static void _cert_free(netsnmp_cert *cert, void *context);
+static void _key_free(netsnmp_key *key, void *context);
+static int  _cert_compare(netsnmp_cert *lhs, netsnmp_cert *rhs);
+static int  _cert_sn_compare(netsnmp_cert *lhs, netsnmp_cert *rhs);
+static int  _cert_sn_ncompare(netsnmp_cert *lhs, netsnmp_cert *rhs);
+static int  _cert_cn_compare(netsnmp_cert *lhs, netsnmp_cert *rhs);
+static int  _cert_fn_compare(netsnmp_cert_common *lhs,
+                             netsnmp_cert_common *rhs);
+static int  _cert_fn_ncompare(netsnmp_cert_common *lhs,
+                              netsnmp_cert_common *rhs);
+static void _find_partner(netsnmp_cert *cert, netsnmp_key *key);
+static netsnmp_cert *_find_issuer(netsnmp_cert *cert);
+static netsnmp_void_array *_cert_find_subset_fn(const char *filename,
+                                                const char *directory);
+static netsnmp_void_array *_cert_find_subset_sn(const char *subject);
+static netsnmp_void_array *_key_find_subset(const char *filename);
+static netsnmp_cert *_cert_find_fp(const char *fingerprint);
+static char *_find_tlstmParams_fingerprint(const char *param);
+static char *_find_tlstmAddr_fingerprint(const char *name);
+static const char *_mode_str(u_char mode);
+static const char *_where_str(u_int what);
+void netsnmp_cert_dump_all(void);
+
+int netsnmp_cert_load_x509(netsnmp_cert *cert);
+
+void netsnmp_cert_free(netsnmp_cert *cert);
+void netsnmp_key_free(netsnmp_key *key);
+
+static int _certindex_add( const char *dirname, int i );
+
+static int _time_filter(netsnmp_file *f, struct stat *idx);
+
+static void _init_tlstmCertToTSN(void);
+#define TRUSTCERT_CONFIG_TOKEN "trustCert"
+static void _parse_trustcert(const char *token, char *line);
+
+static void _init_tlstmParams(void);
+static void _init_tlstmAddr(void);
+
+/** mode descriptions should match up with header */
+static const char _modes[][256] =
+        {
+            "none",
+            "identity",
+            "remote_peer",
+            "identity+remote_peer",
+            "reserved1",
+            "reserved1+identity",
+            "reserved1+remote_peer",
+            "reserved1+identity+remote_peer",
+            "CA",
+            "CA+identity",
+            "CA+remote_peer",
+            "CA+identity+remote_peer",
+            "CA+reserved1",
+            "CA+reserved1+identity",
+            "CA+reserved1+remote_peer",
+            "CA+reserved1+identity+remote_peer",
+        };
+
+/* #####################################################################
+ *
+ * init and shutdown functions
+ *
+ */
+
+void
+_netsnmp_release_trustcerts(void)
+{
+    if (NULL != _trusted_certs) {
+        CONTAINER_FREE_ALL(_trusted_certs, NULL);
+        CONTAINER_FREE(_trusted_certs);
+        _trusted_certs = NULL;
+    }
+}
+
+void
+_setup_trusted_certs(void)
+{
+    _trusted_certs = netsnmp_container_find("trusted_certs:fifo");
+    if (NULL == _trusted_certs) {
+        snmp_log(LOG_ERR, "could not create container for trusted certs\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    _trusted_certs->container_name = strdup("trusted certificates");
+    _trusted_certs->free_item = (netsnmp_container_obj_func*) free;
+    _trusted_certs->compare = (netsnmp_container_compare*) strcmp;
+}
+
+/*
+ * secname mapping for servers.
+ */
+void
+netsnmp_certs_agent_init(void)
+{
+    _init_tlstmCertToTSN();
+    _init_tlstmParams();
+    _init_tlstmAddr();
+}
+
+void
+netsnmp_certs_init(void)
+{
+    const char *trustCert_help = TRUSTCERT_CONFIG_TOKEN
+        " FINGERPRINT|FILENAME";
+
+    register_config_handler("snmp", TRUSTCERT_CONFIG_TOKEN,
+                            _parse_trustcert, _netsnmp_release_trustcerts,
+                            trustCert_help);
+    _setup_containers();
+
+    /** add certificate type mapping */
+    se_add_pair_to_slist("cert_types", strdup("pem"), NS_CERT_TYPE_PEM);
+    se_add_pair_to_slist("cert_types", strdup("crt"), NS_CERT_TYPE_DER);
+    se_add_pair_to_slist("cert_types", strdup("cer"), NS_CERT_TYPE_DER);
+    se_add_pair_to_slist("cert_types", strdup("cert"), NS_CERT_TYPE_DER);
+    se_add_pair_to_slist("cert_types", strdup("der"), NS_CERT_TYPE_DER);
+    se_add_pair_to_slist("cert_types", strdup("key"), NS_CERT_TYPE_KEY);
+    se_add_pair_to_slist("cert_types", strdup("private"), NS_CERT_TYPE_KEY);
+
+    /** hash algs */
+    se_add_pair_to_slist("cert_hash_alg", strdup("sha1"), NS_HASH_SHA1);
+    se_add_pair_to_slist("cert_hash_alg", strdup("md5"), NS_HASH_MD5);
+    se_add_pair_to_slist("cert_hash_alg", strdup("sha224"), NS_HASH_SHA224);
+    se_add_pair_to_slist("cert_hash_alg", strdup("sha256"), NS_HASH_SHA256);
+    se_add_pair_to_slist("cert_hash_alg", strdup("sha384"), NS_HASH_SHA384);
+    se_add_pair_to_slist("cert_hash_alg", strdup("sha512"), NS_HASH_SHA512);
+
+    /** map types */
+    se_add_pair_to_slist("cert_map_type", strdup("cn"),
+                         TSNM_tlstmCertCommonName);
+    se_add_pair_to_slist("cert_map_type", strdup("ip"),
+                         TSNM_tlstmCertSANIpAddress);
+    se_add_pair_to_slist("cert_map_type", strdup("rfc822"),
+                         TSNM_tlstmCertSANRFC822Name);
+    se_add_pair_to_slist("cert_map_type", strdup("dns"),
+                         TSNM_tlstmCertSANDNSName);
+    se_add_pair_to_slist("cert_map_type", strdup("any"), TSNM_tlstmCertSANAny);
+    se_add_pair_to_slist("cert_map_type", strdup("sn"),
+                         TSNM_tlstmCertSpecified);
+
+}
+
+void
+netsnmp_certs_shutdown(void)
+{
+    DEBUGMSGT(("cert:util:shutdown","shutdown\n"));
+    if (NULL != _certs) {
+        CONTAINER_FREE_ALL(_certs, NULL);
+        CONTAINER_FREE(_certs);
+        _certs = NULL;
+    }
+    if (NULL != _keys) {
+        CONTAINER_FREE_ALL(_keys, NULL);
+        CONTAINER_FREE(_keys);
+        _keys = NULL;
+    }
+    _netsnmp_release_trustcerts();
+}
+
+void
+netsnmp_certs_load(void)
+{
+    netsnmp_iterator  *itr;
+    netsnmp_key        *key;
+    netsnmp_cert       *cert;
+
+    DEBUGMSGT(("cert:util:init","init\n"));
+
+    if (NULL == _certs) {
+        snmp_log(LOG_ERR, "cant load certs without container\n");
+        return;
+    }
+
+    if (CONTAINER_SIZE(_certs) != 0) {
+        DEBUGMSGT(("cert:util:init", "ignoring duplicate init\n"));
+        return;
+    }
+
+    netsnmp_init_openssl();
+
+    /** scan config dirs for certs */
+    _cert_indexes_load();
+
+    /** match up keys w/certs */
+    itr = CONTAINER_ITERATOR(_keys);
+    if (NULL == itr) {
+        snmp_log(LOG_ERR, "could not get iterator for keys\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    key = ITERATOR_FIRST(itr);
+    for( ; key; key = ITERATOR_NEXT(itr))
+        _find_partner(NULL, key);
+    ITERATOR_RELEASE(itr);
+
+    DEBUGIF("cert:dump") {
+        itr = CONTAINER_ITERATOR(_certs);
+        if (NULL == itr) {
+            snmp_log(LOG_ERR, "could not get iterator for certs\n");
+            netsnmp_certs_shutdown();
+            return;
+        }
+        cert = ITERATOR_FIRST(itr);
+        for( ; cert; cert = ITERATOR_NEXT(itr)) {
+            netsnmp_cert_load_x509(cert);
+        }
+        ITERATOR_RELEASE(itr);
+        DEBUGMSGT(("cert:dump",
+                   "-------------------- Certificates -----------------\n"));
+        netsnmp_cert_dump_all();
+        DEBUGMSGT(("cert:dump",
+                   "------------------------ End ----------------------\n"));
+    }
+}
+
+/* #####################################################################
+ *
+ * cert container functions
+ */
+
+static netsnmp_container *
+_get_cert_container(const char *use)
+{
+    netsnmp_container *c;
+
+    c = netsnmp_container_find("certs:binary_array");
+    if (NULL == c) {
+        snmp_log(LOG_ERR, "could not create container for %s\n", use);
+        return NULL;
+    }
+    c->container_name = strdup(use);
+    c->free_item = (netsnmp_container_obj_func*)_cert_free;
+    c->compare = (netsnmp_container_compare*)_cert_compare;
+
+    return c;
+}
+
+static void
+_setup_containers(void)
+{
+    netsnmp_container *additional_keys;
+
+    _certs = _get_cert_container("netsnmp certificates");
+    if (NULL == _certs)
+        return;
+
+    /** additional keys: common name */
+    additional_keys = netsnmp_container_find("certs_cn:binary_array");
+    if (NULL == additional_keys) {
+        snmp_log(LOG_ERR, "could not create CN container for certificates\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    additional_keys->container_name = strdup("certs_cn");
+    additional_keys->free_item = NULL;
+    additional_keys->compare = (netsnmp_container_compare*)_cert_cn_compare;
+    netsnmp_container_add_index(_certs, additional_keys);
+
+    /** additional keys: subject name */
+    additional_keys = netsnmp_container_find("certs_sn:binary_array");
+    if (NULL == additional_keys) {
+        snmp_log(LOG_ERR, "could not create SN container for certificates\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    additional_keys->container_name = strdup("certs_sn");
+    additional_keys->free_item = NULL;
+    additional_keys->compare = (netsnmp_container_compare*)_cert_sn_compare;
+    additional_keys->ncompare = (netsnmp_container_compare*)_cert_sn_ncompare;
+    netsnmp_container_add_index(_certs, additional_keys);
+
+    /** additional keys: file name */
+    additional_keys = netsnmp_container_find("certs_fn:binary_array");
+    if (NULL == additional_keys) {
+        snmp_log(LOG_ERR, "could not create FN container for certificates\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    additional_keys->container_name = strdup("certs_fn");
+    additional_keys->free_item = NULL;
+    additional_keys->compare = (netsnmp_container_compare*)_cert_fn_compare;
+    additional_keys->ncompare = (netsnmp_container_compare*)_cert_fn_ncompare;
+    netsnmp_container_add_index(_certs, additional_keys);
+
+    _keys = netsnmp_container_find("cert_keys:binary_array");
+    if (NULL == _keys) {
+        snmp_log(LOG_ERR, "could not create container for certificate keys\n");
+        netsnmp_certs_shutdown();
+        return;
+    }
+    _keys->container_name = strdup("netsnmp certificate keys");
+    _keys->free_item = (netsnmp_container_obj_func*)_key_free;
+    _keys->compare = (netsnmp_container_compare*)_cert_fn_compare;
+
+    _setup_trusted_certs();
+}
+
+netsnmp_container *
+netsnmp_cert_map_container(void)
+{
+    return _maps;
+}
+
+static netsnmp_cert *
+_new_cert(const char *dirname, const char *filename, int certType,
+          int hashType, const char *fingerprint, const char *common_name,
+          const char *subject)
+{
+    netsnmp_cert    *cert;
+
+    if ((NULL == dirname) || (NULL == filename)) {
+        snmp_log(LOG_ERR, "bad parameters to _new_cert\n");
+        return NULL;
+    }
+
+    cert = SNMP_MALLOC_TYPEDEF(netsnmp_cert);
+    if (NULL == cert) {
+        snmp_log(LOG_ERR,"could not allocate memory for certificate at %s/%s\n",
+                 dirname, filename);
+        return NULL;
+    }
+
+    DEBUGMSGT(("9:cert:struct:new","new cert 0x%#lx for %s\n", (u_long)cert,
+                  filename));
+
+    cert->info.dir = strdup(dirname);
+    cert->info.filename = strdup(filename);
+    cert->info.allowed_uses = NS_CERT_REMOTE_PEER;
+    cert->info.type = certType;
+    if (fingerprint) {
+        cert->hash_type = hashType;
+        cert->fingerprint = strdup(fingerprint);
+    }
+    if (common_name)
+        cert->common_name = strdup(common_name);
+    if (subject)
+        cert->subject = strdup(subject);
+
+    return cert;
+}
+
+static netsnmp_key *
+_new_key(const char *dirname, const char *filename)
+{
+    netsnmp_key    *key;
+    struct stat     fstat;
+    char            fn[SNMP_MAXPATH];
+
+    if ((NULL == dirname) || (NULL == filename)) {
+        snmp_log(LOG_ERR, "bad parameters to _new_key\n");
+        return NULL;
+    }
+
+    /** check file permissions */
+    snprintf(fn, sizeof(fn), "%s/%s", dirname, filename);
+    if (stat(fn, &fstat) != 0) {
+        snmp_log(LOG_ERR, "could  not stat %s\n", fn);
+        return NULL;
+    }
+
+    if ((fstat.st_mode & S_IROTH) || (fstat.st_mode & S_IROTH)) {
+        snmp_log(LOG_ERR,
+                 "refusing to read world readable or writable key %s\n", fn);
+        return NULL;
+    }
+
+    key = SNMP_MALLOC_TYPEDEF(netsnmp_key);
+    if (NULL == key) {
+        snmp_log(LOG_ERR, "could not allocate memory for key at %s/%s\n",
+                 dirname, filename);
+        return NULL;
+    }
+
+    DEBUGMSGT(("cert:key:struct:new","new key 0x%#lx for %s\n", (u_long)key,
+               filename));
+
+    key->info.type = NS_CERT_TYPE_KEY;
+    key->info.dir = strdup(dirname);
+    key->info.filename = strdup(filename);
+    key->info.allowed_uses = NS_CERT_IDENTITY;
+
+    return key;
+}
+
+void
+netsnmp_cert_free(netsnmp_cert *cert)
+{
+    if (NULL == cert)
+        return;
+
+    DEBUGMSGT(("9:cert:struct:free","freeing cert 0x%#lx, %s (fp %s; CN %s)\n",
+               (u_long)cert, cert->info.filename ? cert->info.filename : "UNK",
+               cert->fingerprint ? cert->fingerprint : "UNK",
+               cert->common_name ? cert->common_name : "UNK"));
+
+    SNMP_FREE(cert->info.dir);
+    SNMP_FREE(cert->info.filename);
+    SNMP_FREE(cert->subject);
+    SNMP_FREE(cert->issuer);
+    SNMP_FREE(cert->fingerprint);
+    SNMP_FREE(cert->common_name);
+    if (cert->ocert)
+        X509_free(cert->ocert);
+    if (cert->key && cert->key->cert == cert)
+        cert->key->cert = NULL;
+
+    free(cert); /* SNMP_FREE not needed on parameters */
+}
+
+void
+netsnmp_key_free(netsnmp_key *key)
+{
+    if (NULL == key)
+        return;
+
+    DEBUGMSGT(("cert:key:struct:free","freeing key 0x%#lx, %s\n",
+               (u_long)key, key->info.filename ? key->info.filename : "UNK"));
+
+    SNMP_FREE(key->info.dir);
+    SNMP_FREE(key->info.filename);
+    EVP_PKEY_free(key->okey);
+    if (key->cert && key->cert->key == key)
+        key->cert->key = NULL;
+
+    free(key); /* SNMP_FREE not needed on parameters */
+}
+
+static void
+_cert_free(netsnmp_cert *cert, void *context)
+{
+    netsnmp_cert_free(cert);
+}
+
+static void
+_key_free(netsnmp_key *key, void *context)
+{
+    netsnmp_key_free(key);
+}
+
+static int
+_cert_compare(netsnmp_cert *lhs, netsnmp_cert *rhs)
+{
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+    netsnmp_assert((lhs->fingerprint != NULL) &&
+                   (rhs->fingerprint != NULL));
+
+    /** ignore hash type? */
+    return strcmp(lhs->fingerprint, rhs->fingerprint);
+}
+
+static int
+_cert_path_compare(netsnmp_cert_common *lhs, netsnmp_cert_common *rhs)
+{
+    int rc;
+
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+    
+    /** dir name first */
+    rc = strcmp(lhs->dir, rhs->dir);
+    if (rc)
+        return rc;
+
+    /** filename */
+    return strcmp(lhs->filename, rhs->filename);
+}
+
+static int
+_cert_cn_compare(netsnmp_cert *lhs, netsnmp_cert *rhs)
+{
+    int rc;
+    const char *lhcn, *rhcn;
+
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    if (NULL == lhs->common_name)
+        lhcn = "";
+    else
+        lhcn = lhs->common_name;
+    if (NULL == rhs->common_name)
+        rhcn = "";
+    else
+        rhcn = rhs->common_name;
+
+    rc = strcmp(lhcn, rhcn);
+    if (rc)
+        return rc;
+
+    /** in case of equal common names, sub-sort by path */
+    return _cert_path_compare((netsnmp_cert_common*)lhs,
+                              (netsnmp_cert_common*)rhs);
+}
+
+static int
+_cert_sn_compare(netsnmp_cert *lhs, netsnmp_cert *rhs)
+{
+    int rc;
+    const char *lhsn, *rhsn;
+
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    if (NULL == lhs->subject)
+        lhsn = "";
+    else
+        lhsn = lhs->subject;
+    if (NULL == rhs->subject)
+        rhsn = "";
+    else
+        rhsn = rhs->subject;
+
+    rc = strcmp(lhsn, rhsn);
+    if (rc)
+        return rc;
+
+    /** in case of equal common names, sub-sort by path */
+    return _cert_path_compare((netsnmp_cert_common*)lhs,
+                              (netsnmp_cert_common*)rhs);
+}
+
+static int
+_cert_fn_compare(netsnmp_cert_common *lhs, netsnmp_cert_common *rhs)
+{
+    int rc;
+
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    rc = strcmp(lhs->filename, rhs->filename);
+    if (rc)
+        return rc;
+
+    /** in case of equal common names, sub-sort by dir */
+    return strcmp(lhs->dir, rhs->dir);
+}
+
+static int
+_cert_fn_ncompare(netsnmp_cert_common *lhs, netsnmp_cert_common *rhs)
+{
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+    netsnmp_assert((lhs->filename != NULL) && (rhs->filename != NULL));
+
+    return strncmp(lhs->filename, rhs->filename, strlen(rhs->filename));
+}
+
+static int
+_cert_sn_ncompare(netsnmp_cert *lhs, netsnmp_cert *rhs)
+{
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+    netsnmp_assert((lhs->subject != NULL) && (rhs->subject != NULL));
+
+    return strncmp(lhs->subject, rhs->subject, strlen(rhs->subject));
+}
+
+static int
+_cert_ext_type(const char *ext)
+{
+    int rc = se_find_value_in_slist("cert_types", ext);
+    if (SE_DNE == rc)
+        return NS_CERT_TYPE_UNKNOWN;
+    return rc;
+}
+
+static int
+_type_from_filename(const char *filename)
+{
+    char     *pos;
+    int       type;
+
+    if (NULL == filename)
+        return NS_CERT_TYPE_UNKNOWN;
+
+    pos = strrchr(filename, '.');
+    if (NULL == pos)
+        return NS_CERT_TYPE_UNKNOWN;
+
+    type = _cert_ext_type(++pos);
+    return type;
+}
+
+/*
+ * filter functions; return 1 to include file, 0 to exclude
+ */
+static int
+_cert_cert_filter(const char *filename)
+{
+    int  len = strlen(filename);
+    const char *pos;
+
+    if (len < 5) /* shortest name: x.YYY */
+        return 0;
+
+    pos = strrchr(filename, '.');
+    if (NULL == pos)
+        return 0;
+
+    if (_cert_ext_type(++pos) != NS_CERT_TYPE_UNKNOWN)
+        return 1;
+
+    return 0;
+}
+
+/* #####################################################################
+ *
+ * cert index functions
+ *
+ * This code mimics what the mib index code does. The persistent
+ * directory will have a subdirectory named 'cert_indexes'. Inside
+ * this directory will be some number of files with ascii numeric
+ * names (0, 1, 2, etc). Each of these files will start with a line
+ * with the text "DIR ", followed by a directory name. The rest of the
+ * file will be certificate fields and the certificate file name, one
+ * certificate per line. The numeric file name is the integer 'directory
+ * index'.
+ */
+
+/**
+ * _certindex_add
+ *
+ * add a directory name to the indexes
+ */
+static int
+_certindex_add( const char *dirname, int i )
+{
+    int rc;
+    char *dirname_copy = strdup(dirname);
+
+    if ( i == -1 ) {
+        int max = se_find_free_value_in_list(_certindexes);
+        if (SE_DNE == max)
+            i = 0;
+        else
+            i = max;
+    }
+
+    DEBUGMSGT(("cert:index:add","dir %s at index %d\n", dirname, i ));
+    rc = se_add_pair_to_list(&_certindexes, dirname_copy, i);
+    if (SE_OK != rc) {
+        snmp_log(LOG_ERR, "adding certindex dirname failed; "
+                 "%d (%s) not added\n", i, dirname);
+        return -1;
+    }
+
+    return i;
+}
+
+/**
+ * _certindex_load
+ *
+ * read in the existing indexes
+ */
+static void
+_certindexes_load( void )
+{
+    DIR *dir;
+    struct dirent *file;
+    FILE *fp;
+    char filename[SNMP_MAXPATH], line[300];
+    int  i;
+    char *cp, *pos;
+
+    /*
+     * Open the CERT index directory, or create it (empty)
+     */
+    snprintf( filename, sizeof(filename), "%s/cert_indexes",
+              get_persistent_directory());
+    filename[sizeof(filename)-1] = 0;
+    dir = opendir( filename );
+    if ( dir == NULL ) {
+        DEBUGMSGT(("cert:index:load",
+                   "creating new cert_indexes directory\n"));
+        mkdirhier( filename, NETSNMP_AGENT_DIRECTORY_MODE, 0);
+        return;
+    }
+
+    /*
+     * Create a list of which directory each file refers to
+     */
+    while ((file = readdir( dir ))) {
+        if ( !isdigit(0xFF & file->d_name[0]))
+            continue;
+        i = atoi( file->d_name );
+
+        snprintf( filename, sizeof(filename), "%s/cert_indexes/%d",
+              get_persistent_directory(), i );
+        filename[sizeof(filename)-1] = 0;
+        fp = fopen( filename, "r" );
+        if ( !fp ) {
+            DEBUGMSGT(("cert:index:load", "error opening index (%d)\n", i));
+            continue;
+        }
+        cp = fgets( line, sizeof(line), fp );
+        if ( cp ) {
+            line[strlen(line)-1] = 0;
+            pos = strrchr(line, ' ');
+            if (pos)
+                *pos = '\0';
+            DEBUGMSGT(("9:cert:index:load","adding (%d) %s\n", i, line));
+            (void)_certindex_add( line+4, i );  /* Skip 'DIR ' */
+        } else {
+            DEBUGMSGT(("cert:index:load", "Empty index (%d)\n", i));
+        }
+        fclose( fp );
+    }
+    closedir( dir );
+}
+
+/**
+ * _certindex_lookup
+ *
+ * find index for a directory
+ */
+static char *
+_certindex_lookup( const char *dirname )
+{
+    int i;
+    char filename[SNMP_MAXPATH];
+
+
+    i = se_find_value_in_list(_certindexes, dirname);
+    if (SE_DNE == i) {
+        DEBUGMSGT(("9:cert:index:lookup","%s : (none)\n", dirname));
+        return NULL;
+    }
+
+    snprintf(filename, sizeof(filename), "%s/cert_indexes/%d",
+             get_persistent_directory(), i);
+    filename[sizeof(filename)-1] = 0;
+    DEBUGMSGT(("cert:index:lookup", "%s (%d) %s\n", dirname, i, filename ));
+    return strdup(filename);
+}
+
+static FILE *
+_certindex_new( const char *dirname )
+{
+    FILE *fp;
+    char  filename[SNMP_MAXPATH], *cp;
+    int   i;
+
+    cp = _certindex_lookup( dirname );
+    if (!cp) {
+        i  = _certindex_add( dirname, -1 );
+        if (-1 == i)
+            return NULL; /* msg already logged */
+        snprintf( filename, sizeof(filename), "%s/cert_indexes/%d",
+                  get_persistent_directory(), i );
+        filename[sizeof(filename)-1] = 0;
+        cp = filename;
+    }
+    DEBUGMSGT(("9:cert:index:new", "%s (%s)\n", dirname, cp ));
+    fp = fopen( cp, "w" );
+    if (fp)
+        fprintf( fp, "DIR %s %d\n", dirname, CERT_INDEX_FORMAT );
+    else
+        DEBUGMSGTL(("cert:index", "error opening new index file %s\n", dirname));
+
+    if (cp != filename)
+        free(cp);
+
+    return fp;
+}
+
+/* #####################################################################
+ *
+ * certificate utility functions
+ *
+ */
+static X509 *
+netsnmp_ocert_get(netsnmp_cert *cert)
+{
+    BIO            *certbio;
+    X509           *ocert = NULL;
+    EVP_PKEY       *okey = NULL;
+    char            file[SNMP_MAXPATH];
+    int             is_ca;
+
+    if (NULL == cert)
+        return NULL;
+
+    if (cert->ocert)
+        return cert->ocert;
+
+    if (NS_CERT_TYPE_UNKNOWN == cert->info.type) {
+        cert->info.type = _type_from_filename(cert->info.filename);
+        if (NS_CERT_TYPE_UNKNOWN == cert->info.type) {
+            snmp_log(LOG_ERR, "unknown certificate type %d for %s\n",
+                     cert->info.type, cert->info.filename);
+            return NULL;
+        }
+    }
+
+    DEBUGMSGT(("9:cert:read", "Checking file %s\n", cert->info.filename));
+
+    certbio = BIO_new(BIO_s_file());
+    if (NULL == certbio) {
+        snmp_log(LOG_ERR, "error creating BIO\n");
+        return NULL;
+    }
+
+    snprintf(file, sizeof(file),"%s/%s", cert->info.dir, cert->info.filename);
+    if (BIO_read_filename(certbio, file) <=0) {
+        snmp_log(LOG_ERR, "error reading certificate %s into BIO\n", file);
+        BIO_vfree(certbio);
+        return NULL;
+    }
+
+    if (NS_CERT_TYPE_UNKNOWN == cert->info.type) {
+        char *pos = strrchr(cert->info.filename, '.');
+        if (NULL == pos)
+            return NULL;
+        cert->info.type = _cert_ext_type(++pos);
+        netsnmp_assert(cert->info.type != NS_CERT_TYPE_UNKNOWN);
+    }
+
+    switch (cert->info.type) {
+
+        case NS_CERT_TYPE_DER:
+            ocert = d2i_X509_bio(certbio,NULL); /* DER/ASN1 */
+            if (NULL != ocert)
+                break;
+            (void)BIO_reset(certbio);
+            /** FALLTHROUGH: check for PEM if DER didn't work */
+
+        case NS_CERT_TYPE_PEM:
+            ocert = PEM_read_bio_X509_AUX(certbio, NULL, NULL, NULL);
+            if (NULL == ocert)
+                break;
+            if (NS_CERT_TYPE_DER == cert->info.type) {
+                DEBUGMSGT(("9:cert:read", "Changing type from DER to PEM\n"));
+                cert->info.type = NS_CERT_TYPE_PEM;
+            }
+            /** check for private key too */
+            if (NULL == cert->key) {
+                (void)BIO_reset(certbio);
+                okey =  PEM_read_bio_PrivateKey(certbio, NULL, NULL, NULL);
+                if (NULL != okey) {
+                    netsnmp_key  *key;
+                    DEBUGMSGT(("cert:read:key", "found key with cert in %s\n",
+                               cert->info.filename));
+                    key = _new_key(cert->info.dir, cert->info.filename);
+                    if (NULL != key) {
+                        key->okey = okey;
+                        if (-1 == CONTAINER_INSERT(_keys, key)) {
+                            DEBUGMSGT(("cert:read:key:add",
+                                       "error inserting key into container\n"));
+                            netsnmp_key_free(key);
+                            key = NULL;
+                        }
+                        else {
+                            DEBUGMSGT(("cert:read:partner", "%s match found!\n",
+                                       cert->info.filename));
+                            key->cert = cert;
+                            cert->key = key;
+                            cert->info.allowed_uses |= NS_CERT_IDENTITY;
+                        }
+                    }
+                } /* null return from read */
+            } /* null key */
+            break;
+#ifdef CERT_PKCS12_SUPPORT_MAYBE_LATER
+        case NS_CERT_TYPE_PKCS12:
+            (void)BIO_reset(certbio);
+            PKCS12 *p12 = d2i_PKCS12_bio(certbio, NULL);
+            if ( (NULL != p12) && (PKCS12_verify_mac(p12, "", 0) ||
+                                   PKCS12_verify_mac(p12, NULL, 0)))
+                PKCS12_parse(p12, "", NULL, &cert, NULL);
+            break;
+#endif
+        default:
+            snmp_log(LOG_ERR, "unknown certificate type %d for %s\n",
+                     cert->info.type, cert->info.filename);
+    }
+
+    BIO_vfree(certbio);
+
+    if (NULL == ocert) {
+        snmp_log(LOG_ERR, "error parsing certificate file %s\n",
+                 cert->info.filename);
+        return NULL;
+    }
+
+    cert->ocert = ocert;
+    /*
+     * X509_check_ca return codes:
+     * 0 not a CA
+     * 1 is a CA
+     * 2 basicConstraints absent so "maybe" a CA
+     * 3 basicConstraints absent but self signed V1.
+     * 4 basicConstraints absent but keyUsage present and keyCertSign asserted.
+     * 5 outdated Netscape Certificate Type CA extension.
+     */
+    is_ca = X509_check_ca(ocert);
+    if (1 == is_ca)
+        cert->info.allowed_uses |= NS_CERT_CA;
+
+    if (NULL == cert->subject) {
+        cert->subject = X509_NAME_oneline(X509_get_subject_name(ocert), NULL,
+                                          0);
+        DEBUGMSGT(("9:cert:add:subject", "subject name: %s\n", cert->subject));
+    }
+
+    if (NULL == cert->issuer) {
+        cert->issuer = X509_NAME_oneline(X509_get_issuer_name(ocert), NULL, 0);
+        if (strcmp(cert->subject, cert->issuer) == 0) {
+            free(cert->issuer);
+            cert->issuer = strdup("self-signed");
+        }
+        DEBUGMSGT(("9:cert:add:issuer", "CA issuer: %s\n", cert->issuer));
+    }
+    
+    if (NULL == cert->fingerprint) {
+        cert->hash_type = netsnmp_openssl_cert_get_hash_type(ocert);
+        cert->fingerprint =
+            netsnmp_openssl_cert_get_fingerprint(ocert, cert->hash_type);
+    }
+    
+    if (NULL == cert->common_name) {
+        cert->common_name =netsnmp_openssl_cert_get_commonName(ocert, NULL,
+                                                               NULL);
+        DEBUGMSGT(("9:cert:add:name","%s\n", cert->common_name));
+    }
+
+    return ocert;
+}
+
+EVP_PKEY *
+netsnmp_okey_get(netsnmp_key  *key)
+{
+    BIO            *keybio;
+    EVP_PKEY       *okey;
+    char            file[SNMP_MAXPATH];
+
+    if (NULL == key)
+        return NULL;
+
+    if (key->okey)
+        return key->okey;
+
+    snprintf(file, sizeof(file),"%s/%s", key->info.dir, key->info.filename);
+    DEBUGMSGT(("cert:key:read", "Checking file %s\n", key->info.filename));
+
+    keybio = BIO_new(BIO_s_file());
+    if (NULL == keybio) {
+        snmp_log(LOG_ERR, "error creating BIO\n");
+        return NULL;
+    }
+
+    if (BIO_read_filename(keybio, file) <=0) {
+        snmp_log(LOG_ERR, "error reading certificate %s into BIO\n",
+                 key->info.filename);
+        BIO_vfree(keybio);
+        return NULL;
+    }
+
+    okey = PEM_read_bio_PrivateKey(keybio, NULL, NULL, NULL);
+    if (NULL == okey)
+        snmp_log(LOG_ERR, "error parsing certificate file %s\n",
+                 key->info.filename);
+    else
+        key->okey = okey;
+
+    BIO_vfree(keybio);
+
+    return okey;
+}
+
+static netsnmp_cert *
+_find_issuer(netsnmp_cert *cert)
+{
+    netsnmp_void_array *matching;
+    netsnmp_cert       *candidate, *issuer = NULL;
+    int                 i;
+
+    if ((NULL == cert) || (NULL == cert->issuer))
+        return NULL;
+
+    /** find matching subject names */
+
+    matching = _cert_find_subset_sn(cert->issuer);
+    if (NULL == matching)
+        return NULL;
+
+    /** check each to see if it's the issuer */
+    for ( i=0; (NULL == issuer) && (i < matching->size); ++i) {
+        /** make sure we have ocert */
+        candidate = (netsnmp_cert*)matching->array[i];
+        if ((NULL == candidate->ocert) &&
+            (netsnmp_ocert_get(candidate) == NULL))
+            continue;
+
+        /** compare **/
+        if (netsnmp_openssl_cert_issued_by(candidate->ocert, cert->ocert))
+            issuer = candidate;
+    } /** candidate loop */
+
+    free(matching->array);
+    free(matching);
+
+    return issuer;
+}
+
+#define CERT_LOAD_OK       0
+#define CERT_LOAD_ERR     -1
+#define CERT_LOAD_PARTIAL -2
+int
+netsnmp_cert_load_x509(netsnmp_cert *cert)
+{
+    int rc = CERT_LOAD_OK;
+
+    /** load ocert */
+    if ((NULL == cert->ocert) && (netsnmp_ocert_get(cert) == NULL)) {
+        DEBUGMSGT(("cert:load:err", "couldn't load cert for %s\n",
+                   cert->info.filename));
+        rc = CERT_LOAD_ERR;
+    }
+
+    /** load key */
+    if ((NULL != cert->key) && (NULL == cert->key->okey) &&
+        (netsnmp_okey_get(cert->key) == NULL)) {
+        DEBUGMSGT(("cert:load:err", "couldn't load key for cert %s\n",
+                   cert->info.filename));
+        rc = CERT_LOAD_ERR;
+    }
+
+    /** make sure we have cert chain */
+    for (; cert && cert->issuer; cert = cert->issuer_cert) {
+        /** skip self signed */
+        if (strcmp(cert->issuer, "self-signed") == 0) {
+            netsnmp_assert(cert->issuer_cert == NULL);
+            break;
+        }
+        /** get issuer cert */
+        if (NULL == cert->issuer_cert) {
+            cert->issuer_cert =  _find_issuer(cert);
+            if (NULL == cert->issuer_cert) {
+                DEBUGMSGT(("cert:load:warn",
+                           "couldn't load CA chain for cert %s\n",
+                           cert->info.filename));
+                rc = CERT_LOAD_PARTIAL;
+                break;
+            }
+        }
+        /** get issuer ocert */
+        if ((NULL == cert->issuer_cert->ocert) &&
+            (netsnmp_ocert_get(cert->issuer_cert) == NULL)) {
+            DEBUGMSGT(("cert:load:warn", "couldn't load cert chain for %s\n",
+                       cert->info.filename));
+            rc = CERT_LOAD_PARTIAL;
+            break;
+        }
+    } /* cert CA for loop */
+
+    return rc;
+}
+
+static void
+_find_partner(netsnmp_cert *cert, netsnmp_key *key)
+{
+    netsnmp_void_array *matching;
+    char                filename[NAME_MAX], *pos;
+
+    if ((cert && key) || (!cert && ! key)) {
+        DEBUGMSGT(("cert:partner", "bad parameters searching for partner\n"));
+        return;
+    }
+
+    if(key) {
+        if (key->cert) {
+            DEBUGMSGT(("cert:partner", "key already has partner\n"));
+            return;
+        }
+        DEBUGMSGT(("9:cert:partner", "%s looking for partner near %s\n",
+                   key->info.filename, key->info.dir));
+        snprintf(filename, sizeof(filename), "%s", key->info.filename);
+        pos = strrchr(filename, '.');
+        if (NULL == pos)
+            return;
+        *pos = 0;
+
+        matching = _cert_find_subset_fn( filename, key->info.dir );
+        if (!matching)
+            return;
+        if (1 == matching->size) {
+            cert = (netsnmp_cert*)matching->array[0];
+            if (NULL == cert->key) {
+                DEBUGMSGT(("cert:partner", "%s match found!\n",
+                           cert->info.filename));
+                key->cert = cert;
+                cert->key = key;
+                cert->info.allowed_uses |= NS_CERT_IDENTITY;
+            }
+            else if (cert->key != key)
+                snmp_log(LOG_ERR, "%s matching cert already has partner\n",
+                         cert->info.filename);
+        }
+        else
+            DEBUGMSGT(("cert:partner", "%s matches multiple certs\n",
+                          key->info.filename));
+    }
+    else if(cert) {
+        if (cert->key) {
+            DEBUGMSGT(("cert:partner", "cert already has partner\n"));
+            return;
+        }
+        DEBUGMSGT(("9:cert:partner", "%s looking for partner\n",
+                   cert->info.filename));
+        snprintf(filename, sizeof(filename), "%s", cert->info.filename);
+        pos = strrchr(filename, '.');
+        if (NULL == pos)
+            return;
+        *pos = 0;
+
+        matching = _key_find_subset(filename);
+        if (!matching)
+            return;
+        if (1 == matching->size) {
+            key = (netsnmp_key*)matching->array[0];
+            if (NULL == key->cert) {
+                DEBUGMSGT(("cert:partner", "%s found!\n", cert->info.filename));
+                key->cert = cert;
+                cert->key = key;
+            }
+            else if (key->cert != cert)
+                snmp_log(LOG_ERR, "%s matching key already has partner\n",
+                         cert->info.filename);
+        }
+        else
+            DEBUGMSGT(("cert:partner", "%s matches multiple keys\n",
+                       cert->info.filename));
+    }
+    
+    if (matching) {
+        free(matching->array);
+        free(matching);
+    }
+}
+
+static int
+_add_certfile(const char* dirname, const char* filename, FILE *index)
+{
+    X509         *ocert;
+    EVP_PKEY     *okey;
+    netsnmp_cert *cert = NULL;
+    netsnmp_key  *key = NULL;
+    char          certfile[SNMP_MAXPATH];
+    int           type;
+
+    if (((const void*)NULL == dirname) || (NULL == filename))
+        return -1;
+
+    type = _type_from_filename(filename);
+    netsnmp_assert(type != NS_CERT_TYPE_UNKNOWN);
+
+    snprintf(certfile, sizeof(certfile),"%s/%s", dirname, filename);
+
+    DEBUGMSGT(("9:cert:file:add", "Checking file: %s (type %d)\n", filename,
+               type));
+
+    if (NS_CERT_TYPE_KEY == type) {
+        key = _new_key(dirname, filename);
+        if (NULL == key)
+            return -1;
+        okey = netsnmp_okey_get(key);
+        if (NULL == okey) {
+            netsnmp_key_free(key);
+            return -1;
+        }
+        key->okey = okey;
+        if (-1 == CONTAINER_INSERT(_keys, key)) {
+            DEBUGMSGT(("cert:key:file:add:err",
+                       "error inserting key into container\n"));
+            netsnmp_key_free(key);
+            key = NULL;
+        }
+    }
+    else {
+        cert = _new_cert(dirname, filename, type, -1, NULL, NULL, NULL);
+        if (NULL == cert)
+            return -1;
+        ocert = netsnmp_ocert_get(cert);
+        if (NULL == ocert) {
+            netsnmp_cert_free(cert);
+            return -1;
+        }
+        cert->ocert = ocert;
+        if (-1 == CONTAINER_INSERT(_certs, cert)) {
+            DEBUGMSGT(("cert:file:add:err",
+                       "error inserting cert into container\n"));
+            netsnmp_cert_free(cert);
+            cert = NULL;
+        }
+    }
+    if ((NULL == cert) && (NULL == key)) {
+        DEBUGMSGT(("cert:file:add:failure", "for %s\n", certfile));
+        return -1;
+    }
+
+    if (index) {
+        /** filename = NAME_MAX = 255 */
+        /** fingerprint = 60 */
+        /** common name / CN  = 64 */
+        if (cert)
+            fprintf(index, "c:%s %d %d %s '%s' '%s'\n", filename,
+                    cert->info.type, cert->hash_type, cert->fingerprint,
+                    cert->common_name, cert->subject);
+        else if (key)
+            fprintf(index, "k:%s\n", filename);
+    }
+
+    return 0;
+}
+
+static int
+_cert_read_index(const char *dirname, struct stat *dirstat)
+{
+    FILE           *index;
+    char           *idxname, *pos;
+    struct stat     idx_stat;
+    char            tmpstr[SNMP_MAXPATH + 5], filename[NAME_MAX];
+    char            fingerprint[60+1], common_name[64+1], type_str[15];
+    char            subject[SNMP_MAXBUF_SMALL], hash_str[15];
+    int             count = 0, type, hash, version;
+    netsnmp_cert    *cert;
+    netsnmp_key     *key;
+    netsnmp_container *newer, *found;
+
+    netsnmp_assert(NULL != dirname);
+
+    idxname = _certindex_lookup( dirname );
+    if (NULL == idxname) {
+        DEBUGMSGT(("cert:index:parse", "no index for cert directory\n"));
+        return -1;
+    }
+
+    /*
+     * see if directory has been modified more recently than the index
+     */
+    if (stat(idxname, &idx_stat) != 0) {
+        DEBUGMSGT(("cert:index:parse", "error getting index file stats\n"));
+        SNMP_FREE(idxname);
+        return -1;
+    }
+
+#if (defined(WIN32) || defined(cygwin))
+    /* For Win32 platforms, the directory does not maintain a last modification
+     * date that we can compare with the modification date of the .index file.
+     */
+#else
+    if (dirstat->st_mtime >= idx_stat.st_mtime) {
+        DEBUGMSGT(("cert:index:parse", "Index outdated; dir modified\n"));
+        SNMP_FREE(idxname);
+        return -1;
+    }
+#endif
+
+    /*
+     * dir mtime doesn't change when files are touched, so we need to check
+     * each file against the index in case a file has been modified.
+     */
+    newer =
+        netsnmp_directory_container_read_some(NULL, dirname,
+                                              (netsnmp_directory_filter*)
+                                              _time_filter,(void*)&idx_stat,
+                                              NETSNMP_DIR_NSFILE |
+                                              NETSNMP_DIR_NSFILE_STATS);
+    if (newer) {
+        DEBUGMSGT(("cert:index:parse", "Index outdated; files modified\n"));
+        CONTAINER_FREE_ALL(newer, NULL);
+        CONTAINER_FREE(newer);
+        SNMP_FREE(idxname);
+        return -1;
+    }
+
+    DEBUGMSGT(("cert:index:parse", "The index for %s looks good\n", dirname));
+
+    index = fopen(idxname, "r");
+    if (NULL == index) {
+        snmp_log(LOG_ERR, "cert:index:parse can't open index for %s\n",
+            dirname);
+        SNMP_FREE(idxname);
+        return -1;
+    }
+
+    found = _get_cert_container(idxname);
+
+    /*
+     * check index format version
+     */
+    fgets(tmpstr, sizeof(tmpstr), index);
+    pos = strrchr(tmpstr, ' ');
+    if (pos) {
+        ++pos;
+        version = atoi(pos);
+    }
+    if ((NULL == pos) || (version != CERT_INDEX_FORMAT)) {
+        DEBUGMSGT(("cert:index:add", "missing or wrong index format!\n"));
+        fclose(index);
+        SNMP_FREE(idxname);
+        return -1;
+    }
+    while (1) {
+        if (NULL == fgets(tmpstr, sizeof(tmpstr), index))
+            break;
+
+        if ('c' == tmpstr[0]) {
+            pos = &tmpstr[2];
+            if ((NULL == (pos=copy_nword(pos, filename, sizeof(filename)))) ||
+                (NULL == (pos=copy_nword(pos, type_str, sizeof(type_str)))) ||
+                (NULL == (pos=copy_nword(pos, hash_str, sizeof(hash_str)))) ||
+                (NULL == (pos=copy_nword(pos, fingerprint,
+                                         sizeof(fingerprint)))) ||
+                (NULL == (pos=copy_nword(pos, common_name,
+                                           sizeof(common_name)))) ||
+                (NULL != copy_nword(pos, subject, sizeof(subject)))) {
+                snmp_log(LOG_ERR, "_cert_read_index: error parsing line: %s\n",
+                         tmpstr);
+                count = -1;
+                break;
+            }
+            type = atoi(type_str);
+            hash = atoi(hash_str);
+            cert = (void*)_new_cert(dirname, filename, type, hash, fingerprint,
+                                    common_name, subject);
+            if (cert && 0 == CONTAINER_INSERT(found, cert))
+                ++count;
+            else {
+                DEBUGMSGT(("cert:index:add",
+                           "error inserting cert into container\n"));
+                netsnmp_cert_free(cert);
+                cert = NULL;
+            }
+        }
+        else if ('k' == tmpstr[0]) {
+            if (NULL != copy_nword(&tmpstr[2], filename, sizeof(filename))) {
+                snmp_log(LOG_ERR, "_cert_read_index: error parsing line %s\n",
+                    tmpstr);
+                continue;
+            }
+            key = _new_key(dirname, filename);
+            if (key && 0 == CONTAINER_INSERT(_keys, key))
+                ++count;
+            else {
+                DEBUGMSGT(("cert:index:add:key",
+                           "error inserting key into container\n"));
+                netsnmp_key_free(key);
+            }
+        }
+        else {
+            snmp_log(LOG_ERR, "unknown line in cert index for %s\n", dirname);
+            continue;
+        }
+    } /* while */
+    fclose(index);
+    SNMP_FREE(idxname);
+
+    if (count > 0) {
+        netsnmp_iterator  *itr = CONTAINER_ITERATOR(found);
+        if (NULL == itr) {
+            snmp_log(LOG_ERR, "could not get iterator for found certs\n");
+            count = -1;
+        }
+        else {
+            cert = ITERATOR_FIRST(itr);
+            for( ; cert; cert = ITERATOR_NEXT(itr))
+                CONTAINER_INSERT(_certs, cert);
+            ITERATOR_RELEASE(itr);
+            DEBUGMSGT(("cert:index:parse","added %d certs from index\n",
+                       count));
+        }
+    }
+    if (count < 0)
+        CONTAINER_FREE_ALL(found, NULL);
+    CONTAINER_FREE(found);
+
+    return count;
+}
+
+static int
+_add_certdir(const char *dirname)
+{
+    FILE           *index;
+    char           *file;
+    int             count = 0;
+    netsnmp_container *cert_container;
+    netsnmp_iterator  *it;
+    struct stat     statbuf;
+
+    netsnmp_assert(NULL != dirname);
+
+    DEBUGMSGT(("9:cert:dir:add", " config dir: %s\n", dirname ));
+
+    if (stat(dirname, &statbuf) != 0) {
+        DEBUGMSGT(("9:cert:dir:add", " dir not present: %s\n",
+                   dirname ));
+        return -1;
+    }
+#ifdef S_ISDIR
+    if (!S_ISDIR(statbuf.st_mode)) {
+        DEBUGMSGT(("9:cert:dir:add", " not a dir: %s\n", dirname ));
+        return -1;
+    }
+#endif
+
+    DEBUGMSGT(("cert:index:dir", "Scanning directory %s\n", dirname));
+
+    /*
+     * look for existing index
+     */
+    count = _cert_read_index(dirname, &statbuf);
+    if (count >= 0)
+        return count;
+
+    index = _certindex_new( dirname );
+    if (NULL == index) {
+        DEBUGMSGT(("9:cert:index:dir",
+                    "error opening index for cert directory\n"));
+        DEBUGMSGTL(("cert:index", "could not open certificate index file\n"));
+    }
+
+    /*
+     * index was missing, out of date or bad. rescan directory.
+     */
+    cert_container =
+        netsnmp_directory_container_read_some(NULL, dirname,
+                                              (netsnmp_directory_filter*)
+                                              &_cert_cert_filter, NULL,
+                                              NETSNMP_DIR_RELATIVE_PATH |
+                                              NETSNMP_DIR_EMPTY_OK );
+    if (NULL == cert_container) {
+        DEBUGMSGT(("cert:index:dir",
+                    "error creating container for cert files\n"));
+        goto err_index;
+    }
+
+    /*
+     * iterate through the found files and add them to index
+     */
+    it = CONTAINER_ITERATOR(cert_container);
+    if (NULL == it) {
+        DEBUGMSGT(("cert:index:dir",
+                    "error creating iterator for cert files\n"));
+        goto err_container;
+    }
+
+    for (file = ITERATOR_FIRST(it); file; file = ITERATOR_NEXT(it)) {
+        DEBUGMSGT(("cert:index:dir", "adding %s to index\n", file));
+        if ( 0 == _add_certfile( dirname, file, index ))
+            count++;
+        else
+            DEBUGMSGT(("cert:index:dir", "error adding %s to index\n",
+                        file));
+    }
+
+    /*
+     * clean up and return
+     */
+    ITERATOR_RELEASE(it);
+
+  err_container:
+    netsnmp_directory_container_free(cert_container);
+
+  err_index:
+    if (index)
+        fclose(index);
+
+    return count;
+}
+
+static void
+_cert_indexes_load(void)
+{
+    const char     *confpath;
+    char           *confpath_copy, *dir, *st = NULL;
+    char            certdir[SNMP_MAXPATH];
+    const char     *subdirs[] = { NULL, "ca-certs", "certs", "private", NULL };
+    int             i = 0;
+
+    /*
+     * load indexes from persistent dir
+     */
+    _certindexes_load();
+
+    /*
+     * duplicate path building from read_config_files_of_type() in
+     * read_config.c. That is, use SNMPCONFPATH environment variable if
+     * it is defined, otherwise use configuration directory.
+     */
+    confpath = netsnmp_getenv("SNMPCONFPATH");
+    if (NULL == confpath)
+        confpath = get_configuration_directory();
+
+    subdirs[0] = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                       NETSNMP_DS_LIB_CERT_EXTRA_SUBDIR);
+    confpath_copy = strdup(confpath);
+    for ( dir = strtok_r(confpath_copy, ENV_SEPARATOR, &st);
+          dir; dir = strtok_r(NULL, ENV_SEPARATOR, &st)) {
+
+        i = (NULL == subdirs[0]) ? 1 : 0;
+        for ( ; subdirs[i] ; ++i ) {
+            /** check tls subdir */
+            snprintf(certdir, sizeof(certdir), "%s/tls/%s", dir, subdirs[i]);
+            _add_certdir(certdir);
+        } /* for subdirs */
+    } /* for conf path dirs */
+    SNMP_FREE(confpath_copy);
+}
+
+static void
+_cert_print(netsnmp_cert *c, void *context)
+{
+    if (NULL == c)
+        return;
+
+    DEBUGMSGT(("cert:dump", "cert %s in %s\n", c->info.filename, c->info.dir));
+    DEBUGMSGT(("cert:dump", "   type %d flags 0x%x (%s)\n",
+             c->info.type, c->info.allowed_uses,
+              _mode_str(c->info.allowed_uses)));
+    DEBUGIF("9:cert:dump") {
+        if (NS_CERT_TYPE_KEY != c->info.type) {
+            if(c->subject) {
+                if (c->info.allowed_uses & NS_CERT_CA)
+                    DEBUGMSGT(("9:cert:dump", "   CA: %s\n", c->subject));
+                else
+                    DEBUGMSGT(("9:cert:dump", "   subject: %s\n", c->subject));
+            }
+            if(c->issuer)
+                DEBUGMSGT(("9:cert:dump", "   issuer: %s\n", c->issuer));
+            if(c->fingerprint)
+                DEBUGMSGT(("9:cert:dump", "   fingerprint: %s(%d):%s\n",
+                           se_find_label_in_slist("cert_hash_alg", c->hash_type),
+                           c->hash_type, c->fingerprint));
+        }
+        /* netsnmp_openssl_cert_dump_names(c->ocert); */
+        netsnmp_openssl_cert_dump_extensions(c->ocert);
+    }
+    
+}
+
+static void
+_key_print(netsnmp_key *k, void *context)
+{
+    if (NULL == k)
+        return;
+
+    DEBUGMSGT(("cert:dump", "key %s in %s\n", k->info.filename, k->info.dir));
+    DEBUGMSGT(("cert:dump", "   type %d flags 0x%x (%s)\n", k->info.type,
+              k->info.allowed_uses, _mode_str(k->info.allowed_uses)));
+}
+
+void
+netsnmp_cert_dump_all(void)
+{
+    CONTAINER_FOR_EACH(_certs, (netsnmp_container_obj_func*)_cert_print, NULL);
+    CONTAINER_FOR_EACH(_keys, (netsnmp_container_obj_func*)_key_print, NULL);
+}
+
+#ifdef CERT_MAIN
+/*
+ * export BLD=~/net-snmp/build/ SRC=~/net-snmp/src 
+ * cc -DCERT_MAIN `$BLD/net-snmp-config --cflags` `$BLD/net-snmp-config --build-includes $BLD/`  $SRC/snmplib/cert_util.c   -o cert_util `$BLD/net-snmp-config --build-lib-dirs $BLD` `$BLD/net-snmp-config --libs` -lcrypto -lssl
+ *
+ */
+int
+main(int argc, char** argv)
+{
+    int          ch;
+    extern char *optarg;
+
+    while ((ch = getopt(argc, argv, "D:fHLMx:")) != EOF)
+        switch(ch) {
+            case 'D':
+                debug_register_tokens(optarg);
+                snmp_set_do_debugging(1);
+                break;
+            default:
+                fprintf(stderr,"unknown option %c\n", ch);
+        }
+
+    init_snmp("dtlsapp");
+
+    netsnmp_cert_dump_all();
+
+    return 0;
+}
+
+#endif /* CERT_MAIN */
+
+static netsnmp_cert *_cert_find_fp(const char *fingerprint);
+
+void
+netsnmp_fp_lowercase_and_strip_colon(char *fp)
+{
+    char *pos, *dest=NULL;
+    
+    if(!fp)
+        return;
+
+    /** skip to first : */
+    for (pos = fp; *pos; ++pos ) {
+        if (':' == *pos) {
+            dest = pos;
+            break;
+        }
+        else
+            *pos = isalpha(0xFF & *pos) ? tolower(0xFF & *pos) : *pos;
+    }
+    if (!*pos)
+        return;
+
+    /** copy, skipping any ':' */
+    for (++pos; *pos; ++pos) {
+        if (':' == *pos)
+            continue;
+        *dest++ = isalpha(0xFF & *pos) ? tolower(0xFF & *pos) : *pos;
+    }
+    *dest = *pos; /* nul termination */
+}
+
+netsnmp_cert *
+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",
+               _mode_str(what), what, _where_str(where), where, (u_long)hint));
+
+    if (NS_CERTKEY_DEFAULT == where) {
+            
+        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 );
+                if (!fp) {
+                    /* As a special case, use the application type to
+                       determine a file name to pull the default identity
+                       from. */
+                    return netsnmp_cert_find(what, NS_CERTKEY_FILE, netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE));
+                }
+                break;
+            case NS_CERT_REMOTE_PEER:
+                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",
+                           what, _where_str(where), where));
+                return NULL;
+        }
+        if (fp)
+            return netsnmp_cert_find(what, NS_CERTKEY_MULTIPLE, fp);
+        return NULL;
+    } /* where = ds store */
+    else if (NS_CERTKEY_MULTIPLE == where) {
+        /* tries multiple sources of certificates based on ascii lookup keys */
+
+        /* Try a fingerprint match first, which should always be done first */
+        /* (to avoid people naming filenames with conflicting FPs) */
+        result = netsnmp_cert_find(what, NS_CERTKEY_FINGERPRINT, hint);
+        if (!result) {
+            /* Then try a file name lookup */
+            result = netsnmp_cert_find(what, NS_CERTKEY_FILE, hint);
+        }
+    }
+    else if (NS_CERTKEY_FINGERPRINT == where) {
+        DEBUGMSGT(("cert:find:params", " hint = %s\n", (char *)hint));
+        result = _cert_find_fp((char *)hint);
+    }
+    else if (NS_CERTKEY_TARGET_PARAM == where) {
+        if (what != NS_CERT_IDENTITY) {
+            snmp_log(LOG_ERR, "only identity is valid for target params\n");
+            return NULL;
+        }
+        /** hint == target mib data */
+        hint_str = (char *)hint;
+        fp = _find_tlstmParams_fingerprint(hint_str);
+        if (NULL != fp)
+            result = _cert_find_fp(fp);
+
+    }
+    else if (NS_CERTKEY_TARGET_ADDR == where) {
+        
+        /** hint == target mib data */
+        if (what != NS_CERT_REMOTE_PEER) {
+            snmp_log(LOG_ERR, "only peer is valid for target addr\n");
+            return NULL;
+        }
+        /** hint == target mib data */
+        hint_str = (char *)hint;
+        fp = _find_tlstmAddr_fingerprint(hint_str);
+        if (NULL != fp)
+            result = _cert_find_fp(fp);
+
+    }
+    else if (NS_CERTKEY_FILE == where) {
+        /** hint == filename */
+        char               *filename = (char*)hint;
+        netsnmp_void_array *matching;
+
+        DEBUGMSGT(("cert:find:params", " hint = %s\n", (char *)hint));
+        matching = _cert_find_subset_fn( filename, NULL );
+        if (!matching)
+            return NULL;
+        if (1 == matching->size)
+            result = (netsnmp_cert*)matching->array[0];
+        else {
+            DEBUGMSGT(("cert:find:err", "%s matches multiple certs\n",
+                       filename));
+            result = NULL;
+        }
+        free(matching->array);
+        free(matching);
+    } /* where = NS_CERTKEY_FILE */
+    else { /* unknown location */
+        
+        DEBUGMSGT(("cert:find:err", "unhandled location %d for %d\n", where,
+                   what));
+        return NULL;
+    }
+    
+    if (NULL == result)
+        return NULL;
+
+    /** make sure result found can be used for specified type */
+    if (!(result->info.allowed_uses & what)) {
+        DEBUGMSGT(("cert:find:err",
+                   "cert %s / %s not allowed for %s(%d) (uses=%s (%d))\n",
+                   result->info.filename, result->fingerprint, _mode_str(what),
+                   what , _mode_str(result->info.allowed_uses),
+                   result->info.allowed_uses));
+        return NULL;
+    }
+    
+    /** make sure we have the cert data */
+    if (netsnmp_cert_load_x509(result) == CERT_LOAD_ERR)
+        return NULL;
+
+    DEBUGMSGT(("cert:find:found",
+               "using cert %s / %s for %s(%d) (uses=%s (%d))\n",
+               result->info.filename, result->fingerprint, _mode_str(what),
+               what , _mode_str(result->info.allowed_uses),
+               result->info.allowed_uses));
+            
+    return result;
+}
+
+int
+netsnmp_cert_validate(int who, int how, X509 *cert)
+{
+    return -1;
+}
+
+int
+netsnmp_cert_check_vb_fingerprint(const netsnmp_variable_list *var)
+{
+    if (!var)
+        return SNMP_ERR_GENERR;
+
+    if (0 == var->val_len) /* empty allowed in some cases */
+        return SNMP_ERR_NOERROR;
+
+    if (! (0x01 & var->val_len)) { /* odd len */
+        DEBUGMSGT(("cert:varbind:fingerprint",
+                   "expecting odd length for fingerprint\n"));
+        return SNMP_ERR_WRONGLENGTH;
+    }
+
+    if (var->val.string[0] > NS_HASH_MAX) {
+        DEBUGMSGT(("cert:varbind:fingerprint", "hashtype %d > max %d\n",
+                   var->val.string[0], NS_HASH_MAX));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+/**
+ * break a SnmpTLSFingerprint into an integer hash type + hex string
+ *
+ * @return SNMPERR_SUCCESS : on success
+ * @return SNMPERR_GENERR  : on failure
+ */
+int
+netsnmp_tls_fingerprint_parse(const u_char *binary_fp, int fp_len,
+                              char **fp_str_ptr, u_int *fp_str_len, int realloc,
+                              u_char *hash_type_ptr)
+{
+    int     needed;
+    size_t  fp_str_size;
+
+    netsnmp_require_ptr_LRV( hash_type_ptr, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( fp_str_ptr, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( fp_str_len, SNMPERR_GENERR );
+
+    /*
+     * output string is binary fp length (minus 1 for initial hash type 
+     * char) * 2 for bin to hex conversion, + 1 for null termination.
+     */
+    needed = ((fp_len - 1) * 2) + 1;
+    if (*fp_str_len < needed) {
+        DEBUGMSGT(("tls:fp:parse", "need %d bytes for output\n", needed ));
+        return SNMPERR_GENERR;
+    }
+
+    /*
+     * make sure hash type is in valid range
+     */
+    if ((0 == binary_fp[0]) || (binary_fp[0] > NS_HASH_MAX)) {
+        DEBUGMSGT(("tls:fp:parse", "invalid hash type %d\n",
+                   binary_fp[0]));
+        return SNMPERR_GENERR;
+    }
+
+    /*
+     * netsnmp_binary_to_hex allocate space for string, if needed
+     */
+    fp_str_size = *fp_str_len;
+    *hash_type_ptr = binary_fp[0];
+    netsnmp_binary_to_hex((u_char**)fp_str_ptr, &fp_str_size,
+                          realloc, &binary_fp[1], fp_len - 1);
+    *fp_str_len = fp_str_size;
+    if (0 == *fp_str_len)
+        return SNMPERR_GENERR;
+
+    return SNMPERR_SUCCESS;
+}
+
+/**
+ * combine a hash type and hex fingerprint into a SnmpTLSFingerprint
+ *
+ * On entry, tls_fp_len should point to the size of the tls_fp buffer.
+ * On a successful exit, tls_fp_len will contain the length of the
+ * fingerprint buffer.
+ */
+int
+netsnmp_tls_fingerprint_build(int hash_type, const char *hex_fp,
+                                   u_char **tls_fp, size_t *tls_fp_len,
+                                   int realloc)
+{
+    int     hex_fp_len, rc;
+    size_t  tls_fp_size;
+    size_t  offset;
+
+    netsnmp_require_ptr_LRV( hex_fp, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( tls_fp, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( tls_fp_len, SNMPERR_GENERR );
+
+    hex_fp_len = strlen(hex_fp);
+    if (0 == hex_fp_len) {
+        *tls_fp_len = 0;
+        return SNMPERR_SUCCESS;
+    }
+
+    if ((hash_type <= NS_HASH_NONE) || (hash_type > NS_HASH_MAX)) {
+        DEBUGMSGT(("tls:fp:build", "invalid hash type %d\n", hash_type ));
+        return SNMPERR_GENERR;
+    }
+
+    /*
+     * convert to binary
+     */
+    offset = 1;
+    rc = netsnmp_hex_to_binary(tls_fp, &tls_fp_size, &offset, realloc, hex_fp,
+                               ":");
+    *tls_fp_len = tls_fp_size;
+    if (rc != 1)
+        return SNMPERR_GENERR;
+    *tls_fp_len = offset;
+    (*tls_fp)[0] = hash_type;
+                               
+    return SNMPERR_SUCCESS;
+}
+
+/**
+ * Trusts a given certificate for use in TLS translations.
+ *
+ * @param ctx The SSL context to trust the certificate in
+ * @param thiscert The netsnmp_cert certificate to trust
+ *
+ * @return SNMPERR_SUCCESS : on success
+ * @return SNMPERR_GENERR  : on failure
+ */
+int
+netsnmp_cert_trust(SSL_CTX *ctx, netsnmp_cert *thiscert)
+{
+    X509_STORE     *certstore;
+    X509           *cert;
+    char           *fingerprint;
+
+    /* ensure all needed pieces are present */
+    netsnmp_assert_or_msgreturn(NULL != thiscert, "NULL certificate passed in",
+                                SNMPERR_GENERR);
+    netsnmp_assert_or_msgreturn(NULL != thiscert->info.dir,
+                                "NULL certificate directory name passed in",
+                                SNMPERR_GENERR);
+    netsnmp_assert_or_msgreturn(NULL != thiscert->info.filename,
+                                "NULL certificate filename name passed in",
+                                SNMPERR_GENERR);
+
+    /* get the trusted certificate store and the certificate to load into it */
+    certstore = SSL_CTX_get_cert_store(ctx);
+    netsnmp_assert_or_msgreturn(NULL != certstore,
+                                "failed to get certificate trust store",
+                                SNMPERR_GENERR);
+    cert = netsnmp_ocert_get(thiscert);
+    netsnmp_assert_or_msgreturn(NULL != cert,
+                                "failed to get certificate from netsnmp_cert",
+                                SNMPERR_GENERR);
+
+    /* Put the certificate into the store */
+    fingerprint = netsnmp_openssl_cert_get_fingerprint(cert, -1);
+    DEBUGMSGTL(("cert:trust",
+                "putting trusted cert %p = %s in certstore %p\n", cert,
+                fingerprint, certstore));
+    SNMP_FREE(fingerprint);
+    X509_STORE_add_cert(certstore, cert);
+
+    return SNMPERR_SUCCESS;
+}
+
+/**
+ * Trusts a given certificate's root CA for use in TLS translations.
+ * If no issuer is found the existing certificate will be trusted instead.
+ *
+ * @param ctx The SSL context to trust the certificate in
+ * @param thiscert The netsnmp_cert certificate 
+ *
+ * @return SNMPERR_SUCCESS : on success
+ * @return SNMPERR_GENERR  : on failure
+ */
+int
+netsnmp_cert_trust_ca(SSL_CTX *ctx, netsnmp_cert *thiscert)
+{
+    netsnmp_assert_or_msgreturn(NULL != thiscert, "NULL certificate passed in",
+                                SNMPERR_GENERR);
+
+    /* find the root CA certificate in the chain */
+    DEBUGMSGTL(("cert:trust_ca", "checking roots for %p \n", thiscert));
+    while (thiscert->issuer_cert) {
+        thiscert = thiscert->issuer_cert;
+        DEBUGMSGTL(("cert:trust_ca", "  up one to %p\n", thiscert));
+    }
+
+    /* Add the found top lever certificate to the store */
+    return netsnmp_cert_trust(ctx, thiscert);
+}
+
+netsnmp_container *
+netsnmp_cert_get_trustlist(void)
+{
+    if (!_trusted_certs)
+        _setup_trusted_certs();
+    return _trusted_certs;
+}
+
+static void
+_parse_trustcert(const char *token, char *line)
+{
+    if (!_trusted_certs)
+        _setup_trusted_certs();
+
+    if (!_trusted_certs)
+        return;
+
+    CONTAINER_INSERT(_trusted_certs, strdup(line));
+}
+
+/* ***************************************************************************
+ *
+ * mode text functions
+ *
+ */
+static const char *_mode_str(u_char mode)
+{
+    return _modes[mode];
+}
+
+static const char *_where_str(u_int what)
+{
+    switch (what) {
+        case NS_CERTKEY_DEFAULT: return "DEFAULT";
+        case NS_CERTKEY_FILE: return "FILE";
+        case NS_CERTKEY_FINGERPRINT: return "FINGERPRINT";
+        case NS_CERTKEY_MULTIPLE: return "MULTIPLE";
+        case NS_CERTKEY_CA: return "CA";
+        case NS_CERTKEY_SAN_RFC822: return "SAN_RFC822";
+        case NS_CERTKEY_SAN_DNS: return "SAN_DNS";
+        case NS_CERTKEY_SAN_IPADDR: return "SAN_IPADDR";
+        case NS_CERTKEY_COMMON_NAME: return "COMMON_NAME";
+        case NS_CERTKEY_TARGET_PARAM: return "TARGET_PARAM";
+        case NS_CERTKEY_TARGET_ADDR: return "TARGET_ADDR";
+    }
+
+    return "UNKNOWN";
+}
+
+/* ***************************************************************************
+ *
+ * find functions
+ *
+ */
+static netsnmp_cert *
+_cert_find_fp(const char *fingerprint)
+{
+    netsnmp_cert cert, *result = NULL;
+    char         fp[EVP_MAX_MD_SIZE];
+
+    if (NULL == fingerprint)
+        return NULL;
+
+    strlcpy(fp, fingerprint, sizeof(fp));
+    netsnmp_fp_lowercase_and_strip_colon(fp);
+
+    /** clear search key */
+    memset(&cert, 0x00, sizeof(cert));
+
+    cert.fingerprint = fp;
+
+    result = CONTAINER_FIND(_certs,&cert);
+    return result;
+}
+
+/*
+ * reduce subset by eliminating any filenames that are longer than
+ * the specified file name. e.g. 'snmp' would match 'snmp.key' and
+ * 'snmpd.key'. We only want 'snmp.X', where X is a valid extension.
+ */
+static void
+_reduce_subset(netsnmp_void_array *matching, const char *filename)
+{
+    netsnmp_cert_common *cc;
+    int i = 0, j, newsize, pos;
+
+    if ((NULL == matching) || (NULL == filename))
+        return;
+
+    pos = strlen(filename);
+    newsize = matching->size;
+
+    for( ; i < matching->size; ) {
+        /*
+         * if we've shifted matches down we'll hit a NULL entry before
+         * we hit the end of the array.
+         */
+        if (NULL == matching->array[i])
+            break;
+        /*
+         * skip over valid matches. Note that we do not want to use
+         * _type_from_filename.
+         */
+        cc = (netsnmp_cert_common*)matching->array[i];
+        if (('.' == cc->filename[pos]) &&
+            (NS_CERT_TYPE_UNKNOWN != _cert_ext_type(&cc->filename[pos+1]))) {
+            ++i;
+            continue;
+        }
+        /*
+         * shrink array by shifting everything down a spot. Might not be
+         * the most efficient soloution, but this is just happening at
+         * startup and hopefully most certs won't have common prefixes.
+         */
+        --newsize;
+        for ( j=i; j < newsize; ++j )
+            matching->array[j] = matching->array[j+1];
+        matching->array[j] = NULL;
+        /** no ++i; just shifted down, need to look at same position again */
+    }
+    /*
+     * if we shifted, set the new size
+     */
+    if (newsize != matching->size) {
+        DEBUGMSGT(("9:cert:subset:reduce", "shrank from %" NETSNMP_PRIz "d to %d\n",
+                   matching->size, newsize));
+        matching->size = newsize;
+    }
+}
+
+/*
+ * reduce subset by eliminating any filenames that are not under the
+ * specified directory path.
+ */
+static void
+_reduce_subset_dir(netsnmp_void_array *matching, const char *directory)
+{
+    netsnmp_cert_common *cc;
+    int                  i = 0, j, newsize, dir_len;
+    char                 dir[SNMP_MAXPATH], *pos;
+
+    if ((NULL == matching) || (NULL == directory))
+        return;
+
+    newsize = matching->size;
+
+    /*
+     * dir struct should be something like
+     *          /usr/share/snmp/tls/certs
+     *          /usr/share/snmp/tls/private
+     *
+     * so we want to backup up on directory for compares..
+     */
+    strlcpy(dir, directory, sizeof(dir));
+    pos = strrchr(dir, '/');
+    if (NULL == pos) {
+        DEBUGMSGTL(("cert:subset:dir", "no '/' in directory %s\n", directory));
+        return;
+    }
+    *pos = '\0';
+    dir_len = strlen(dir);
+
+    for( ; i < matching->size; ) {
+        /*
+         * if we've shifted matches down we'll hit a NULL entry before
+         * we hit the end of the array.
+         */
+        if (NULL == matching->array[i])
+            break;
+        /*
+         * skip over valid matches. 
+         */
+        cc = (netsnmp_cert_common*)matching->array[i];
+        if (strncmp(dir, cc->dir, dir_len) == 0) {
+            ++i;
+            continue;
+        }
+        /*
+         * shrink array by shifting everything down a spot. Might not be
+         * the most efficient soloution, but this is just happening at
+         * startup and hopefully most certs won't have common prefixes.
+         */
+        --newsize;
+        for ( j=i; j < newsize; ++j )
+            matching->array[j] = matching->array[j+1];
+        matching->array[j] = NULL;
+        /** no ++i; just shifted down, need to look at same position again */
+    }
+    /*
+     * if we shifted, set the new size
+     */
+    if (newsize != matching->size) {
+        DEBUGMSGT(("9:cert:subset:dir", "shrank from %" NETSNMP_PRIz "d to %d\n",
+                   matching->size, newsize));
+        matching->size = newsize;
+    }
+}
+
+static netsnmp_void_array *
+_cert_find_subset_common(const char *filename, netsnmp_container *container)
+{
+    netsnmp_cert_common   search;
+    netsnmp_void_array   *matching;
+
+    netsnmp_assert(filename && container);
+
+    memset(&search, 0x00, sizeof(search));    /* clear search key */
+
+    search.filename = NETSNMP_REMOVE_CONST(char*,filename);
+
+    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)
+        _reduce_subset(matching, filename);
+    return matching;
+}
+
+static netsnmp_void_array *
+_cert_find_subset_fn(const char *filename, const char *directory)
+{
+    netsnmp_container    *fn_container;
+    netsnmp_void_array   *matching;
+
+    /** find subcontainer with filename as key */
+    fn_container = SUBCONTAINER_FIND(_certs, "certs_fn");
+    netsnmp_assert(fn_container);
+
+    matching = _cert_find_subset_common(filename, fn_container);
+    if (matching && (matching->size > 1) && directory)
+        _reduce_subset_dir(matching, directory);
+    return matching;
+}
+
+static netsnmp_void_array *
+_cert_find_subset_sn(const char *subject)
+{
+    netsnmp_cert          search;
+    netsnmp_void_array   *matching;
+    netsnmp_container    *sn_container;
+
+    /** find subcontainer with subject as key */
+    sn_container = SUBCONTAINER_FIND(_certs, "certs_sn");
+    netsnmp_assert(sn_container);
+
+    memset(&search, 0x00, sizeof(search));    /* clear search key */
+
+    search.subject = NETSNMP_REMOVE_CONST(char*,subject);
+
+    matching = CONTAINER_GET_SUBSET(sn_container, &search);
+    DEBUGMSGT(("9:cert:subset:found", "%" NETSNMP_PRIz "d matches\n", matching ?
+               matching->size : 0));
+    return matching;
+}
+
+static netsnmp_void_array *
+_key_find_subset(const char *filename)
+{
+    return _cert_find_subset_common(filename, _keys);
+}
+
+/** find all entries matching given fingerprint */
+static netsnmp_void_array *
+_find_subset_fp(netsnmp_container *certs, const char *fp)
+{
+    netsnmp_cert_map    entry;
+    netsnmp_container  *fp_container;
+    netsnmp_void_array *va;
+
+    if ((NULL == certs) || (NULL == fp))
+        return NULL;
+
+    fp_container = SUBCONTAINER_FIND(certs, "cert2sn_fp");
+    netsnmp_assert_or_msgreturn(fp_container, "cert2sn_fp container missing",
+                                NULL);
+
+    memset(&entry, 0x0, sizeof(entry));
+
+    entry.fingerprint = NETSNMP_REMOVE_CONST(char*,fp);
+
+    va = CONTAINER_GET_SUBSET(fp_container, &entry);
+    return va;
+}
+
+#if 0  /* not used yet */
+static netsnmp_key *
+_key_find_fn(const char *filename)
+{
+    netsnmp_key key, *result = NULL;
+
+    netsnmp_assert(NULL != filename);
+
+    memset(&key, 0x00, sizeof(key));    /* clear search key */
+    key.info.filename = NETSNMP_REMOVE_CONST(char*,filename);
+    result = CONTAINER_FIND(_keys,&key);
+    return result;
+}
+#endif
+
+static int
+_time_filter(netsnmp_file *f, struct stat *idx)
+{
+    /** include if mtime or ctime newer than index mtime */
+    if (f && idx && f->stats &&
+        ((f->stats->st_mtime >= idx->st_mtime) ||
+         (f->stats->st_ctime >= idx->st_mtime)))
+        return NETSNMP_DIR_INCLUDE;
+
+    return NETSNMP_DIR_EXCLUDE;
+}
+
+/* ***************************************************************************
+ * ***************************************************************************
+ *
+ *
+ * cert map functions
+ *
+ *
+ * ***************************************************************************
+ * ***************************************************************************/
+#define MAP_CONFIG_TOKEN "certSecName"
+static void _parse_map(const char *token, char *line);
+static void _map_free(netsnmp_cert_map* entry, void *ctx);
+static void _purge_config_entries(void);
+
+static void
+_init_tlstmCertToTSN(void)
+{
+    const char *certSecName_help = MAP_CONFIG_TOKEN " PRIORITY FINGERPRINT "
+        "[--shaNN|md5] <--sn SECNAME | --rfc822 | --dns | --ip | --cn | --any>";
+
+    /*
+     * container for cert to fingerprint mapping, with fingerprint key
+     */
+    _maps = netsnmp_cert_map_container_create(1);
+
+    register_config_handler(NULL, MAP_CONFIG_TOKEN, _parse_map, _purge_config_entries,
+                            certSecName_help);
+}
+
+netsnmp_cert_map *
+netsnmp_cert_map_alloc(char *fingerprint, X509 *ocert)
+{
+    netsnmp_cert_map *cert_map = SNMP_MALLOC_TYPEDEF(netsnmp_cert_map);
+    if (NULL == cert_map) {
+        snmp_log(LOG_ERR, "could not allocate netsnmp_cert_map\n");
+        return NULL;
+    }
+    
+    if (fingerprint) {
+        /** MIB limits to 255 bytes; 2x since we've got ascii */
+        if (strlen(fingerprint) > (SNMPADMINLENGTH * 2)) {
+            snmp_log(LOG_ERR, "fingerprint %s exceeds max length %d\n",
+                     fingerprint, (SNMPADMINLENGTH * 2));
+            free(cert_map);
+            return NULL;
+        }
+        cert_map->fingerprint = strdup(fingerprint);
+    }
+    if (ocert) {
+        cert_map->hashType = netsnmp_openssl_cert_get_hash_type(ocert);
+        cert_map->ocert = ocert;
+    }
+
+    return cert_map;
+}
+
+void
+netsnmp_cert_map_free(netsnmp_cert_map *cert_map)
+{
+    if (NULL == cert_map)
+        return;
+
+    SNMP_FREE(cert_map->fingerprint);
+    SNMP_FREE(cert_map->data);
+    /** x509 cert isn't ours */
+    free(cert_map); /* SNMP_FREE wasted on param */
+}
+
+int
+netsnmp_cert_map_add(netsnmp_cert_map *map)
+{
+    int                rc;
+
+    if (NULL == map)
+        return -1;
+
+    DEBUGMSGTL(("cert:map:add", "pri %d, fp %s\n",
+                map->priority, map->fingerprint));
+
+    if ((rc = CONTAINER_INSERT(_maps, map)) != 0)
+        snmp_log(LOG_ERR, "could not insert new certificate map");
+
+    return rc;
+}
+
+int
+netsnmp_cert_map_remove(netsnmp_cert_map *map)
+{
+    int                rc;
+
+    if (NULL == map)
+        return -1;
+
+    DEBUGMSGTL(("cert:map:remove", "pri %d, fp %s\n",
+                map->priority, map->fingerprint));
+
+    if ((rc = CONTAINER_REMOVE(_maps, map)) != 0)
+        snmp_log(LOG_ERR, "could not remove certificate map");
+
+    return rc;
+}
+
+netsnmp_cert_map *
+netsnmp_cert_map_find(netsnmp_cert_map *map)
+{
+    if (NULL == map)
+        return NULL;
+
+    return CONTAINER_FIND(_maps, map);
+}
+
+static void
+_map_free(netsnmp_cert_map *map, void *context)
+{
+    netsnmp_cert_map_free(map);
+}
+
+static int
+_map_compare(netsnmp_cert_map *lhs, netsnmp_cert_map *rhs)
+{
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    if (lhs->priority < rhs->priority)
+        return -1;
+    else if (lhs->priority > rhs->priority)
+        return 1;
+
+    return strcmp(lhs->fingerprint, rhs->fingerprint);
+}
+
+static int
+_map_fp_compare(netsnmp_cert_map *lhs, netsnmp_cert_map *rhs)
+{
+    int rc;
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    if ((rc = strcmp(lhs->fingerprint, rhs->fingerprint)) != 0)
+        return rc;
+
+    if (lhs->priority < rhs->priority)
+        return -1;
+    else if (lhs->priority > rhs->priority)
+        return 1;
+
+    return 0;
+}
+
+static int
+_map_fp_ncompare(netsnmp_cert_map *lhs, netsnmp_cert_map *rhs)
+{
+    netsnmp_assert((lhs != NULL) && (rhs != NULL));
+
+    return strncmp(lhs->fingerprint, rhs->fingerprint,
+                   strlen(rhs->fingerprint));
+}
+
+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;
+
+    if (NULL == chain_map) {
+        snmp_log(LOG_ERR, "could not allocate container for cert_map\n");
+        return NULL;
+    }
+
+    chain_map->container_name = strdup("cert_map");
+    chain_map->free_item = (netsnmp_container_obj_func*)_map_free;
+    chain_map->compare = (netsnmp_container_compare*)_map_compare;
+
+    if (!with_fp)
+        return chain_map;
+
+    /*
+     * add a secondary index to the table container
+     */
+    fp = netsnmp_container_find("cert2sn_fp:binary_array");
+    if (NULL == fp) {
+        snmp_log(LOG_ERR,
+                 "error creating sub-container for tlstmCertToTSNTable\n");
+        CONTAINER_FREE(chain_map);
+        return NULL;
+    }
+    fp->container_name = strdup("cert2sn_fp");
+    fp->compare = (netsnmp_container_compare*)_map_fp_compare;
+    fp->ncompare = (netsnmp_container_compare*)_map_fp_ncompare;
+    netsnmp_container_add_index(chain_map, fp);
+
+    return chain_map;
+}
+
+int
+netsnmp_cert_parse_hash_type(const char *str)
+{
+    int rc = se_find_value_in_slist("cert_hash_alg", str);
+    if (SE_DNE == rc)
+        return NS_HASH_NONE;
+    return rc;
+}
+
+void
+netsnmp_cert_map_container_free(netsnmp_container *c)
+{
+    if (NULL == c)
+        return;
+
+    CONTAINER_FREE_ALL(c, NULL);
+    CONTAINER_FREE(c);
+}
+
+/** clear out config rows
+ * called during reconfig processing (e.g. SIGHUP)
+*/
+static void
+_purge_config_entries(void)
+{
+    /**
+     ** dup container
+     ** iterate looking for NSCM_FROM_CONFIG flag
+     ** delete from original
+     ** delete dup
+     **/
+    netsnmp_iterator   *itr;
+    netsnmp_cert_map   *cert_map;
+    netsnmp_container  *cert_maps = netsnmp_cert_map_container();
+    netsnmp_container  *tmp_maps = NULL;
+
+    if ((NULL == cert_maps) || (CONTAINER_SIZE(cert_maps) == 0))
+        return;
+
+    DEBUGMSGT(("cert:map:reconfig", "removing locally configured rows\n"));
+    
+    /*
+     * duplicate cert_maps and then iterate over the copy. That way we can
+     * add/remove to cert_maps without distrubing the iterator.
+xx
+     */
+    tmp_maps = CONTAINER_DUP(cert_maps, NULL, 0);
+    if (NULL == tmp_maps) {
+        snmp_log(LOG_ERR, "could not duplicate maps for reconfig\n");
+        return;
+    }
+
+    itr = CONTAINER_ITERATOR(tmp_maps);
+    if (NULL == itr) {
+        snmp_log(LOG_ERR, "could not get iterator for reconfig\n");
+        CONTAINER_FREE(tmp_maps);
+        return;
+    }
+    cert_map = ITERATOR_FIRST(itr);
+    for( ; cert_map; cert_map = ITERATOR_NEXT(itr)) {
+
+        if (!(cert_map->flags & NSCM_FROM_CONFIG))
+            continue;
+
+        if (CONTAINER_REMOVE(cert_maps, cert_map) == 0)
+            netsnmp_cert_map_free(cert_map);
+    }
+    ITERATOR_RELEASE(itr);
+    CONTAINER_FREE(tmp_maps);
+
+    return;
+}
+
+/*
+  certSecName PRIORITY [--shaNN|md5] FINGERPRINT <--sn SECNAME | --rfc822 | --dns | --ip | --cn | --any>
+
+  certSecName  100  ff:..11 --sn Wes
+  certSecName  200  ee:..:22 --sn JohnDoe
+  certSecName  300  ee:..:22 --rfc822
+*/
+netsnmp_cert_map *
+netsnmp_certToTSN_parse_common(char **line)
+{
+    netsnmp_cert_map *map;
+    char             *tmp, buf[SNMP_MAXBUF_SMALL];
+    size_t            len;
+    netsnmp_cert     *tmpcert;
+
+    if ((NULL == line) || (NULL == *line))
+        return NULL;
+
+    /** need somewhere to save rows */
+    if (NULL == _maps) {
+        NETSNMP_LOGONCE((LOG_ERR, "no container for certificate mappings\n"));
+        return NULL;
+    }
+
+    DEBUGMSGT(("cert:util:config", "parsing %s\n", *line));
+
+    /* read the priority */
+    len = sizeof(buf);
+    tmp = buf;
+    *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+    tmp[len] = 0;
+    if (!isdigit(0xFF & tmp[0])) {
+        netsnmp_config_error("could not parse priority");
+        return NULL;
+    }
+    map = netsnmp_cert_map_alloc(NULL, NULL);
+    if (NULL == map) {
+        netsnmp_config_error("could not allocate cert map struct");
+        return NULL;
+    }
+    map->flags |= NSCM_FROM_CONFIG;
+    map->priority = atoi(buf);
+
+    /* read the flag or the fingerprint */
+    len = sizeof(buf);
+    tmp = buf;
+    *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+    tmp[len] = 0;
+    if ((buf[0] == '-') && (buf[1] == '-')) {
+        map->hashType = netsnmp_cert_parse_hash_type(&buf[2]);
+        if (NS_HASH_NONE == map->hashType) {
+            netsnmp_config_error("invalid hash type");
+            goto end;
+        }
+
+        /** set up for fingerprint */
+        len = sizeof(buf);
+        tmp = buf;
+        *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+        tmp[len] = 0;
+    }
+    else
+        map->hashType = NS_HASH_SHA1;
+
+    /* look up the fingerprint */
+    tmpcert = netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_MULTIPLE, buf);
+    if (NULL == tmpcert) {
+        /* assume it's a raw fingerprint we don't have */
+        netsnmp_fp_lowercase_and_strip_colon(buf);
+        map->fingerprint = strdup(buf);
+    } else {
+        map->fingerprint =
+            netsnmp_openssl_cert_get_fingerprint(tmpcert->ocert, -1);
+    }
+    
+    if (NULL == *line) {
+        netsnmp_config_error("must specify map type");
+        goto end;
+    }
+
+    /* read the mapping type */
+    len = sizeof(buf);
+    tmp = buf;
+    *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+    tmp[len] = 0;
+    if ((buf[0] != '-') || (buf[1] != '-')) {
+        netsnmp_config_error("unexpected fromat: %s\n", *line);
+        goto end;
+    }
+    if (strcmp(&buf[2], "sn") == 0) {
+        if (NULL == *line) {
+            netsnmp_config_error("must specify secName for --sn");
+            goto end;
+        }
+        len = sizeof(buf);
+        tmp = buf;
+        *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+        map->data = strdup(buf);
+        if (map->data)
+            map->mapType = TSNM_tlstmCertSpecified;
+    }
+    else if (strcmp(&buf[2], "cn") == 0)
+        map->mapType = TSNM_tlstmCertCommonName;
+    else if (strcmp(&buf[2], "ip") == 0)
+        map->mapType = TSNM_tlstmCertSANIpAddress;
+    else if (strcmp(&buf[2], "rfc822") == 0)
+        map->mapType = TSNM_tlstmCertSANRFC822Name;
+    else if (strcmp(&buf[2], "dns") == 0)
+        map->mapType = TSNM_tlstmCertSANDNSName;
+    else if (strcmp(&buf[2], "any") == 0)
+        map->mapType = TSNM_tlstmCertSANAny;
+    else
+        netsnmp_config_error("unknown argument %s\n", buf);
+    
+  end:
+    if (0 == map->mapType) {
+        netsnmp_cert_map_free(map);
+        map = NULL;
+    }
+
+    return map;
+}
+
+static void
+_parse_map(const char *token, char *line)
+{
+    netsnmp_cert_map *map = netsnmp_certToTSN_parse_common(&line);
+    if (NULL == map)
+        return;
+
+    if (netsnmp_cert_map_add(map) != 0) {
+        netsnmp_cert_map_free(map);
+        netsnmp_config_error(MAP_CONFIG_TOKEN
+                             ": duplicate priority for certificate map");
+    }
+}
+
+static int
+_fill_cert_map(netsnmp_cert_map *cert_map, netsnmp_cert_map *entry)
+{
+    DEBUGMSGT(("cert:map:secname", "map: pri %d type %d data %s\n",
+               entry->priority, entry->mapType, entry->data));
+    cert_map->priority = entry->priority;
+    cert_map->mapType = entry->mapType;
+    cert_map->hashType = entry->hashType;
+    if (entry->data) {
+        cert_map->data = strdup(entry->data);
+        if (NULL == cert_map->data ) {
+            snmp_log(LOG_ERR, "secname map data dup failed\n");
+            return -1;
+        }
+    }
+
+    return 0;
+}
+
+/*
+ * get secname map(s) for fingerprints
+ */
+int
+netsnmp_cert_get_secname_maps(netsnmp_container *cert_maps)
+{
+    netsnmp_iterator   *itr;
+    netsnmp_cert_map   *cert_map, *new_cert_map, *entry;
+    netsnmp_container  *new_maps = NULL;
+    netsnmp_void_array *results;
+    int                 j;
+
+    if ((NULL == cert_maps) || (CONTAINER_SIZE(cert_maps) == 0))
+        return -1;
+
+    DEBUGMSGT(("cert:map:secname", "looking for matches for %" NETSNMP_PRIz "d fingerprints\n",
+               CONTAINER_SIZE(cert_maps)));
+    
+    /*
+     * duplicate cert_maps and then iterate over the copy. That way we can
+     * add/remove to cert_maps without distrubing the iterator.
+     */
+    new_maps = CONTAINER_DUP(cert_maps, NULL, 0);
+    if (NULL == new_maps) {
+        snmp_log(LOG_ERR, "could not duplicate maps for secname mapping\n");
+        return -1;
+    }
+
+    itr = CONTAINER_ITERATOR(new_maps);
+    if (NULL == itr) {
+        snmp_log(LOG_ERR, "could not get iterator for secname mappings\n");
+        CONTAINER_FREE(new_maps);
+        return -1;
+    }
+    cert_map = ITERATOR_FIRST(itr);
+    for( ; cert_map; cert_map = ITERATOR_NEXT(itr)) {
+
+        results = _find_subset_fp( netsnmp_cert_map_container(),
+                                   cert_map->fingerprint );
+        if (NULL == results) {
+            DEBUGMSGT(("cert:map:secname", "no match for %s\n",
+                       cert_map->fingerprint));
+            if (CONTAINER_REMOVE(cert_maps, cert_map) != 0)
+                goto fail;
+            continue;
+        }
+        DEBUGMSGT(("cert:map:secname", "%" NETSNMP_PRIz "d matches for %s\n",
+                   results->size, cert_map->fingerprint));
+        /*
+         * first entry is a freebie
+         */
+        entry = (netsnmp_cert_map*)results->array[0];
+        if (_fill_cert_map(cert_map, entry) != 0)
+            goto fail;
+
+        /*
+         * additional entries must be allocated/inserted
+         */
+        if (results->size > 1) {
+            for(j=1; j < results->size; ++j) {
+                entry = (netsnmp_cert_map*)results->array[j];
+                new_cert_map = netsnmp_cert_map_alloc(entry->fingerprint,
+                                                      entry->ocert);
+                if (NULL == new_cert_map) {
+                    snmp_log(LOG_ERR,
+                             "could not allocate new cert map entry\n");
+                    goto fail;
+                }
+                if (_fill_cert_map(new_cert_map, entry) != 0) {
+                    netsnmp_cert_map_free(new_cert_map);
+                    goto fail;
+                }
+                new_cert_map->ocert = cert_map->ocert;
+                if (CONTAINER_INSERT(cert_maps,new_cert_map) != 0) {
+                    netsnmp_cert_map_free(new_cert_map);
+                    goto fail;
+                }
+            } /* for results */
+        } /* results size > 1 */
+
+        free(results->array);
+        SNMP_FREE(results);
+    }
+    ITERATOR_RELEASE(itr);
+    CONTAINER_FREE(new_maps);
+
+    DEBUGMSGT(("cert:map:secname",
+               "found %" NETSNMP_PRIz "d matches for fingerprints\n",
+               CONTAINER_SIZE(cert_maps)));
+    return 0;
+
+  fail:
+    if (results) {
+        free(results->array);
+        free(results);
+    }
+    ITERATOR_RELEASE(itr);
+    CONTAINER_FREE(new_maps);
+    return -1;
+}
+
+/* ***************************************************************************
+ * ***************************************************************************
+ *
+ *
+ * snmpTlstmParmsTable data
+ *
+ *
+ * ***************************************************************************
+ * ***************************************************************************/
+#define PARAMS_CONFIG_TOKEN "snmpTlstmParams"
+static void _parse_params(const char *token, char *line);
+
+static void
+_init_tlstmParams(void)
+{
+    const char *params_help = 
+        PARAMS_CONFIG_TOKEN " targetParamsName hashType:fingerPrint";
+    
+    /*
+     * container for snmpTlstmParamsTable data
+     */
+    _tlstmParams = netsnmp_container_find("tlstmParams:string");
+    if (NULL == _tlstmParams)
+        snmp_log(LOG_ERR,
+                 "error creating sub-container for tlstmParamsTable\n");
+    else
+        _tlstmParams->container_name = strdup("tlstmParams");
+
+    register_config_handler(NULL, PARAMS_CONFIG_TOKEN, _parse_params, NULL,
+                                params_help);
+}
+
+netsnmp_container *
+netsnmp_tlstmParams_container(void)
+{
+    return _tlstmParams;
+}
+
+snmpTlstmParams *
+netsnmp_tlstmParams_create(const char *name, int hashType, const char *fp,
+                           int fp_len)
+{
+    snmpTlstmParams *stp = SNMP_MALLOC_TYPEDEF(snmpTlstmParams);
+    if (NULL == stp)
+        return NULL;
+
+    if (name)
+        stp->name = strdup(name);
+    stp->hashType = hashType;
+    if (fp)
+        stp->fingerprint = strdup(fp);
+    DEBUGMSGT(("9:tlstmParams:create", "0x%lx: %s\n", (u_long)stp,
+               stp->name ? stp->name : "null"));
+
+    return stp;
+}
+
+void
+netsnmp_tlstmParams_free(snmpTlstmParams *stp)
+{
+    if (NULL == stp)
+        return;
+
+    DEBUGMSGT(("9:tlstmParams:release", "0x%lx %s\n", (u_long)stp,
+               stp->name ? stp->name : "null"));
+    SNMP_FREE(stp->name);
+    SNMP_FREE(stp->fingerprint);
+    free(stp); /* SNMP_FREE pointless on parameter */
+}
+
+snmpTlstmParams *
+netsnmp_tlstmParams_restore_common(char **line)
+{
+    snmpTlstmParams  *stp;
+    char             *tmp, buf[SNMP_MAXBUF_SMALL];
+    size_t            len;
+
+    if ((NULL == line) || (NULL == *line))
+        return NULL;
+
+    /** need somewhere to save rows */
+    netsnmp_assert(_tlstmParams);
+
+    stp = netsnmp_tlstmParams_create(NULL, 0, NULL, 0);
+    if (NULL == stp)
+        return NULL;
+
+    /** name */
+    len = sizeof(buf);
+    tmp = buf;
+    *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+    tmp[len] = 0;
+    /** xxx-rks: validate snmpadminstring? */
+    if (len)
+        stp->name = strdup(buf);
+
+    /** fingerprint hash type*/
+    len = sizeof(buf);
+    tmp = buf;
+    *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+    tmp[len] = 0;
+    if ((buf[0] == '-') && (buf[1] == '-')) {
+        stp->hashType = netsnmp_cert_parse_hash_type(&buf[2]);
+
+        /** set up for fingerprint */
+        len = sizeof(buf);
+        tmp = buf;
+        *line = read_config_read_octet_string(*line, (u_char **)&tmp, &len);
+        tmp[len] = 0;
+    }
+    else
+        stp->hashType =NS_HASH_SHA1;
+    
+    netsnmp_fp_lowercase_and_strip_colon(buf);
+    stp->fingerprint = strdup(buf);
+    stp->fingerprint_len = strlen(buf);
+
+    DEBUGMSGTL(("tlstmParams:restore:common", "name '%s'\n", stp->name));
+
+    return stp;
+}
+
+int
+netsnmp_tlstmParams_add(snmpTlstmParams *stp)
+{
+    if (NULL == stp)
+        return -1;
+
+    DEBUGMSGTL(("tlstmParams:add", "adding entry 0x%lx %s\n", (u_long)stp,
+                stp->name));
+
+    if (CONTAINER_INSERT(_tlstmParams, stp) != 0) {
+        snmp_log(LOG_ERR, "error inserting tlstmParams %s", stp->name);
+        netsnmp_tlstmParams_free(stp);
+        return -1;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_tlstmParams_remove(snmpTlstmParams *stp)
+{
+    if (NULL == stp)
+        return -1;
+
+    DEBUGMSGTL(("tlstmParams:remove", "removing entry 0x%lx %s\n", (u_long)stp,
+                stp->name));
+
+    if (CONTAINER_REMOVE(_tlstmParams, stp) != 0) {
+        snmp_log(LOG_ERR, "error removing tlstmParams %s", stp->name);
+        return -1;
+    }
+
+    return 0;
+}
+
+snmpTlstmParams *
+netsnmp_tlstmParams_find(snmpTlstmParams *stp)
+{
+    snmpTlstmParams *found;
+
+    if (NULL == stp)
+        return NULL;
+
+    found = CONTAINER_FIND(_tlstmParams, stp);
+    return found;
+}
+
+static void
+_parse_params(const char *token, char *line)
+{
+    snmpTlstmParams *stp = netsnmp_tlstmParams_restore_common(&line);
+
+    if (!stp)
+        return;
+
+    stp->flags = TLSTM_PARAMS_FROM_CONFIG | TLSTM_PARAMS_NONVOLATILE;
+
+    netsnmp_tlstmParams_add(stp);
+}
+
+static char *
+_find_tlstmParams_fingerprint(const char *name)
+{
+    snmpTlstmParams lookup_key, *result;
+
+    if (NULL == name)
+        return NULL;
+
+    lookup_key.name = NETSNMP_REMOVE_CONST(char*, name);
+
+    result = CONTAINER_FIND(_tlstmParams, &lookup_key);
+    if ((NULL == result) || (NULL == result->fingerprint))
+        return NULL;
+
+    return strdup(result->fingerprint);
+}
+/*
+ * END snmpTlstmParmsTable data
+ * ***************************************************************************/
+
+/* ***************************************************************************
+ * ***************************************************************************
+ *
+ *
+ * snmpTlstmAddrTable data
+ *
+ *
+ * ***************************************************************************
+ * ***************************************************************************/
+#define ADDR_CONFIG_TOKEN "snmpTlstmAddr"
+static void _parse_addr(const char *token, char *line);
+
+static void
+_init_tlstmAddr(void)
+{
+    const char *addr_help = 
+        ADDR_CONFIG_TOKEN " targetAddrName hashType:fingerprint serverIdentity";
+    
+    /*
+     * container for snmpTlstmAddrTable data
+     */
+    _tlstmAddr = netsnmp_container_find("tlstmAddr:string");
+    if (NULL == _tlstmAddr)
+        snmp_log(LOG_ERR,
+                 "error creating sub-container for tlstmAddrTable\n");
+    else
+        _tlstmAddr->container_name = strdup("tlstmAddr");
+
+    register_config_handler(NULL, ADDR_CONFIG_TOKEN, _parse_addr, NULL,
+                            addr_help);
+}
+
+netsnmp_container *
+netsnmp_tlstmAddr_container(void)
+{
+    return _tlstmAddr;
+}
+
+/*
+ * create a new row in the table 
+ */
+snmpTlstmAddr *
+netsnmp_tlstmAddr_create(char *targetAddrName)
+{
+    snmpTlstmAddr *entry;
+
+    if (NULL == targetAddrName)
+        return NULL;
+
+    entry = SNMP_MALLOC_TYPEDEF(snmpTlstmAddr);
+    if (!entry)
+        return NULL;
+
+    DEBUGMSGT(("tlstmAddr:entry:create", "entry %p %s\n", entry,
+               targetAddrName ? targetAddrName : "NULL"));
+
+    entry->name = strdup(targetAddrName);
+
+    return entry;
+}
+
+void
+netsnmp_tlstmAddr_free(snmpTlstmAddr *entry)
+{
+    if (!entry)
+        return;
+
+    SNMP_FREE(entry->name);
+    SNMP_FREE(entry->fingerprint);
+    SNMP_FREE(entry->identity);
+    free(entry);
+}
+
+int
+netsnmp_tlstmAddr_restore_common(char **line, char *name, size_t *name_len,
+                                 char *id, size_t *id_len, char *fp,
+                                 size_t *fp_len, u_char *ht)
+{
+    size_t fp_len_save = *fp_len;
+
+    *line = read_config_read_octet_string(*line, (u_char **)&name, name_len);
+    if (NULL == *line) {
+        config_perror("incomplete line");
+        return -1;
+    }
+    name[*name_len] = 0;
+
+    *line = read_config_read_octet_string(*line, (u_char **)&fp, fp_len);
+    if (NULL == *line) {
+        config_perror("incomplete line");
+        return -1;
+    }
+    fp[*fp_len] = 0;
+    if ((fp[0] == '-') && (fp[1] == '-')) {
+        *ht = netsnmp_cert_parse_hash_type(&fp[2]);
+        
+        /** set up for fingerprint */
+        *fp_len = fp_len_save;
+        *line = read_config_read_octet_string(*line, (u_char **)&fp, fp_len);
+        fp[*fp_len] = 0;
+    }
+    else
+        *ht = NS_HASH_SHA1;
+    netsnmp_fp_lowercase_and_strip_colon(fp);
+    *fp_len = strlen(fp);
+    
+    *line = read_config_read_octet_string(*line, (u_char **)&id, id_len);
+    id[*id_len] = 0;
+    
+    if (*ht <= NS_HASH_NONE || *ht > NS_HASH_MAX) {
+        config_perror("invalid algorithm for fingerprint");
+        return -1;
+    }
+
+    if ((0 == *fp_len) && ((0 == *id_len || (*id_len == 1 && id[0] == '*')))) {
+        /*
+         * empty fingerprint not allowed with '*' identity
+         */
+        config_perror("must specify fingerprint for '*' identity");
+        return -1;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_tlstmAddr_add(snmpTlstmAddr *entry)
+{
+    if (!entry)
+        return -1;
+
+    DEBUGMSGTL(("tlstmAddr:add", "adding entry 0x%lx %s %s\n",
+                (u_long)entry, entry->name, entry->fingerprint));
+    if (CONTAINER_INSERT(_tlstmAddr, entry) != 0) {
+        snmp_log(LOG_ERR, "could not insert addr %s", entry->name);
+        netsnmp_tlstmAddr_free(entry);
+        return -1;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_tlstmAddr_remove(snmpTlstmAddr *entry)
+{
+    if (!entry)
+        return -1;
+
+    if (CONTAINER_REMOVE(_tlstmAddr, entry) != 0) {
+        snmp_log(LOG_ERR, "could not remove addr %s", entry->name);
+        return -1;
+    }
+
+    return 0;
+}
+
+static void
+_parse_addr(const char *token, char *line)
+{
+    snmpTlstmAddr *entry;
+    char           name[SNMPADMINLENGTH  + 1], id[SNMPADMINLENGTH  + 1],
+                   fingerprint[SNMPTLSFINGERPRINT_MAX_LEN + 1];
+    size_t         name_len = sizeof(name), id_len = sizeof(id),
+                   fp_len = sizeof(fingerprint);
+    u_char         hashType;
+    int            rc;
+
+    rc = netsnmp_tlstmAddr_restore_common(&line, name, &name_len, id, &id_len,
+                                          fingerprint, &fp_len, &hashType);
+    if (rc < 0)
+        return;
+
+    if (NULL != line)
+        config_pwarn("ignore extra tokens on line");
+
+    entry = netsnmp_tlstmAddr_create(name);
+    if (NULL == entry)
+        return;
+
+    entry->flags |= TLSTM_ADDR_FROM_CONFIG;
+    entry->hashType = hashType;
+    if (fp_len)
+        entry->fingerprint = strdup(fingerprint);
+    if (id_len)
+        entry->identity = strdup(id);
+
+    netsnmp_tlstmAddr_add(entry);
+}
+
+static char *
+_find_tlstmAddr_fingerprint(const char *name)
+{
+    snmpTlstmAddr    lookup_key, *result;
+
+    if (NULL == name)
+        return NULL;
+
+    lookup_key.name = NETSNMP_REMOVE_CONST(char*, name);
+
+    result = CONTAINER_FIND(_tlstmAddr, &lookup_key);
+    if (NULL == result)
+        return NULL;
+
+    return result->fingerprint;
+}
+
+char *
+netsnmp_tlstmAddr_get_serverId(const char *name)
+{
+    snmpTlstmAddr    lookup_key, *result;
+
+    if (NULL == name)
+        return NULL;
+
+    lookup_key.name = NETSNMP_REMOVE_CONST(char*, name);
+
+    result = CONTAINER_FIND(_tlstmAddr, &lookup_key);
+    if (NULL == result)
+        return NULL;
+
+    return result->identity;
+}
+/*
+ * END snmpTlstmAddrTable data
+ * ***************************************************************************/
+
+#else
+int cert_unused;	/* Suppress "empty translation unit" warning */
+#endif /* defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) */
diff --git a/snmplib/check_varbind.c b/snmplib/check_varbind.c
index c66f073..442795c 100644
--- a/snmplib/check_varbind.c
+++ b/snmplib/check_varbind.c
@@ -58,7 +58,7 @@
     if (NULL == var)
         return SNMP_ERR_GENERR;
     
-    if ((*var->val.integer < low) || (*var->val.integer > high)) {
+    if (((size_t)*var->val.integer < low) || ((size_t)*var->val.integer > high)) {
         rc = SNMP_ERR_WRONGVALUE;
     }
 
@@ -214,6 +214,23 @@
 }
 
 int
+netsnmp_check_vb_rowstatus_with_storagetype(const netsnmp_variable_list *var,
+                                            int old_value, int old_storage)
+{
+    register int rc = SNMP_ERR_NOERROR;
+
+    if (NULL == var)
+        return SNMP_ERR_GENERR;
+
+    if ((rc = netsnmp_check_vb_rowstatus_value(var)))
+        return rc;
+
+    return check_rowstatus_with_storagetype_transition(old_value,
+                                                       *var->val.integer,
+                                                       old_storage);
+}
+
+int
 netsnmp_check_vb_storagetype(const netsnmp_variable_list *var, int old_value)
 {
     int rc = SNMP_ERR_NOERROR;
diff --git a/snmplib/closedir.c b/snmplib/closedir.c
new file mode 100644
index 0000000..8c4c50e
--- /dev/null
+++ b/snmplib/closedir.c
@@ -0,0 +1,20 @@
+/*
+ * closedir() replacement for MSVC.
+ */
+
+#define WIN32IO_IS_STDIO
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+#include <net-snmp/library/system.h>
+
+/*
+ * free the memory allocated by opendir 
+ */
+int
+closedir(DIR * dirp)
+{
+    free(dirp->start);
+    free(dirp);
+    return 1;
+}
diff --git a/snmplib/cmu_compat.c b/snmplib/cmu_compat.c
index bd45aba..a8dcf3a 100644
--- a/snmplib/cmu_compat.c
+++ b/snmplib/cmu_compat.c
@@ -88,4 +88,6 @@
 }
 
 
+#else
+int cmu_unused;	/* Suppress "empty translation unit" warning */
 #endif                          /* CMU_COMPATIBLE */
diff --git a/snmplib/container.c b/snmplib/container.c
index b56441e..17dd40f 100644
--- a/snmplib/container.c
+++ b/snmplib/container.c
@@ -62,6 +62,7 @@
      */
     containers = netsnmp_container_get_binary_array();
     containers->compare = netsnmp_compare_cstring;
+    containers->container_name = strdup("container list");
 
     /*
      * register containers
@@ -348,6 +349,20 @@
 }
 
 /*------------------------------------------------------------------
+ * These functions should EXACTLY match the function version in
+ * container.c. If you change one, change them both.
+ */
+netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx, u_int flags)
+{
+    if (NULL == x->duplicate) {
+        snmp_log(LOG_ERR, "container '%s' does not support duplicate\n",
+                 x->container_name ? x->container_name : "");
+        return NULL;
+    }
+    return x->duplicate(x, ctx, flags);
+}
+
+/*------------------------------------------------------------------
  * These functions should EXACTLY match the inline version in
  * container.h. If you change one, change them both.
  */
@@ -360,17 +375,17 @@
         x = x->next;
     while(x) {
         netsnmp_container *tmp;
-        const char *name;
+        char *name;
         tmp = x->prev;
         name = x->container_name;
-        if (NULL != x->container_name)
-            SNMP_FREE(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;
@@ -398,6 +413,16 @@
     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.
+ */
+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.
@@ -446,6 +471,26 @@
     c->insert = ins;
     c->remove = rem;
     c->find = fnd;
+    c->free_item = netsnmp_container_simple_free;
+}
+
+int
+netsnmp_container_data_dup(netsnmp_container *dup, netsnmp_container *c)
+{
+    if (!dup || !c)
+        return -1;
+
+    if (c->container_name)
+        dup->container_name = strdup(c->container_name);
+    dup->compare = c->compare;
+    dup->ncompare = c->ncompare;
+    dup->release = c->release;
+    dup->insert_filter = c->insert_filter;
+    dup->free_item = c->free_item;
+    dup->sync = c->sync;
+    dup->flags = c->flags;
+
+    return 0;
 }
 
 /*------------------------------------------------------------------
@@ -543,6 +588,78 @@
     return rc;
 }
 
+typedef struct dummy_long_s {
+    long                      index;
+} dummy_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;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+
+typedef struct dummy_ulong_s {
+    u_long                      index;
+} dummy_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;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+
+typedef struct dummy_int32_s {
+    int32_t                    index;
+} dummy_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;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+
+typedef struct dummy_uint32_s {
+    uint32_t                   index;
+} dummy_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;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+
 /*------------------------------------------------------------------
  * netsnmp_container_simple_free
  *
diff --git a/snmplib/container_binary_array.c b/snmplib/container_binary_array.c
index 7d11c37..a309248 100644
--- a/snmplib/container_binary_array.c
+++ b/snmplib/container_binary_array.c
@@ -36,7 +36,6 @@
 typedef struct binary_array_table_s {
     size_t                     max_size;   /* Size of the current data table */
     size_t                     count;      /* Index of the next free entry */
-    u_int                      flags;      /* flags */
     int                        dirty;
     int                        data_size;  /* Size of an individual entry */
     void                     **data;       /* The table itself */
@@ -66,9 +65,9 @@
     mid = data[(first+last)/2];
     
     do {
-        while ( ((*f)(data[i], mid) < 0) && (i < last))
+        while (i < last && (*f)(data[i], mid) < 0)
             ++i;
-        while ( ((*f)(mid, data[j]) < 0) && (j > first))
+        while (j > first && (*f)(mid, data[j]) < 0)
             --j;
 
         if(i < j) {
@@ -99,7 +98,7 @@
     netsnmp_assert(t!=NULL);
     netsnmp_assert(c->compare!=NULL);
 
-    if (t->flags & CONTAINER_KEY_UNSORTED)
+    if (c->flags & CONTAINER_KEY_UNSORTED)
         return 0;
 
     if (t->dirty) {
@@ -110,6 +109,9 @@
             array_qsort(t->data, 0, t->count - 1, c->compare);
         t->dirty = 0;
 
+        /*
+         * no way to know if it actually changed... just assume so.
+         */
         ++c->sync;
     }
 
@@ -117,6 +119,32 @@
 }
 
 static int
+linear_search(const void *val, netsnmp_container *c)
+{
+    binary_array_table *t = (binary_array_table*)c->container_data;
+    size_t             pos = 0;
+
+    if (!t->count)
+        return -1;
+
+    if (! (c->flags & CONTAINER_KEY_UNSORTED)) {
+        snmp_log(LOG_ERR, "linear search on sorted container %s?!?\n",
+                 c->container_name);
+        return -1;
+    }
+
+    for (; pos < t->count; ++pos) {
+        if (c->compare(t->data[pos], val) == 0)
+            break;
+    }
+
+    if (pos >= t->count)
+        return -1;
+
+    return pos;
+}
+
+static int
 binary_search(const void *val, netsnmp_container *c, int exact)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
@@ -129,6 +157,15 @@
     if (!len)
         return -1;
 
+    if (c->flags & CONTAINER_KEY_UNSORTED) {
+        if (!exact) {
+            snmp_log(LOG_ERR, "non-exact search on unsorted container %s?!?\n",
+                     c->container_name);
+            return -1;
+        }
+        return linear_search(val, c);
+    }
+
     if (t->dirty)
         Sort_Array(c);
 
@@ -204,11 +241,16 @@
 int
 netsnmp_binary_array_options_set(netsnmp_container *c, int set, u_int flags)
 {
-    binary_array_table *t = (binary_array_table*)c->container_data;
-    if (set)
-        t->flags = flags;
+#define BA_FLAGS (CONTAINER_KEY_ALLOW_DUPLICATES|CONTAINER_KEY_UNSORTED)
+
+    if (set) {
+        if ((flags & BA_FLAGS) == flags)
+            c->flags = flags;
+        else
+            flags = (u_int)-1; /* unsupported flag */
+    }
     else
-        return ((t->flags & flags) == flags);
+        return ((c->flags & flags) == flags);
     return flags;
 }
 
@@ -252,10 +294,46 @@
 }
 
 int
+netsnmp_binary_array_remove_at(netsnmp_container *c, size_t index, void **save)
+{
+    binary_array_table *t = (binary_array_table*)c->container_data;
+
+    if (save)
+        *save = NULL;
+    
+    /*
+     * if there is no data, return NULL;
+     */
+    if (!t->count)
+        return 0;
+
+    /*
+     * find old data and save it, if ptr provided
+     */
+    if (save)
+        *save = t->data[index];
+
+    /*
+     * if entry was last item, just decrement count
+     */
+    --t->count;
+    if (index != t->count) {
+        /*
+         * otherwise, shift array down
+         */
+        memmove(&t->data[index], &t->data[index+1],
+                t->data_size * (t->count - index));
+
+        ++c->sync;
+    }
+
+    return 0;
+}
+int
 netsnmp_binary_array_remove(netsnmp_container *c, const void *key, void **save)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    size_t             index = 0;
+    int                index = 0;
 
     if (save)
         *save = NULL;
@@ -278,24 +356,7 @@
     if ((index = binary_search(key, c, 1)) == -1)
         return -1;
 
-    /*
-     * find old data and save it, if ptr provided
-     */
-    if (save)
-        *save = t->data[index];
-
-    /*
-     * if entry was last item, just decrement count
-     */
-    --t->count;
-    if (index != t->count) {
-        /*
-         * otherwise, shift array down
-         */
-        memmove(&t->data[index], &t->data[index+1], t->data_size * (t->count - index));
-    }
-
-    return 0;
+    return netsnmp_binary_array_remove_at(c, (size_t)index, save);
 }
 
 NETSNMP_STATIC_INLINE void
@@ -336,13 +397,14 @@
 netsnmp_binary_array_insert(netsnmp_container *c, const void *entry)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    int             new_max;
-    void           *new_data;   /* Used for * a) extending the data table
+    int             new_max, new_size, was_dirty = 0;
+    char           *new_data;   /* Used for * a) extending the data table
                                  * * b) the next entry to use */
     /*
      * check for duplicates
      */
-    if (! (t->flags & CONTAINER_KEY_ALLOW_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) {
             DEBUGMSGTL(("container","not inserting duplicate key\n"));
@@ -361,13 +423,14 @@
         if (new_max == 0)
             new_max = 10;       /* Start with 10 entries */
 
-        new_data = (void *) calloc(new_max, t->data_size);
+        new_size = new_max * t->data_size;
+        new_data = (char *) realloc(t->data, new_size);
         if (new_data == NULL)
             return -1;
-
-        if (t->data) {
-            memcpy(new_data, t->data, t->max_size * t->data_size);
-            SNMP_FREE(t->data);
+        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;
         t->max_size = new_max;
@@ -378,6 +441,15 @@
      */
     t->data[t->count++] = NETSNMP_REMOVE_CONST(void *, entry);
     t->dirty = 1;
+
+    /*
+     * if array was dirty before we called get, sync was incremented when
+     * get called SortArray. If we didn't call get or the array wasn't dirty,
+     * bump sync now.
+     */
+    if (!was_dirty)
+        ++c->sync;
+
     return 0;
 }
 
@@ -424,7 +496,7 @@
 void          **
 netsnmp_binary_array_get_subset(netsnmp_container *c, void *key, int *len)
 {
-    binary_array_table *t = (binary_array_table*)c->container_data;
+    binary_array_table *t;
     void          **subset;
     int             start, end;
     size_t          i;
@@ -432,7 +504,12 @@
     /*
      * if there is no data, return NULL;
      */
-    if (!t->count || !key)
+    if (!c || !key)
+        return NULL;
+
+    t = (binary_array_table*)c->container_data;
+    netsnmp_assert(c->ncompare);
+    if (!t->count | !c->ncompare)
         return NULL;
 
     /*
@@ -542,6 +619,61 @@
     return va;
 }
 
+static int _ba_options(netsnmp_container *c, int set, u_int flags)
+{
+    return netsnmp_binary_array_options_set(c, set, flags);
+}
+
+static netsnmp_container *
+_ba_duplicate(netsnmp_container *c, void *ctx, u_int flags)
+{
+    netsnmp_container *dup;
+    binary_array_table *dupt, *t;
+
+    if (flags) {
+        snmp_log(LOG_ERR, "binary arry duplicate does not supprt flags yet\n");
+        return NULL;
+    }
+
+    dup = netsnmp_container_get_binary_array();
+    if (NULL == dup) {
+        snmp_log(LOG_ERR," no memory for binary array duplicate\n");
+        return NULL;
+    }
+    /*
+     * deal with container stuff
+     */
+    if (netsnmp_container_data_dup(dup, c) != 0) {
+        netsnmp_binary_array_release(dup);
+        return NULL;
+    }
+
+    /*
+     * deal with data
+     */
+    dupt = (binary_array_table*)dup->container_data;
+    t = (binary_array_table*)c->container_data;
+
+    dupt->max_size = t->max_size;
+    dupt->count = t->count;
+    dupt->dirty = t->dirty;
+    dupt->data_size = t->data_size;
+
+    /*
+     * shallow copy
+     */
+    dupt->data = (void**) calloc(dupt->max_size, dupt->data_size);
+    if (NULL == dupt->data) {
+        snmp_log(LOG_ERR, "no memory for binary array duplicate\n");
+        netsnmp_binary_array_release(dup);
+        return NULL;
+    }
+
+    memcpy(dupt->data, t->data, dupt->max_size * dupt->data_size);
+    
+    return dup;
+}
+
 netsnmp_container *
 netsnmp_container_get_binary_array(void)
 {
@@ -555,18 +687,19 @@
     }
 
     c->container_data = netsnmp_binary_array_initialize();
-        
-    c->get_size = _ba_size;
-    c->init = NULL;
-    c->cfree = _ba_free;
-    c->insert = _ba_insert;
-    c->remove = _ba_remove;
-    c->find = _ba_find;
+
+    /*
+     * NOTE: CHANGES HERE MUST BE DUPLICATED IN duplicate AS WELL!!
+     */
+    netsnmp_init_container(c, NULL, _ba_free, _ba_size, NULL, _ba_insert,
+                           _ba_remove, _ba_find);
     c->find_next = _ba_find_next;
     c->get_subset = _ba_get_subset;
     c->get_iterator = _ba_iterator_get;
     c->for_each = _ba_for_each;
     c->clear = _ba_clear;
+    c->options = _ba_options;
+    c->duplicate = _ba_duplicate;
         
     return c;
 }
@@ -679,6 +812,25 @@
 }
 
 static int
+_ba_iterator_remove(binary_array_iterator *it)
+{
+    binary_array_table* t = _ba_it2cont(it);
+    if(NULL == t) {
+        netsnmp_assert(NULL != t);
+        return -1;
+    }
+
+    /*
+     * since this iterator was used for the remove, keep it in sync with
+     * the container. Also, back up one so that next will be the position
+     * that was just removed.
+     */
+    ++it->base.sync;
+    return netsnmp_binary_array_remove_at(it->base.container, it->pos--, NULL);
+
+}
+
+static int
 _ba_iterator_reset(binary_array_iterator *it)
 {
     binary_array_table* t = _ba_it2cont(it);
@@ -727,6 +879,7 @@
     it->base.next = (netsnmp_iterator_rtn*)_ba_iterator_next;
     it->base.curr = (netsnmp_iterator_rtn*)_ba_iterator_curr;
     it->base.last = (netsnmp_iterator_rtn*)_ba_iterator_last;
+    it->base.remove = (netsnmp_iterator_rc*)_ba_iterator_remove;
     it->base.reset = (netsnmp_iterator_rc*)_ba_iterator_reset;
     it->base.release = (netsnmp_iterator_rc*)_ba_iterator_release;
 
diff --git a/snmplib/container_list_ssll.c b/snmplib/container_list_ssll.c
index 14a6a72..65e3968 100644
--- a/snmplib/container_list_ssll.c
+++ b/snmplib/container_list_ssll.c
@@ -310,13 +310,9 @@
         return NULL;
     }
 
-    sl->c.cfree = _ssll_free;
-        
-    sl->c.get_size = _ssll_size;
-    sl->c.init = NULL;
-    sl->c.insert = _ssll_insert;
-    sl->c.remove = _ssll_remove;
-    sl->c.find = _ssll_find;
+    netsnmp_init_container((netsnmp_container *)sl, NULL, _ssll_free,
+                           _ssll_size, NULL, _ssll_insert, _ssll_remove,
+                           _ssll_find);
     sl->c.find_next = _ssll_find_next;
     sl->c.get_subset = NULL;
     sl->c.get_iterator =_ssll_iterator_get;
diff --git a/snmplib/data_list.c b/snmplib/data_list.c
index 8188598..c379fa6 100644
--- a/snmplib/data_list.c
+++ b/snmplib/data_list.c
@@ -62,8 +62,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;
@@ -83,12 +83,13 @@
     netsnmp_assert(NULL != node);
     netsnmp_assert(NULL != node->name);
 
+    DEBUGMSGTL(("data_list","adding key '%s'\n", node->name));
+
     if (!*head) {
         *head = node;
         return;
     }
 
-    DEBUGMSGTL(("data_list","adding key '%s'\n", node->name));
     if (0 == strcmp(node->name, (*head)->name)) {
         netsnmp_assert(!"list key == is unique"); /* always fail */
         snmp_log(LOG_WARNING,
diff --git a/snmplib/default_store.c b/snmplib/default_store.c
index 9bfd228..83f4e34 100644
--- a/snmplib/default_store.c
+++ b/snmplib/default_store.c
@@ -141,9 +141,6 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
diff --git a/snmplib/dir_utils.c b/snmplib/dir_utils.c
index d203c92..a97505d 100644
--- a/snmplib/dir_utils.c
+++ b/snmplib/dir_utils.c
@@ -44,22 +44,36 @@
 
 #include <net-snmp/types.h>
 #include <net-snmp/library/container.h>
-#include <net-snmp/library/container_binary_array.h>
+#include <net-snmp/library/file_utils.h>
 #include <net-snmp/library/dir_utils.h>
 
+static int
+_insert_nsfile( netsnmp_container *c, const char *name, struct stat *stats,
+                u_int flags);
+
+/*
+ * read file names in a directory, with an optional filter
+ */
 netsnmp_container *
-netsnmp_directory_container_read(netsnmp_container *user_container,
-                                 const char *dirname, u_int flags)
+netsnmp_directory_container_read_some(netsnmp_container *user_container,
+                                      const char *dirname,
+                                      netsnmp_directory_filter *filter,
+                                      void *filter_ctx, u_int flags)
 {
     DIR               *dir;
     netsnmp_container *container = user_container;
     struct dirent     *file;
-    char               path[PATH_MAX];
-    u_char             dirname_len;
+    char               path[SNMP_MAXPATH];
+    size_t             dirname_len;
     int                rc;
-#if !(defined(HAVE_STRUCT_DIRENT_D_TYPE) && defined(DT_DIR)) && defined(S_ISDIR)
     struct stat        statbuf;
-#endif
+    netsnmp_file       ns_file_tmp;
+
+    if ((flags & NETSNMP_DIR_RELATIVE_PATH) && (flags & NETSNMP_DIR_RECURSE)) {
+        DEBUGMSGTL(("directory:container",
+                    "no support for relative path with recursion\n"));
+        return NULL;
+    }
 
     DEBUGMSGTL(("directory:container", "reading %s\n", dirname));
 
@@ -67,29 +81,50 @@
      * create the container, if needed
      */
     if (NULL == container) {
-        container = netsnmp_container_find("directory_container:cstring");
+        if (flags & NETSNMP_DIR_NSFILE) {
+            container = netsnmp_container_find("nsfile_directory_container:"
+                                               "binary_array");
+            if (container) {
+                container->compare = (netsnmp_container_compare*)
+                    netsnmp_file_compare_name;
+                container->free_item = (netsnmp_container_obj_func *)
+                    netsnmp_file_container_free;
+            }
+        }
+        else
+            container = netsnmp_container_find("directory_container:cstring");
         if (NULL == container)
             return NULL;
-        container->container_name = strdup("directory container");
-        netsnmp_binary_array_options_set(container, 1, CONTAINER_KEY_UNSORTED);
+        container->container_name = strdup(dirname);
+        /** default to unsorted */
+        if (! (flags & NETSNMP_DIR_SORTED))
+            CONTAINER_SET_OPTIONS(container, CONTAINER_KEY_UNSORTED, rc);
     }
 
     dir = opendir(dirname);
     if (NULL == dir) {
         DEBUGMSGTL(("directory:container", "  not a dir\n"));
+        if (container != user_container)
+            netsnmp_directory_container_free(container);
         return NULL;
     }
 
     /** copy dirname into path */
-    dirname_len = strlen(dirname);
-    strlcpy(path, dirname, sizeof(path));
-    if ((dirname_len + 2) > sizeof(path)) {
-        /** not enough room for files */
-        closedir(dir);
-        return NULL;
+    if (flags & NETSNMP_DIR_RELATIVE_PATH)
+        dirname_len = 0;
+    else {
+        dirname_len = strlen(dirname);
+        strlcpy(path, dirname, sizeof(path));
+        if ((dirname_len + 2) > sizeof(path)) {
+            /** not enough room for files */
+            closedir(dir);
+            if (container != user_container)
+                netsnmp_directory_container_free(container);
+            return NULL;
+        }
+        path[dirname_len] = '/';
+        path[++dirname_len] = '\0';
     }
-    path[dirname_len] = '/';
-    path[++dirname_len] = '\0';
 
     /** iterate over dir */
     while ((file = readdir(dir))) {
@@ -104,22 +139,48 @@
             continue;
 
         strlcpy(&path[dirname_len], file->d_name, sizeof(path) - dirname_len);
-        DEBUGMSGTL(("9:directory:container", "  found %s\n", path));
+        if (NULL != filter) {
+            if (flags & NETSNMP_DIR_NSFILE_STATS) {
+                /** use local vars for now */
+                if (stat(path, &statbuf) != 0) {
+                    snmp_log(LOG_ERR, "could not stat %s\n", file->d_name);
+                    break;
+                }
+                ns_file_tmp.stats = &statbuf;
+                ns_file_tmp.name = path;
+                rc = (*filter)(&ns_file_tmp, filter_ctx);
+            }
+            else
+                rc = (*filter)(path, filter_ctx);
+            if (0 == rc) {
+                DEBUGMSGTL(("directory:container:filtered", "%s\n",
+                            file->d_name));
+                continue;
+            }
+        }
+
+        DEBUGMSGTL(("directory:container:found", "%s\n", path));
+        if ((flags & NETSNMP_DIR_RECURSE) 
 #if defined(HAVE_STRUCT_DIRENT_D_TYPE) && defined(DT_DIR)
-        if ((file->d_type == DT_DIR) && (flags & NETSNMP_DIR_RECURSE)) {
+            && (file->d_type == DT_DIR)
 #elif defined(S_ISDIR)
-        if ((flags & NETSNMP_DIR_RECURSE) && (stat(file->d_name, &statbuf) != 0) && (S_ISDIR(statbuf.st_mode))) {
-#else
-        if (flags & NETSNMP_DIR_RECURSE) {
+            && (stat(file->d_name, &statbuf) != 0) && (S_ISDIR(statbuf.st_mode))
 #endif
+            ) {
             /** xxx add the dir as well? not for now.. maybe another flag? */
             netsnmp_directory_container_read(container, path, flags);
         }
+        else if (flags & NETSNMP_DIR_NSFILE) {
+            if (_insert_nsfile( container, file->d_name,
+                                filter ? &statbuf : NULL, flags ) < 0)
+                break;
+        }
         else {
             char *dup = strdup(path);
             if (NULL == dup) {
-               snmp_log(LOG_ERR, "strdup failed\n");
-               break;
+                snmp_log(LOG_ERR,
+                         "strdup failed while building directory container\n");
+                break;
             }
             rc = CONTAINER_INSERT(container, dup);
             if (-1 == rc ) {
@@ -127,12 +188,16 @@
                 free(dup);
             }
         }
-    }
+    } /* while */
 
     closedir(dir);
 
-    DEBUGMSGTL(("directory:container", "  container now has %d items\n",
-                (int)CONTAINER_SIZE(container)));
+    rc = CONTAINER_SIZE(container);
+    DEBUGMSGTL(("directory:container", "  container now has %d items\n", rc));
+    if ((0 == rc) && !(flags & NETSNMP_DIR_EMPTY_OK)) {
+        netsnmp_directory_container_free(container);
+        return NULL;
+    }
     
     return container;
 }
@@ -140,6 +205,41 @@
 void
 netsnmp_directory_container_free(netsnmp_container *container)
 {
-    CONTAINER_CLEAR(container, netsnmp_container_simple_free, NULL);
+    CONTAINER_FREE_ALL(container, NULL);
     CONTAINER_FREE(container);
 }
+
+static int
+_insert_nsfile( netsnmp_container *c, const char *name, struct stat *stats,
+                u_int flags)
+{
+    int           rc;
+    netsnmp_file *ns_file = netsnmp_file_new(name, 0, 0, 0);
+    if (NULL == ns_file) {
+        snmp_log(LOG_ERR, "error creating ns_file\n");
+        return -1;
+    }
+
+    if (flags & NETSNMP_DIR_NSFILE_STATS) {
+        ns_file->stats = (struct stat*)calloc(1,sizeof(*(ns_file->stats)));
+        if (NULL == ns_file->stats) {
+            snmp_log(LOG_ERR, "error creating stats for ns_file\n");
+            netsnmp_file_release(ns_file);
+            return -1;
+        }
+    
+        /** use stats from earlier if we have them */
+        if (stats)
+            memcpy(ns_file->stats, stats, sizeof(*stats));
+        else
+            stat(ns_file->name, ns_file->stats);
+    }
+
+    rc = CONTAINER_INSERT(c, ns_file);
+    if (-1 == rc ) {
+        DEBUGMSGTL(("directory:container", "  err adding %s\n", name));
+        netsnmp_file_release(ns_file);
+    }
+
+    return 0;
+}
diff --git a/snmplib/fd_event_manager.c b/snmplib/fd_event_manager.c
index ae99c04..20454f7 100644
--- a/snmplib/fd_event_manager.c
+++ b/snmplib/fd_event_manager.c
@@ -182,7 +182,7 @@
   {
     snmp_log(LOG_ERR,
 	     "Use netsnmp_external_event_info2() for processing"
-	     " large file descriptors");
+	     " large file descriptors\n");
   }
 
   netsnmp_large_fd_set_cleanup(&lreadfds);
@@ -241,7 +241,7 @@
   {
     snmp_log(LOG_ERR,
 	     "Use netsnmp_dispatch_external_events2() for processing"
-	     " large file descriptors");
+	     " large file descriptors\n");
   }
 
   netsnmp_large_fd_set_cleanup(&lreadfds);
diff --git a/snmplib/file_utils.c b/snmplib/file_utils.c
index 9f19b36..889d552 100644
--- a/snmplib/file_utils.c
+++ b/snmplib/file_utils.c
@@ -77,6 +77,31 @@
 }
 
 /**
+ * open file and get stats
+ */
+netsnmp_file *
+netsnmp_file_new(const char *name, int fs_flags, mode_t mode, u_int ns_flags)
+{
+    netsnmp_file *filei = netsnmp_file_fill(NULL, name, fs_flags, mode, 0);
+    if (NULL == filei)
+        return NULL;
+
+    if (ns_flags & NETSNMP_FILE_STATS) {
+        filei->stats = (struct stat*)calloc(1, sizeof(*(filei->stats)));
+        if (NULL == filei->stats)
+            DEBUGMSGT(("nsfile:new", "no memory for stats\n"));
+        else if (stat(name, filei->stats) != 0)
+            DEBUGMSGT(("nsfile:new", "error getting stats\n"));
+    }
+
+    if (ns_flags & NETSNMP_FILE_AUTO_OPEN)
+        netsnmp_file_open(filei);
+
+    return filei;
+}
+
+        
+/**
  * fill core members in a netsnmp_file structure
  *
  * @param filei      structure to fill; if NULL, a new one will be allocated
@@ -100,6 +125,7 @@
 
     filei->fs_flags = fs_flags;
     filei->ns_flags = ns_flags;
+    filei->mode = mode;
 
     return filei;
 }
@@ -126,6 +152,9 @@
     if (NULL != filei->extras)
         netsnmp_free_all_list_data(filei->extras);
 
+    if (NULL != filei->stats)
+        free(filei->stats);
+
     SNMP_FREE(filei);
 
     return rc;
@@ -208,3 +237,17 @@
     return rc;
 }
 
+void
+netsnmp_file_container_free(netsnmp_file *file, void *context)
+{
+    netsnmp_file_release(file);
+}
+
+int
+netsnmp_file_compare_name(netsnmp_file *lhs, netsnmp_file *rhs)
+{
+    netsnmp_assert((NULL != lhs) && (NULL != rhs));
+    netsnmp_assert((NULL != lhs->name) && (NULL != rhs->name));
+
+    return strcmp(lhs->name, rhs->name);
+}
diff --git a/snmplib/getopt.c b/snmplib/getopt.c
index d2b203e..1e8e9c3 100644
--- a/snmplib/getopt.c
+++ b/snmplib/getopt.c
@@ -35,10 +35,14 @@
     "$Id$";
 #endif                          /* LIBC_SCCS and not lint */
 
+#include <net-snmp/net-snmp-config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
+#include <net-snmp/library/getopt.h>
+
 #ifdef _BSD
 extern char    *__progname;
 #else
diff --git a/snmplib/gettimeofday.c b/snmplib/gettimeofday.c
new file mode 100644
index 0000000..3c75d3a
--- /dev/null
+++ b/snmplib/gettimeofday.c
@@ -0,0 +1,33 @@
+/*
+ * gettimeofday() replacement for MSVC.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+
+#ifdef HAVE_SYS_TIMEB_H
+# include <sys/timeb.h> /* _ftime() */
+#endif
+#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
+
+#include <net-snmp/library/system.h>
+
+int
+gettimeofday(struct timeval *tv, struct timezone *tz)
+{
+    struct _timeb   timebuffer;
+
+    _ftime(&timebuffer);
+    tv->tv_usec = timebuffer.millitm * 1000;
+    tv->tv_sec = timebuffer.time;
+    return (0);
+}
diff --git a/snmplib/inet_ntop.c b/snmplib/inet_ntop.c
index c26afc4..05bafbe 100644
--- a/snmplib/inet_ntop.c
+++ b/snmplib/inet_ntop.c
@@ -19,16 +19,10 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#ifndef HAVE_INET_NTOP
-
 #if HAVE_ARPA_NAMESER_H
 #include <arpa/nameser.h>
 #endif
 
-#if defined(HAVE_WINSOCK_H)
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
 #include <errno.h>
 #include <stdio.h>
 #if HAVE_STRING_H
@@ -39,6 +33,8 @@
 
 #include <net-snmp/types.h>
 
+#include "inet_ntop.h"
+
 #ifndef EAFNOSUPPORT
 #define EAFNOSUPPORT            WSAEAFNOSUPPORT
 #endif
@@ -76,7 +72,7 @@
  *	Paul Vixie, 1996.
  */
 const char *
-inet_ntop(int af, const void *src, char *dst, size_t size)
+netsnmp_inet_ntop(int af, const void *src, char *dst, size_t size)
 {
 
 	switch (af) {
@@ -212,5 +208,3 @@
 	return (dst);
 }
 #endif
-
-#endif /* HAVE_INET_NTOP */
diff --git a/snmplib/inet_ntop.h b/snmplib/inet_ntop.h
new file mode 100644
index 0000000..011d8a6
--- /dev/null
+++ b/snmplib/inet_ntop.h
@@ -0,0 +1,12 @@
+#ifndef _INET_NTOP_H
+#define _INET_NTOP_H
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+
+#ifndef HAVE_INET_NTOP
+const char     *netsnmp_inet_ntop(int af, const void *src, char *dst, size_t size);
+#define inet_ntop netsnmp_inet_ntop
+#endif /*HAVE_INET_NTOP */
+
+#endif /*_INET_NTOP_H*/
diff --git a/snmplib/inet_pton.c b/snmplib/inet_pton.c
index 8b5c71e..47fe3ec 100644
--- a/snmplib/inet_pton.c
+++ b/snmplib/inet_pton.c
@@ -19,18 +19,12 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#ifndef HAVE_INET_PTON
-
 #include <ctype.h>
 
 #if HAVE_ARPA_NAMESER_H
 #include <arpa/nameser.h>
 #endif
 
-#if defined(HAVE_WINSOCK_H)
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
 #include <errno.h>
 #include <stdio.h>
 #if HAVE_STRING_H
@@ -40,6 +34,7 @@
 #endif
 
 #include <net-snmp/types.h>
+#include "inet_pton.h"
 
 #ifndef EAFNOSUPPORT
 #define EAFNOSUPPORT            WSAEAFNOSUPPORT
@@ -79,7 +74,7 @@
  *	Paul Vixie, 1996.
  */
 int
-inet_pton(int af, const char *src, void *dst)
+netsnmp_inet_pton(int af, const char *src, void *dst)
 {
 
 	switch (af) {
@@ -314,5 +309,3 @@
 	return (1);
 }
 #endif
-
-#endif /* HAVE_INET_PTON */
diff --git a/snmplib/inet_pton.h b/snmplib/inet_pton.h
new file mode 100644
index 0000000..7696671
--- /dev/null
+++ b/snmplib/inet_pton.h
@@ -0,0 +1,12 @@
+#ifndef _INET_PTON_H
+#define _INET_PTON_H
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+
+#ifndef HAVE_INET_PTON
+int             netsnmp_inet_pton(int af, const char *src, void *dst);
+#define inet_pton netsnmp_inet_pton
+#endif /*HAVE_INET_PTON */
+
+#endif /*_INET_PTON_H*/
diff --git a/snmplib/int64.c b/snmplib/int64.c
index a8178f1..2d86959 100644
--- a/snmplib/int64.c
+++ b/snmplib/int64.c
@@ -16,9 +16,6 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #include <net-snmp/types.h>
 #include <net-snmp/library/int64.h>
@@ -442,7 +439,7 @@
         str++;
     }
 
-    while (*str && isdigit(*str)) {
+    while (*str && isdigit((unsigned char)(*str))) {
         ok = 1;
         u = *str - '0';
         multBy10(*i64, &i64p);
diff --git a/snmplib/keytools.c b/snmplib/keytools.c
index 77030bd..c1dbcd6 100644
--- a/snmplib/keytools.c
+++ b/snmplib/keytools.c
@@ -17,9 +17,6 @@
 
 #include <stdio.h>
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -51,6 +48,10 @@
 #include <net-snmp/library/md5.h>
 #endif
 #endif
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+#include <net-snmp/library/openssl_md5.h>
+#include <net-snmp/library/openssl_sha.h>
+#endif
 
 #ifdef NETSNMP_USE_PKCS11
 #include <security/cryptoki.h>
@@ -96,11 +97,15 @@
  */
 int
 generate_Ku(const oid * hashtype, u_int hashtype_len,
-            u_char * P, size_t pplen, u_char * Ku, size_t * kulen)
-#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL)
+            const u_char * P, size_t pplen, u_char * Ku, size_t * kulen)
+#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS,
         nbytes = USM_LENGTH_EXPANDED_PASSPHRASE;
+#if !defined(NETSNMP_USE_OPENSSL) && \
+    defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
+    int             ret;
+#endif
 
     u_int           i, pindex = 0;
 
@@ -108,7 +113,12 @@
 
 #ifdef NETSNMP_USE_OPENSSL
     EVP_MD_CTX     *ctx = NULL;
-    unsigned int    tmp_len;
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+    SHA_CTX csha1;
+    MD5_CTX cmd5;
+    char    cryptotype = 0;
+#define TYPE_MD5  1
+#define TYPE_SHA1 2
 #else
     MDstruct        MD;
 #endif
@@ -151,6 +161,21 @@
                 return SNMPERR_GENERR;
         } else
         QUITFUN(SNMPERR_GENERR, generate_Ku_quit);
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+#ifndef NETSNMP_DISABLE_MD5
+    if (ISTRANSFORM(hashtype, HMACMD5Auth)) {
+        if (!MD5_Init(&cmd5))
+            return SNMPERR_GENERR;
+        cryptotype = TYPE_MD5;
+    } else
+#endif
+           if (ISTRANSFORM(hashtype, HMACSHA1Auth)) {
+        if (!SHA1_Init(&csha1))
+            return SNMPERR_GENERR;
+        cryptotype = TYPE_SHA1;
+    } else {
+        return (SNMPERR_GENERR);
+    }
 #else
     MDbegin(&MD);
 #endif                          /* NETSNMP_USE_OPENSSL */
@@ -162,29 +187,54 @@
         }
 #ifdef NETSNMP_USE_OPENSSL
         EVP_DigestUpdate(ctx, buf, USM_LENGTH_KU_HASHBLOCK);
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+        if (TYPE_SHA1 == cryptotype) {
+            rval = !SHA1_Update(&csha1, buf, USM_LENGTH_KU_HASHBLOCK);
+        } else {
+            rval = !MD5_Update(&cmd5, buf, USM_LENGTH_KU_HASHBLOCK);
+        }
+        if (rval != 0) {
+            return SNMPERR_USM_ENCRYPTIONERROR;
+        }
 #elif NETSNMP_USE_INTERNAL_MD5
         if (MDupdate(&MD, buf, USM_LENGTH_KU_HASHBLOCK * 8)) {
             rval = SNMPERR_USM_ENCRYPTIONERROR;
             goto md5_fin;
         }
 #endif                          /* NETSNMP_USE_OPENSSL */
-
         nbytes -= USM_LENGTH_KU_HASHBLOCK;
     }
 
 #ifdef NETSNMP_USE_OPENSSL
+    {
+    unsigned int    tmp_len;
+
     tmp_len = *kulen;
     EVP_DigestFinal(ctx, (unsigned char *) Ku, &tmp_len);
     *kulen = tmp_len;
     /*
      * what about free() 
      */
+    }
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+    if (TYPE_SHA1 == cryptotype) {
+        SHA1_Final(Ku, &csha1);
+    } else {
+        MD5_Final(Ku, &cmd5);
+    }
+    ret = sc_get_properlength(hashtype, hashtype_len);
+    if (ret == SNMPERR_GENERR)
+        return SNMPERR_GENERR;
+    *kulen = ret;
 #elif NETSNMP_USE_INTERNAL_MD5
     if (MDupdate(&MD, buf, 0)) {
         rval = SNMPERR_USM_ENCRYPTIONERROR;
         goto md5_fin;
     }
-    *kulen = sc_get_properlength(hashtype, hashtype_len);
+    ret = sc_get_properlength(hashtype, hashtype_len);
+    if (ret == SNMPERR_GENERR)
+        return SNMPERR_GENERR;
+    *kulen = ret;
     MDget(&MD, Ku, *kulen);
   md5_fin:
     memset(&MD, 0, sizeof(MD));
@@ -295,10 +345,10 @@
  */
 int
 generate_kul(const oid * hashtype, u_int hashtype_len,
-             u_char * engineID, size_t engineID_len,
-             u_char * Ku, size_t ku_len,
+             const u_char * engineID, size_t engineID_len,
+             const u_char * Ku, size_t ku_len,
              u_char * Kul, size_t * kul_len)
-#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
     u_int           nbytes = 0;
@@ -327,7 +377,7 @@
 
     properlength = (size_t) iproperlength;
 
-    if (((int) *kul_len < properlength) || ((int) ku_len < properlength)) {
+    if ((*kul_len < properlength) || (ku_len < properlength)) {
         QUITFUN(SNMPERR_GENERR, generate_kul_quit);
     }
 
@@ -406,9 +456,10 @@
                  u_char * oldkey, size_t oldkey_len,
                  u_char * newkey, size_t newkey_len,
                  u_char * kcstring, size_t * kcstring_len)
-#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
+    int             iproperlength;
     size_t          properlength;
     size_t          nbytes = 0;
 
@@ -430,15 +481,15 @@
     /*
      * Setup for the transform type.
      */
-    properlength = sc_get_properlength(hashtype, hashtype_len);
-    if (properlength == SNMPERR_GENERR)
+    iproperlength = sc_get_properlength(hashtype, hashtype_len);
+    if (iproperlength == SNMPERR_GENERR)
         QUITFUN(SNMPERR_GENERR, encode_keychange_quit);
 
     if ((oldkey_len != newkey_len) || (*kcstring_len < (2 * oldkey_len))) {
         QUITFUN(SNMPERR_GENERR, encode_keychange_quit);
     }
 
-    properlength = SNMP_MIN((int) oldkey_len, properlength);
+    properlength = SNMP_MIN(oldkey_len, (size_t)iproperlength);
 
     /*
      * Use the old key and some random bytes to encode the new key
@@ -459,7 +510,7 @@
 #else                           /* !NETSNMP_ENABLE_TESTING_CODE */
     rval = sc_random(kcstring, &nbytes);
     QUITFUN(rval, encode_keychange_quit);
-    if ((int) nbytes != properlength) {
+    if (nbytes != properlength) {
         QUITFUN(SNMPERR_GENERR, encode_keychange_quit);
     }
 #endif                          /* !NETSNMP_ENABLE_TESTING_CODE */
@@ -479,7 +530,7 @@
 
         kcstring += properlength;
         nbytes = 0;
-        while ((int) (nbytes++) < properlength) {
+        while ((nbytes++) < properlength) {
             *kcstring++ ^= *newkey++;
         }
     }
@@ -534,7 +585,7 @@
                  u_char * oldkey, size_t oldkey_len,
                  u_char * kcstring, size_t kcstring_len,
                  u_char * newkey, size_t * newkey_len)
-#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
     size_t          properlength = 0;
@@ -591,7 +642,7 @@
         memcpy(newkey, tmp_buf, properlength);
         bufp = kcstring + properlength;
         nbytes = 0;
-        while ((int) (nbytes++) < properlength) {
+        while ((nbytes++) < properlength) {
             *newkey++ ^= *bufp++;
         }
     }
diff --git a/snmplib/large_fd_set.c b/snmplib/large_fd_set.c
index f96c920..89058aa 100644
--- a/snmplib/large_fd_set.c
+++ b/snmplib/large_fd_set.c
@@ -14,10 +14,7 @@
 #include <stdlib.h>
 #endif
 
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
+#include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/snmp_assert.h>
 #include <net-snmp/library/large_fd_set.h>
 
@@ -137,10 +134,10 @@
 }
 
 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)
+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)
 {
 #if defined(cygwin) || !defined(HAVE_WINSOCK_H)
     /* Bit-set representation: make sure all fds have at least size 'numfds'. */
@@ -226,7 +223,7 @@
 {
     netsnmp_large_fd_set_resize(fdset, 0);
     fdset->lfs_setsize = 0;
-    fdset->lfs_setptr  = 0;
+    fdset->lfs_setptr  = NULL;
 }
 
 void
diff --git a/snmplib/lcd_time.c b/snmplib/lcd_time.c
index 3fd8551..2222904 100644
--- a/snmplib/lcd_time.c
+++ b/snmplib/lcd_time.c
@@ -8,9 +8,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #include <stdio.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -21,11 +18,7 @@
 #include <strings.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -95,7 +88,7 @@
  *            this is another matter.
  */
 int
-get_enginetime(u_char * engineID,
+get_enginetime(const u_char * engineID,
                u_int engineID_len,
                u_int * engineboot,
                u_int * engine_time, u_int authenticated)
@@ -342,7 +335,7 @@
  * XXX	"Current time within the local engine" == time(NULL)...
  */
 int
-set_enginetime(u_char * engineID,
+set_enginetime(const u_char * engineID,
                u_int engineID_len,
                u_int engineboot, u_int engine_time, u_int authenticated)
 {
@@ -423,7 +416,7 @@
  * ASSUMES that no engineID will have more than one record in the list.
  */
 Enginetime
-search_enginetime_list(u_char * engineID, u_int engineID_len)
+search_enginetime_list(const u_char * engineID, u_int engineID_len)
 {
     int             rval = SNMPERR_SUCCESS;
     Enginetime      e = NULL;
@@ -481,7 +474,7 @@
  *
  */
 int
-hash_engineID(u_char * engineID, u_int engineID_len)
+hash_engineID(const u_char * engineID, u_int engineID_len)
 {
     int             rval = SNMPERR_GENERR;
     size_t          buf_len = SNMP_MAXBUF;
@@ -527,7 +520,7 @@
     SNMP_FREE(context);
     memset(buf, 0, SNMP_MAXBUF);
 
-    return (rval < 0) ? rval : (additive % ETIMELIST_SIZE);
+    return (rval < 0) ? rval : (int)(additive % ETIMELIST_SIZE);
 
 }                               /* end hash_engineID() */
 
diff --git a/snmplib/md5.c b/snmplib/md5.c
index 1062550..1ce0727 100644
--- a/snmplib/md5.c
+++ b/snmplib/md5.c
@@ -55,14 +55,12 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 
+#include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/utilities.h>
 #include <net-snmp/library/md5.h>
 
@@ -114,7 +112,7 @@
 #endif                          /* STDC_HEADERS */
 
 void            MDreverse(unsigned int *);
-static void     MDblock(MDptr, unsigned int *);
+static void     MDblock(MDptr, const unsigned int *);
 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 /*
@@ -193,7 +191,7 @@
  * ** This routine is not user-callable. 
  */
 static void
-MDblock(MDptr MDp, unsigned int *X)
+MDblock(MDptr MDp, const unsigned int *X)
 {
     register unsigned int tmp, A, B, C, D;      /* hpux sysv sun */
 #ifdef WORDS_BIGENDIAN
@@ -299,7 +297,7 @@
  * **          -2 if count was too large
  */
 int
-MDupdate(MDptr MDp, unsigned char *X, unsigned int count)
+MDupdate(MDptr MDp, const unsigned char *X, unsigned int count)
 {
     unsigned int    i, tmp, bit, byte, mask;
     unsigned char   XX[64];
@@ -333,7 +331,7 @@
      * Process data 
      */
     if (count == 512) {         /* Full block of data to handle */
-        MDblock(MDp, (unsigned int *) X);
+        MDblock(MDp, (const unsigned int *) X);
     } else if (count > 512)     /* Check for count too large */
         return -2;
     /*
@@ -389,7 +387,7 @@
  * MDchecksum(data, len, MD5): do a checksum on an arbirtrary amount of data 
  */
 int
-MDchecksum(u_char * data, size_t len, u_char * mac, size_t maclen)
+MDchecksum(const u_char * data, size_t len, u_char * mac, size_t maclen)
 {
     MDstruct        md;
     MDstruct       *MD = &md;
@@ -423,8 +421,8 @@
  * of data, and prepended with a secret in the standard fashion 
  */
 int
-MDsign(u_char * data, size_t len, u_char * mac, size_t maclen,
-       u_char * secret, size_t secretlen)
+MDsign(const u_char * data, size_t len, u_char * mac, size_t maclen,
+       const u_char * secret, size_t secretlen)
 {
 #define HASHKEYLEN 64
 
@@ -434,7 +432,8 @@
     u_char          extendedAuthKey[HASHKEYLEN];
     u_char          buf[HASHKEYLEN];
     size_t          i;
-    u_char         *cp, *newdata = NULL;
+    const u_char   *cp;
+    u_char         *newdata = NULL;
     int             rc = 0;
 
     /*
diff --git a/snmplib/mib.c b/snmplib/mib.c
index f298e2f..e7fc849 100644
--- a/snmplib/mib.c
+++ b/snmplib/mib.c
@@ -64,11 +64,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -89,10 +85,6 @@
 #include <sys/select.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -154,9 +146,10 @@
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
 
 #ifndef NETSNMP_DISABLE_MIB_LOADING
-extern struct tree *tree_head;
+NETSNMP_IMPORT struct tree *tree_head;
 static struct tree *tree_top;
 
+NETSNMP_IMPORT struct tree *Mib;
 struct tree    *Mib;            /* Backwards compatibility */
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
 
@@ -474,6 +467,8 @@
         int             repeat, width = 1;
         long            value;
         char            code = 'd', separ = 0, term = 0, ch, intbuf[32];
+#define HEX2DIGIT_NEED_INIT 3
+        char            hex2digit = HEX2DIGIT_NEED_INIT;
         u_char         *ecp;
 
         if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) {
@@ -520,9 +515,22 @@
                 }
                 switch (code) {
                 case 'x':
-                    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
-                                               NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT)
-                                       && value < 16) {
+                    if (HEX2DIGIT_NEED_INIT == hex2digit)
+                        hex2digit = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                                           NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT);
+                    /*
+                     * if value is < 16, it will be a single hex digit. If the
+                     * width is 1 (we are outputting a byte at a time), pat it
+                     * to 2 digits if NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT is set
+                     * or all of the following are true:
+                     *  - we do not have a separation character
+                     *  - there is no hint left (or there never was a hint)
+                     *
+                     * e.g. for the data 0xAA01BB, would anyone really ever
+                     * want the string "AA1BB"??
+                     */
+                    if (((value < 16) && (1 == width)) &&
+                        (hex2digit || ((0 == separ) && (0 == *hint)))) {
                         sprintf(intbuf, "0%lx", value);
                     } else {
                         sprintf(intbuf, "%lx", value);
@@ -2783,7 +2791,7 @@
      * Create a list of which directory each file refers to
      */
     while ((file = readdir( dir ))) {
-        if ( !isdigit(file->d_name[0]))
+        if ( !isdigit((unsigned char)(file->d_name[0])))
             continue;
         i = atoi( file->d_name );
 
@@ -3823,7 +3831,7 @@
         case ASN_TIMETICKS:
             if (*oidLen) {
                 snmp_set_var_value(var, (u_char *) oidIndex++,
-                                   sizeof(long));
+                                   sizeof(oid));
                 --(*oidLen);
             } else {
                 snmp_set_var_value(var, (u_char *) oidLen, sizeof(long));
@@ -3840,7 +3848,8 @@
             for (i = 0; i < 4 && i < *oidLen; ++i) {
                 if (oidIndex[i] > 255) {
                     DEBUGMSGTL(("parse_oid_indexes",
-                                "illegal oid in index: %ld\n", oidIndex[0]));
+                                "illegal oid in index: %" NETSNMP_PRIo "d\n",
+                                oidIndex[0]));
                         return SNMPERR_GENERR;  /* sub-identifier too large */
                     }
                     uitmp = uitmp + (oidIndex[i] << (8*(3-i)));
@@ -4169,7 +4178,7 @@
     }
 
     while (objidlen-- > 0) {    /* output rest of name, uninterpreted */
-        sprintf(intbuf, "%lu.", *objid++);
+        sprintf(intbuf, "%" NETSNMP_PRIo "u.", *objid++);
         if (!*buf_overflow && !snmp_strcat(buf, buf_len, out_len,
                                            allow_realloc,
                                            (const u_char *) intbuf)) {
@@ -4457,7 +4466,7 @@
                         *buf_overflow = 1;
                     }
                 } else {
-                    sprintf(intbuf, "%lu", *objid);
+                    sprintf(intbuf, "%" NETSNMP_PRIo "u", *objid);
                     if (!*buf_overflow
                         && !snmp_strcat(buf, buf_len, out_len,
                                         allow_realloc,
@@ -4466,7 +4475,7 @@
                     }
                 }
             } else {
-                sprintf(intbuf, "%lu", *objid);
+                sprintf(intbuf, "%" NETSNMP_PRIo "u", *objid);
                 if (!*buf_overflow && !snmp_strcat(buf, buf_len, out_len,
                                                    allow_realloc,
                                                    (const u_char *)
@@ -4538,7 +4547,8 @@
         case TYPE_IPADDR:
             if (objidlen < 4)
                 goto finish_it;
-            sprintf(intbuf, "%lu.%lu.%lu.%lu",
+            sprintf(intbuf, "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u."
+                    "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u",
                     objid[0], objid[1], objid[2], objid[3]);
             objid += 4;
             objidlen -= 4;
@@ -4553,7 +4563,7 @@
                 oid             ntype = *objid++;
 
                 objidlen--;
-                sprintf(intbuf, "%lu.", ntype);
+                sprintf(intbuf, "%" NETSNMP_PRIo "u.", ntype);
                 if (!*buf_overflow && !snmp_strcat(buf, buf_len, out_len,
                                                    allow_realloc,
                                                    (const u_char *)
@@ -4562,7 +4572,8 @@
                 }
 
                 if (ntype == 1 && objidlen >= 4) {
-                    sprintf(intbuf, "%lu.%lu.%lu.%lu",
+                    sprintf(intbuf, "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u."
+                            "%" NETSNMP_PRIo "u.%" NETSNMP_PRIo "u",
                             objid[0], objid[1], objid[2], objid[3]);
                     if (!*buf_overflow
                         && !snmp_strcat(buf, buf_len, out_len,
@@ -4773,7 +4784,7 @@
             break;
     }
     while (objidlen > 1) {
-        sprintf(tmpbuf, " %lu", *objid);
+        sprintf(tmpbuf, " %" NETSNMP_PRIo "u", *objid);
         len = strlen(tmpbuf);
         if (pos + len + 2 > width) {
             if (!snmp_cstrcat(buf, buf_len, out_len, allow_realloc, "\n     "))
@@ -4786,7 +4797,7 @@
         objid++;
         objidlen--;
     }
-    sprintf(tmpbuf, " %lu }", *objid);
+    sprintf(tmpbuf, " %" NETSNMP_PRIo "u }", *objid);
     len = strlen(tmpbuf);
     if (pos + len + 2 > width) {
         if (!snmp_cstrcat(buf, buf_len, out_len, allow_realloc, "\n     "))
@@ -5320,7 +5331,7 @@
         /*
          * Search for the appropriate child 
          */
-        if (isdigit(*cp)) {
+        if (isdigit((unsigned char)(*cp))) {
             subid = strtoul(cp, &ecp, 0);
             if (*ecp)
                 goto bad_id;
@@ -5377,7 +5388,7 @@
             cp2 = strchr(cp, '.');
             if (cp2)
                 *cp2++ = '\0';
-            if (isdigit(*cp)) {
+            if (isdigit((unsigned char)(*cp))) {
                 subid = strtoul(cp, &ecp, 0);
                 if (*ecp)
                     goto bad_id;
@@ -6262,7 +6273,7 @@
 	    if ('*' == *h) {
 		ph.repeat = 1;
 		state = HINT_2_3;
-	    } else if (isdigit(*h)) {
+	    } else if (isdigit((unsigned char)(*h))) {
 		parse_hints_length_add_digit(&ph, *h);
 		state = HINT_2_3;
 	    } else {
@@ -6271,7 +6282,7 @@
 	    break;
 
 	case HINT_2_3:
-	    if (isdigit(*h)) {
+	    if (isdigit((unsigned char)(*h))) {
 		parse_hints_length_add_digit(&ph, *h);
 		/* state = HINT_2_3 */
 	    } else if ('x' == *h || 'd' == *h || 'o' == *h || 'a' == *h) {
@@ -6289,7 +6300,7 @@
 		
 		ph.repeat = 1;
 		state = HINT_2_3;
-	    } else if (isdigit(*h)) {
+	    } else if (isdigit((unsigned char)(*h))) {
 		retval = parse_hints_parse(&ph, &v);
 		parse_hints_reset(&ph);
 		
@@ -6308,7 +6319,7 @@
 		
 		ph.repeat = 1;
 		state = HINT_2_3;
-	    } else if (isdigit(*h)) {
+	    } else if (isdigit((unsigned char)(*h))) {
 		retval = parse_hints_parse(&ph, &v);
 		parse_hints_reset(&ph);
 		
diff --git a/snmplib/oid_stash.c b/snmplib/oid_stash.c
index a09ad53..860abab 100644
--- a/snmplib/oid_stash.c
+++ b/snmplib/oid_stash.c
@@ -384,7 +384,7 @@
     for (i = 0; i < root->children_size; i++) {
         if (root->children[i]) {
             for (tmpp = root->children[i]; tmpp; tmpp = tmpp->next_sibling) {
-                printf("%s%ld@%d: %s\n", prefix, tmpp->value, i,
+                printf("%s%" NETSNMP_PRIo "d@%d: %s\n", prefix, tmpp->value, i,
                        (tmpp->thedata) ? "DATA" : "");
                 oid_stash_dump(tmpp, myprefix);
             }
diff --git a/snmplib/opendir.c b/snmplib/opendir.c
new file mode 100644
index 0000000..6cb8e06
--- /dev/null
+++ b/snmplib/opendir.c
@@ -0,0 +1,139 @@
+/*
+ * opendir() replacement for MSVC.
+ */
+
+#define WIN32IO_IS_STDIO
+#define PATHLEN	1024
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+#include <net-snmp/library/system.h>
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include <tchar.h>
+#include <windows.h>
+
+
+/*
+ * The idea here is to read all the directory names into a string table
+ * * (separated by nulls) and when one of the other dir functions is called
+ * * return the pointer to the current file name.
+ */
+DIR            *
+opendir(const char *filename)
+{
+    DIR            *p;
+    long            len;
+    long            idx;
+    char            scannamespc[PATHLEN];
+    char           *scanname = scannamespc;
+    struct stat     sbuf;
+    WIN32_FIND_DATA FindData;
+    HANDLE          fh;
+
+    /*
+     * check to see if filename is a directory 
+     */
+    if ((stat(filename, &sbuf) < 0) || ((sbuf.st_mode & S_IFDIR) == 0)) {
+        return NULL;
+    }
+
+    /*
+     * get the file system characteristics 
+     */
+    /*
+     * if(GetFullPathName(filename, SNMP_MAXPATH, root, &dummy)) {
+     * *    if(dummy = strchr(root, '\\'))
+     * *        *++dummy = '\0';
+     * *    if(GetVolumeInformation(root, volname, SNMP_MAXPATH, &serial,
+     * *                            &maxname, &flags, 0, 0)) {
+     * *        downcase = !(flags & FS_CASE_IS_PRESERVED);
+     * *    }
+     * *  }
+     * *  else {
+     * *    downcase = TRUE;
+     * *  }
+     */
+
+    /*
+     * Create the search pattern 
+     */
+    strcpy(scanname, filename);
+
+    if (strchr("/\\", *(scanname + strlen(scanname) - 1)) == NULL)
+        strcat(scanname, "/*");
+    else
+        strcat(scanname, "*");
+
+    /*
+     * do the FindFirstFile call 
+     */
+    fh = FindFirstFile(scanname, &FindData);
+    if (fh == INVALID_HANDLE_VALUE) {
+        return NULL;
+    }
+
+    /*
+     * Get us a DIR structure 
+     */
+    p = (DIR *) malloc(sizeof(DIR));
+    /*
+     * Newz(1303, p, 1, DIR); 
+     */
+    if (p == NULL)
+        return NULL;
+
+    /*
+     * now allocate the first part of the string table for
+     * * the filenames that we find.
+     */
+    idx = strlen(FindData.cFileName) + 1;
+    p->start = (char *) malloc(idx);
+    /*
+     * New(1304, p->start, idx, char);
+     */
+    if (p->start == NULL) {
+        free(p);
+        return NULL;
+    }
+    strcpy(p->start, FindData.cFileName);
+    /*
+     * if(downcase)
+     * *    strlwr(p->start);
+     */
+    p->nfiles = 0;
+
+    /*
+     * loop finding all the files that match the wildcard
+     * * (which should be all of them in this directory!).
+     * * the variable idx should point one past the null terminator
+     * * of the previous string found.
+     */
+    while (FindNextFile(fh, &FindData)) {
+        len = strlen(FindData.cFileName);
+        /*
+         * bump the string table size by enough for the
+         * * new name and it's null terminator
+         */
+        p->start = (char *) realloc((void *) p->start, idx + len + 1);
+        /*
+         * Renew(p->start, idx+len+1, char);
+         */
+        if (p->start == NULL) {
+            free(p);
+            return NULL;
+        }
+        strcpy(&p->start[idx], FindData.cFileName);
+        /*
+         * if (downcase) 
+         * *        strlwr(&p->start[idx]);
+         */
+        p->nfiles++;
+        idx += len + 1;
+    }
+    FindClose(fh);
+    p->size = idx;
+    p->curr = p->start;
+    return p;
+}
diff --git a/snmplib/openssl/OPENSSL-LICENSE b/snmplib/openssl/OPENSSL-LICENSE
new file mode 100644
index 0000000..a2c4adc
--- /dev/null
+++ b/snmplib/openssl/OPENSSL-LICENSE
@@ -0,0 +1,127 @@
+
+  LICENSE ISSUES
+  ==============
+
+  The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+  the OpenSSL License and the original SSLeay license apply to the toolkit.
+  See below for the actual license texts. Actually both licenses are BSD-style
+  Open Source licenses. In case of any license issues related to OpenSSL
+  please contact openssl-core@openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2008 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
diff --git a/snmplib/openssl/README b/snmplib/openssl/README
new file mode 100644
index 0000000..c84087b
--- /dev/null
+++ b/snmplib/openssl/README
@@ -0,0 +1,19 @@
+This directory contains modified crypto code from OpenSSL
+1.0.0.beta5.  Please see the OpenSSL license from that release in the
+OPENSSL-LICENSE which will apply if this code is selected.
+
+Net-SNMP may be compiled with this code using the
+--with-openssl=internal flag to the configure command line.
+
+Note: It is generally a better idea to link with the latest OpenSSL
+library rather than rely on this internal support, as the latest
+OpenSSL code may contain important security or other fixes that may
+not have been incorporated into this snapshot.  Small device vendors,
+however, have requested a stripped down version of the OpenSSL
+cryptography code in order to shrink their memory footprint and this
+feature provides such support.
+
+Note also that the new SNMP over DTLS, SNMP over TLS support also
+available in Net-SNMP 5.6 and beyond is incompatible with the internal
+version of the OpenSSL support since SNMP over (D)TLS requires the
+full TLS support available in OpenSSL.
diff --git a/snmplib/openssl/openssl_aes_cfb.c b/snmplib/openssl/openssl_aes_cfb.c
new file mode 100644
index 0000000..999e5a7
--- /dev/null
+++ b/snmplib/openssl/openssl_aes_cfb.c
@@ -0,0 +1,81 @@
+/* crypto/aes/aes_cfb.c -*- mode:C; c-file-style: "eay" -*- */
+/* ====================================================================
+ * Copyright (c) 2002-2006 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ */
+
+#include <net-snmp/library/openssl_aes.h>
+#include "openssl/openssl_modes.h"
+
+/* The input and output encrypted as though 128bit cfb mode is being
+ * used.  The extra state information to record how much of the
+ * 128bit block we have used is contained in *num;
+ */
+
+void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
+	size_t length, const AES_KEY *key,
+	unsigned char *ivec, int *num, const int enc) {
+
+	CRYPTO_cfb128_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
+}
+
+/* N.B. This expects the input to be packed, MS bit first */
+void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
+		      size_t length, const AES_KEY *key,
+		      unsigned char *ivec, int *num, const int enc)
+    {
+    CRYPTO_cfb128_1_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
+    }
+
+void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
+		      size_t length, const AES_KEY *key,
+		      unsigned char *ivec, int *num, const int enc)
+    {
+    CRYPTO_cfb128_8_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
+    }
+
diff --git a/snmplib/openssl/openssl_aes_core.c b/snmplib/openssl/openssl_aes_core.c
new file mode 100644
index 0000000..56301b9
--- /dev/null
+++ b/snmplib/openssl/openssl_aes_core.c
@@ -0,0 +1,1358 @@
+/* crypto/aes/aes_core.c -*- mode:C; c-file-style: "eay" -*- */
+/**
+ * rijndael-alg-fst.c
+ *
+ * @version 3.0 (December 2000)
+ *
+ * Optimised ANSI C code for the Rijndael cipher (now AES)
+ *
+ * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
+ * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
+ * @author Paulo Barreto <paulo.barreto@terra.com.br>
+ *
+ * This code is hereby placed in the public domain.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''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 AUTHORS 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.
+ */
+
+/* Note: rewritten a little bit to provide error control and an OpenSSL-
+   compatible API */
+
+#ifndef AES_DEBUG
+# ifndef NDEBUG
+#  define NDEBUG
+# endif
+#endif
+#include <assert.h>
+
+#include <stdlib.h>
+#include <net-snmp/library/openssl_aes.h>
+#include "openssl_aes_local.h"
+
+#ifndef AES_ASM
+/*
+Te0[x] = S [x].[02, 01, 01, 03];
+Te1[x] = S [x].[03, 02, 01, 01];
+Te2[x] = S [x].[01, 03, 02, 01];
+Te3[x] = S [x].[01, 01, 03, 02];
+
+Td0[x] = Si[x].[0e, 09, 0d, 0b];
+Td1[x] = Si[x].[0b, 0e, 09, 0d];
+Td2[x] = Si[x].[0d, 0b, 0e, 09];
+Td3[x] = Si[x].[09, 0d, 0b, 0e];
+Td4[x] = Si[x].[01];
+*/
+
+static const u32 Te0[256] = {
+    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
+    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
+    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
+    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
+    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
+    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
+    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
+    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
+    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
+    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
+    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
+    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
+    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
+    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
+    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
+    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
+    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
+    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
+    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
+    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
+    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
+    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
+    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
+    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
+    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
+    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
+    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
+    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
+    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
+    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
+    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
+    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
+    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
+    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
+    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
+    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
+    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
+    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
+    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
+    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
+    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
+    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
+    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
+    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
+    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
+    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
+    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
+    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
+    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
+    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
+    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
+    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
+    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
+    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
+    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
+    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
+    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
+    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
+    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
+    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
+    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
+    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
+    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
+    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
+};
+static const u32 Te1[256] = {
+    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
+    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
+    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
+    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
+    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
+    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
+    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
+    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
+    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
+    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
+    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
+    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
+    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
+    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
+    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
+    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
+    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
+    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
+    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
+    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
+    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
+    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
+    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
+    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
+    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
+    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
+    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
+    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
+    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
+    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
+    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
+    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
+    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
+    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
+    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
+    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
+    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
+    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
+    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
+    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
+    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
+    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
+    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
+    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
+    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
+    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
+    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
+    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
+    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
+    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
+    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
+    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
+    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
+    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
+    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
+    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
+    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
+    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
+    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
+    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
+    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
+    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
+    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
+    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
+};
+static const u32 Te2[256] = {
+    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
+    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
+    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
+    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
+    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
+    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
+    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
+    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
+    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
+    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
+    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
+    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
+    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
+    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
+    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
+    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
+    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
+    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
+    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
+    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
+    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
+    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
+    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
+    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
+    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
+    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
+    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
+    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
+    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
+    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
+    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
+    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
+    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
+    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
+    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
+    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
+    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
+    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
+    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
+    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
+    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
+    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
+    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
+    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
+    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
+    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
+    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
+    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
+    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
+    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
+    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
+    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
+    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
+    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
+    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
+    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
+    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
+    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
+    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
+    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
+    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
+    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
+    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
+    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
+};
+static const u32 Te3[256] = {
+    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
+    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
+    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
+    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
+    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
+    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
+    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
+    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
+    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
+    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
+    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
+    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
+    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
+    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
+    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
+    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
+    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
+    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
+    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
+    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
+    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
+    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
+    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
+    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
+    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
+    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
+    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
+    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
+    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
+    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
+    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
+    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
+    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
+    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
+    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
+    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
+    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
+    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
+    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
+    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
+    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
+    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
+    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
+    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
+    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
+    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
+    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
+    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
+    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
+    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
+    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
+    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
+    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
+    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
+    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
+    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
+    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
+    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
+    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
+    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
+    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
+    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
+    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
+    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
+};
+
+static const u32 Td0[256] = {
+    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
+    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
+    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
+    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
+    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
+    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
+    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
+    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
+    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
+    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
+    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
+    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
+    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
+    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
+    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
+    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
+    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
+    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
+    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
+    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
+    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
+    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
+    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
+    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
+    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
+    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
+    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
+    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
+    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
+    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
+    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
+    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
+    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
+    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
+    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
+    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
+    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
+    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
+    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
+    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
+    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
+    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
+    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
+    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
+    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
+    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
+    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
+    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
+    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
+    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
+    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
+    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
+    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
+    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
+    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
+    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
+    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
+    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
+    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
+    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
+    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
+    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
+    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
+    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
+};
+static const u32 Td1[256] = {
+    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
+    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
+    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
+    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
+    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
+    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
+    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
+    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
+    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
+    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
+    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
+    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
+    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
+    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
+    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
+    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
+    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
+    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
+    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
+    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
+    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
+    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
+    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
+    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
+    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
+    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
+    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
+    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
+    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
+    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
+    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
+    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
+    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
+    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
+    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
+    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
+    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
+    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
+    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
+    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
+    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
+    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
+    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
+    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
+    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
+    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
+    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
+    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
+    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
+    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
+    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
+    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
+    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
+    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
+    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
+    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
+    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
+    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
+    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
+    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
+    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
+    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
+    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
+    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
+};
+static const u32 Td2[256] = {
+    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
+    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
+    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
+    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
+    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
+    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
+    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
+    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
+    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
+    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
+    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
+    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
+    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
+    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
+    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
+    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
+    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
+    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
+    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
+    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
+    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
+    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
+    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
+    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
+    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
+    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
+    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
+    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
+    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
+    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
+    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
+    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
+    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
+    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
+    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
+    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
+    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
+    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
+    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
+    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
+    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
+    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
+    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
+    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
+    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
+    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
+    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
+    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
+    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
+    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
+    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
+    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
+    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
+    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
+    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
+    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
+    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
+    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
+    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
+    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
+    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
+    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
+    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
+    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
+};
+static const u32 Td3[256] = {
+    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
+    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
+    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
+    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
+    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
+    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
+    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
+    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
+    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
+    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
+    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
+    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
+    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
+    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
+    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
+    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
+    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
+    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
+    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
+    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
+    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
+    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
+    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
+    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
+    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
+    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
+    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
+    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
+    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
+    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
+    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
+    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
+    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
+    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
+    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
+    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
+    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
+    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
+    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
+    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
+    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
+    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
+    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
+    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
+    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
+    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
+    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
+    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
+    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
+    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
+    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
+    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
+    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
+    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
+    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
+    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
+    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
+    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
+    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
+    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
+    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
+    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
+    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
+    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
+};
+static const u8 Td4[256] = {
+    0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
+    0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
+    0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
+    0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
+    0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
+    0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
+    0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
+    0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
+    0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
+    0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
+    0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
+    0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
+    0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
+    0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
+    0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
+    0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
+    0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
+    0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
+    0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
+    0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
+    0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
+    0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
+    0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
+    0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
+    0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
+    0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
+    0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
+    0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
+    0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
+    0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
+    0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
+    0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
+};
+static const u32 rcon[] = {
+	0x01000000, 0x02000000, 0x04000000, 0x08000000,
+	0x10000000, 0x20000000, 0x40000000, 0x80000000,
+	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
+};
+
+/**
+ * Expand the cipher key into the encryption key schedule.
+ */
+int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+			AES_KEY *key) {
+
+	u32 *rk;
+   	int i = 0;
+	u32 temp;
+
+	if (!userKey || !key)
+		return -1;
+	if (bits != 128 && bits != 192 && bits != 256)
+		return -2;
+
+	rk = key->rd_key;
+
+	if (bits==128)
+		key->rounds = 10;
+	else if (bits==192)
+		key->rounds = 12;
+	else
+		key->rounds = 14;
+
+	rk[0] = GETU32(userKey     );
+	rk[1] = GETU32(userKey +  4);
+	rk[2] = GETU32(userKey +  8);
+	rk[3] = GETU32(userKey + 12);
+	if (bits == 128) {
+		while (1) {
+			temp  = rk[3];
+			rk[4] = rk[0] ^
+				(Te2[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te0[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te1[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[5] = rk[1] ^ rk[4];
+			rk[6] = rk[2] ^ rk[5];
+			rk[7] = rk[3] ^ rk[6];
+			if (++i == 10) {
+				return 0;
+			}
+			rk += 4;
+		}
+	}
+	rk[4] = GETU32(userKey + 16);
+	rk[5] = GETU32(userKey + 20);
+	if (bits == 192) {
+		while (1) {
+			temp = rk[ 5];
+			rk[ 6] = rk[ 0] ^
+				(Te2[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te0[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te1[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[ 7] = rk[ 1] ^ rk[ 6];
+			rk[ 8] = rk[ 2] ^ rk[ 7];
+			rk[ 9] = rk[ 3] ^ rk[ 8];
+			if (++i == 8) {
+				return 0;
+			}
+			rk[10] = rk[ 4] ^ rk[ 9];
+			rk[11] = rk[ 5] ^ rk[10];
+			rk += 6;
+		}
+	}
+	rk[6] = GETU32(userKey + 24);
+	rk[7] = GETU32(userKey + 28);
+	if (bits == 256) {
+		while (1) {
+			temp = rk[ 7];
+			rk[ 8] = rk[ 0] ^
+				(Te2[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te0[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te1[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[ 9] = rk[ 1] ^ rk[ 8];
+			rk[10] = rk[ 2] ^ rk[ 9];
+			rk[11] = rk[ 3] ^ rk[10];
+			if (++i == 7) {
+				return 0;
+			}
+			temp = rk[11];
+			rk[12] = rk[ 4] ^
+				(Te2[(temp >> 24)       ] & 0xff000000) ^
+				(Te3[(temp >> 16) & 0xff] & 0x00ff0000) ^
+				(Te0[(temp >>  8) & 0xff] & 0x0000ff00) ^
+				(Te1[(temp      ) & 0xff] & 0x000000ff);
+			rk[13] = rk[ 5] ^ rk[12];
+			rk[14] = rk[ 6] ^ rk[13];
+			rk[15] = rk[ 7] ^ rk[14];
+
+			rk += 8;
+        	}
+	}
+	return 0;
+}
+
+/**
+ * Expand the cipher key into the decryption key schedule.
+ */
+int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+			 AES_KEY *key) {
+
+        u32 *rk;
+	int i, j, status;
+	u32 temp;
+
+	/* first, start with an encryption schedule */
+	status = AES_set_encrypt_key(userKey, bits, key);
+	if (status < 0)
+		return status;
+
+	rk = key->rd_key;
+
+	/* invert the order of the round keys: */
+	for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
+		temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
+		temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
+		temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
+		temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
+	}
+	/* apply the inverse MixColumn transform to all round keys but the first and the last: */
+	for (i = 1; i < (key->rounds); i++) {
+		rk += 4;
+		rk[0] =
+			Td0[Te1[(rk[0] >> 24)       ] & 0xff] ^
+			Td1[Te1[(rk[0] >> 16) & 0xff] & 0xff] ^
+			Td2[Te1[(rk[0] >>  8) & 0xff] & 0xff] ^
+			Td3[Te1[(rk[0]      ) & 0xff] & 0xff];
+		rk[1] =
+			Td0[Te1[(rk[1] >> 24)       ] & 0xff] ^
+			Td1[Te1[(rk[1] >> 16) & 0xff] & 0xff] ^
+			Td2[Te1[(rk[1] >>  8) & 0xff] & 0xff] ^
+			Td3[Te1[(rk[1]      ) & 0xff] & 0xff];
+		rk[2] =
+			Td0[Te1[(rk[2] >> 24)       ] & 0xff] ^
+			Td1[Te1[(rk[2] >> 16) & 0xff] & 0xff] ^
+			Td2[Te1[(rk[2] >>  8) & 0xff] & 0xff] ^
+			Td3[Te1[(rk[2]      ) & 0xff] & 0xff];
+		rk[3] =
+			Td0[Te1[(rk[3] >> 24)       ] & 0xff] ^
+			Td1[Te1[(rk[3] >> 16) & 0xff] & 0xff] ^
+			Td2[Te1[(rk[3] >>  8) & 0xff] & 0xff] ^
+			Td3[Te1[(rk[3]      ) & 0xff] & 0xff];
+	}
+	return 0;
+}
+
+/*
+ * Encrypt a single block
+ * in and out can overlap
+ */
+void AES_encrypt(const unsigned char *in, unsigned char *out,
+		 const AES_KEY *key) {
+
+	const u32 *rk;
+	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+#ifndef FULL_UNROLL
+	int r;
+#endif /* ?FULL_UNROLL */
+
+	assert(in && out && key);
+	rk = key->rd_key;
+
+	/*
+	 * map byte array block to cipher state
+	 * and add initial round key:
+	 */
+	s0 = GETU32(in     ) ^ rk[0];
+	s1 = GETU32(in +  4) ^ rk[1];
+	s2 = GETU32(in +  8) ^ rk[2];
+	s3 = GETU32(in + 12) ^ rk[3];
+#ifdef FULL_UNROLL
+	/* round 1: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];
+   	/* round 2: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];
+	/* round 3: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];
+   	/* round 4: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];
+	/* round 5: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];
+   	/* round 6: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];
+	/* round 7: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];
+   	/* round 8: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
+	/* round 9: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
+    if (key->rounds > 10) {
+        /* round 10: */
+        s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
+        s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
+        s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
+        s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
+        /* round 11: */
+        t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
+        t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
+        t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
+        t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
+        if (key->rounds > 12) {
+            /* round 12: */
+            s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
+            s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
+            s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
+            s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
+            /* round 13: */
+            t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
+            t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
+            t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
+            t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
+        }
+    }
+    rk += key->rounds << 2;
+#else  /* !FULL_UNROLL */
+    /*
+     * Nr - 1 full rounds:
+     */
+    r = key->rounds >> 1;
+    for (;;) {
+        t0 =
+            Te0[(s0 >> 24)       ] ^
+            Te1[(s1 >> 16) & 0xff] ^
+            Te2[(s2 >>  8) & 0xff] ^
+            Te3[(s3      ) & 0xff] ^
+            rk[4];
+        t1 =
+            Te0[(s1 >> 24)       ] ^
+            Te1[(s2 >> 16) & 0xff] ^
+            Te2[(s3 >>  8) & 0xff] ^
+            Te3[(s0      ) & 0xff] ^
+            rk[5];
+        t2 =
+            Te0[(s2 >> 24)       ] ^
+            Te1[(s3 >> 16) & 0xff] ^
+            Te2[(s0 >>  8) & 0xff] ^
+            Te3[(s1      ) & 0xff] ^
+            rk[6];
+        t3 =
+            Te0[(s3 >> 24)       ] ^
+            Te1[(s0 >> 16) & 0xff] ^
+            Te2[(s1 >>  8) & 0xff] ^
+            Te3[(s2      ) & 0xff] ^
+            rk[7];
+
+        rk += 8;
+        if (--r == 0) {
+            break;
+        }
+
+        s0 =
+            Te0[(t0 >> 24)       ] ^
+            Te1[(t1 >> 16) & 0xff] ^
+            Te2[(t2 >>  8) & 0xff] ^
+            Te3[(t3      ) & 0xff] ^
+            rk[0];
+        s1 =
+            Te0[(t1 >> 24)       ] ^
+            Te1[(t2 >> 16) & 0xff] ^
+            Te2[(t3 >>  8) & 0xff] ^
+            Te3[(t0      ) & 0xff] ^
+            rk[1];
+        s2 =
+            Te0[(t2 >> 24)       ] ^
+            Te1[(t3 >> 16) & 0xff] ^
+            Te2[(t0 >>  8) & 0xff] ^
+            Te3[(t1      ) & 0xff] ^
+            rk[2];
+        s3 =
+            Te0[(t3 >> 24)       ] ^
+            Te1[(t0 >> 16) & 0xff] ^
+            Te2[(t1 >>  8) & 0xff] ^
+            Te3[(t2      ) & 0xff] ^
+            rk[3];
+    }
+#endif /* ?FULL_UNROLL */
+    /*
+	 * apply last round and
+	 * map cipher state to byte array block:
+	 */
+	s0 =
+		(Te2[(t0 >> 24)       ] & 0xff000000) ^
+		(Te3[(t1 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te0[(t2 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te1[(t3      ) & 0xff] & 0x000000ff) ^
+		rk[0];
+	PUTU32(out     , s0);
+	s1 =
+		(Te2[(t1 >> 24)       ] & 0xff000000) ^
+		(Te3[(t2 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te0[(t3 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te1[(t0      ) & 0xff] & 0x000000ff) ^
+		rk[1];
+	PUTU32(out +  4, s1);
+	s2 =
+		(Te2[(t2 >> 24)       ] & 0xff000000) ^
+		(Te3[(t3 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te0[(t0 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te1[(t1      ) & 0xff] & 0x000000ff) ^
+		rk[2];
+	PUTU32(out +  8, s2);
+	s3 =
+		(Te2[(t3 >> 24)       ] & 0xff000000) ^
+		(Te3[(t0 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te0[(t1 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te1[(t2      ) & 0xff] & 0x000000ff) ^
+		rk[3];
+	PUTU32(out + 12, s3);
+}
+
+/*
+ * Decrypt a single block
+ * in and out can overlap
+ */
+void AES_decrypt(const unsigned char *in, unsigned char *out,
+		 const AES_KEY *key) {
+
+	const u32 *rk;
+	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+#ifndef FULL_UNROLL
+	int r;
+#endif /* ?FULL_UNROLL */
+
+	assert(in && out && key);
+	rk = key->rd_key;
+
+	/*
+	 * map byte array block to cipher state
+	 * and add initial round key:
+	 */
+    s0 = GETU32(in     ) ^ rk[0];
+    s1 = GETU32(in +  4) ^ rk[1];
+    s2 = GETU32(in +  8) ^ rk[2];
+    s3 = GETU32(in + 12) ^ rk[3];
+#ifdef FULL_UNROLL
+    /* round 1: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];
+    /* round 2: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];
+    /* round 3: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];
+    /* round 4: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];
+    /* round 5: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];
+    /* round 6: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];
+    /* round 7: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];
+    /* round 8: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
+    /* round 9: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
+    if (key->rounds > 10) {
+        /* round 10: */
+        s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
+        s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
+        s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
+        s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
+        /* round 11: */
+        t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
+        t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
+        t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
+        t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
+        if (key->rounds > 12) {
+            /* round 12: */
+            s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
+            s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
+            s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
+            s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
+            /* round 13: */
+            t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
+            t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
+            t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
+            t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
+        }
+    }
+	rk += key->rounds << 2;
+#else  /* !FULL_UNROLL */
+    /*
+     * Nr - 1 full rounds:
+     */
+    r = key->rounds >> 1;
+    for (;;) {
+        t0 =
+            Td0[(s0 >> 24)       ] ^
+            Td1[(s3 >> 16) & 0xff] ^
+            Td2[(s2 >>  8) & 0xff] ^
+            Td3[(s1      ) & 0xff] ^
+            rk[4];
+        t1 =
+            Td0[(s1 >> 24)       ] ^
+            Td1[(s0 >> 16) & 0xff] ^
+            Td2[(s3 >>  8) & 0xff] ^
+            Td3[(s2      ) & 0xff] ^
+            rk[5];
+        t2 =
+            Td0[(s2 >> 24)       ] ^
+            Td1[(s1 >> 16) & 0xff] ^
+            Td2[(s0 >>  8) & 0xff] ^
+            Td3[(s3      ) & 0xff] ^
+            rk[6];
+        t3 =
+            Td0[(s3 >> 24)       ] ^
+            Td1[(s2 >> 16) & 0xff] ^
+            Td2[(s1 >>  8) & 0xff] ^
+            Td3[(s0      ) & 0xff] ^
+            rk[7];
+
+        rk += 8;
+        if (--r == 0) {
+            break;
+        }
+
+        s0 =
+            Td0[(t0 >> 24)       ] ^
+            Td1[(t3 >> 16) & 0xff] ^
+            Td2[(t2 >>  8) & 0xff] ^
+            Td3[(t1      ) & 0xff] ^
+            rk[0];
+        s1 =
+            Td0[(t1 >> 24)       ] ^
+            Td1[(t0 >> 16) & 0xff] ^
+            Td2[(t3 >>  8) & 0xff] ^
+            Td3[(t2      ) & 0xff] ^
+            rk[1];
+        s2 =
+            Td0[(t2 >> 24)       ] ^
+            Td1[(t1 >> 16) & 0xff] ^
+            Td2[(t0 >>  8) & 0xff] ^
+            Td3[(t3      ) & 0xff] ^
+            rk[2];
+        s3 =
+            Td0[(t3 >> 24)       ] ^
+            Td1[(t2 >> 16) & 0xff] ^
+            Td2[(t1 >>  8) & 0xff] ^
+            Td3[(t0      ) & 0xff] ^
+            rk[3];
+    }
+#endif /* ?FULL_UNROLL */
+    /*
+	 * apply last round and
+	 * map cipher state to byte array block:
+	 */
+   	s0 =
+   		(Td4[(t0 >> 24)       ] << 24) ^
+   		(Td4[(t3 >> 16) & 0xff] << 16) ^
+   		(Td4[(t2 >>  8) & 0xff] <<  8) ^
+   		(Td4[(t1      ) & 0xff])       ^
+   		rk[0];
+	PUTU32(out     , s0);
+   	s1 =
+   		(Td4[(t1 >> 24)       ] << 24) ^
+   		(Td4[(t0 >> 16) & 0xff] << 16) ^
+   		(Td4[(t3 >>  8) & 0xff] <<  8) ^
+   		(Td4[(t2      ) & 0xff])       ^
+   		rk[1];
+	PUTU32(out +  4, s1);
+   	s2 =
+   		(Td4[(t2 >> 24)       ] << 24) ^
+   		(Td4[(t1 >> 16) & 0xff] << 16) ^
+   		(Td4[(t0 >>  8) & 0xff] <<  8) ^
+   		(Td4[(t3      ) & 0xff])       ^
+   		rk[2];
+	PUTU32(out +  8, s2);
+   	s3 =
+   		(Td4[(t3 >> 24)       ] << 24) ^
+   		(Td4[(t2 >> 16) & 0xff] << 16) ^
+   		(Td4[(t1 >>  8) & 0xff] <<  8) ^
+   		(Td4[(t0      ) & 0xff])       ^
+   		rk[3];
+	PUTU32(out + 12, s3);
+}
+
+#else /* AES_ASM */
+
+static const u8 Te4[256] = {
+    0x63U, 0x7cU, 0x77U, 0x7bU, 0xf2U, 0x6bU, 0x6fU, 0xc5U,
+    0x30U, 0x01U, 0x67U, 0x2bU, 0xfeU, 0xd7U, 0xabU, 0x76U,
+    0xcaU, 0x82U, 0xc9U, 0x7dU, 0xfaU, 0x59U, 0x47U, 0xf0U,
+    0xadU, 0xd4U, 0xa2U, 0xafU, 0x9cU, 0xa4U, 0x72U, 0xc0U,
+    0xb7U, 0xfdU, 0x93U, 0x26U, 0x36U, 0x3fU, 0xf7U, 0xccU,
+    0x34U, 0xa5U, 0xe5U, 0xf1U, 0x71U, 0xd8U, 0x31U, 0x15U,
+    0x04U, 0xc7U, 0x23U, 0xc3U, 0x18U, 0x96U, 0x05U, 0x9aU,
+    0x07U, 0x12U, 0x80U, 0xe2U, 0xebU, 0x27U, 0xb2U, 0x75U,
+    0x09U, 0x83U, 0x2cU, 0x1aU, 0x1bU, 0x6eU, 0x5aU, 0xa0U,
+    0x52U, 0x3bU, 0xd6U, 0xb3U, 0x29U, 0xe3U, 0x2fU, 0x84U,
+    0x53U, 0xd1U, 0x00U, 0xedU, 0x20U, 0xfcU, 0xb1U, 0x5bU,
+    0x6aU, 0xcbU, 0xbeU, 0x39U, 0x4aU, 0x4cU, 0x58U, 0xcfU,
+    0xd0U, 0xefU, 0xaaU, 0xfbU, 0x43U, 0x4dU, 0x33U, 0x85U,
+    0x45U, 0xf9U, 0x02U, 0x7fU, 0x50U, 0x3cU, 0x9fU, 0xa8U,
+    0x51U, 0xa3U, 0x40U, 0x8fU, 0x92U, 0x9dU, 0x38U, 0xf5U,
+    0xbcU, 0xb6U, 0xdaU, 0x21U, 0x10U, 0xffU, 0xf3U, 0xd2U,
+    0xcdU, 0x0cU, 0x13U, 0xecU, 0x5fU, 0x97U, 0x44U, 0x17U,
+    0xc4U, 0xa7U, 0x7eU, 0x3dU, 0x64U, 0x5dU, 0x19U, 0x73U,
+    0x60U, 0x81U, 0x4fU, 0xdcU, 0x22U, 0x2aU, 0x90U, 0x88U,
+    0x46U, 0xeeU, 0xb8U, 0x14U, 0xdeU, 0x5eU, 0x0bU, 0xdbU,
+    0xe0U, 0x32U, 0x3aU, 0x0aU, 0x49U, 0x06U, 0x24U, 0x5cU,
+    0xc2U, 0xd3U, 0xacU, 0x62U, 0x91U, 0x95U, 0xe4U, 0x79U,
+    0xe7U, 0xc8U, 0x37U, 0x6dU, 0x8dU, 0xd5U, 0x4eU, 0xa9U,
+    0x6cU, 0x56U, 0xf4U, 0xeaU, 0x65U, 0x7aU, 0xaeU, 0x08U,
+    0xbaU, 0x78U, 0x25U, 0x2eU, 0x1cU, 0xa6U, 0xb4U, 0xc6U,
+    0xe8U, 0xddU, 0x74U, 0x1fU, 0x4bU, 0xbdU, 0x8bU, 0x8aU,
+    0x70U, 0x3eU, 0xb5U, 0x66U, 0x48U, 0x03U, 0xf6U, 0x0eU,
+    0x61U, 0x35U, 0x57U, 0xb9U, 0x86U, 0xc1U, 0x1dU, 0x9eU,
+    0xe1U, 0xf8U, 0x98U, 0x11U, 0x69U, 0xd9U, 0x8eU, 0x94U,
+    0x9bU, 0x1eU, 0x87U, 0xe9U, 0xceU, 0x55U, 0x28U, 0xdfU,
+    0x8cU, 0xa1U, 0x89U, 0x0dU, 0xbfU, 0xe6U, 0x42U, 0x68U,
+    0x41U, 0x99U, 0x2dU, 0x0fU, 0xb0U, 0x54U, 0xbbU, 0x16U
+};
+static const u32 rcon[] = {
+	0x01000000, 0x02000000, 0x04000000, 0x08000000,
+	0x10000000, 0x20000000, 0x40000000, 0x80000000,
+	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
+};
+
+/**
+ * Expand the cipher key into the encryption key schedule.
+ */
+int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+			AES_KEY *key) {
+	u32 *rk;
+   	int i = 0;
+	u32 temp;
+
+	if (!userKey || !key)
+		return -1;
+	if (bits != 128 && bits != 192 && bits != 256)
+		return -2;
+
+	rk = key->rd_key;
+
+	if (bits==128)
+		key->rounds = 10;
+	else if (bits==192)
+		key->rounds = 12;
+	else
+		key->rounds = 14;
+
+	rk[0] = GETU32(userKey     );
+	rk[1] = GETU32(userKey +  4);
+	rk[2] = GETU32(userKey +  8);
+	rk[3] = GETU32(userKey + 12);
+	if (bits == 128) {
+		while (1) {
+			temp  = rk[3];
+			rk[4] = rk[0] ^
+				(Te4[(temp >> 16) & 0xff] << 24) ^
+				(Te4[(temp >>  8) & 0xff] << 16) ^
+				(Te4[(temp      ) & 0xff] << 8) ^
+				(Te4[(temp >> 24)       ]) ^
+				rcon[i];
+			rk[5] = rk[1] ^ rk[4];
+			rk[6] = rk[2] ^ rk[5];
+			rk[7] = rk[3] ^ rk[6];
+			if (++i == 10) {
+				return 0;
+			}
+			rk += 4;
+		}
+	}
+	rk[4] = GETU32(userKey + 16);
+	rk[5] = GETU32(userKey + 20);
+	if (bits == 192) {
+		while (1) {
+			temp = rk[ 5];
+			rk[ 6] = rk[ 0] ^
+				(Te4[(temp >> 16) & 0xff] << 24) ^
+				(Te4[(temp >>  8) & 0xff] << 16) ^
+				(Te4[(temp      ) & 0xff] << 8) ^
+				(Te4[(temp >> 24)       ]) ^
+				rcon[i];
+			rk[ 7] = rk[ 1] ^ rk[ 6];
+			rk[ 8] = rk[ 2] ^ rk[ 7];
+			rk[ 9] = rk[ 3] ^ rk[ 8];
+			if (++i == 8) {
+				return 0;
+			}
+			rk[10] = rk[ 4] ^ rk[ 9];
+			rk[11] = rk[ 5] ^ rk[10];
+			rk += 6;
+		}
+	}
+	rk[6] = GETU32(userKey + 24);
+	rk[7] = GETU32(userKey + 28);
+	if (bits == 256) {
+		while (1) {
+			temp = rk[ 7];
+			rk[ 8] = rk[ 0] ^
+				(Te4[(temp >> 16) & 0xff] << 24) ^
+				(Te4[(temp >>  8) & 0xff] << 16) ^
+				(Te4[(temp      ) & 0xff] << 8) ^
+				(Te4[(temp >> 24)       ]) ^
+				rcon[i];
+			rk[ 9] = rk[ 1] ^ rk[ 8];
+			rk[10] = rk[ 2] ^ rk[ 9];
+			rk[11] = rk[ 3] ^ rk[10];
+			if (++i == 7) {
+				return 0;
+			}
+			temp = rk[11];
+			rk[12] = rk[ 4] ^
+				(Te4[(temp >> 24)       ] << 24) ^
+				(Te4[(temp >> 16) & 0xff] << 16) ^
+				(Te4[(temp >>  8) & 0xff] << 8) ^
+				(Te4[(temp      ) & 0xff]);
+			rk[13] = rk[ 5] ^ rk[12];
+			rk[14] = rk[ 6] ^ rk[13];
+			rk[15] = rk[ 7] ^ rk[14];
+
+			rk += 8;
+        	}
+	}
+	return 0;
+}
+
+/**
+ * Expand the cipher key into the decryption key schedule.
+ */
+int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+			 AES_KEY *key) {
+
+        u32 *rk;
+	int i, j, status;
+	u32 temp;
+
+	/* first, start with an encryption schedule */
+	status = AES_set_encrypt_key(userKey, bits, key);
+	if (status < 0)
+		return status;
+
+	rk = key->rd_key;
+
+	/* invert the order of the round keys: */
+	for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
+		temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
+		temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
+		temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
+		temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
+	}
+	/* apply the inverse MixColumn transform to all round keys but the first and the last: */
+	for (i = 1; i < (key->rounds); i++) {
+		rk += 4;
+		for (j = 0; j < 4; j++) {
+			u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
+
+			tp1 = rk[j];
+			m = tp1 & 0x80808080;
+			tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^
+				((m - (m >> 7)) & 0x1b1b1b1b);
+			m = tp2 & 0x80808080;
+			tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^
+				((m - (m >> 7)) & 0x1b1b1b1b);
+			m = tp4 & 0x80808080;
+			tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^
+				((m - (m >> 7)) & 0x1b1b1b1b);
+			tp9 = tp8 ^ tp1;
+			tpb = tp9 ^ tp2;
+			tpd = tp9 ^ tp4;
+			tpe = tp8 ^ tp4 ^ tp2;
+#if defined(ROTATE)
+			rk[j] = tpe ^ ROTATE(tpd,16) ^
+				ROTATE(tp9,24) ^ ROTATE(tpb,8);
+#else
+			rk[j] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^ 
+				(tp9 >> 8) ^ (tp9 << 24) ^
+				(tpb >> 24) ^ (tpb << 8);
+#endif
+		}
+	}
+	return 0;
+}
+
+#endif /* AES_ASM */
diff --git a/snmplib/openssl/openssl_aes_local.h b/snmplib/openssl/openssl_aes_local.h
new file mode 100644
index 0000000..319832e
--- /dev/null
+++ b/snmplib/openssl/openssl_aes_local.h
@@ -0,0 +1,87 @@
+/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
+/* ====================================================================
+ * Copyright (c) 1998-2002 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ */
+
+#ifndef HEADER_AES_LOCL_H
+#define HEADER_AES_LOCL_H
+
+#ifdef OPENSSL_NO_AES
+#error AES is disabled.
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
+# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
+# define GETU32(p) SWAP(*((u32 *)(p)))
+# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
+#else
+# define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] <<  8) ^ ((u32)(pt)[3]))
+# define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >>  8); (ct)[3] = (u8)(st); }
+#endif
+
+#ifdef AES_LONG
+typedef unsigned long u32;
+#else
+typedef unsigned int u32;
+#endif
+typedef unsigned short u16;
+typedef unsigned char u8;
+
+#define MAXKC   (256/32)
+#define MAXKB   (256/8)
+#define MAXNR   14
+
+/* This controls loop-unrolling in aes_core.c */
+#undef FULL_UNROLL
+
+#endif /* !HEADER_AES_LOCL_H */
diff --git a/snmplib/openssl/openssl_cbc_enc.c b/snmplib/openssl/openssl_cbc_enc.c
new file mode 100644
index 0000000..a91df83
--- /dev/null
+++ b/snmplib/openssl/openssl_cbc_enc.c
@@ -0,0 +1,61 @@
+/* crypto/des/cbc_enc.c */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#define CBC_ENC_C__DONT_UPDATE_IV
+
+#include "openssl_ncbc_enc.c" /* des_cbc_encrypt */
diff --git a/snmplib/openssl/openssl_cfb128.c b/snmplib/openssl/openssl_cfb128.c
new file mode 100644
index 0000000..5e0bc1e
--- /dev/null
+++ b/snmplib/openssl/openssl_cfb128.c
@@ -0,0 +1,250 @@
+/* ====================================================================
+ * Copyright (c) 2008 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ */
+
+#include "openssl_modes.h"
+#include <string.h>
+
+#ifndef MODES_DEBUG
+# ifndef NDEBUG
+#  define NDEBUG
+# endif
+#endif
+#include <assert.h>
+
+#define STRICT_ALIGNMENT
+#if defined(__i386) || defined(__i386__) || \
+    defined(__x86_64) || defined(__x86_64__) || \
+    defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \
+    defined(__s390__) || defined(__s390x__)
+#  undef STRICT_ALIGNMENT
+#endif
+
+/* The input and output encrypted as though 128bit cfb mode is being
+ * used.  The extra state information to record how much of the
+ * 128bit block we have used is contained in *num;
+ */
+void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block)
+{
+    unsigned int n;
+    size_t l = 0;
+
+    assert(in && out && key && ivec && num);
+
+    n = *num;
+
+    if (enc) {
+#if !defined(OPENSSL_SMALL_FOOTPRINT)
+	if (16%sizeof(size_t) == 0) do {	/* always true actually */
+		while (n && len) {
+			*(out++) = ivec[n] ^= *(in++);
+			--len;
+			n = (n+1) % 16;
+		}
+#if defined(STRICT_ALIGNMENT)
+		if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0)
+			break;
+#endif
+		while (len>=16) {
+			(*block)(ivec, ivec, key);
+			for (n=0; n<16; n+=sizeof(size_t)) {
+				*(size_t*)(out+n) =
+				*(size_t*)(ivec+n) ^= *(const size_t*)(in+n);
+			}
+			len -= 16;
+			out += 16;
+			in  += 16;
+		}
+		n = 0;
+		if (len) {
+			(*block)(ivec, ivec, key);
+			while (len--) {
+				out[n] = ivec[n] ^= in[n];
+				++n;
+			}
+		}
+		*num = n;
+		return;
+	} while (0);
+	/* the rest would be commonly eliminated by x86* compiler */
+#endif
+	while (l<len) {
+		if (n == 0) {
+			(*block)(ivec, ivec, key);
+		}
+		out[l] = ivec[n] ^= in[l];
+		++l;
+		n = (n+1) % 16;
+	}
+	*num = n;
+    } else {
+#if !defined(OPENSSL_SMALL_FOOTPRINT)
+	if (16%sizeof(size_t) == 0) do {	/* always true actually */
+		while (n && len) {
+			unsigned char c;
+			*(out++) = ivec[n] ^ (c = *(in++)); ivec[n] = c;
+			--len;
+			n = (n+1) % 16;
+ 		}
+#if defined(STRICT_ALIGNMENT)
+		if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0)
+			break;
+#endif
+		while (len>=16) {
+			(*block)(ivec, ivec, key);
+			for (n=0; n<16; n+=sizeof(size_t)) {
+				size_t t = *(const size_t*)(in+n);
+				*(size_t*)(out+n) = *(const size_t*)(ivec+n) ^ t;
+				*(size_t*)(ivec+n) = t;
+			}
+			len -= 16;
+			out += 16;
+			in  += 16;
+		}
+		n = 0;
+		if (len) {
+			(*block)(ivec, ivec, key);
+			while (len--) {
+				unsigned char c;
+				out[n] = ivec[n] ^ (c = in[n]); ivec[n] = c;
+				++n;
+			}
+ 		}
+		*num = n;
+		return;
+	} while (0);
+	/* the rest would be commonly eliminated by x86* compiler */
+#endif
+	while (l<len) {
+		unsigned char c;
+		if (n == 0) {
+			(*block)(ivec, ivec, key);
+		}
+		out[l] = ivec[n] ^ (c = in[l]); ivec[n] = c;
+		++l;
+		n = (n+1) % 16;
+	}
+	*num=n;
+    }
+}
+
+/* This expects a single block of size nbits for both in and out. Note that
+   it corrupts any extra bits in the last byte of out */
+static void cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
+			    int nbits,const void *key,
+			    unsigned char ivec[16],int enc,
+			    block128_f block)
+{
+    int n,rem,num;
+    unsigned char ovec[16*2 + 1];  /* +1 because we dererefence (but don't use) one byte off the end */
+
+    if (nbits<=0 || nbits>128) return;
+
+	/* fill in the first half of the new IV with the current IV */
+	memcpy(ovec,ivec,16);
+	/* construct the new IV */
+	(*block)(ivec,ivec,key);
+	num = (nbits+7)/8;
+	if (enc)	/* encrypt the input */
+	    for(n=0 ; n < num ; ++n)
+		out[n] = (ovec[16+n] = in[n] ^ ivec[n]);
+	else		/* decrypt the input */
+	    for(n=0 ; n < num ; ++n)
+		out[n] = (ovec[16+n] = in[n]) ^ ivec[n];
+	/* shift ovec left... */
+	rem = nbits%8;
+	num = nbits/8;
+	if(rem==0)
+	    memcpy(ivec,ovec+num,16);
+	else
+	    for(n=0 ; n < 16 ; ++n)
+		ivec[n] = ovec[n+num]<<rem | ovec[n+num+1]>>(8-rem);
+
+    /* it is not necessary to cleanse ovec, since the IV is not secret */
+}
+
+/* N.B. This expects the input to be packed, MS bit first */
+void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out,
+		 	size_t bits, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block)
+{
+    size_t n;
+    unsigned char c[1],d[1];
+
+    assert(in && out && key && ivec && num);
+    assert(*num == 0);
+
+    memset(out,0,(bits+7)/8);
+    for(n=0 ; n<bits ; ++n)
+	{
+	c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
+	cfbr_encrypt_block(c,d,1,key,ivec,enc,block);
+	out[n/8]=(out[n/8]&~(1 << (unsigned int)(7-n%8))) |
+		 ((d[0]&0x80) >> (unsigned int)(n%8));
+	}
+}
+
+void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out,
+			size_t length, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block)
+{
+    size_t n;
+
+    assert(in && out && key && ivec && num);
+    assert(*num == 0);
+
+    for(n=0 ; n<length ; ++n)
+	cfbr_encrypt_block(&in[n],&out[n],8,key,ivec,enc,block);
+}
+
diff --git a/snmplib/openssl/openssl_des_enc.c b/snmplib/openssl/openssl_des_enc.c
new file mode 100644
index 0000000..ba70f9c
--- /dev/null
+++ b/snmplib/openssl/openssl_des_enc.c
@@ -0,0 +1,400 @@
+/* crypto/des/des_enc.c */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include "openssl_des_local.h"
+#include "openssl_spr.h"
+
+void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
+	{
+	register DES_LONG l,r,t,u;
+#ifdef DES_PTR
+	register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
+#endif
+#ifndef DES_UNROLL
+	register int i;
+#endif
+	register DES_LONG *s;
+
+	r=data[0];
+	l=data[1];
+
+	IP(r,l);
+	/* Things have been modified so that the initial rotate is
+	 * done outside the loop.  This required the
+	 * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
+	 * One perl script later and things have a 5% speed up on a sparc2.
+	 * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
+	 * for pointing this out. */
+	/* clear the top bits on machines with 8byte longs */
+	/* shift left by 2 */
+	r=ROTATE(r,29)&0xffffffffL;
+	l=ROTATE(l,29)&0xffffffffL;
+
+	s=ks->ks->deslong;
+	/* I don't know if it is worth the effort of loop unrolling the
+	 * inner loop */
+	if (enc)
+		{
+#ifdef DES_UNROLL
+		D_ENCRYPT(l,r, 0); /*  1 */
+		D_ENCRYPT(r,l, 2); /*  2 */
+		D_ENCRYPT(l,r, 4); /*  3 */
+		D_ENCRYPT(r,l, 6); /*  4 */
+		D_ENCRYPT(l,r, 8); /*  5 */
+		D_ENCRYPT(r,l,10); /*  6 */
+		D_ENCRYPT(l,r,12); /*  7 */
+		D_ENCRYPT(r,l,14); /*  8 */
+		D_ENCRYPT(l,r,16); /*  9 */
+		D_ENCRYPT(r,l,18); /*  10 */
+		D_ENCRYPT(l,r,20); /*  11 */
+		D_ENCRYPT(r,l,22); /*  12 */
+		D_ENCRYPT(l,r,24); /*  13 */
+		D_ENCRYPT(r,l,26); /*  14 */
+		D_ENCRYPT(l,r,28); /*  15 */
+		D_ENCRYPT(r,l,30); /*  16 */
+#else
+		for (i=0; i<32; i+=4)
+			{
+			D_ENCRYPT(l,r,i+0); /*  1 */
+			D_ENCRYPT(r,l,i+2); /*  2 */
+			}
+#endif
+		}
+	else
+		{
+#ifdef DES_UNROLL
+		D_ENCRYPT(l,r,30); /* 16 */
+		D_ENCRYPT(r,l,28); /* 15 */
+		D_ENCRYPT(l,r,26); /* 14 */
+		D_ENCRYPT(r,l,24); /* 13 */
+		D_ENCRYPT(l,r,22); /* 12 */
+		D_ENCRYPT(r,l,20); /* 11 */
+		D_ENCRYPT(l,r,18); /* 10 */
+		D_ENCRYPT(r,l,16); /*  9 */
+		D_ENCRYPT(l,r,14); /*  8 */
+		D_ENCRYPT(r,l,12); /*  7 */
+		D_ENCRYPT(l,r,10); /*  6 */
+		D_ENCRYPT(r,l, 8); /*  5 */
+		D_ENCRYPT(l,r, 6); /*  4 */
+		D_ENCRYPT(r,l, 4); /*  3 */
+		D_ENCRYPT(l,r, 2); /*  2 */
+		D_ENCRYPT(r,l, 0); /*  1 */
+#else
+		for (i=30; i>0; i-=4)
+			{
+			D_ENCRYPT(l,r,i-0); /* 16 */
+			D_ENCRYPT(r,l,i-2); /* 15 */
+			}
+#endif
+		}
+
+	/* rotate and clear the top bits on machines with 8byte longs */
+	l=ROTATE(l,3)&0xffffffffL;
+	r=ROTATE(r,3)&0xffffffffL;
+
+	FP(r,l);
+	data[0]=l;
+	data[1]=r;
+	l=r=t=u=0;
+	}
+
+void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
+	{
+	register DES_LONG l,r,t,u;
+#ifdef DES_PTR
+	register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
+#endif
+#ifndef DES_UNROLL
+	register int i;
+#endif
+	register DES_LONG *s;
+
+	r=data[0];
+	l=data[1];
+
+	/* Things have been modified so that the initial rotate is
+	 * done outside the loop.  This required the
+	 * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
+	 * One perl script later and things have a 5% speed up on a sparc2.
+	 * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
+	 * for pointing this out. */
+	/* clear the top bits on machines with 8byte longs */
+	r=ROTATE(r,29)&0xffffffffL;
+	l=ROTATE(l,29)&0xffffffffL;
+
+	s=ks->ks->deslong;
+	/* I don't know if it is worth the effort of loop unrolling the
+	 * inner loop */
+	if (enc)
+		{
+#ifdef DES_UNROLL
+		D_ENCRYPT(l,r, 0); /*  1 */
+		D_ENCRYPT(r,l, 2); /*  2 */
+		D_ENCRYPT(l,r, 4); /*  3 */
+		D_ENCRYPT(r,l, 6); /*  4 */
+		D_ENCRYPT(l,r, 8); /*  5 */
+		D_ENCRYPT(r,l,10); /*  6 */
+		D_ENCRYPT(l,r,12); /*  7 */
+		D_ENCRYPT(r,l,14); /*  8 */
+		D_ENCRYPT(l,r,16); /*  9 */
+		D_ENCRYPT(r,l,18); /*  10 */
+		D_ENCRYPT(l,r,20); /*  11 */
+		D_ENCRYPT(r,l,22); /*  12 */
+		D_ENCRYPT(l,r,24); /*  13 */
+		D_ENCRYPT(r,l,26); /*  14 */
+		D_ENCRYPT(l,r,28); /*  15 */
+		D_ENCRYPT(r,l,30); /*  16 */
+#else
+		for (i=0; i<32; i+=4)
+			{
+			D_ENCRYPT(l,r,i+0); /*  1 */
+			D_ENCRYPT(r,l,i+2); /*  2 */
+			}
+#endif
+		}
+	else
+		{
+#ifdef DES_UNROLL
+		D_ENCRYPT(l,r,30); /* 16 */
+		D_ENCRYPT(r,l,28); /* 15 */
+		D_ENCRYPT(l,r,26); /* 14 */
+		D_ENCRYPT(r,l,24); /* 13 */
+		D_ENCRYPT(l,r,22); /* 12 */
+		D_ENCRYPT(r,l,20); /* 11 */
+		D_ENCRYPT(l,r,18); /* 10 */
+		D_ENCRYPT(r,l,16); /*  9 */
+		D_ENCRYPT(l,r,14); /*  8 */
+		D_ENCRYPT(r,l,12); /*  7 */
+		D_ENCRYPT(l,r,10); /*  6 */
+		D_ENCRYPT(r,l, 8); /*  5 */
+		D_ENCRYPT(l,r, 6); /*  4 */
+		D_ENCRYPT(r,l, 4); /*  3 */
+		D_ENCRYPT(l,r, 2); /*  2 */
+		D_ENCRYPT(r,l, 0); /*  1 */
+#else
+		for (i=30; i>0; i-=4)
+			{
+			D_ENCRYPT(l,r,i-0); /* 16 */
+			D_ENCRYPT(r,l,i-2); /* 15 */
+			}
+#endif
+		}
+	/* rotate and clear the top bits on machines with 8byte longs */
+	data[0]=ROTATE(l,3)&0xffffffffL;
+	data[1]=ROTATE(r,3)&0xffffffffL;
+	l=r=t=u=0;
+	}
+
+void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
+		  DES_key_schedule *ks2, DES_key_schedule *ks3)
+	{
+	register DES_LONG l,r;
+
+	l=data[0];
+	r=data[1];
+	IP(l,r);
+	data[0]=l;
+	data[1]=r;
+	DES_encrypt2((DES_LONG *)data,ks1,DES_ENCRYPT);
+	DES_encrypt2((DES_LONG *)data,ks2,DES_DECRYPT);
+	DES_encrypt2((DES_LONG *)data,ks3,DES_ENCRYPT);
+	l=data[0];
+	r=data[1];
+	FP(r,l);
+	data[0]=l;
+	data[1]=r;
+	}
+
+void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
+		  DES_key_schedule *ks2, DES_key_schedule *ks3)
+	{
+	register DES_LONG l,r;
+
+	l=data[0];
+	r=data[1];
+	IP(l,r);
+	data[0]=l;
+	data[1]=r;
+	DES_encrypt2((DES_LONG *)data,ks3,DES_DECRYPT);
+	DES_encrypt2((DES_LONG *)data,ks2,DES_ENCRYPT);
+	DES_encrypt2((DES_LONG *)data,ks1,DES_DECRYPT);
+	l=data[0];
+	r=data[1];
+	FP(r,l);
+	data[0]=l;
+	data[1]=r;
+	}
+
+#ifndef DES_DEFAULT_OPTIONS
+
+#undef CBC_ENC_C__DONT_UPDATE_IV
+#include "openssl_ncbc_enc.c" /* DES_ncbc_encrypt */
+
+void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
+			  long length, DES_key_schedule *ks1,
+			  DES_key_schedule *ks2, DES_key_schedule *ks3,
+			  DES_cblock *ivec, int enc)
+	{
+	register DES_LONG tin0,tin1;
+	register DES_LONG tout0,tout1,xor0,xor1;
+	register const unsigned char *in;
+	unsigned char *out;
+	register long l=length;
+	DES_LONG tin[2];
+	unsigned char *iv;
+
+	in=input;
+	out=output;
+	iv = &(*ivec)[0];
+
+	if (enc)
+		{
+		c2l(iv,tout0);
+		c2l(iv,tout1);
+		for (l-=8; l>=0; l-=8)
+			{
+			c2l(in,tin0);
+			c2l(in,tin1);
+			tin0^=tout0;
+			tin1^=tout1;
+
+			tin[0]=tin0;
+			tin[1]=tin1;
+			DES_encrypt3((DES_LONG *)tin,ks1,ks2,ks3);
+			tout0=tin[0];
+			tout1=tin[1];
+
+			l2c(tout0,out);
+			l2c(tout1,out);
+			}
+		if (l != -8)
+			{
+			c2ln(in,tin0,tin1,l+8);
+			tin0^=tout0;
+			tin1^=tout1;
+
+			tin[0]=tin0;
+			tin[1]=tin1;
+			DES_encrypt3((DES_LONG *)tin,ks1,ks2,ks3);
+			tout0=tin[0];
+			tout1=tin[1];
+
+			l2c(tout0,out);
+			l2c(tout1,out);
+			}
+		iv = &(*ivec)[0];
+		l2c(tout0,iv);
+		l2c(tout1,iv);
+		}
+	else
+		{
+		register DES_LONG t0,t1;
+
+		c2l(iv,xor0);
+		c2l(iv,xor1);
+		for (l-=8; l>=0; l-=8)
+			{
+			c2l(in,tin0);
+			c2l(in,tin1);
+
+			t0=tin0;
+			t1=tin1;
+
+			tin[0]=tin0;
+			tin[1]=tin1;
+			DES_decrypt3((DES_LONG *)tin,ks1,ks2,ks3);
+			tout0=tin[0];
+			tout1=tin[1];
+
+			tout0^=xor0;
+			tout1^=xor1;
+			l2c(tout0,out);
+			l2c(tout1,out);
+			xor0=t0;
+			xor1=t1;
+			}
+		if (l != -8)
+			{
+			c2l(in,tin0);
+			c2l(in,tin1);
+			
+			t0=tin0;
+			t1=tin1;
+
+			tin[0]=tin0;
+			tin[1]=tin1;
+			DES_decrypt3((DES_LONG *)tin,ks1,ks2,ks3);
+			tout0=tin[0];
+			tout1=tin[1];
+		
+			tout0^=xor0;
+			tout1^=xor1;
+			l2cn(tout0,tout1,out,l+8);
+			xor0=t0;
+			xor1=t1;
+			}
+
+		iv = &(*ivec)[0];
+		l2c(xor0,iv);
+		l2c(xor1,iv);
+		}
+	tin0=tin1=tout0=tout1=xor0=xor1=0;
+	tin[0]=tin[1]=0;
+	}
+
+#endif /* DES_DEFAULT_OPTIONS */
diff --git a/snmplib/openssl/openssl_des_local.h b/snmplib/openssl/openssl_des_local.h
new file mode 100644
index 0000000..f91d844
--- /dev/null
+++ b/snmplib/openssl/openssl_des_local.h
@@ -0,0 +1,431 @@
+/* crypto/des/des_locl.h */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_DES_LOCL_H
+#define HEADER_DES_LOCL_H
+
+#if defined(OPENSSL_SYS_WIN32)
+#ifndef OPENSSL_SYS_MSDOS
+#define OPENSSL_SYS_MSDOS
+#endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef OPENSSL_SYS_MSDOS
+#if !defined(OPENSSL_SYS_VMS) || defined(__DECC)
+#ifdef OPENSSL_UNISTD
+# include OPENSSL_UNISTD
+#else
+# include <unistd.h>
+#endif
+#include <math.h>
+#endif
+#endif
+
+#include <net-snmp/library/openssl_des.h>
+
+#ifdef OPENSSL_SYS_MSDOS		/* Visual C++ 2.1 (Windows NT/95) */
+#include <stdlib.h>
+#include <errno.h>
+#include <time.h>
+#include <io.h>
+#endif
+
+#if defined(__STDC__) || defined(OPENSSL_SYS_VMS) || defined(M_XENIX) || defined(OPENSSL_SYS_MSDOS)
+#include <string.h>
+#endif
+
+#ifdef OPENSSL_BUILD_SHLIBCRYPTO
+# undef OPENSSL_EXTERN
+# define OPENSSL_EXTERN OPENSSL_EXPORT
+#endif
+
+#define ITERATIONS 16
+#define HALF_ITERATIONS 8
+
+/* used in des_read and des_write */
+#define MAXWRITE	(1024*16)
+#define BSIZE		(MAXWRITE+4)
+
+#define c2l(c,l)	(l =((DES_LONG)(*((c)++)))    , \
+			 l|=((DES_LONG)(*((c)++)))<< 8L, \
+			 l|=((DES_LONG)(*((c)++)))<<16L, \
+			 l|=((DES_LONG)(*((c)++)))<<24L)
+
+/* NOTE - c is not incremented as per c2l */
+#define c2ln(c,l1,l2,n)	{ \
+			c+=n; \
+			l1=l2=0; \
+			switch (n) { \
+			case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \
+			case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \
+			case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \
+			case 5: l2|=((DES_LONG)(*(--(c))));     \
+			case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \
+			case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \
+			case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \
+			case 1: l1|=((DES_LONG)(*(--(c))));     \
+				} \
+			}
+
+#define l2c(l,c)	(*((c)++)=(unsigned char)(((l)     )&0xff), \
+			 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+			 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+			 *((c)++)=(unsigned char)(((l)>>24L)&0xff))
+
+/* replacements for htonl and ntohl since I have no idea what to do
+ * when faced with machines with 8 byte longs. */
+#define HDRSIZE 4
+
+#define n2l(c,l)	(l =((DES_LONG)(*((c)++)))<<24L, \
+			 l|=((DES_LONG)(*((c)++)))<<16L, \
+			 l|=((DES_LONG)(*((c)++)))<< 8L, \
+			 l|=((DES_LONG)(*((c)++))))
+
+#define l2n(l,c)	(*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
+			 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+			 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+			 *((c)++)=(unsigned char)(((l)     )&0xff))
+
+/* NOTE - c is not incremented as per l2c */
+#define l2cn(l1,l2,c,n)	{ \
+			c+=n; \
+			switch (n) { \
+			case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
+			case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
+			case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
+			case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
+			case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
+			case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
+			case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
+			case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
+				} \
+			}
+
+#if (defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)) || defined(__ICC)
+#define	ROTATE(a,n)	(_lrotr(a,n))
+#elif defined(__GNUC__) && __GNUC__>=2 && !defined(__STRICT_ANSI__) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC)
+# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
+#  define ROTATE(a,n)	({ register unsigned int ret;	\
+				asm ("rorl %1,%0"	\
+					: "=r"(ret)	\
+					: "I"(n),"0"(a)	\
+					: "cc");	\
+			   ret;				\
+			})
+# endif
+#endif
+#ifndef ROTATE
+#define	ROTATE(a,n)	(((a)>>(n))+((a)<<(32-(n))))
+#endif
+
+/* Don't worry about the LOAD_DATA() stuff, that is used by
+ * fcrypt() to add it's little bit to the front */
+
+#ifdef DES_FCRYPT
+
+#define LOAD_DATA_tmp(R,S,u,t,E0,E1) \
+	{ DES_LONG tmp; LOAD_DATA(R,S,u,t,E0,E1,tmp); }
+
+#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
+	t=R^(R>>16L); \
+	u=t&E0; t&=E1; \
+	tmp=(u<<16); u^=R^s[S  ]; u^=tmp; \
+	tmp=(t<<16); t^=R^s[S+1]; t^=tmp
+#else
+#define LOAD_DATA_tmp(a,b,c,d,e,f) LOAD_DATA(a,b,c,d,e,f,g)
+#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
+	u=R^s[S  ]; \
+	t=R^s[S+1]
+#endif
+
+/* The changes to this macro may help or hinder, depending on the
+ * compiler and the architecture.  gcc2 always seems to do well :-).
+ * Inspired by Dana How <how@isl.stanford.edu>
+ * DO NOT use the alternative version on machines with 8 byte longs.
+ * It does not seem to work on the Alpha, even when DES_LONG is 4
+ * bytes, probably an issue of accessing non-word aligned objects :-( */
+#ifdef DES_PTR
+
+/* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there
+ * is no reason to not xor all the sub items together.  This potentially
+ * saves a register since things can be xored directly into L */
+
+#if defined(DES_RISC1) || defined(DES_RISC2)
+#ifdef DES_RISC1
+#define D_ENCRYPT(LL,R,S) { \
+	unsigned int u1,u2,u3; \
+	LOAD_DATA(R,S,u,t,E0,E1,u1); \
+	u2=(int)u>>8L; \
+	u1=(int)u&0xfc; \
+	u2&=0xfc; \
+	t=ROTATE(t,4); \
+	u>>=16L; \
+	LL^= *(const DES_LONG *)(des_SP      +u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
+	u3=(int)(u>>8L); \
+	u1=(int)u&0xfc; \
+	u3&=0xfc; \
+	LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
+	u2=(int)t>>8L; \
+	u1=(int)t&0xfc; \
+	u2&=0xfc; \
+	t>>=16L; \
+	LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
+	u3=(int)t>>8L; \
+	u1=(int)t&0xfc; \
+	u3&=0xfc; \
+	LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
+#endif
+#ifdef DES_RISC2
+#define D_ENCRYPT(LL,R,S) { \
+	unsigned int u1,u2,s1,s2; \
+	LOAD_DATA(R,S,u,t,E0,E1,u1); \
+	u2=(int)u>>8L; \
+	u1=(int)u&0xfc; \
+	u2&=0xfc; \
+	t=ROTATE(t,4); \
+	LL^= *(const DES_LONG *)(des_SP      +u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
+	s1=(int)(u>>16L); \
+	s2=(int)(u>>24L); \
+	s1&=0xfc; \
+	s2&=0xfc; \
+	LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
+	LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
+	u2=(int)t>>8L; \
+	u1=(int)t&0xfc; \
+	u2&=0xfc; \
+	LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
+	LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
+	s1=(int)(t>>16L); \
+	s2=(int)(t>>24L); \
+	s1&=0xfc; \
+	s2&=0xfc; \
+	LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
+	LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
+#endif
+#else
+#define D_ENCRYPT(LL,R,S) { \
+	LOAD_DATA_tmp(R,S,u,t,E0,E1); \
+	t=ROTATE(t,4); \
+	LL^= \
+	*(const DES_LONG *)(des_SP      +((u     )&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x100+((t     )&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
+	*(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
+#endif
+
+#else /* original version */
+
+#if defined(DES_RISC1) || defined(DES_RISC2)
+#ifdef DES_RISC1
+#define D_ENCRYPT(LL,R,S) {\
+	unsigned int u1,u2,u3; \
+	LOAD_DATA(R,S,u,t,E0,E1,u1); \
+	u>>=2L; \
+	t=ROTATE(t,6); \
+	u2=(int)u>>8L; \
+	u1=(int)u&0x3f; \
+	u2&=0x3f; \
+	u>>=16L; \
+	LL^=DES_SPtrans[0][u1]; \
+	LL^=DES_SPtrans[2][u2]; \
+	u3=(int)u>>8L; \
+	u1=(int)u&0x3f; \
+	u3&=0x3f; \
+	LL^=DES_SPtrans[4][u1]; \
+	LL^=DES_SPtrans[6][u3]; \
+	u2=(int)t>>8L; \
+	u1=(int)t&0x3f; \
+	u2&=0x3f; \
+	t>>=16L; \
+	LL^=DES_SPtrans[1][u1]; \
+	LL^=DES_SPtrans[3][u2]; \
+	u3=(int)t>>8L; \
+	u1=(int)t&0x3f; \
+	u3&=0x3f; \
+	LL^=DES_SPtrans[5][u1]; \
+	LL^=DES_SPtrans[7][u3]; }
+#endif
+#ifdef DES_RISC2
+#define D_ENCRYPT(LL,R,S) {\
+	unsigned int u1,u2,s1,s2; \
+	LOAD_DATA(R,S,u,t,E0,E1,u1); \
+	u>>=2L; \
+	t=ROTATE(t,6); \
+	u2=(int)u>>8L; \
+	u1=(int)u&0x3f; \
+	u2&=0x3f; \
+	LL^=DES_SPtrans[0][u1]; \
+	LL^=DES_SPtrans[2][u2]; \
+	s1=(int)u>>16L; \
+	s2=(int)u>>24L; \
+	s1&=0x3f; \
+	s2&=0x3f; \
+	LL^=DES_SPtrans[4][s1]; \
+	LL^=DES_SPtrans[6][s2]; \
+	u2=(int)t>>8L; \
+	u1=(int)t&0x3f; \
+	u2&=0x3f; \
+	LL^=DES_SPtrans[1][u1]; \
+	LL^=DES_SPtrans[3][u2]; \
+	s1=(int)t>>16; \
+	s2=(int)t>>24L; \
+	s1&=0x3f; \
+	s2&=0x3f; \
+	LL^=DES_SPtrans[5][s1]; \
+	LL^=DES_SPtrans[7][s2]; }
+#endif
+
+#else
+
+#define D_ENCRYPT(LL,R,S) {\
+	LOAD_DATA_tmp(R,S,u,t,E0,E1); \
+	t=ROTATE(t,4); \
+	LL^=\
+		DES_SPtrans[0][(u>> 2L)&0x3f]^ \
+		DES_SPtrans[2][(u>>10L)&0x3f]^ \
+		DES_SPtrans[4][(u>>18L)&0x3f]^ \
+		DES_SPtrans[6][(u>>26L)&0x3f]^ \
+		DES_SPtrans[1][(t>> 2L)&0x3f]^ \
+		DES_SPtrans[3][(t>>10L)&0x3f]^ \
+		DES_SPtrans[5][(t>>18L)&0x3f]^ \
+		DES_SPtrans[7][(t>>26L)&0x3f]; }
+#endif
+#endif
+
+	/* IP and FP
+	 * The problem is more of a geometric problem that random bit fiddling.
+	 0  1  2  3  4  5  6  7      62 54 46 38 30 22 14  6
+	 8  9 10 11 12 13 14 15      60 52 44 36 28 20 12  4
+	16 17 18 19 20 21 22 23      58 50 42 34 26 18 10  2
+	24 25 26 27 28 29 30 31  to  56 48 40 32 24 16  8  0
+
+	32 33 34 35 36 37 38 39      63 55 47 39 31 23 15  7
+	40 41 42 43 44 45 46 47      61 53 45 37 29 21 13  5
+	48 49 50 51 52 53 54 55      59 51 43 35 27 19 11  3
+	56 57 58 59 60 61 62 63      57 49 41 33 25 17  9  1
+
+	The output has been subject to swaps of the form
+	0 1 -> 3 1 but the odd and even bits have been put into
+	2 3    2 0
+	different words.  The main trick is to remember that
+	t=((l>>size)^r)&(mask);
+	r^=t;
+	l^=(t<<size);
+	can be used to swap and move bits between words.
+
+	So l =  0  1  2  3  r = 16 17 18 19
+	        4  5  6  7      20 21 22 23
+	        8  9 10 11      24 25 26 27
+	       12 13 14 15      28 29 30 31
+	becomes (for size == 2 and mask == 0x3333)
+	   t =   2^16  3^17 -- --   l =  0  1 16 17  r =  2  3 18 19
+		 6^20  7^21 -- --        4  5 20 21       6  7 22 23
+		10^24 11^25 -- --        8  9 24 25      10 11 24 25
+		14^28 15^29 -- --       12 13 28 29      14 15 28 29
+
+	Thanks for hints from Richard Outerbridge - he told me IP&FP
+	could be done in 15 xor, 10 shifts and 5 ands.
+	When I finally started to think of the problem in 2D
+	I first got ~42 operations without xors.  When I remembered
+	how to use xors :-) I got it to its final state.
+	*/
+#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
+	(b)^=(t),\
+	(a)^=((t)<<(n)))
+
+#define IP(l,r) \
+	{ \
+	register DES_LONG tt; \
+	PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \
+	PERM_OP(l,r,tt,16,0x0000ffffL); \
+	PERM_OP(r,l,tt, 2,0x33333333L); \
+	PERM_OP(l,r,tt, 8,0x00ff00ffL); \
+	PERM_OP(r,l,tt, 1,0x55555555L); \
+	}
+
+#define FP(l,r) \
+	{ \
+	register DES_LONG tt; \
+	PERM_OP(l,r,tt, 1,0x55555555L); \
+	PERM_OP(r,l,tt, 8,0x00ff00ffL); \
+	PERM_OP(l,r,tt, 2,0x33333333L); \
+	PERM_OP(r,l,tt,16,0x0000ffffL); \
+	PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
+	}
+
+extern const DES_LONG DES_SPtrans[8][64];
+
+void fcrypt_body(DES_LONG *out,DES_key_schedule *ks,
+		 DES_LONG Eswap0, DES_LONG Eswap1);
+
+#ifdef OPENSSL_SMALL_FOOTPRINT
+#undef DES_UNROLL
+#endif
+#endif
diff --git a/snmplib/openssl/openssl_md32_common.h b/snmplib/openssl/openssl_md32_common.h
new file mode 100644
index 0000000..279916f
--- /dev/null
+++ b/snmplib/openssl/openssl_md32_common.h
@@ -0,0 +1,408 @@
+/* crypto/md32_common.h */
+/* ====================================================================
+ * Copyright (c) 1999-2007 The OpenSSL Project.  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. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    licensing@OpenSSL.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ */
+
+/*
+ * This is a generic 32 bit "collector" for message digest algorithms.
+ * Whenever needed it collects input character stream into chunks of
+ * 32 bit values and invokes a block function that performs actual hash
+ * calculations.
+ *
+ * Porting guide.
+ *
+ * Obligatory macros:
+ *
+ * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
+ *	this macro defines byte order of input stream.
+ * HASH_CBLOCK
+ *	size of a unit chunk HASH_BLOCK operates on.
+ * HASH_LONG
+ *	has to be at lest 32 bit wide, if it's wider, then
+ *	HASH_LONG_LOG2 *has to* be defined along
+ * HASH_CTX
+ *	context structure that at least contains following
+ *	members:
+ *		typedef struct {
+ *			...
+ *			HASH_LONG	Nl,Nh;
+ *			either {
+ *			HASH_LONG	data[HASH_LBLOCK];
+ *			unsigned char	data[HASH_CBLOCK];
+ *			};
+ *			unsigned int	num;
+ *			...
+ *			} HASH_CTX;
+ *	data[] vector is expected to be zeroed upon first call to
+ *	HASH_UPDATE.
+ * HASH_UPDATE
+ *	name of "Update" function, implemented here.
+ * HASH_TRANSFORM
+ *	name of "Transform" function, implemented here.
+ * HASH_FINAL
+ *	name of "Final" function, implemented here.
+ * HASH_BLOCK_DATA_ORDER
+ *	name of "block" function capable of treating *unaligned* input
+ *	message in original (data) byte order, implemented externally.
+ * HASH_MAKE_STRING
+ *	macro convering context variables to an ASCII hash string.
+ *
+ * MD5 example:
+ *
+ *	#define DATA_ORDER_IS_LITTLE_ENDIAN
+ *
+ *	#define HASH_LONG		MD5_LONG
+ *	#define HASH_LONG_LOG2		MD5_LONG_LOG2
+ *	#define HASH_CTX		MD5_CTX
+ *	#define HASH_CBLOCK		MD5_CBLOCK
+ *	#define HASH_UPDATE		MD5_Update
+ *	#define HASH_TRANSFORM		MD5_Transform
+ *	#define HASH_FINAL		MD5_Final
+ *	#define HASH_BLOCK_DATA_ORDER	md5_block_data_order
+ *
+ *					<appro@fy.chalmers.se>
+ */
+
+#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
+#error "DATA_ORDER must be defined!"
+#endif
+
+#ifndef HASH_CBLOCK
+#error "HASH_CBLOCK must be defined!"
+#endif
+#ifndef HASH_LONG
+#error "HASH_LONG must be defined!"
+#endif
+#ifndef HASH_CTX
+#error "HASH_CTX must be defined!"
+#endif
+
+#ifndef HASH_UPDATE
+#error "HASH_UPDATE must be defined!"
+#endif
+#ifndef HASH_TRANSFORM
+#error "HASH_TRANSFORM must be defined!"
+#endif
+#ifndef HASH_FINAL
+#error "HASH_FINAL must be defined!"
+#endif
+
+#ifndef HASH_BLOCK_DATA_ORDER
+#error "HASH_BLOCK_DATA_ORDER must be defined!"
+#endif
+
+/*
+ * Engage compiler specific rotate intrinsic function if available.
+ */
+#undef ROTATE
+#ifndef PEDANTIC
+# if defined(_MSC_VER) || defined(__ICC)
+#  define ROTATE(a,n)	_lrotl(a,n)
+# elif defined(__MWERKS__)
+#  if defined(__POWERPC__)
+#   define ROTATE(a,n)	__rlwinm(a,n,0,31)
+#  elif defined(__MC68K__)
+    /* Motorola specific tweak. <appro@fy.chalmers.se> */
+#   define ROTATE(a,n)	( n<24 ? __rol(a,n) : __ror(a,32-n) )
+#  else
+#   define ROTATE(a,n)	__rol(a,n)
+#  endif
+# elif defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
+  /*
+   * Some GNU C inline assembler templates. Note that these are
+   * rotates by *constant* number of bits! But that's exactly
+   * what we need here...
+   * 					<appro@fy.chalmers.se>
+   */
+#  if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
+#   define ROTATE(a,n)	({ register unsigned int ret;	\
+				asm (			\
+				"roll %1,%0"		\
+				: "=r"(ret)		\
+				: "I"(n), "0"(a)	\
+				: "cc");		\
+			   ret;				\
+			})
+#  elif defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
+	defined(__powerpc) || defined(__ppc__) || defined(__powerpc64__)
+#   define ROTATE(a,n)	({ register unsigned int ret;	\
+				asm (			\
+				"rlwinm %0,%1,%2,0,31"	\
+				: "=r"(ret)		\
+				: "r"(a), "I"(n));	\
+			   ret;				\
+			})
+#  elif defined(__s390x__)
+#   define ROTATE(a,n) ({ register unsigned int ret;	\
+				asm ("rll %0,%1,%2"	\
+				: "=r"(ret)		\
+				: "r"(a), "I"(n));	\
+			  ret;				\
+			})
+#  endif
+# endif
+#endif /* PEDANTIC */
+
+#ifndef ROTATE
+#define ROTATE(a,n)     (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
+#endif
+
+#if defined(DATA_ORDER_IS_BIG_ENDIAN)
+
+#ifndef PEDANTIC
+# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
+#  if ((defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)) || \
+      (defined(__x86_64) || defined(__x86_64__))
+#   if !defined(B_ENDIAN)
+    /*
+     * This gives ~30-40% performance improvement in SHA-256 compiled
+     * with gcc [on P4]. Well, first macro to be frank. We can pull
+     * this trick on x86* platforms only, because these CPUs can fetch
+     * unaligned data without raising an exception.
+     */
+#   define HOST_c2l(c,l)	({ unsigned int r=*((const unsigned int *)(c));	\
+				   asm ("bswapl %0":"=r"(r):"0"(r));	\
+				   (c)+=4; (l)=r;			})
+#   define HOST_l2c(l,c)	({ unsigned int r=(l);			\
+				   asm ("bswapl %0":"=r"(r):"0"(r));	\
+				   *((unsigned int *)(c))=r; (c)+=4; r;	})
+#   endif
+#  endif
+# endif
+#endif
+#if defined(__s390__) || defined(__s390x__)
+# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l))
+# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l))
+#endif
+
+#ifndef HOST_c2l
+#define HOST_c2l(c,l)	(l =(((unsigned long)(*((c)++)))<<24),		\
+			 l|=(((unsigned long)(*((c)++)))<<16),		\
+			 l|=(((unsigned long)(*((c)++)))<< 8),		\
+			 l|=(((unsigned long)(*((c)++)))    ),		\
+			 l)
+#endif
+#ifndef HOST_l2c
+#define HOST_l2c(l,c)	(*((c)++)=(unsigned char)(((l)>>24)&0xff),	\
+			 *((c)++)=(unsigned char)(((l)>>16)&0xff),	\
+			 *((c)++)=(unsigned char)(((l)>> 8)&0xff),	\
+			 *((c)++)=(unsigned char)(((l)    )&0xff),	\
+			 l)
+#endif
+
+#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
+
+#ifndef PEDANTIC
+# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
+#  if defined(__s390x__)
+#   define HOST_c2l(c,l)	({ asm ("lrv	%0,0(%1)"		\
+					:"=r"(l) : "r"(c));		\
+				   (c)+=4; (l);				})
+#   define HOST_l2c(l,c)	({ asm ("strv	%0,0(%1)"		\
+					: : "r"(l),"r"(c) : "memory");	\
+				   (c)+=4; (l);				})
+#  endif
+# endif
+#endif
+#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
+# ifndef B_ENDIAN
+   /* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
+#  define HOST_c2l(c,l)	((l)=*((const unsigned int *)(c)), (c)+=4, l)
+#  define HOST_l2c(l,c)	(*((unsigned int *)(c))=(l), (c)+=4, l)
+# endif
+#endif
+
+#ifndef HOST_c2l
+#define HOST_c2l(c,l)	(l =(((unsigned long)(*((c)++)))    ),		\
+			 l|=(((unsigned long)(*((c)++)))<< 8),		\
+			 l|=(((unsigned long)(*((c)++)))<<16),		\
+			 l|=(((unsigned long)(*((c)++)))<<24),		\
+			 l)
+#endif
+#ifndef HOST_l2c
+#define HOST_l2c(l,c)	(*((c)++)=(unsigned char)(((l)    )&0xff),	\
+			 *((c)++)=(unsigned char)(((l)>> 8)&0xff),	\
+			 *((c)++)=(unsigned char)(((l)>>16)&0xff),	\
+			 *((c)++)=(unsigned char)(((l)>>24)&0xff),	\
+			 l)
+#endif
+
+#endif
+
+/*
+ * Time for some action:-)
+ */
+
+int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
+	{
+	const unsigned char *data=data_;
+	unsigned char *p;
+	HASH_LONG l;
+	size_t n;
+
+	if (len==0) return 1;
+
+	l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL;
+	/* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
+	 * Wei Dai <weidai@eskimo.com> for pointing it out. */
+	if (l < c->Nl) /* overflow */
+		c->Nh++;
+	c->Nh+=(HASH_LONG)(len>>29);	/* might cause compiler warning on 16-bit */
+	c->Nl=l;
+
+	n = c->num;
+	if (n != 0)
+		{
+		p=(unsigned char *)c->data;
+
+		if (len >= HASH_CBLOCK || len+n >= HASH_CBLOCK)
+			{
+			memcpy (p+n,data,HASH_CBLOCK-n);
+			HASH_BLOCK_DATA_ORDER (c,p,1);
+			n      = HASH_CBLOCK-n;
+			data  += n;
+			len   -= n;
+			c->num = 0;
+			memset (p,0,HASH_CBLOCK);	/* keep it zeroed */
+			}
+		else
+			{
+			memcpy (p+n,data,len);
+			c->num += (unsigned int)len;
+			return 1;
+			}
+		}
+
+	n = len/HASH_CBLOCK;
+	if (n > 0)
+		{
+		HASH_BLOCK_DATA_ORDER (c,data,n);
+		n    *= HASH_CBLOCK;
+		data += n;
+		len  -= n;
+		}
+
+	if (len != 0)
+		{
+		p = (unsigned char *)c->data;
+		c->num = (unsigned int)len;
+		memcpy (p,data,len);
+		}
+	return 1;
+	}
+
+
+void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
+	{
+	HASH_BLOCK_DATA_ORDER (c,data,1);
+	}
+
+
+int HASH_FINAL (unsigned char *md, HASH_CTX *c)
+	{
+	unsigned char *p = (unsigned char *)c->data;
+	size_t n = c->num;
+
+	p[n] = 0x80; /* there is always room for one */
+	n++;
+
+	if (n > (HASH_CBLOCK-8))
+		{
+		memset (p+n,0,HASH_CBLOCK-n);
+		n=0;
+		HASH_BLOCK_DATA_ORDER (c,p,1);
+		}
+	memset (p+n,0,HASH_CBLOCK-8-n);
+
+	p += HASH_CBLOCK-8;
+#if   defined(DATA_ORDER_IS_BIG_ENDIAN)
+	(void)HOST_l2c(c->Nh,p);
+	(void)HOST_l2c(c->Nl,p);
+#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
+	(void)HOST_l2c(c->Nl,p);
+	(void)HOST_l2c(c->Nh,p);
+#endif
+	p -= HASH_CBLOCK;
+	HASH_BLOCK_DATA_ORDER (c,p,1);
+	c->num=0;
+	memset (p,0,HASH_CBLOCK);
+
+#ifndef HASH_MAKE_STRING
+#error "HASH_MAKE_STRING must be defined!"
+#else
+	HASH_MAKE_STRING(c,md);
+#endif
+
+	return 1;
+	}
+
+#ifndef MD32_REG_T
+#define MD32_REG_T long
+/*
+ * This comment was originaly written for MD5, which is why it
+ * discusses A-D. But it basically applies to all 32-bit digests,
+ * which is why it was moved to common header file.
+ *
+ * In case you wonder why A-D are declared as long and not
+ * as MD5_LONG. Doing so results in slight performance
+ * boost on LP64 architectures. The catch is we don't
+ * really care if 32 MSBs of a 64-bit register get polluted
+ * with eventual overflows as we *save* only 32 LSBs in
+ * *either* case. Now declaring 'em long excuses the compiler
+ * from keeping 32 MSBs zeroed resulting in 13% performance
+ * improvement under SPARC Solaris7/64 and 5% under AlphaLinux.
+ * Well, to be honest it should say that this *prevents* 
+ * performance degradation.
+ *				<appro@fy.chalmers.se>
+ * Apparently there're LP64 compilers that generate better
+ * code if A-D are declared int. Most notably GCC-x86_64
+ * generates better code.
+ *				<appro@fy.chalmers.se>
+ */
+#endif
diff --git a/snmplib/openssl/openssl_md5.c b/snmplib/openssl/openssl_md5.c
new file mode 100644
index 0000000..b87adb3
--- /dev/null
+++ b/snmplib/openssl/openssl_md5.c
@@ -0,0 +1,181 @@
+/* crypto/md5/md5_dgst.c */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include <stdio.h>
+#include "openssl_md5_local.h"
+
+/* Implemented from RFC1321 The MD5 Message-Digest Algorithm
+ */
+
+#define INIT_DATA_A (unsigned long)0x67452301L
+#define INIT_DATA_B (unsigned long)0xefcdab89L
+#define INIT_DATA_C (unsigned long)0x98badcfeL
+#define INIT_DATA_D (unsigned long)0x10325476L
+
+int MD5_Init(MD5_CTX *c)
+	{
+	memset (c,0,sizeof(*c));
+	c->A=INIT_DATA_A;
+	c->B=INIT_DATA_B;
+	c->C=INIT_DATA_C;
+	c->D=INIT_DATA_D;
+	return 1;
+	}
+
+#ifndef md5_block_data_order
+#ifdef X
+#undef X
+#endif
+void md5_block_data_order (MD5_CTX *c, const void *data_, size_t num)
+	{
+	const unsigned char *data=data_;
+	register unsigned MD32_REG_T A,B,C,D,l;
+#ifndef MD32_XARRAY
+	/* See comment in crypto/sha/sha_locl.h for details. */
+	unsigned MD32_REG_T	XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
+				XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
+# define X(i)	XX##i
+#else
+	MD5_LONG XX[MD5_LBLOCK];
+# define X(i)	XX[i]
+#endif
+
+	A=c->A;
+	B=c->B;
+	C=c->C;
+	D=c->D;
+
+	for (;num--;)
+		{
+	HOST_c2l(data,l); X( 0)=l;		HOST_c2l(data,l); X( 1)=l;
+	/* Round 0 */
+	R0(A,B,C,D,X( 0), 7,0xd76aa478L);	HOST_c2l(data,l); X( 2)=l;
+	R0(D,A,B,C,X( 1),12,0xe8c7b756L);	HOST_c2l(data,l); X( 3)=l;
+	R0(C,D,A,B,X( 2),17,0x242070dbL);	HOST_c2l(data,l); X( 4)=l;
+	R0(B,C,D,A,X( 3),22,0xc1bdceeeL);	HOST_c2l(data,l); X( 5)=l;
+	R0(A,B,C,D,X( 4), 7,0xf57c0fafL);	HOST_c2l(data,l); X( 6)=l;
+	R0(D,A,B,C,X( 5),12,0x4787c62aL);	HOST_c2l(data,l); X( 7)=l;
+	R0(C,D,A,B,X( 6),17,0xa8304613L);	HOST_c2l(data,l); X( 8)=l;
+	R0(B,C,D,A,X( 7),22,0xfd469501L);	HOST_c2l(data,l); X( 9)=l;
+	R0(A,B,C,D,X( 8), 7,0x698098d8L);	HOST_c2l(data,l); X(10)=l;
+	R0(D,A,B,C,X( 9),12,0x8b44f7afL);	HOST_c2l(data,l); X(11)=l;
+	R0(C,D,A,B,X(10),17,0xffff5bb1L);	HOST_c2l(data,l); X(12)=l;
+	R0(B,C,D,A,X(11),22,0x895cd7beL);	HOST_c2l(data,l); X(13)=l;
+	R0(A,B,C,D,X(12), 7,0x6b901122L);	HOST_c2l(data,l); X(14)=l;
+	R0(D,A,B,C,X(13),12,0xfd987193L);	HOST_c2l(data,l); X(15)=l;
+	R0(C,D,A,B,X(14),17,0xa679438eL);
+	R0(B,C,D,A,X(15),22,0x49b40821L);
+	/* Round 1 */
+	R1(A,B,C,D,X( 1), 5,0xf61e2562L);
+	R1(D,A,B,C,X( 6), 9,0xc040b340L);
+	R1(C,D,A,B,X(11),14,0x265e5a51L);
+	R1(B,C,D,A,X( 0),20,0xe9b6c7aaL);
+	R1(A,B,C,D,X( 5), 5,0xd62f105dL);
+	R1(D,A,B,C,X(10), 9,0x02441453L);
+	R1(C,D,A,B,X(15),14,0xd8a1e681L);
+	R1(B,C,D,A,X( 4),20,0xe7d3fbc8L);
+	R1(A,B,C,D,X( 9), 5,0x21e1cde6L);
+	R1(D,A,B,C,X(14), 9,0xc33707d6L);
+	R1(C,D,A,B,X( 3),14,0xf4d50d87L);
+	R1(B,C,D,A,X( 8),20,0x455a14edL);
+	R1(A,B,C,D,X(13), 5,0xa9e3e905L);
+	R1(D,A,B,C,X( 2), 9,0xfcefa3f8L);
+	R1(C,D,A,B,X( 7),14,0x676f02d9L);
+	R1(B,C,D,A,X(12),20,0x8d2a4c8aL);
+	/* Round 2 */
+	R2(A,B,C,D,X( 5), 4,0xfffa3942L);
+	R2(D,A,B,C,X( 8),11,0x8771f681L);
+	R2(C,D,A,B,X(11),16,0x6d9d6122L);
+	R2(B,C,D,A,X(14),23,0xfde5380cL);
+	R2(A,B,C,D,X( 1), 4,0xa4beea44L);
+	R2(D,A,B,C,X( 4),11,0x4bdecfa9L);
+	R2(C,D,A,B,X( 7),16,0xf6bb4b60L);
+	R2(B,C,D,A,X(10),23,0xbebfbc70L);
+	R2(A,B,C,D,X(13), 4,0x289b7ec6L);
+	R2(D,A,B,C,X( 0),11,0xeaa127faL);
+	R2(C,D,A,B,X( 3),16,0xd4ef3085L);
+	R2(B,C,D,A,X( 6),23,0x04881d05L);
+	R2(A,B,C,D,X( 9), 4,0xd9d4d039L);
+	R2(D,A,B,C,X(12),11,0xe6db99e5L);
+	R2(C,D,A,B,X(15),16,0x1fa27cf8L);
+	R2(B,C,D,A,X( 2),23,0xc4ac5665L);
+	/* Round 3 */
+	R3(A,B,C,D,X( 0), 6,0xf4292244L);
+	R3(D,A,B,C,X( 7),10,0x432aff97L);
+	R3(C,D,A,B,X(14),15,0xab9423a7L);
+	R3(B,C,D,A,X( 5),21,0xfc93a039L);
+	R3(A,B,C,D,X(12), 6,0x655b59c3L);
+	R3(D,A,B,C,X( 3),10,0x8f0ccc92L);
+	R3(C,D,A,B,X(10),15,0xffeff47dL);
+	R3(B,C,D,A,X( 1),21,0x85845dd1L);
+	R3(A,B,C,D,X( 8), 6,0x6fa87e4fL);
+	R3(D,A,B,C,X(15),10,0xfe2ce6e0L);
+	R3(C,D,A,B,X( 6),15,0xa3014314L);
+	R3(B,C,D,A,X(13),21,0x4e0811a1L);
+	R3(A,B,C,D,X( 4), 6,0xf7537e82L);
+	R3(D,A,B,C,X(11),10,0xbd3af235L);
+	R3(C,D,A,B,X( 2),15,0x2ad7d2bbL);
+	R3(B,C,D,A,X( 9),21,0xeb86d391L);
+
+	A = c->A += A;
+	B = c->B += B;
+	C = c->C += C;
+	D = c->D += D;
+		}
+	}
+#endif
diff --git a/snmplib/openssl/openssl_md5_local.h b/snmplib/openssl/openssl_md5_local.h
new file mode 100644
index 0000000..47ef374
--- /dev/null
+++ b/snmplib/openssl/openssl_md5_local.h
@@ -0,0 +1,129 @@
+/* crypto/md5/md5_locl.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <net-snmp/openssl_md5.h>
+
+#ifndef MD5_LONG_LOG2
+#define MD5_LONG_LOG2 2 /* default to 32 bits */
+#endif
+
+#ifdef MD5_ASM
+# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__) || \
+     defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
+#  define md5_block_data_order md5_block_asm_data_order
+# elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+#  define md5_block_data_order md5_block_asm_data_order
+# endif
+#endif
+
+void md5_block_data_order (MD5_CTX *c, const void *p,size_t num);
+
+#define DATA_ORDER_IS_LITTLE_ENDIAN
+
+#define HASH_LONG		MD5_LONG
+#define HASH_CTX		MD5_CTX
+#define HASH_CBLOCK		MD5_CBLOCK
+#define HASH_UPDATE		MD5_Update
+#define HASH_TRANSFORM		MD5_Transform
+#define HASH_FINAL		MD5_Final
+#define	HASH_MAKE_STRING(c,s)	do {	\
+	unsigned long ll;		\
+	ll=(c)->A; HOST_l2c(ll,(s));	\
+	ll=(c)->B; HOST_l2c(ll,(s));	\
+	ll=(c)->C; HOST_l2c(ll,(s));	\
+	ll=(c)->D; HOST_l2c(ll,(s));	\
+	} while (0)
+#define	HASH_BLOCK_DATA_ORDER	md5_block_data_order
+
+#include "openssl_md32_common.h"
+
+/*
+#define	F(x,y,z)	(((x) & (y))  |  ((~(x)) & (z)))
+#define	G(x,y,z)	(((x) & (z))  |  ((y) & (~(z))))
+*/
+
+/* As pointed out by Wei Dai <weidai@eskimo.com>, the above can be
+ * simplified to the code below.  Wei attributes these optimizations
+ * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
+ */
+#define	F(b,c,d)	((((c) ^ (d)) & (b)) ^ (d))
+#define	G(b,c,d)	((((b) ^ (c)) & (d)) ^ (c))
+#define	H(b,c,d)	((b) ^ (c) ^ (d))
+#define	I(b,c,d)	(((~(d)) | (b)) ^ (c))
+
+#define R0(a,b,c,d,k,s,t) { \
+	a+=((k)+(t)+F((b),(c),(d))); \
+	a=ROTATE(a,s); \
+	a+=b; };\
+
+#define R1(a,b,c,d,k,s,t) { \
+	a+=((k)+(t)+G((b),(c),(d))); \
+	a=ROTATE(a,s); \
+	a+=b; };
+
+#define R2(a,b,c,d,k,s,t) { \
+	a+=((k)+(t)+H((b),(c),(d))); \
+	a=ROTATE(a,s); \
+	a+=b; };
+
+#define R3(a,b,c,d,k,s,t) { \
+	a+=((k)+(t)+I((b),(c),(d))); \
+	a=ROTATE(a,s); \
+	a+=b; };
diff --git a/snmplib/openssl/openssl_modes.h b/snmplib/openssl/openssl_modes.h
new file mode 100644
index 0000000..af8d97d
--- /dev/null
+++ b/snmplib/openssl/openssl_modes.h
@@ -0,0 +1,59 @@
+/* ====================================================================
+ * Copyright (c) 2008 The OpenSSL Project. All rights reserved.
+ *
+ * Rights for redistribution and usage in source and binary
+ * forms are granted according to the OpenSSL license.
+ */
+
+#include <stddef.h>
+
+typedef void (*block128_f)(const unsigned char in[16],
+			unsigned char out[16],
+			const void *key);
+
+typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], int enc);
+
+void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], block128_f block);
+void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], block128_f block);
+
+void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], unsigned char ecount_buf[16],
+			unsigned int *num, block128_f block);
+
+void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], int *num,
+			block128_f block);
+
+void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block);
+void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out,
+			size_t length, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block);
+void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out,
+			size_t bits, const void *key,
+			unsigned char ivec[16], int *num,
+			int enc, block128_f block);
+
+size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], block128_f block);
+size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], cbc128_f cbc);
+size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], block128_f block);
+size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out,
+			size_t len, const void *key,
+			unsigned char ivec[16], cbc128_f cbc);
diff --git a/snmplib/openssl/openssl_ncbc_enc.c b/snmplib/openssl/openssl_ncbc_enc.c
new file mode 100644
index 0000000..c38cb66
--- /dev/null
+++ b/snmplib/openssl/openssl_ncbc_enc.c
@@ -0,0 +1,148 @@
+/* crypto/des/ncbc_enc.c */
+/*
+ * #included by:
+ *    cbc_enc.c  (DES_cbc_encrypt)
+ *    des_enc.c  (DES_ncbc_encrypt)
+ */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include "openssl_des_local.h"
+
+#ifdef CBC_ENC_C__DONT_UPDATE_IV
+void DES_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
+		     DES_key_schedule *_schedule, DES_cblock *ivec, int enc)
+#else
+void DES_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length,
+		     DES_key_schedule *_schedule, DES_cblock *ivec, int enc)
+#endif
+	{
+	register DES_LONG tin0,tin1;
+	register DES_LONG tout0,tout1,xor0,xor1;
+	register long l=length;
+	DES_LONG tin[2];
+	unsigned char *iv;
+
+	iv = &(*ivec)[0];
+
+	if (enc)
+		{
+		c2l(iv,tout0);
+		c2l(iv,tout1);
+		for (l-=8; l>=0; l-=8)
+			{
+			c2l(in,tin0);
+			c2l(in,tin1);
+			tin0^=tout0; tin[0]=tin0;
+			tin1^=tout1; tin[1]=tin1;
+			DES_encrypt1((DES_LONG *)tin,_schedule,DES_ENCRYPT);
+			tout0=tin[0]; l2c(tout0,out);
+			tout1=tin[1]; l2c(tout1,out);
+			}
+		if (l != -8)
+			{
+			c2ln(in,tin0,tin1,l+8);
+			tin0^=tout0; tin[0]=tin0;
+			tin1^=tout1; tin[1]=tin1;
+			DES_encrypt1((DES_LONG *)tin,_schedule,DES_ENCRYPT);
+			tout0=tin[0]; l2c(tout0,out);
+			tout1=tin[1]; l2c(tout1,out);
+			}
+#ifndef CBC_ENC_C__DONT_UPDATE_IV
+		iv = &(*ivec)[0];
+		l2c(tout0,iv);
+		l2c(tout1,iv);
+#endif
+		}
+	else
+		{
+		c2l(iv,xor0);
+		c2l(iv,xor1);
+		for (l-=8; l>=0; l-=8)
+			{
+			c2l(in,tin0); tin[0]=tin0;
+			c2l(in,tin1); tin[1]=tin1;
+			DES_encrypt1((DES_LONG *)tin,_schedule,DES_DECRYPT);
+			tout0=tin[0]^xor0;
+			tout1=tin[1]^xor1;
+			l2c(tout0,out);
+			l2c(tout1,out);
+			xor0=tin0;
+			xor1=tin1;
+			}
+		if (l != -8)
+			{
+			c2l(in,tin0); tin[0]=tin0;
+			c2l(in,tin1); tin[1]=tin1;
+			DES_encrypt1((DES_LONG *)tin,_schedule,DES_DECRYPT);
+			tout0=tin[0]^xor0;
+			tout1=tin[1]^xor1;
+			l2cn(tout0,tout1,out,l+8);
+#ifndef CBC_ENC_C__DONT_UPDATE_IV
+			xor0=tin0;
+			xor1=tin1;
+#endif
+			}
+#ifndef CBC_ENC_C__DONT_UPDATE_IV 
+		iv = &(*ivec)[0];
+		l2c(xor0,iv);
+		l2c(xor1,iv);
+#endif
+		}
+	tin0=tin1=tout0=tout1=xor0=xor1=0;
+	tin[0]=tin[1]=0;
+	}
diff --git a/snmplib/openssl/openssl_set_key.c b/snmplib/openssl/openssl_set_key.c
new file mode 100644
index 0000000..2b26b9c
--- /dev/null
+++ b/snmplib/openssl/openssl_set_key.c
@@ -0,0 +1,406 @@
+/* crypto/des/set_key.c */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+/* set_key.c v 1.4 eay 24/9/91
+ * 1.4 Speed up by 400% :-)
+ * 1.3 added register declarations.
+ * 1.2 unrolled make_key_sched a bit more
+ * 1.1 added norm_expand_bits
+ * 1.0 First working version
+ */
+int DES_check_key = 0;
+#include "openssl_des_local.h"
+
+static const unsigned char odd_parity[256]={
+  1,  1,  2,  2,  4,  4,  7,  7,  8,  8, 11, 11, 13, 13, 14, 14,
+ 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
+ 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
+ 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
+ 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
+ 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
+ 97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
+112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
+128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
+145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
+161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
+176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
+193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
+208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
+224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
+241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
+
+void DES_set_odd_parity(DES_cblock *key)
+	{
+	unsigned int i;
+
+	for (i=0; i<DES_KEY_SZ; i++)
+		(*key)[i]=odd_parity[(*key)[i]];
+	}
+
+int DES_check_key_parity(const_DES_cblock *key)
+	{
+	unsigned int i;
+
+	for (i=0; i<DES_KEY_SZ; i++)
+		{
+		if ((*key)[i] != odd_parity[(*key)[i]])
+			return(0);
+		}
+	return(1);
+	}
+
+/* Weak and semi week keys as take from
+ * %A D.W. Davies
+ * %A W.L. Price
+ * %T Security for Computer Networks
+ * %I John Wiley & Sons
+ * %D 1984
+ * Many thanks to smb@ulysses.att.com (Steven Bellovin) for the reference
+ * (and actual cblock values).
+ */
+#define NUM_WEAK_KEY	16
+static const DES_cblock weak_keys[NUM_WEAK_KEY]={
+	/* weak keys */
+	{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
+	{0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE},
+	{0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E},
+	{0xE0,0xE0,0xE0,0xE0,0xF1,0xF1,0xF1,0xF1},
+	/* semi-weak keys */
+	{0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE},
+	{0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01},
+	{0x1F,0xE0,0x1F,0xE0,0x0E,0xF1,0x0E,0xF1},
+	{0xE0,0x1F,0xE0,0x1F,0xF1,0x0E,0xF1,0x0E},
+	{0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1},
+	{0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01},
+	{0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,0xFE},
+	{0xFE,0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E},
+	{0x01,0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E},
+	{0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,0x01},
+	{0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
+	{0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}};
+
+int DES_is_weak_key(const_DES_cblock *key)
+	{
+	int i;
+
+	for (i=0; i<NUM_WEAK_KEY; i++)
+		/* Added == 0 to comparison, I obviously don't run
+		 * this section very often :-(, thanks to
+		 * engineering@MorningStar.Com for the fix
+		 * eay 93/06/29
+		 * Another problem, I was comparing only the first 4
+		 * bytes, 97/03/18 */
+		if (memcmp(weak_keys[i],key,sizeof(DES_cblock)) == 0) return(1);
+	return(0);
+	}
+
+/* NOW DEFINED IN des_local.h
+ * See ecb_encrypt.c for a pseudo description of these macros. 
+ * #define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
+ * 	(b)^=(t),\
+ * 	(a)=((a)^((t)<<(n))))
+ */
+
+#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
+	(a)=(a)^(t)^(t>>(16-(n))))
+
+static const DES_LONG des_skb[8][64]={
+	{
+	/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
+	0x00000000L,0x00000010L,0x20000000L,0x20000010L,
+	0x00010000L,0x00010010L,0x20010000L,0x20010010L,
+	0x00000800L,0x00000810L,0x20000800L,0x20000810L,
+	0x00010800L,0x00010810L,0x20010800L,0x20010810L,
+	0x00000020L,0x00000030L,0x20000020L,0x20000030L,
+	0x00010020L,0x00010030L,0x20010020L,0x20010030L,
+	0x00000820L,0x00000830L,0x20000820L,0x20000830L,
+	0x00010820L,0x00010830L,0x20010820L,0x20010830L,
+	0x00080000L,0x00080010L,0x20080000L,0x20080010L,
+	0x00090000L,0x00090010L,0x20090000L,0x20090010L,
+	0x00080800L,0x00080810L,0x20080800L,0x20080810L,
+	0x00090800L,0x00090810L,0x20090800L,0x20090810L,
+	0x00080020L,0x00080030L,0x20080020L,0x20080030L,
+	0x00090020L,0x00090030L,0x20090020L,0x20090030L,
+	0x00080820L,0x00080830L,0x20080820L,0x20080830L,
+	0x00090820L,0x00090830L,0x20090820L,0x20090830L,
+	},{
+	/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
+	0x00000000L,0x02000000L,0x00002000L,0x02002000L,
+	0x00200000L,0x02200000L,0x00202000L,0x02202000L,
+	0x00000004L,0x02000004L,0x00002004L,0x02002004L,
+	0x00200004L,0x02200004L,0x00202004L,0x02202004L,
+	0x00000400L,0x02000400L,0x00002400L,0x02002400L,
+	0x00200400L,0x02200400L,0x00202400L,0x02202400L,
+	0x00000404L,0x02000404L,0x00002404L,0x02002404L,
+	0x00200404L,0x02200404L,0x00202404L,0x02202404L,
+	0x10000000L,0x12000000L,0x10002000L,0x12002000L,
+	0x10200000L,0x12200000L,0x10202000L,0x12202000L,
+	0x10000004L,0x12000004L,0x10002004L,0x12002004L,
+	0x10200004L,0x12200004L,0x10202004L,0x12202004L,
+	0x10000400L,0x12000400L,0x10002400L,0x12002400L,
+	0x10200400L,0x12200400L,0x10202400L,0x12202400L,
+	0x10000404L,0x12000404L,0x10002404L,0x12002404L,
+	0x10200404L,0x12200404L,0x10202404L,0x12202404L,
+	},{
+	/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
+	0x00000000L,0x00000001L,0x00040000L,0x00040001L,
+	0x01000000L,0x01000001L,0x01040000L,0x01040001L,
+	0x00000002L,0x00000003L,0x00040002L,0x00040003L,
+	0x01000002L,0x01000003L,0x01040002L,0x01040003L,
+	0x00000200L,0x00000201L,0x00040200L,0x00040201L,
+	0x01000200L,0x01000201L,0x01040200L,0x01040201L,
+	0x00000202L,0x00000203L,0x00040202L,0x00040203L,
+	0x01000202L,0x01000203L,0x01040202L,0x01040203L,
+	0x08000000L,0x08000001L,0x08040000L,0x08040001L,
+	0x09000000L,0x09000001L,0x09040000L,0x09040001L,
+	0x08000002L,0x08000003L,0x08040002L,0x08040003L,
+	0x09000002L,0x09000003L,0x09040002L,0x09040003L,
+	0x08000200L,0x08000201L,0x08040200L,0x08040201L,
+	0x09000200L,0x09000201L,0x09040200L,0x09040201L,
+	0x08000202L,0x08000203L,0x08040202L,0x08040203L,
+	0x09000202L,0x09000203L,0x09040202L,0x09040203L,
+	},{
+	/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
+	0x00000000L,0x00100000L,0x00000100L,0x00100100L,
+	0x00000008L,0x00100008L,0x00000108L,0x00100108L,
+	0x00001000L,0x00101000L,0x00001100L,0x00101100L,
+	0x00001008L,0x00101008L,0x00001108L,0x00101108L,
+	0x04000000L,0x04100000L,0x04000100L,0x04100100L,
+	0x04000008L,0x04100008L,0x04000108L,0x04100108L,
+	0x04001000L,0x04101000L,0x04001100L,0x04101100L,
+	0x04001008L,0x04101008L,0x04001108L,0x04101108L,
+	0x00020000L,0x00120000L,0x00020100L,0x00120100L,
+	0x00020008L,0x00120008L,0x00020108L,0x00120108L,
+	0x00021000L,0x00121000L,0x00021100L,0x00121100L,
+	0x00021008L,0x00121008L,0x00021108L,0x00121108L,
+	0x04020000L,0x04120000L,0x04020100L,0x04120100L,
+	0x04020008L,0x04120008L,0x04020108L,0x04120108L,
+	0x04021000L,0x04121000L,0x04021100L,0x04121100L,
+	0x04021008L,0x04121008L,0x04021108L,0x04121108L,
+	},{
+	/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
+	0x00000000L,0x10000000L,0x00010000L,0x10010000L,
+	0x00000004L,0x10000004L,0x00010004L,0x10010004L,
+	0x20000000L,0x30000000L,0x20010000L,0x30010000L,
+	0x20000004L,0x30000004L,0x20010004L,0x30010004L,
+	0x00100000L,0x10100000L,0x00110000L,0x10110000L,
+	0x00100004L,0x10100004L,0x00110004L,0x10110004L,
+	0x20100000L,0x30100000L,0x20110000L,0x30110000L,
+	0x20100004L,0x30100004L,0x20110004L,0x30110004L,
+	0x00001000L,0x10001000L,0x00011000L,0x10011000L,
+	0x00001004L,0x10001004L,0x00011004L,0x10011004L,
+	0x20001000L,0x30001000L,0x20011000L,0x30011000L,
+	0x20001004L,0x30001004L,0x20011004L,0x30011004L,
+	0x00101000L,0x10101000L,0x00111000L,0x10111000L,
+	0x00101004L,0x10101004L,0x00111004L,0x10111004L,
+	0x20101000L,0x30101000L,0x20111000L,0x30111000L,
+	0x20101004L,0x30101004L,0x20111004L,0x30111004L,
+	},{
+	/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
+	0x00000000L,0x08000000L,0x00000008L,0x08000008L,
+	0x00000400L,0x08000400L,0x00000408L,0x08000408L,
+	0x00020000L,0x08020000L,0x00020008L,0x08020008L,
+	0x00020400L,0x08020400L,0x00020408L,0x08020408L,
+	0x00000001L,0x08000001L,0x00000009L,0x08000009L,
+	0x00000401L,0x08000401L,0x00000409L,0x08000409L,
+	0x00020001L,0x08020001L,0x00020009L,0x08020009L,
+	0x00020401L,0x08020401L,0x00020409L,0x08020409L,
+	0x02000000L,0x0A000000L,0x02000008L,0x0A000008L,
+	0x02000400L,0x0A000400L,0x02000408L,0x0A000408L,
+	0x02020000L,0x0A020000L,0x02020008L,0x0A020008L,
+	0x02020400L,0x0A020400L,0x02020408L,0x0A020408L,
+	0x02000001L,0x0A000001L,0x02000009L,0x0A000009L,
+	0x02000401L,0x0A000401L,0x02000409L,0x0A000409L,
+	0x02020001L,0x0A020001L,0x02020009L,0x0A020009L,
+	0x02020401L,0x0A020401L,0x02020409L,0x0A020409L,
+	},{
+	/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
+	0x00000000L,0x00000100L,0x00080000L,0x00080100L,
+	0x01000000L,0x01000100L,0x01080000L,0x01080100L,
+	0x00000010L,0x00000110L,0x00080010L,0x00080110L,
+	0x01000010L,0x01000110L,0x01080010L,0x01080110L,
+	0x00200000L,0x00200100L,0x00280000L,0x00280100L,
+	0x01200000L,0x01200100L,0x01280000L,0x01280100L,
+	0x00200010L,0x00200110L,0x00280010L,0x00280110L,
+	0x01200010L,0x01200110L,0x01280010L,0x01280110L,
+	0x00000200L,0x00000300L,0x00080200L,0x00080300L,
+	0x01000200L,0x01000300L,0x01080200L,0x01080300L,
+	0x00000210L,0x00000310L,0x00080210L,0x00080310L,
+	0x01000210L,0x01000310L,0x01080210L,0x01080310L,
+	0x00200200L,0x00200300L,0x00280200L,0x00280300L,
+	0x01200200L,0x01200300L,0x01280200L,0x01280300L,
+	0x00200210L,0x00200310L,0x00280210L,0x00280310L,
+	0x01200210L,0x01200310L,0x01280210L,0x01280310L,
+	},{
+	/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
+	0x00000000L,0x04000000L,0x00040000L,0x04040000L,
+	0x00000002L,0x04000002L,0x00040002L,0x04040002L,
+	0x00002000L,0x04002000L,0x00042000L,0x04042000L,
+	0x00002002L,0x04002002L,0x00042002L,0x04042002L,
+	0x00000020L,0x04000020L,0x00040020L,0x04040020L,
+	0x00000022L,0x04000022L,0x00040022L,0x04040022L,
+	0x00002020L,0x04002020L,0x00042020L,0x04042020L,
+	0x00002022L,0x04002022L,0x00042022L,0x04042022L,
+	0x00000800L,0x04000800L,0x00040800L,0x04040800L,
+	0x00000802L,0x04000802L,0x00040802L,0x04040802L,
+	0x00002800L,0x04002800L,0x00042800L,0x04042800L,
+	0x00002802L,0x04002802L,0x00042802L,0x04042802L,
+	0x00000820L,0x04000820L,0x00040820L,0x04040820L,
+	0x00000822L,0x04000822L,0x00040822L,0x04040822L,
+	0x00002820L,0x04002820L,0x00042820L,0x04042820L,
+	0x00002822L,0x04002822L,0x00042822L,0x04042822L,
+	}};
+
+int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
+	{
+	if (DES_check_key)
+		{
+		return DES_set_key_checked(key, schedule);
+		}
+	else
+		{
+		DES_set_key_unchecked(key, schedule);
+		return 0;
+		}
+	}
+
+/* return 0 if key parity is odd (correct),
+ * return -1 if key parity error,
+ * return -2 if illegal weak key.
+ */
+int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
+	{
+	if (!DES_check_key_parity(key))
+		return(-1);
+	if (DES_is_weak_key(key))
+		return(-2);
+	DES_set_key_unchecked(key, schedule);
+	return 0;
+	}
+
+void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
+	{
+	static const int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
+	register DES_LONG c,d,t,s,t2;
+	register const unsigned char *in;
+	register DES_LONG *k;
+	register int i;
+
+#ifdef OPENBSD_DEV_CRYPTO
+	memcpy(schedule->key,key,sizeof schedule->key);
+	schedule->session=NULL;
+#endif
+	k = &schedule->ks->deslong[0];
+	in = &(*key)[0];
+
+	c2l(in,c);
+	c2l(in,d);
+
+	/* do PC1 in 47 simple operations :-)
+	 * Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
+	 * for the inspiration. :-) */
+	PERM_OP (d,c,t,4,0x0f0f0f0fL);
+	HPERM_OP(c,t,-2,0xcccc0000L);
+	HPERM_OP(d,t,-2,0xcccc0000L);
+	PERM_OP (d,c,t,1,0x55555555L);
+	PERM_OP (c,d,t,8,0x00ff00ffL);
+	PERM_OP (d,c,t,1,0x55555555L);
+	d=	(((d&0x000000ffL)<<16L)| (d&0x0000ff00L)     |
+		 ((d&0x00ff0000L)>>16L)|((c&0xf0000000L)>>4L));
+	c&=0x0fffffffL;
+
+	for (i=0; i<ITERATIONS; i++)
+		{
+		if (shifts2[i])
+			{ c=((c>>2L)|(c<<26L)); d=((d>>2L)|(d<<26L)); }
+		else
+			{ c=((c>>1L)|(c<<27L)); d=((d>>1L)|(d<<27L)); }
+		c&=0x0fffffffL;
+		d&=0x0fffffffL;
+		/* could be a few less shifts but I am to lazy at this
+		 * point in time to investigate */
+		s=	des_skb[0][ (c    )&0x3f                ]|
+			des_skb[1][((c>> 6L)&0x03)|((c>> 7L)&0x3c)]|
+			des_skb[2][((c>>13L)&0x0f)|((c>>14L)&0x30)]|
+			des_skb[3][((c>>20L)&0x01)|((c>>21L)&0x06) |
+						  ((c>>22L)&0x38)];
+		t=	des_skb[4][ (d    )&0x3f                ]|
+			des_skb[5][((d>> 7L)&0x03)|((d>> 8L)&0x3c)]|
+			des_skb[6][ (d>>15L)&0x3f                ]|
+			des_skb[7][((d>>21L)&0x0f)|((d>>22L)&0x30)];
+
+		/* table contained 0213 4657 */
+		t2=((t<<16L)|(s&0x0000ffffL))&0xffffffffL;
+		*(k++)=ROTATE(t2,30)&0xffffffffL;
+
+		t2=((s>>16L)|(t&0xffff0000L));
+		*(k++)=ROTATE(t2,26)&0xffffffffL;
+		}
+	}
+
+int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
+	{
+	return(DES_set_key(key,schedule));
+	}
+/*
+#undef des_fixup_key_parity
+void des_fixup_key_parity(des_cblock *key)
+	{
+	des_set_odd_parity(key);
+	}
+*/
diff --git a/snmplib/openssl/openssl_sha.h b/snmplib/openssl/openssl_sha.h
new file mode 100644
index 0000000..ec2ff09
--- /dev/null
+++ b/snmplib/openssl/openssl_sha.h
@@ -0,0 +1,199 @@
+/* crypto/sha/sha.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_SHA_H
+#define HEADER_SHA_H
+
+#include <stddef.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#if defined(OPENSSL_NO_SHA) || (defined(OPENSSL_NO_SHA0) && defined(OPENSSL_NO_SHA1))
+#error SHA is disabled.
+#endif
+
+#if defined(OPENSSL_FIPS)
+#define FIPS_SHA_SIZE_T size_t
+#endif
+
+/*
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
+ * ! SHA_LONG_LOG2 has to be defined along.                        !
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+
+#if defined(__LP32__)
+#define SHA_LONG unsigned long
+#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
+#define SHA_LONG unsigned long
+#define SHA_LONG_LOG2 3
+#else
+#define SHA_LONG unsigned int
+#endif
+
+#define SHA_LBLOCK	16
+#define SHA_CBLOCK	(SHA_LBLOCK*4)	/* SHA treats input data as a
+					 * contiguous array of 32 bit
+					 * wide big-endian values. */
+#define SHA_LAST_BLOCK  (SHA_CBLOCK-8)
+#define SHA_DIGEST_LENGTH 20
+
+typedef struct SHAstate_st
+	{
+	SHA_LONG h0,h1,h2,h3,h4;
+	SHA_LONG Nl,Nh;
+	SHA_LONG data[SHA_LBLOCK];
+	unsigned int num;
+	} SHA_CTX;
+
+#ifndef OPENSSL_NO_SHA0
+int SHA_Init(SHA_CTX *c);
+int SHA_Update(SHA_CTX *c, const void *data, size_t len);
+int SHA_Final(unsigned char *md, SHA_CTX *c);
+unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md);
+void SHA_Transform(SHA_CTX *c, const unsigned char *data);
+#endif
+#ifndef OPENSSL_NO_SHA1
+int SHA1_Init(SHA_CTX *c);
+int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
+int SHA1_Final(unsigned char *md, SHA_CTX *c);
+unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
+void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
+#endif
+
+#define SHA256_CBLOCK	(SHA_LBLOCK*4)	/* SHA-256 treats input data as a
+					 * contiguous array of 32 bit
+					 * wide big-endian values. */
+#define SHA224_DIGEST_LENGTH	28
+#define SHA256_DIGEST_LENGTH	32
+
+typedef struct SHA256state_st
+	{
+	SHA_LONG h[8];
+	SHA_LONG Nl,Nh;
+	SHA_LONG data[SHA_LBLOCK];
+	unsigned int num,md_len;
+	} SHA256_CTX;
+
+#ifndef OPENSSL_NO_SHA256
+int SHA224_Init(SHA256_CTX *c);
+int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
+int SHA224_Final(unsigned char *md, SHA256_CTX *c);
+unsigned char *SHA224(const unsigned char *d, size_t n,unsigned char *md);
+int SHA256_Init(SHA256_CTX *c);
+int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
+int SHA256_Final(unsigned char *md, SHA256_CTX *c);
+unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md);
+void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
+#endif
+
+#define SHA384_DIGEST_LENGTH	48
+#define SHA512_DIGEST_LENGTH	64
+
+#ifndef OPENSSL_NO_SHA512
+/*
+ * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
+ * being exactly 64-bit wide. See Implementation Notes in sha512.c
+ * for further details.
+ */
+#define SHA512_CBLOCK	(SHA_LBLOCK*8)	/* SHA-512 treats input data as a
+					 * contiguous array of 64 bit
+					 * wide big-endian values. */
+#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
+#define SHA_LONG64 unsigned __int64
+#define U64(C)     C##UI64
+#elif defined(__arch64__)
+#define SHA_LONG64 unsigned long
+#define U64(C)     C##UL
+#else
+#define SHA_LONG64 unsigned long long
+#define U64(C)     C##ULL
+#endif
+
+typedef struct SHA512state_st
+	{
+	SHA_LONG64 h[8];
+	SHA_LONG64 Nl,Nh;
+	union {
+		SHA_LONG64	d[SHA_LBLOCK];
+		unsigned char	p[SHA512_CBLOCK];
+	} u;
+	unsigned int num,md_len;
+	} SHA512_CTX;
+#endif
+
+#ifndef OPENSSL_NO_SHA512
+int SHA384_Init(SHA512_CTX *c);
+int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
+int SHA384_Final(unsigned char *md, SHA512_CTX *c);
+unsigned char *SHA384(const unsigned char *d, size_t n,unsigned char *md);
+int SHA512_Init(SHA512_CTX *c);
+int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
+int SHA512_Final(unsigned char *md, SHA512_CTX *c);
+unsigned char *SHA512(const unsigned char *d, size_t n,unsigned char *md);
+void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/snmplib/openssl/openssl_sha1.c b/snmplib/openssl/openssl_sha1.c
new file mode 100644
index 0000000..0d048db
--- /dev/null
+++ b/snmplib/openssl/openssl_sha1.c
@@ -0,0 +1,65 @@
+/* crypto/sha/sha1dgst.c */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#undef  SHA_0
+#define SHA_1
+
+/* The implementation is in ../md32_common.h */
+
+#include "openssl/openssl_sha_local.h"
+
diff --git a/snmplib/openssl/openssl_sha_local.h b/snmplib/openssl/openssl_sha_local.h
new file mode 100644
index 0000000..f7bc0dc
--- /dev/null
+++ b/snmplib/openssl/openssl_sha_local.h
@@ -0,0 +1,436 @@
+/* crypto/sha/sha_locl.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "openssl/openssl_sha.h"
+
+#define DATA_ORDER_IS_BIG_ENDIAN
+
+#define HASH_LONG               SHA_LONG
+#define HASH_CTX                SHA_CTX
+#define HASH_CBLOCK             SHA_CBLOCK
+#define HASH_MAKE_STRING(c,s)   do {	\
+	unsigned long ll;		\
+	ll=(c)->h0; HOST_l2c(ll,(s));	\
+	ll=(c)->h1; HOST_l2c(ll,(s));	\
+	ll=(c)->h2; HOST_l2c(ll,(s));	\
+	ll=(c)->h3; HOST_l2c(ll,(s));	\
+	ll=(c)->h4; HOST_l2c(ll,(s));	\
+	} while (0)
+
+#if defined(SHA_0)
+
+# define HASH_UPDATE             	SHA_Update
+# define HASH_TRANSFORM          	SHA_Transform
+# define HASH_FINAL              	SHA_Final
+# define HASH_INIT			SHA_Init
+# define HASH_BLOCK_DATA_ORDER   	sha_block_data_order
+# define Xupdate(a,ix,ia,ib,ic,id)	(ix=(a)=(ia^ib^ic^id))
+
+static void sha_block_data_order (SHA_CTX *c, const void *p,size_t num);
+
+#elif defined(SHA_1)
+
+# define HASH_UPDATE             	SHA1_Update
+# define HASH_TRANSFORM          	SHA1_Transform
+# define HASH_FINAL              	SHA1_Final
+# define HASH_INIT			SHA1_Init
+# define HASH_BLOCK_DATA_ORDER   	sha1_block_data_order
+# if defined(__MWERKS__) && defined(__MC68K__)
+   /* Metrowerks for Motorola fails otherwise:-( <appro@fy.chalmers.se> */
+#  define Xupdate(a,ix,ia,ib,ic,id)	do { (a)=(ia^ib^ic^id);		\
+					     ix=(a)=ROTATE((a),1);	\
+					} while (0)
+# else
+#  define Xupdate(a,ix,ia,ib,ic,id)	( (a)=(ia^ib^ic^id),	\
+					  ix=(a)=ROTATE((a),1)	\
+					)
+# endif
+
+#ifndef SHA1_ASM
+static
+#endif
+void sha1_block_data_order (SHA_CTX *c, const void *p,size_t num);
+
+#else
+# error "Either SHA_0 or SHA_1 must be defined."
+#endif
+
+#include "openssl_md32_common.h"
+
+#define INIT_DATA_h0 0x67452301UL
+#define INIT_DATA_h1 0xefcdab89UL
+#define INIT_DATA_h2 0x98badcfeUL
+#define INIT_DATA_h3 0x10325476UL
+#define INIT_DATA_h4 0xc3d2e1f0UL
+
+int HASH_INIT (SHA_CTX *c)
+	{
+	memset (c,0,sizeof(*c));
+	c->h0=INIT_DATA_h0;
+	c->h1=INIT_DATA_h1;
+	c->h2=INIT_DATA_h2;
+	c->h3=INIT_DATA_h3;
+	c->h4=INIT_DATA_h4;
+	return 1;
+	}
+
+#define K_00_19	0x5a827999UL
+#define K_20_39 0x6ed9eba1UL
+#define K_40_59 0x8f1bbcdcUL
+#define K_60_79 0xca62c1d6UL
+
+/* As  pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
+ * simplified to the code in F_00_19.  Wei attributes these optimisations
+ * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
+ * #define F(x,y,z) (((x) & (y))  |  ((~(x)) & (z)))
+ * I've just become aware of another tweak to be made, again from Wei Dai,
+ * in F_40_59, (x&a)|(y&a) -> (x|y)&a
+ */
+#define	F_00_19(b,c,d)	((((c) ^ (d)) & (b)) ^ (d)) 
+#define	F_20_39(b,c,d)	((b) ^ (c) ^ (d))
+#define F_40_59(b,c,d)	(((b) & (c)) | (((b)|(c)) & (d))) 
+#define	F_60_79(b,c,d)	F_20_39(b,c,d)
+
+#ifndef OPENSSL_SMALL_FOOTPRINT
+
+#define BODY_00_15(i,a,b,c,d,e,f,xi) \
+	(f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#define BODY_16_19(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
+	Xupdate(f,xi,xa,xb,xc,xd); \
+	(f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#define BODY_20_31(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
+	Xupdate(f,xi,xa,xb,xc,xd); \
+	(f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#define BODY_32_39(i,a,b,c,d,e,f,xa,xb,xc,xd) \
+	Xupdate(f,xa,xa,xb,xc,xd); \
+	(f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#define BODY_40_59(i,a,b,c,d,e,f,xa,xb,xc,xd) \
+	Xupdate(f,xa,xa,xb,xc,xd); \
+	(f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#define BODY_60_79(i,a,b,c,d,e,f,xa,xb,xc,xd) \
+	Xupdate(f,xa,xa,xb,xc,xd); \
+	(f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
+	(b)=ROTATE((b),30);
+
+#ifdef X
+#undef X
+#endif
+#ifndef MD32_XARRAY
+  /*
+   * Originally X was an array. As it's automatic it's natural
+   * to expect RISC compiler to accomodate at least part of it in
+   * the register bank, isn't it? Unfortunately not all compilers
+   * "find" this expectation reasonable:-( On order to make such
+   * compilers generate better code I replace X[] with a bunch of
+   * X0, X1, etc. See the function body below...
+   *					<appro@fy.chalmers.se>
+   */
+# define X(i)	XX##i
+#else
+  /*
+   * However! Some compilers (most notably HP C) get overwhelmed by
+   * that many local variables so that we have to have the way to
+   * fall down to the original behavior.
+   */
+# define X(i)	XX[i]
+#endif
+
+#if !defined(SHA_1) || !defined(SHA1_ASM)
+static void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, size_t num)
+	{
+	const unsigned char *data=p;
+	register unsigned MD32_REG_T A,B,C,D,E,T,l;
+#ifndef MD32_XARRAY
+	unsigned MD32_REG_T	XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
+				XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
+#else
+	SHA_LONG	XX[16];
+#endif
+
+	A=c->h0;
+	B=c->h1;
+	C=c->h2;
+	D=c->h3;
+	E=c->h4;
+
+	for (;;)
+			{
+	const union { long one; char little; } is_endian = {1};
+
+	if (!is_endian.little && sizeof(SHA_LONG)==4 && ((size_t)p%4)==0)
+		{
+		const SHA_LONG *W=(const SHA_LONG *)data;
+
+		X( 0) = W[0];				X( 1) = W[ 1];
+		BODY_00_15( 0,A,B,C,D,E,T,X( 0));	X( 2) = W[ 2];
+		BODY_00_15( 1,T,A,B,C,D,E,X( 1));	X( 3) = W[ 3];
+		BODY_00_15( 2,E,T,A,B,C,D,X( 2));	X( 4) = W[ 4];
+		BODY_00_15( 3,D,E,T,A,B,C,X( 3));	X( 5) = W[ 5];
+		BODY_00_15( 4,C,D,E,T,A,B,X( 4));	X( 6) = W[ 6];
+		BODY_00_15( 5,B,C,D,E,T,A,X( 5));	X( 7) = W[ 7];
+		BODY_00_15( 6,A,B,C,D,E,T,X( 6));	X( 8) = W[ 8];
+		BODY_00_15( 7,T,A,B,C,D,E,X( 7));	X( 9) = W[ 9];
+		BODY_00_15( 8,E,T,A,B,C,D,X( 8));	X(10) = W[10];
+		BODY_00_15( 9,D,E,T,A,B,C,X( 9));	X(11) = W[11];
+		BODY_00_15(10,C,D,E,T,A,B,X(10));	X(12) = W[12];
+		BODY_00_15(11,B,C,D,E,T,A,X(11));	X(13) = W[13];
+		BODY_00_15(12,A,B,C,D,E,T,X(12));	X(14) = W[14];
+		BODY_00_15(13,T,A,B,C,D,E,X(13));	X(15) = W[15];
+		BODY_00_15(14,E,T,A,B,C,D,X(14));
+		BODY_00_15(15,D,E,T,A,B,C,X(15));
+
+		data += SHA_CBLOCK;
+		}
+	else
+		{
+		HOST_c2l(data,l); X( 0)=l;		HOST_c2l(data,l); X( 1)=l;
+		BODY_00_15( 0,A,B,C,D,E,T,X( 0));	HOST_c2l(data,l); X( 2)=l;
+		BODY_00_15( 1,T,A,B,C,D,E,X( 1));	HOST_c2l(data,l); X( 3)=l;
+		BODY_00_15( 2,E,T,A,B,C,D,X( 2));	HOST_c2l(data,l); X( 4)=l;
+		BODY_00_15( 3,D,E,T,A,B,C,X( 3));	HOST_c2l(data,l); X( 5)=l;
+		BODY_00_15( 4,C,D,E,T,A,B,X( 4));	HOST_c2l(data,l); X( 6)=l;
+		BODY_00_15( 5,B,C,D,E,T,A,X( 5));	HOST_c2l(data,l); X( 7)=l;
+		BODY_00_15( 6,A,B,C,D,E,T,X( 6));	HOST_c2l(data,l); X( 8)=l;
+		BODY_00_15( 7,T,A,B,C,D,E,X( 7));	HOST_c2l(data,l); X( 9)=l;
+		BODY_00_15( 8,E,T,A,B,C,D,X( 8));	HOST_c2l(data,l); X(10)=l;
+		BODY_00_15( 9,D,E,T,A,B,C,X( 9));	HOST_c2l(data,l); X(11)=l;
+		BODY_00_15(10,C,D,E,T,A,B,X(10));	HOST_c2l(data,l); X(12)=l;
+		BODY_00_15(11,B,C,D,E,T,A,X(11));	HOST_c2l(data,l); X(13)=l;
+		BODY_00_15(12,A,B,C,D,E,T,X(12));	HOST_c2l(data,l); X(14)=l;
+		BODY_00_15(13,T,A,B,C,D,E,X(13));	HOST_c2l(data,l); X(15)=l;
+		BODY_00_15(14,E,T,A,B,C,D,X(14));
+		BODY_00_15(15,D,E,T,A,B,C,X(15));
+		}
+
+	BODY_16_19(16,C,D,E,T,A,B,X( 0),X( 0),X( 2),X( 8),X(13));
+	BODY_16_19(17,B,C,D,E,T,A,X( 1),X( 1),X( 3),X( 9),X(14));
+	BODY_16_19(18,A,B,C,D,E,T,X( 2),X( 2),X( 4),X(10),X(15));
+	BODY_16_19(19,T,A,B,C,D,E,X( 3),X( 3),X( 5),X(11),X( 0));
+
+	BODY_20_31(20,E,T,A,B,C,D,X( 4),X( 4),X( 6),X(12),X( 1));
+	BODY_20_31(21,D,E,T,A,B,C,X( 5),X( 5),X( 7),X(13),X( 2));
+	BODY_20_31(22,C,D,E,T,A,B,X( 6),X( 6),X( 8),X(14),X( 3));
+	BODY_20_31(23,B,C,D,E,T,A,X( 7),X( 7),X( 9),X(15),X( 4));
+	BODY_20_31(24,A,B,C,D,E,T,X( 8),X( 8),X(10),X( 0),X( 5));
+	BODY_20_31(25,T,A,B,C,D,E,X( 9),X( 9),X(11),X( 1),X( 6));
+	BODY_20_31(26,E,T,A,B,C,D,X(10),X(10),X(12),X( 2),X( 7));
+	BODY_20_31(27,D,E,T,A,B,C,X(11),X(11),X(13),X( 3),X( 8));
+	BODY_20_31(28,C,D,E,T,A,B,X(12),X(12),X(14),X( 4),X( 9));
+	BODY_20_31(29,B,C,D,E,T,A,X(13),X(13),X(15),X( 5),X(10));
+	BODY_20_31(30,A,B,C,D,E,T,X(14),X(14),X( 0),X( 6),X(11));
+	BODY_20_31(31,T,A,B,C,D,E,X(15),X(15),X( 1),X( 7),X(12));
+
+	BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
+	BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
+	BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
+	BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
+	BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
+	BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
+	BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
+	BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
+
+	BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
+	BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
+	BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
+	BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
+	BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
+	BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
+	BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
+	BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
+	BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
+	BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
+	BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
+	BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
+	BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
+	BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
+	BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
+	BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
+	BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
+	BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
+	BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
+	BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
+
+	BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
+	BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
+	BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
+	BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
+	BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
+	BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
+	BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
+	BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
+	BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
+	BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
+	BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
+	BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
+	BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
+	BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
+	BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
+	BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
+	BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
+	BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
+	BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
+	BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
+	
+	c->h0=(c->h0+E)&0xffffffffL; 
+	c->h1=(c->h1+T)&0xffffffffL;
+	c->h2=(c->h2+A)&0xffffffffL;
+	c->h3=(c->h3+B)&0xffffffffL;
+	c->h4=(c->h4+C)&0xffffffffL;
+
+	if (--num == 0) break;
+
+	A=c->h0;
+	B=c->h1;
+	C=c->h2;
+	D=c->h3;
+	E=c->h4;
+
+			}
+	}
+#endif
+
+#else	/* OPENSSL_SMALL_FOOTPRINT */
+
+#define BODY_00_15(xi)		 do {	\
+	T=E+K_00_19+F_00_19(B,C,D);	\
+	E=D, D=C, C=ROTATE(B,30), B=A;	\
+	A=ROTATE(A,5)+T+xi;	    } while(0)
+
+#define BODY_16_19(xa,xb,xc,xd)	 do {	\
+	Xupdate(T,xa,xa,xb,xc,xd);	\
+	T+=E+K_00_19+F_00_19(B,C,D);	\
+	E=D, D=C, C=ROTATE(B,30), B=A;	\
+	A=ROTATE(A,5)+T;	    } while(0)
+
+#define BODY_20_39(xa,xb,xc,xd)	 do {	\
+	Xupdate(T,xa,xa,xb,xc,xd);	\
+	T+=E+K_20_39+F_20_39(B,C,D);	\
+	E=D, D=C, C=ROTATE(B,30), B=A;	\
+	A=ROTATE(A,5)+T;	    } while(0)
+
+#define BODY_40_59(xa,xb,xc,xd)	 do {	\
+	Xupdate(T,xa,xa,xb,xc,xd);	\
+	T+=E+K_40_59+F_40_59(B,C,D);	\
+	E=D, D=C, C=ROTATE(B,30), B=A;	\
+	A=ROTATE(A,5)+T;	    } while(0)
+
+#define BODY_60_79(xa,xb,xc,xd)	 do {	\
+	Xupdate(T,xa,xa,xb,xc,xd);	\
+	T=E+K_60_79+F_60_79(B,C,D);	\
+	E=D, D=C, C=ROTATE(B,30), B=A;	\
+	A=ROTATE(A,5)+T+xa;	    } while(0)
+
+#if !defined(SHA_1) || !defined(SHA1_ASM)
+static void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, size_t num)
+	{
+	const unsigned char *data=p;
+	register unsigned MD32_REG_T A,B,C,D,E,T,l;
+	int i;
+	SHA_LONG	X[16];
+
+	A=c->h0;
+	B=c->h1;
+	C=c->h2;
+	D=c->h3;
+	E=c->h4;
+
+	for (;;)
+		{
+	for (i=0;i<16;i++)
+	{ HOST_c2l(data,l); X[i]=l; BODY_00_15(X[i]); }
+	for (i=0;i<4;i++)
+	{ BODY_16_19(X[i],       X[i+2],      X[i+8],     X[(i+13)&15]); }
+	for (;i<24;i++)
+	{ BODY_20_39(X[i&15],    X[(i+2)&15], X[(i+8)&15],X[(i+13)&15]); }
+	for (i=0;i<20;i++)
+	{ BODY_40_59(X[(i+8)&15],X[(i+10)&15],X[i&15],    X[(i+5)&15]);  }
+	for (i=4;i<24;i++)
+	{ BODY_60_79(X[(i+8)&15],X[(i+10)&15],X[i&15],    X[(i+5)&15]);  }
+
+	c->h0=(c->h0+A)&0xffffffffL; 
+	c->h1=(c->h1+B)&0xffffffffL;
+	c->h2=(c->h2+C)&0xffffffffL;
+	c->h3=(c->h3+D)&0xffffffffL;
+	c->h4=(c->h4+E)&0xffffffffL;
+
+	if (--num == 0) break;
+
+	A=c->h0;
+	B=c->h1;
+	C=c->h2;
+	D=c->h3;
+	E=c->h4;
+
+		}
+	}
+#endif
+
+#endif
diff --git a/snmplib/openssl/openssl_spr.h b/snmplib/openssl/openssl_spr.h
new file mode 100644
index 0000000..98ec61e
--- /dev/null
+++ b/snmplib/openssl/openssl_spr.h
@@ -0,0 +1,204 @@
+/* crypto/des/spr.h */
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * 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 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+const DES_LONG DES_SPtrans[8][64]={
+{
+/* nibble 0 */
+0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L,
+0x02000000L, 0x00080802L, 0x00080002L, 0x02000002L,
+0x00080802L, 0x02080800L, 0x02080000L, 0x00000802L,
+0x02000802L, 0x02000000L, 0x00000000L, 0x00080002L,
+0x00080000L, 0x00000002L, 0x02000800L, 0x00080800L,
+0x02080802L, 0x02080000L, 0x00000802L, 0x02000800L,
+0x00000002L, 0x00000800L, 0x00080800L, 0x02080002L,
+0x00000800L, 0x02000802L, 0x02080002L, 0x00000000L,
+0x00000000L, 0x02080802L, 0x02000800L, 0x00080002L,
+0x02080800L, 0x00080000L, 0x00000802L, 0x02000800L,
+0x02080002L, 0x00000800L, 0x00080800L, 0x02000002L,
+0x00080802L, 0x00000002L, 0x02000002L, 0x02080000L,
+0x02080802L, 0x00080800L, 0x02080000L, 0x02000802L,
+0x02000000L, 0x00000802L, 0x00080002L, 0x00000000L,
+0x00080000L, 0x02000000L, 0x02000802L, 0x02080800L,
+0x00000002L, 0x02080002L, 0x00000800L, 0x00080802L,
+},{
+/* nibble 1 */
+0x40108010L, 0x00000000L, 0x00108000L, 0x40100000L,
+0x40000010L, 0x00008010L, 0x40008000L, 0x00108000L,
+0x00008000L, 0x40100010L, 0x00000010L, 0x40008000L,
+0x00100010L, 0x40108000L, 0x40100000L, 0x00000010L,
+0x00100000L, 0x40008010L, 0x40100010L, 0x00008000L,
+0x00108010L, 0x40000000L, 0x00000000L, 0x00100010L,
+0x40008010L, 0x00108010L, 0x40108000L, 0x40000010L,
+0x40000000L, 0x00100000L, 0x00008010L, 0x40108010L,
+0x00100010L, 0x40108000L, 0x40008000L, 0x00108010L,
+0x40108010L, 0x00100010L, 0x40000010L, 0x00000000L,
+0x40000000L, 0x00008010L, 0x00100000L, 0x40100010L,
+0x00008000L, 0x40000000L, 0x00108010L, 0x40008010L,
+0x40108000L, 0x00008000L, 0x00000000L, 0x40000010L,
+0x00000010L, 0x40108010L, 0x00108000L, 0x40100000L,
+0x40100010L, 0x00100000L, 0x00008010L, 0x40008000L,
+0x40008010L, 0x00000010L, 0x40100000L, 0x00108000L,
+},{
+/* nibble 2 */
+0x04000001L, 0x04040100L, 0x00000100L, 0x04000101L,
+0x00040001L, 0x04000000L, 0x04000101L, 0x00040100L,
+0x04000100L, 0x00040000L, 0x04040000L, 0x00000001L,
+0x04040101L, 0x00000101L, 0x00000001L, 0x04040001L,
+0x00000000L, 0x00040001L, 0x04040100L, 0x00000100L,
+0x00000101L, 0x04040101L, 0x00040000L, 0x04000001L,
+0x04040001L, 0x04000100L, 0x00040101L, 0x04040000L,
+0x00040100L, 0x00000000L, 0x04000000L, 0x00040101L,
+0x04040100L, 0x00000100L, 0x00000001L, 0x00040000L,
+0x00000101L, 0x00040001L, 0x04040000L, 0x04000101L,
+0x00000000L, 0x04040100L, 0x00040100L, 0x04040001L,
+0x00040001L, 0x04000000L, 0x04040101L, 0x00000001L,
+0x00040101L, 0x04000001L, 0x04000000L, 0x04040101L,
+0x00040000L, 0x04000100L, 0x04000101L, 0x00040100L,
+0x04000100L, 0x00000000L, 0x04040001L, 0x00000101L,
+0x04000001L, 0x00040101L, 0x00000100L, 0x04040000L,
+},{
+/* nibble 3 */
+0x00401008L, 0x10001000L, 0x00000008L, 0x10401008L,
+0x00000000L, 0x10400000L, 0x10001008L, 0x00400008L,
+0x10401000L, 0x10000008L, 0x10000000L, 0x00001008L,
+0x10000008L, 0x00401008L, 0x00400000L, 0x10000000L,
+0x10400008L, 0x00401000L, 0x00001000L, 0x00000008L,
+0x00401000L, 0x10001008L, 0x10400000L, 0x00001000L,
+0x00001008L, 0x00000000L, 0x00400008L, 0x10401000L,
+0x10001000L, 0x10400008L, 0x10401008L, 0x00400000L,
+0x10400008L, 0x00001008L, 0x00400000L, 0x10000008L,
+0x00401000L, 0x10001000L, 0x00000008L, 0x10400000L,
+0x10001008L, 0x00000000L, 0x00001000L, 0x00400008L,
+0x00000000L, 0x10400008L, 0x10401000L, 0x00001000L,
+0x10000000L, 0x10401008L, 0x00401008L, 0x00400000L,
+0x10401008L, 0x00000008L, 0x10001000L, 0x00401008L,
+0x00400008L, 0x00401000L, 0x10400000L, 0x10001008L,
+0x00001008L, 0x10000000L, 0x10000008L, 0x10401000L,
+},{
+/* nibble 4 */
+0x08000000L, 0x00010000L, 0x00000400L, 0x08010420L,
+0x08010020L, 0x08000400L, 0x00010420L, 0x08010000L,
+0x00010000L, 0x00000020L, 0x08000020L, 0x00010400L,
+0x08000420L, 0x08010020L, 0x08010400L, 0x00000000L,
+0x00010400L, 0x08000000L, 0x00010020L, 0x00000420L,
+0x08000400L, 0x00010420L, 0x00000000L, 0x08000020L,
+0x00000020L, 0x08000420L, 0x08010420L, 0x00010020L,
+0x08010000L, 0x00000400L, 0x00000420L, 0x08010400L,
+0x08010400L, 0x08000420L, 0x00010020L, 0x08010000L,
+0x00010000L, 0x00000020L, 0x08000020L, 0x08000400L,
+0x08000000L, 0x00010400L, 0x08010420L, 0x00000000L,
+0x00010420L, 0x08000000L, 0x00000400L, 0x00010020L,
+0x08000420L, 0x00000400L, 0x00000000L, 0x08010420L,
+0x08010020L, 0x08010400L, 0x00000420L, 0x00010000L,
+0x00010400L, 0x08010020L, 0x08000400L, 0x00000420L,
+0x00000020L, 0x00010420L, 0x08010000L, 0x08000020L,
+},{
+/* nibble 5 */
+0x80000040L, 0x00200040L, 0x00000000L, 0x80202000L,
+0x00200040L, 0x00002000L, 0x80002040L, 0x00200000L,
+0x00002040L, 0x80202040L, 0x00202000L, 0x80000000L,
+0x80002000L, 0x80000040L, 0x80200000L, 0x00202040L,
+0x00200000L, 0x80002040L, 0x80200040L, 0x00000000L,
+0x00002000L, 0x00000040L, 0x80202000L, 0x80200040L,
+0x80202040L, 0x80200000L, 0x80000000L, 0x00002040L,
+0x00000040L, 0x00202000L, 0x00202040L, 0x80002000L,
+0x00002040L, 0x80000000L, 0x80002000L, 0x00202040L,
+0x80202000L, 0x00200040L, 0x00000000L, 0x80002000L,
+0x80000000L, 0x00002000L, 0x80200040L, 0x00200000L,
+0x00200040L, 0x80202040L, 0x00202000L, 0x00000040L,
+0x80202040L, 0x00202000L, 0x00200000L, 0x80002040L,
+0x80000040L, 0x80200000L, 0x00202040L, 0x00000000L,
+0x00002000L, 0x80000040L, 0x80002040L, 0x80202000L,
+0x80200000L, 0x00002040L, 0x00000040L, 0x80200040L,
+},{
+/* nibble 6 */
+0x00004000L, 0x00000200L, 0x01000200L, 0x01000004L,
+0x01004204L, 0x00004004L, 0x00004200L, 0x00000000L,
+0x01000000L, 0x01000204L, 0x00000204L, 0x01004000L,
+0x00000004L, 0x01004200L, 0x01004000L, 0x00000204L,
+0x01000204L, 0x00004000L, 0x00004004L, 0x01004204L,
+0x00000000L, 0x01000200L, 0x01000004L, 0x00004200L,
+0x01004004L, 0x00004204L, 0x01004200L, 0x00000004L,
+0x00004204L, 0x01004004L, 0x00000200L, 0x01000000L,
+0x00004204L, 0x01004000L, 0x01004004L, 0x00000204L,
+0x00004000L, 0x00000200L, 0x01000000L, 0x01004004L,
+0x01000204L, 0x00004204L, 0x00004200L, 0x00000000L,
+0x00000200L, 0x01000004L, 0x00000004L, 0x01000200L,
+0x00000000L, 0x01000204L, 0x01000200L, 0x00004200L,
+0x00000204L, 0x00004000L, 0x01004204L, 0x01000000L,
+0x01004200L, 0x00000004L, 0x00004004L, 0x01004204L,
+0x01000004L, 0x01004200L, 0x01004000L, 0x00004004L,
+},{
+/* nibble 7 */
+0x20800080L, 0x20820000L, 0x00020080L, 0x00000000L,
+0x20020000L, 0x00800080L, 0x20800000L, 0x20820080L,
+0x00000080L, 0x20000000L, 0x00820000L, 0x00020080L,
+0x00820080L, 0x20020080L, 0x20000080L, 0x20800000L,
+0x00020000L, 0x00820080L, 0x00800080L, 0x20020000L,
+0x20820080L, 0x20000080L, 0x00000000L, 0x00820000L,
+0x20000000L, 0x00800000L, 0x20020080L, 0x20800080L,
+0x00800000L, 0x00020000L, 0x20820000L, 0x00000080L,
+0x00800000L, 0x00020000L, 0x20000080L, 0x20820080L,
+0x00020080L, 0x20000000L, 0x00000000L, 0x00820000L,
+0x20800080L, 0x20020080L, 0x20020000L, 0x00800080L,
+0x20820000L, 0x00000080L, 0x00800080L, 0x20020000L,
+0x20820080L, 0x00800000L, 0x20800000L, 0x20000080L,
+0x00820000L, 0x00020080L, 0x20020080L, 0x20800000L,
+0x00000080L, 0x20820000L, 0x00820080L, 0x00000000L,
+0x20000000L, 0x20800080L, 0x00020000L, 0x00820080L,
+}};
diff --git a/snmplib/parse.c b/snmplib/parse.c
index ba4e84c..817c897 100644
--- a/snmplib/parse.c
+++ b/snmplib/parse.c
@@ -74,11 +74,7 @@
 # endif
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -87,9 +83,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -551,6 +544,7 @@
 static struct module *module_head = NULL;
 
 static struct node *orphan_nodes = NULL;
+NETSNMP_IMPORT struct tree *tree_head;
 struct tree        *tree_head = NULL;
 
 #define	NUMBER_OF_ROOT_NODES	3
@@ -708,7 +702,7 @@
     if (!name)
         return 0;
     for (cp = name; *cp; cp++)
-        hash += tolower(*cp);
+        hash += tolower((unsigned char)(*cp));
     return (hash);
 }
 
@@ -980,7 +974,6 @@
 {
     struct enum_list *ep;
     struct index_list *ip;
-    struct range_list *rp;
     struct varbind_list *vp;
     struct node    *np;
 
@@ -996,6 +989,7 @@
             }
         }
         if (np->ranges) {
+            struct range_list *rp;
             fprintf(fp, "  Ranges: ");
             for (rp = np->ranges; rp; rp = rp->next) {
                 fprintf(fp, "\n    ");
@@ -4103,7 +4097,7 @@
     struct module  *mp;
     struct module_compatability *mcp;
     struct tc      *ptc;
-    int             i;
+    unsigned int    i;
 
     for (mcp = module_map_head; mcp; mcp = module_map_head) {
         if (mcp == module_map)
@@ -4118,7 +4112,7 @@
     for (mp = module_head; mp; mp = module_head) {
         struct module_import *mi = mp->imports;
         if (mi) {
-            for (i = 0; i < mp->no_imports; ++i) {
+            for (i = 0; i < (unsigned int)mp->no_imports; ++i) {
                 SNMP_FREE((mi + i)->label);
             }
             mp->no_imports = 0;
@@ -4744,9 +4738,9 @@
                 goto more;
             }
         }
-        if (token[0] == '-' || isdigit(token[0])) {
+        if (token[0] == '-' || isdigit((unsigned char)(token[0]))) {
             for (cp = token + 1; *cp; cp++)
-                if (!isdigit(*cp))
+                if (!isdigit((unsigned char)(*cp)))
                     return LABEL;
             return NUMBER;
         }
diff --git a/snmplib/pkcs.c b/snmplib/pkcs.c
index ee4ed92..48e602a 100644
--- a/snmplib/pkcs.c
+++ b/snmplib/pkcs.c
@@ -774,4 +774,6 @@
         break;
     }
 }
+#else
+int pkcs_unused;	/* Suppress "empty translation unit" warning */
 #endif
diff --git a/snmplib/read_config.c b/snmplib/read_config.c
index 607a6a5..8e724c0 100644
--- a/snmplib/read_config.c
+++ b/snmplib/read_config.c
@@ -84,11 +84,7 @@
 #include <sys/param.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -109,9 +105,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -120,6 +113,23 @@
 #endif
 #include <errno.h>
 
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
+
 #if HAVE_DMALLOC_H
 #include <dmalloc.h>
 #endif
@@ -139,6 +149,7 @@
 
 struct config_files *config_files = NULL;
 
+
 static struct config_line *
 internal_register_config_handler(const char *type_param,
 				 const char *token,
@@ -192,8 +203,11 @@
         }
 
         (*ctmp)->fileHeader = strdup(type);
+        DEBUGMSGTL(("9:read_config:type", "new type %s\n", type));
     }
 
+    DEBUGMSGTL(("9:read_config:register_handler", "registering %s %s\n",
+                type, token));
     /*
      * Find parser type in current list  -OR-  create a new
      * line parser entry.
@@ -292,6 +306,18 @@
 }
 
 struct config_line *
+register_const_config_handler(const char *type,
+                              const char *token,
+                              void (*parser) (const char *, const char *),
+                              void (*releaser) (void), const char *help)
+{
+    return internal_register_config_handler(type, token,
+                                            (void(*)(const char *, char *))
+                                            parser, releaser,
+					    help, NORMAL_CONFIG);
+}
+
+struct config_line *
 register_app_config_handler(const char *token,
                             void (*parser) (const char *, char *),
                             void (*releaser) (void), const char *help)
@@ -437,8 +463,8 @@
 }
 #endif
 
-int             linecount;
-const char     *curfilename;
+int             linecount,    prev_linecount;
+const char     *curfilename, *prev_filename;
 
 struct config_line *
 read_config_get_handlers(const char *type)
@@ -451,22 +477,23 @@
     return NULL;
 }
 
-void
+int
 read_config_with_type_when(const char *filename, const char *type, int when)
 {
     struct config_line *ctmp = read_config_get_handlers(type);
     if (ctmp)
-        read_config(filename, ctmp, when);
+        return read_config(filename, ctmp, when);
     else
         DEBUGMSGTL(("read_config",
                     "read_config: I have no registrations for type:%s,file:%s\n",
                     type, filename));
+    return SNMPERR_GENERR;     /* No config files read */
 }
 
-void
+int
 read_config_with_type(const char *filename, const char *type)
 {
-    read_config_with_type_when(filename, type, EITHER_CONFIG);
+    return read_config_with_type_when(filename, type, EITHER_CONFIG);
 }
 
 
@@ -497,7 +524,7 @@
     if (lptr != NULL) {
         if (when == EITHER_CONFIG || lptr->config_time == when) {
             char tmpbuf[1];
-            DEBUGMSGTL(("read_config",
+            DEBUGMSGTL(("read_config:parser",
                         "Found a parser.  Calling it: %s / %s\n", token,
                         cptr));
             /*
@@ -512,11 +539,14 @@
              * Stomp on any trailing whitespace
              */
             cp = &(cptr[strlen(cptr)-1]);
-            while (isspace(*cp)) {
+            while ((cp > cptr) && isspace((unsigned char)(*cp))) {
                 *(cp--) = '\0';
             }
             (*(lptr->parse_line)) (token, cptr);
         }
+        else
+            DEBUGMSGTL(("9:read_config:parser",
+                        "%s handler not registered for this time\n", token));
     } else if (when != PREMIB_CONFIG && 
 	       !netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
 				       NETSNMP_DS_LIB_NO_TOKEN_WARNINGS)) {
@@ -650,7 +680,7 @@
     mem = *memp;
 
     while (mem) {
-        DEBUGMSGTL(("read_config", "processing memory: %s\n", mem->line));
+        DEBUGMSGTL(("read_config:mem", "processing memory: %s\n", mem->line));
         snmp_config_when(mem->line, when);
         mem = mem->next;
     }
@@ -700,18 +730,27 @@
  *
  * For each match, check that <when> is the designated time for the
  * <line_handler> function to be executed before processing the line.
+ *
+ * Returns SNMPERR_SUCCESS if the file is processed successfully.
+ * Returns SNMPERR_GENERR  if it cannot.
+ *    Note that individual config token errors do not trigger SNMPERR_GENERR
+ *    It's only if the whole file cannot be processed for some reason.
  */
-void
+int
 read_config(const char *filename,
             struct config_line *line_handler, int when)
 {
-
+    static int      depth = 0;
+    static int      files = 0;
     FILE           *ifile;
     char            line[STRINGMAX], token[STRINGMAX];
     char           *cptr;
-    int             i;
+    int             i, ret;
     struct config_line *lptr;
 
+    // reset file counter when recursion depth is 0
+    if (depth == 0) files = 0;
+
     linecount = 0;
     curfilename = filename;
 
@@ -735,12 +774,29 @@
 #else                           /* defined(ENOENT) || defined(EACCES) */
             snmp_log_perror(filename);
 #endif                          /* ENOENT */
-        return;
-    } else {
-        DEBUGMSGTL(("read_config", "Reading configuration %s\n",
-                    filename));
+        return SNMPERR_GENERR;
     }
 
+#define CONFIG_MAX_FILES 4096
+    if (files > CONFIG_MAX_FILES) {
+        netsnmp_config_error("maximum conf file count (%d) exceeded\n",
+                             CONFIG_MAX_FILES);
+	fclose(ifile);
+        return SNMPERR_GENERR;
+    }
+#define CONFIG_MAX_RECURSE_DEPTH 16
+    if (depth > CONFIG_MAX_RECURSE_DEPTH) {
+        netsnmp_config_error("nested include depth > %d\n",
+                             CONFIG_MAX_RECURSE_DEPTH);
+	fclose(ifile);
+        return SNMPERR_GENERR;
+    }
+    ++files;
+    ++depth;
+
+    DEBUGMSGTL(("read_config:file", "Reading configuration %s (%d)\n",
+                filename, when));
+    
     while (fgets(line, sizeof(line), ifile) != NULL) {
         lptr = line_handler;
         linecount++;
@@ -748,6 +804,8 @@
         i = strlen(line) - 1;
         if (line[i] == '\n')
             line[i] = 0;
+        DEBUGMSGTL(("9:read_config:line", "%s:%d examining: %s\n",
+                    filename, linecount, line));
         /*
          * check blank line or # comment 
          */
@@ -766,7 +824,7 @@
 					 &token[1]);
                     continue;
                 }
-                DEBUGMSGTL(("read_config",
+                DEBUGMSGTL(("read_config:context",
                             "Switching to new context: %s%s\n",
                             ((cptr) ? "(this line only) " : ""),
                             &token[1]));
@@ -782,20 +840,116 @@
                      */
                     cptr = copy_nword(cptr, token, sizeof(token));
                 }
+            } else if ((token[0] == 'i') && (strncasecmp(token,"include", 7 )==0)) {
+                if ( strcasecmp( token, "include" )==0) {
+                    if (when != PREMIB_CONFIG && 
+	                !netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+				                NETSNMP_DS_LIB_NO_TOKEN_WARNINGS)) {
+	                netsnmp_config_warn("Ambiguous token '%s' - use 'includeSearch' (or 'includeFile') instead.", token);
+                    }
+                    continue;
+                } else if ( strcasecmp( token, "includedir" )==0) {
+                    DIR *d;
+                    struct dirent *entry;
+                    char  fname[SNMP_MAXPATH];
+                    int   len;
+
+                    if (cptr == NULL) {
+                        if (when != PREMIB_CONFIG)
+		            netsnmp_config_error("Blank line following %s token.", token);
+                        continue;
+                    }
+                    if ((d=opendir(cptr)) == NULL ) {
+                        if (when != PREMIB_CONFIG)
+                            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);
+                            if ((len > 5) && (strcmp(&(entry->d_name[len-5]),".conf") == 0)) {
+                                snprintf(fname, SNMP_MAXPATH, "%s/%s",
+                                         cptr, entry->d_name);
+                                (void)read_config(fname, line_handler, when);
+                            }
+                        }
+                    }
+                    closedir(d);
+                    curfilename = prev_filename;
+                    linecount   = prev_linecount;
+                    continue;
+                } else if ( strcasecmp( token, "includefile" )==0) {
+                    char  fname[SNMP_MAXPATH], *cp;
+
+                    if (cptr == NULL) {
+                        if (when != PREMIB_CONFIG)
+		            netsnmp_config_error("Blank line following %s token.", token);
+                        continue;
+                    }
+                    if ( cptr[0] == '/' ) {
+                        strlcpy(fname, cptr, SNMP_MAXPATH);
+                    } else {
+                        strlcpy(fname, filename, SNMP_MAXPATH);
+                        cp = strrchr(fname, '/');
+                        if (!cp)
+                            fname[0] = '\0';
+                        else
+                            *(++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);
+                    continue;
+                } else if ( strcasecmp( token, "includesearch" )==0) {
+                    struct config_files ctmp;
+                    int len;
+
+                    if (cptr == NULL) {
+                        if (when != PREMIB_CONFIG)
+		            netsnmp_config_error("Blank line following %s token.", token);
+                        continue;
+                    }
+                    len = strlen(cptr);
+                    ctmp.fileHeader = cptr;
+                    ctmp.start = line_handler;
+                    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))
+		        netsnmp_config_error("Included config '%s' not found.", cptr);
+                    continue;
+                } else {
+                    lptr = line_handler;
+                }
             } else {
                 lptr = line_handler;
             }
             if (cptr == NULL) {
 		netsnmp_config_error("Blank line following %s token.", token);
             } else {
-                DEBUGMSGTL(("read_config", "%s:%d examining: %s\n",
+                DEBUGMSGTL(("read_config:line", "%s:%d examining: %s\n",
                             filename, linecount, line));
                 run_config_handler(lptr, token, cptr, when);
             }
         }
     }
     fclose(ifile);
-    return;
+    --depth;
+    return SNMPERR_SUCCESS;
 
 }                               /* end read_config() */
 
@@ -813,15 +967,21 @@
                 (*(ltmp->free_func)) ();
 }
 
-void
+/*
+ * Return SNMPERR_SUCCESS if any config files are processed
+ * Return SNMPERR_GENERR if _no_ config files are processed
+ *    Whether this is actually an error is left to the application
+ */
+int
 read_configs_optional(const char *optional_config, int when)
 {
     char *newp, *cp, *st = NULL;
+    int              ret = SNMPERR_GENERR;
     char *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
 				       NETSNMP_DS_LIB_APPTYPE);
 
     if ((NULL == optional_config) || (NULL == type))
-        return;
+        return ret;
 
     DEBUGMSGTL(("read_configs_optional",
                 "reading optional configuration tokens for %s\n", type));
@@ -835,14 +995,15 @@
                         "Optional File \"%s\" does not exist.\n", cp));
             snmp_log_perror(cp);
         } else {
-            DEBUGMSGTL(("read_config",
+            DEBUGMSGTL(("read_config:opt",
                         "Reading optional config file: \"%s\"\n", cp));
-            read_config_with_type_when(cp, type, when);
+            if ( read_config_with_type_when(cp, type, when) == SNMPERR_SUCCESS )
+                ret = SNMPERR_SUCCESS;
         }
         cp = strtok_r(NULL, ",", &st);
     }
     free(newp);
-    
+    return ret;
 }
 
 void
@@ -857,17 +1018,17 @@
     DEBUGMSGTL(("read_config", "reading normal configuration tokens\n"));
 
     if ((NULL != optional_config) && (*optional_config == '-')) {
-        read_configs_optional(++optional_config, NORMAL_CONFIG);
+        (void)read_configs_optional(++optional_config, NORMAL_CONFIG);
         optional_config = NULL; /* clear, so we don't read them twice */
     }
 
-    read_config_files(NORMAL_CONFIG);
+    (void)read_config_files(NORMAL_CONFIG);
 
     /*
      * do this even when the normal above wasn't done 
      */
     if (NULL != optional_config)
-        read_configs_optional(optional_config, NORMAL_CONFIG);
+        (void)read_configs_optional(optional_config, NORMAL_CONFIG);
 
     netsnmp_config_process_memories_when(NORMAL_CONFIG, 1);
 
@@ -889,14 +1050,14 @@
     DEBUGMSGTL(("read_config", "reading premib configuration tokens\n"));
 
     if ((NULL != optional_config) && (*optional_config == '-')) {
-        read_configs_optional(++optional_config, PREMIB_CONFIG);
+        (void)read_configs_optional(++optional_config, PREMIB_CONFIG);
         optional_config = NULL; /* clear, so we don't read them twice */
     }
 
-    read_config_files(PREMIB_CONFIG);
+    (void)read_config_files(PREMIB_CONFIG);
 
     if (NULL != optional_config)
-        read_configs_optional(optional_config, PREMIB_CONFIG);
+        (void)read_configs_optional(optional_config, PREMIB_CONFIG);
 
     netsnmp_config_process_memories_when(PREMIB_CONFIG, 0);
 
@@ -1034,8 +1195,12 @@
 
 /**
  * utility routine for read_config_files
+ *
+ * Return SNMPERR_SUCCESS if any config files are processed
+ * Return SNMPERR_GENERR if _no_ config files are processed
+ *    Whether this is actually an error is left to the application
  */
-static void
+static int
 read_config_files_in_path(const char *path, struct config_files *ctmp,
                           int when, const char *perspath, const char *persfile)
 {
@@ -1043,13 +1208,14 @@
     char            configfile[300];
     char           *cptr1, *cptr2, *envconfpath;
     struct stat     statbuf;
+    int             ret = SNMPERR_GENERR;
 
     if ((NULL == path) || (NULL == ctmp))
-        return;
+        return SNMPERR_GENERR;
 
     envconfpath = strdup(path);
 
-    DEBUGMSGTL(("read_config", " config path used for %s:%s (persistent path:%s)\n",
+    DEBUGMSGTL(("read_config:path", " config path used for %s:%s (persistent path:%s)\n",
                 ctmp->fileHeader, envconfpath, perspath));
     cptr1 = cptr2 = envconfpath;
     done = 0;
@@ -1061,12 +1227,12 @@
         else
             *cptr1 = 0;
 
-        DEBUGMSGTL(("read_config", " config dir: %s\n", cptr2 ));
+        DEBUGMSGTL(("read_config:dir", " config dir: %s\n", cptr2 ));
         if (stat(cptr2, &statbuf) != 0) {
             /*
              * Directory not there, continue 
              */
-            DEBUGMSGTL(("read_config", " Directory not present: %s\n", cptr2 ));
+            DEBUGMSGTL(("read_config:dir", " Directory not present: %s\n", cptr2 ));
             cptr2 = ++cptr1;
             continue;
         }
@@ -1075,14 +1241,14 @@
             /*
              * Not a directory, continue 
              */
-            DEBUGMSGTL(("read_config", " Not a directory: %s\n", cptr2 ));
+            DEBUGMSGTL(("read_config:dir", " Not a directory: %s\n", cptr2 ));
             cptr2 = ++cptr1;
             continue;
         }
 #endif
 
         /*
-         * for proper persistent storage retrival, we need to read old backup
+         * for proper persistent storage retrieval, we need to read old backup
          * copies of the previous storage files.  If the application in
          * question has died without the proper call to snmp_clean_persistent,
          * then we read all the configuration files we can, starting with
@@ -1091,6 +1257,7 @@
         if (strncmp(cptr2, perspath, strlen(perspath)) == 0 ||
             (persfile != NULL &&
              strncmp(cptr2, persfile, strlen(persfile)) == 0)) {
+            DEBUGMSGTL(("read_config:persist", " persist dir: %s\n", cptr2 ));
             /*
              * limit this to the known storage directory only 
              */
@@ -1111,18 +1278,21 @@
                     DEBUGMSGTL(("read_config_files",
                                 "old config file found: %s, parsing\n",
                                 configfile));
-                    read_config(configfile, ctmp->start, when);
+                    if (read_config(configfile, ctmp->start, when) == SNMPERR_SUCCESS)
+                        ret = SNMPERR_SUCCESS;
                 }
             }
         }
         snprintf(configfile, sizeof(configfile),
                  "%s/%s.conf", cptr2, ctmp->fileHeader);
         configfile[ sizeof(configfile)-1 ] = 0;
-        read_config(configfile, ctmp->start, when);
+        if (read_config(configfile, ctmp->start, when) == SNMPERR_SUCCESS)
+            ret = SNMPERR_SUCCESS;
         snprintf(configfile, sizeof(configfile),
                  "%s/%s.local.conf", cptr2, ctmp->fileHeader);
         configfile[ sizeof(configfile)-1 ] = 0;
-        read_config(configfile, ctmp->start, when);
+        if (read_config(configfile, ctmp->start, when) == SNMPERR_SUCCESS)
+            ret = SNMPERR_SUCCESS;
 
         if(done)
             break;
@@ -1130,6 +1300,7 @@
         cptr2 = ++cptr1;
     }
     SNMP_FREE(envconfpath);
+    return ret;
 }
 
 /*******************************************************************-o-******
@@ -1160,23 +1331,23 @@
  *
  *
  * EXITs if any 'config_errors' are logged while parsing config file lines.
+ *
+ * Return SNMPERR_SUCCESS if any config files are processed
+ * Return SNMPERR_GENERR if _no_ config files are processed
+ *    Whether this is actually an error is left to the application
  */
-void
-read_config_files(int when)
+int
+read_config_files_of_type(int when, struct config_files *ctmp)
 {
     const char     *confpath, *persfile, *envconfpath;
     char           *perspath;
-    struct config_files *ctmp = config_files;
+    int             ret = SNMPERR_GENERR;
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_DONT_PERSIST_STATE)
-     || netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_DISABLE_CONFIG_LOAD)) return;
-
-    config_errors = 0;
-
-    if (when == PREMIB_CONFIG)
-        free_config();
+        || netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                  NETSNMP_DS_LIB_DISABLE_CONFIG_LOAD)
+        || (NULL == ctmp)) return ret;
 
     /*
      * these shouldn't change
@@ -1185,10 +1356,6 @@
     persfile = netsnmp_getenv("SNMP_PERSISTENT_FILE");
     envconfpath = netsnmp_getenv("SNMPCONFPATH");
 
-    /*
-     * read all config file types 
-     */
-    for (; ctmp != NULL; ctmp = ctmp->next) {
 
         /*
          * read the config files. strdup() the result of
@@ -1202,27 +1369,56 @@
              * persistent path can change via conf file. Then get the
              * current persistent directory, and read files there.
              */
-            read_config_files_in_path(confpath, ctmp, when, perspath,
-                                      persfile);
+            if ( read_config_files_in_path(confpath, ctmp, when, perspath,
+                                      persfile) == SNMPERR_SUCCESS )
+                ret = SNMPERR_SUCCESS;
             free(perspath);
             perspath = strdup(get_persistent_directory());
-            read_config_files_in_path(perspath, ctmp, when, perspath,
-                                      persfile);
+            if ( read_config_files_in_path(perspath, ctmp, when, perspath,
+                                      persfile) == SNMPERR_SUCCESS )
+                ret = SNMPERR_SUCCESS;
         }
         else {
             /*
              * only read path specified by user
              */
-            read_config_files_in_path(envconfpath, ctmp, when, perspath,
-                                      persfile);
+            if ( read_config_files_in_path(envconfpath, ctmp, when, perspath,
+                                      persfile) == SNMPERR_SUCCESS )
+                ret = SNMPERR_SUCCESS;
         }
         free(perspath);
+        return ret;
+}
+
+/*
+ * Return SNMPERR_SUCCESS if any config files are processed
+ * Return SNMPERR_GENERR if _no_ config files are processed
+ *    Whether this is actually an error is left to the application
+ */
+int
+read_config_files(int when) {
+
+    struct config_files *ctmp = config_files;
+    int                  ret  = SNMPERR_GENERR;
+
+    config_errors = 0;
+
+    if (when == PREMIB_CONFIG)
+        free_config();
+
+    /*
+     * read all config file types 
+     */
+    for (; ctmp != NULL; ctmp = ctmp->next) {
+        if ( read_config_files_of_type(when, ctmp) == SNMPERR_SUCCESS )
+            ret = SNMPERR_SUCCESS;
     }
 
     if (config_errors) {
         snmp_log(LOG_ERR, "net-snmp: %d error(s) in config file(s)\n",
                  config_errors);
     }
+    return ret;
 }
 
 void
@@ -1308,7 +1504,7 @@
         fprintf(fout, "%s", line);
         if (line[strlen(line)] != '\n')
             fprintf(fout, "\n");
-        DEBUGMSGTL(("read_config", "storing: %s\n", line));
+        DEBUGMSGTL(("read_config:store", "storing: %s\n", line));
         fclose(fout);
     } else {
         snmp_log(LOG_ERR, "read_config_store open failure on %s\n", filep);
@@ -1389,8 +1585,11 @@
      * save a warning header to the top of the new file 
      */
     snprintf(fileold, sizeof(fileold),
-            "#\n# net-snmp (or ucd-snmp) persistent data file.\n#\n############################################################################\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n#\n#          **** DO NOT EDIT THIS FILE ****\n#\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n############################################################################\n#\n# DO NOT STORE CONFIGURATION ENTRIES HERE.\n# Please save normal configuration tokens for %s in SNMPCONFPATH/%s.conf.\n# Only \"createUser\" tokens should be placed here by %s administrators.\n# (Did I mention: do not edit this file?)\n#\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
-            type, type, type);
+            "%s%s# Please save normal configuration tokens for %s in SNMPCONFPATH/%s.conf.\n# Only \"createUser\" tokens should be placed here by %s administrators.\n%s",
+            "#\n# net-snmp (or ucd-snmp) persistent data file.\n#\n############################################################################\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n",
+            "#\n#          **** DO NOT EDIT THIS FILE ****\n#\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n############################################################################\n#\n# DO NOT STORE CONFIGURATION ENTRIES HERE.\n",
+            type, type, type,
+	    "# (Did I mention: do not edit this file?)\n#\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
     fileold[ sizeof(fileold)-1 ] = 0;
     read_config_store(type, fileold);
 }
@@ -1458,7 +1657,7 @@
     char* buf = tmpbuf;
     int len = snprintf(tmpbuf, sizeof(tmpbuf), "%s: line %d: %s: %s\n",
 		       curfilename, linecount, levelmsg, str);
-    if (len >= sizeof(tmpbuf)) {
+    if (len >= (int)sizeof(tmpbuf)) {
 	buf = (char*)malloc(len + 1);
 	sprintf(buf, "%s: line %d: %s: %s\n",
 		curfilename, linecount, levelmsg, str);
@@ -1506,6 +1705,12 @@
 char           *
 skip_white(char *ptr)
 {
+    return NETSNMP_REMOVE_CONST(char *, skip_white_const(ptr));
+}
+
+const char     *
+skip_white_const(const char *ptr)
+{
     if (ptr == NULL)
         return (NULL);
     while (*ptr != 0 && isspace((unsigned char)*ptr))
@@ -1518,6 +1723,12 @@
 char           *
 skip_not_white(char *ptr)
 {
+    return NETSNMP_REMOVE_CONST(char *, skip_not_white_const(ptr));
+}
+
+const char     *
+skip_not_white_const(const char *ptr)
+{
     if (ptr == NULL)
         return (NULL);
     while (*ptr != 0 && !isspace((unsigned char)*ptr))
@@ -1530,9 +1741,15 @@
 char           *
 skip_token(char *ptr)
 {
-    ptr = skip_white(ptr);
-    ptr = skip_not_white(ptr);
-    ptr = skip_white(ptr);
+    return NETSNMP_REMOVE_CONST(char *, skip_token_const(ptr));
+}
+
+const char     *
+skip_token_const(const char *ptr)
+{
+    ptr = skip_white_const(ptr);
+    ptr = skip_not_white_const(ptr);
+    ptr = skip_white_const(ptr);
     return (ptr);
 }
 
@@ -1553,6 +1770,12 @@
 char           *
 copy_nword(char *from, char *to, int len)
 {
+    return NETSNMP_REMOVE_CONST(char *, copy_nword_const(from, to, len));
+}
+
+const char           *
+copy_nword_const(const char *from, char *to, int len)
+{
     char            quote;
     if (!from || !to)
         return NULL;
@@ -1581,7 +1804,7 @@
         } else
             from++;
     } else {
-        while (*from != 0 && !isspace(*from)) {
+        while (*from != 0 && !isspace((unsigned char)(*from))) {
             if ((*from == '\\') && (*(from + 1) != 0)) {
                 if (len > 0) {  /* don't copy beyond len bytes */
                     *to++ = *(from + 1);
@@ -1601,9 +1824,9 @@
     }
     if (len > 0)
         *to = 0;
-    from = skip_white(from);
+    from = skip_white_const(from);
     return (from);
-}                               /* copy_word */
+}                               /* copy_nword */
 
 /*
  * copy_word
@@ -1676,20 +1899,42 @@
     return saveto;
 }
 
-/*
- * read_config_read_octet_string(): reads an octet string that was
- * saved by the read_config_save_octet_string() function 
+/**
+ * Reads an octet string that was saved by the
+ * read_config_save_octet_string() function.
+ *
+ * @param[in]     readfrom Pointer to the input data to be parsed.
+ * @param[in,out] str      Pointer to the output buffer pointer. The data
+ *   written to the output buffer will be '\0'-terminated. If *str == NULL,
+ *   an output buffer will be allocated that is one byte larger than the
+ *   data stored.
+ * @param[in,out] len      If str != NULL, *len is the size of the buffer *str
+ *   points at. If str == NULL, the value passed via *len is ignored.
+ *   Before this function returns the number of bytes read will be stored
+ *   in *len. If a buffer overflow occurs, *len will be set to 0.
+ *
+ * @return A pointer to the next character in the input to be parsed if
+ *   parsing succeeded; NULL when the end of the input string has been reached
+ *   or if an error occurred.
  */
 char           *
-read_config_read_octet_string(char *readfrom, u_char ** str, size_t * len)
+read_config_read_octet_string(const char *readfrom, u_char ** str,
+                              size_t * len)
 {
-    u_char         *cptr = NULL;
-    char           *cptr1;
-    u_int           tmp;
-    int             i;
-    size_t          ilen;
+    return NETSNMP_REMOVE_CONST(char *,
+               read_config_read_octet_string_const(readfrom, str, len));
+}
 
-    if (readfrom == NULL || str == NULL)
+const char     *
+read_config_read_octet_string_const(const char *readfrom, u_char ** str,
+                                    size_t * len)
+{
+    u_char         *cptr;
+    const char     *cptr1;
+    u_int           tmp;
+    size_t          i, ilen;
+
+    if (readfrom == NULL || str == NULL || len == NULL)
         return NULL;
 
     if (strncasecmp(readfrom, "0x", 2) == 0) {
@@ -1697,7 +1942,7 @@
          * A hex string submitted. How long? 
          */
         readfrom += 2;
-        cptr1 = skip_not_white(readfrom);
+        cptr1 = skip_not_white_const(readfrom);
         if (cptr1)
             ilen = (cptr1 - readfrom);
         else
@@ -1715,31 +1960,29 @@
          * malloc data space if needed (+1 for good measure) 
          */
         if (*str == NULL) {
-            if ((cptr = (u_char *) malloc(ilen + 1)) == NULL) {
+            *str = (u_char *) malloc(ilen + 1);
+            if (!*str)
                 return NULL;
-            }
-            *str = cptr;
         } else {
             /*
-             * don't require caller to have +1 for good measure, and 
-             * bail if not enough space.
+             * require caller to have +1, and bail if not enough space.
              */
-            if (ilen > *len) {
+            if (ilen >= *len) {
                 snmp_log(LOG_WARNING,"buffer too small to read octet string (%lu < %lu)\n",
                          (unsigned long)*len, (unsigned long)ilen);
                 DEBUGMSGTL(("read_config_read_octet_string",
                             "buffer too small (%lu < %lu)", (unsigned long)*len, (unsigned long)ilen));
-                cptr1 = skip_not_white(readfrom);
-                return skip_white(cptr1);
+                *len = 0;
+                cptr1 = skip_not_white_const(readfrom);
+                return skip_white_const(cptr1);
             }
-            cptr = *str;
         }
-        *len = ilen;
 
         /*
          * copy validated data 
          */
-        for (i = 0; i < (int) *len; i++) {
+        cptr = *str;
+        for (i = 0; i < ilen; i++) {
             if (1 == sscanf(readfrom, "%2x", &tmp))
                 *cptr++ = (u_char) tmp;
             else {
@@ -1751,13 +1994,11 @@
             readfrom += 2;
         }
         /*
-         * only null terminate if we have the space
+         * Terminate the output buffer.
          */
-        if (ilen > *len) {
-            ilen = *len-1;
-            *cptr++ = '\0';
-        }
-        readfrom = skip_white(readfrom);
+        *cptr++ = '\0';
+        *len = ilen;
+        readfrom = skip_white_const(readfrom);
     } else {
         /*
          * Normal string 
@@ -1768,25 +2009,23 @@
          */
         if (*str == NULL) {
             char            buf[SNMP_MAXBUF];
-            readfrom = copy_nword(readfrom, buf, sizeof(buf));
+            readfrom = copy_nword_const(readfrom, buf, sizeof(buf));
 
             *len = strlen(buf);
-            if ((cptr = (u_char *) malloc(*len + 1)) == NULL)
+            *str = (u_char *) malloc(*len + 1);
+            if (*str == NULL)
                 return NULL;
-            *str = cptr;
-            if (cptr) {
-                memcpy(cptr, buf, *len + 1);
-            }
+            memcpy(*str, buf, *len + 1);
         } else {
-            readfrom = copy_nword(readfrom, (char *) *str, *len);
-            *len = strlen((char *) *str);
+            readfrom = copy_nword_const(readfrom, (char *) *str, *len);
+            if (*len)
+                *len = strlen((char *) *str);
         }
     }
 
     return readfrom;
 }
 
-
 /*
  * read_config_save_objid(): saves an objid as a numerical string 
  */
@@ -1805,7 +2044,7 @@
      * in case len=0, this makes it easier to read it back in 
      */
     for (i = 0; i < (int) len; i++) {
-        sprintf(saveto, ".%ld", objid[i]);
+        sprintf(saveto, ".%" NETSNMP_PRIo "d", objid[i]);
         saveto += strlen(saveto);
     }
     return saveto;
@@ -1817,6 +2056,13 @@
 char           *
 read_config_read_objid(char *readfrom, oid ** objid, size_t * len)
 {
+    return NETSNMP_REMOVE_CONST(char *,
+             read_config_read_objid_const(readfrom, objid, len));
+}
+
+const char     *
+read_config_read_objid_const(const char *readfrom, oid ** objid, size_t * len)
+{
 
     if (objid == NULL || readfrom == NULL || len == NULL)
         return NULL;
@@ -1838,7 +2084,7 @@
          * qualify the string for read_objid 
          */
         char            buf[SPRINT_MAX_LEN];
-        copy_nword(readfrom, buf, sizeof(buf));
+        copy_nword_const(readfrom, buf, sizeof(buf));
 
         if (!read_objid(buf, *objid, len)) {
             DEBUGMSGTL(("read_config_read_objid", "Invalid OID"));
@@ -1847,7 +2093,7 @@
         }
     }
 
-    readfrom = skip_token(readfrom);
+    readfrom = skip_token_const(readfrom);
     return readfrom;
 }
 
@@ -2083,4 +2329,5 @@
         }
     return NULL;
 }
+
 /** @} */
diff --git a/snmplib/readdir.c b/snmplib/readdir.c
new file mode 100644
index 0000000..33ff83d
--- /dev/null
+++ b/snmplib/readdir.c
@@ -0,0 +1,51 @@
+/*
+ * readdir() replacement for MSVC.
+ */
+
+#define WIN32IO_IS_STDIO
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+#include <net-snmp/library/system.h>
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include <tchar.h>
+#include <windows.h>
+
+
+/*
+ * Readdir just returns the current string pointer and bumps the
+ * * string pointer to the nDllExport entry.
+ */
+struct direct  *
+readdir(DIR * dirp)
+{
+    int             len;
+    static int      dummy = 0;
+
+    if (dirp->curr) {
+        /*
+         * first set up the structure to return 
+         */
+        len = strlen(dirp->curr);
+        strcpy(dirp->dirstr.d_name, dirp->curr);
+        dirp->dirstr.d_namlen = len;
+
+        /*
+         * Fake an inode 
+         */
+        dirp->dirstr.d_ino = dummy++;
+
+        /*
+         * Now set up for the nDllExport call to readdir 
+         */
+        dirp->curr += len + 1;
+        if (dirp->curr >= (dirp->start + dirp->size)) {
+            dirp->curr = NULL;
+        }
+
+        return &(dirp->dirstr);
+    } else
+        return NULL;
+}
diff --git a/snmplib/scapi.c b/snmplib/scapi.c
index cb2d2f3..e42f6c6 100644
--- a/snmplib/scapi.c
+++ b/snmplib/scapi.c
@@ -17,9 +17,6 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -29,11 +26,7 @@
 #include <strings.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -69,6 +62,12 @@
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/transform_oids.h>
 
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+#include <net-snmp/library/openssl_md5.h>
+#include <net-snmp/library/openssl_sha.h>
+#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>
@@ -92,6 +91,9 @@
 
 #endif /* HAVE_OPENSSL */
 
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+#endif
+
 #ifdef NETSNMP_USE_PKCS11
 #include <security/cryptoki.h>
 #endif
@@ -105,6 +107,15 @@
 	}
 #endif
 
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+static
+int SHA1_hmac(const u_char * data, size_t len, u_char * mac, size_t maclen,
+              const u_char * secret, size_t secretlen);
+
+static
+int MD5_hmac(const u_char * data, size_t len, u_char * mac, size_t maclen,
+             const u_char * secret, size_t secretlen);
+#endif
 
 /*
  * sc_get_properlength(oid *hashtype, u_int hashtype_len):
@@ -161,8 +172,8 @@
 {
     int             rval = SNMPERR_SUCCESS;
 
-#ifndef NETSNMP_USE_OPENSSL
-#ifdef NETSNMP_USE_INTERNAL_MD5
+#if !defined(NETSNMP_USE_OPENSSL)
+#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
     struct timeval  tv;
 
     DEBUGTRACE;
@@ -196,10 +207,10 @@
  */
 int
 sc_random(u_char * buf, size_t * buflen)
-#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
-#ifdef NETSNMP_USE_INTERNAL_MD5
+#if !defined(NETSNMP_USE_OPENSSL) && !defined(NETSNMP_USE_PKCS11)
     int             i;
     int             rndval;
     u_char         *ucp = buf;
@@ -265,13 +276,14 @@
  */
 int
 sc_generate_keyed_hash(const oid * authtype, size_t authtypelen,
-                       u_char * key, u_int keylen,
-                       u_char * message, u_int msglen,
+                       const u_char * key, u_int keylen,
+                       const u_char * message, u_int msglen,
                        u_char * MAC, size_t * maclen)
-#if  defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
+#if  defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
-    int             properlength;
+    int             iproperlength;
+    size_t          properlength;
 
     u_char          buf[SNMP_MAXBUF_SMALL];
 #if  defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
@@ -300,11 +312,11 @@
         QUITFUN(SNMPERR_GENERR, sc_generate_keyed_hash_quit);
     }
 
-    properlength = sc_get_properlength(authtype, authtypelen);
-    if (properlength == SNMPERR_GENERR)
-        return properlength;
-
-    if (((int) keylen < properlength)) {
+    iproperlength = sc_get_properlength(authtype, authtypelen);
+    if (iproperlength == SNMPERR_GENERR)
+        return SNMPERR_GENERR;
+    properlength = (size_t)iproperlength;
+    if (keylen < properlength) {
         QUITFUN(SNMPERR_GENERR, sc_generate_keyed_hash_quit);
     }
 #ifdef NETSNMP_USE_OPENSSL
@@ -324,7 +336,7 @@
     if (buf_len != properlength) {
         QUITFUN(rval, sc_generate_keyed_hash_quit);
     }
-    if ((int)*maclen > buf_len)
+    if (*maclen > buf_len)
         *maclen = buf_len;
     memcpy(MAC, buf, *maclen);
 
@@ -354,8 +366,25 @@
         *maclen = buf_len;
     memcpy(MAC, buf, *maclen);
 
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+    if (*maclen > properlength)
+        *maclen = properlength;
+#ifndef NETSNMP_DISABLE_MD5
+    if (ISTRANSFORM(authtype, HMACMD5Auth))
+        rval = MD5_hmac(message, msglen, MAC, *maclen, key, keylen);
+    else
+#endif
+         if (ISTRANSFORM(authtype, HMACSHA1Auth))
+        rval = SHA1_hmac(message, msglen, MAC, *maclen, key, keylen);
+    else {
+        QUITFUN(SNMPERR_GENERR, sc_generate_keyed_hash_quit);
+    }
+    if (rval != 0) {
+        rval = SNMPERR_GENERR;
+        goto sc_generate_keyed_hash_quit;
+    }    
 #else                            /* NETSNMP_USE_INTERNAL_MD5 */
-    if ((int) *maclen > properlength)
+    if (*maclen > properlength)
         *maclen = properlength;
     if (MDsign(message, msglen, MAC, *maclen, key, keylen)) {
         rval = SNMPERR_GENERR;
@@ -402,12 +431,14 @@
  * SNMPERR_SC_NOT_CONFIGURED    Hash type not supported.
  */
 int
-sc_hash(const oid * hashtype, size_t hashtypelen, u_char * buf,
+sc_hash(const oid * hashtype, size_t hashtypelen, const u_char * buf,
         size_t buf_len, u_char * MAC, size_t * MAC_len)
-#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
-#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
     int            rval = SNMPERR_SUCCESS;
+#endif
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
     unsigned int   tmp_len;
 #endif
     int            ret;
@@ -416,14 +447,17 @@
     const EVP_MD   *hashfn;
     EVP_MD_CTX     *cptr;
 #endif
-
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+    MD5_CTX        cmd5;
+    SHA_CTX        csha1;
+#endif
     DEBUGTRACE;
 
-    if (hashtype == NULL || hashtypelen < 0 || buf == NULL ||
-        buf_len <= 0 || MAC == NULL || MAC_len == NULL )
+    if (hashtype == NULL || buf == NULL || buf_len <= 0 ||
+        MAC == NULL || MAC_len == NULL )
         return (SNMPERR_GENERR);
     ret = sc_get_properlength(hashtype, hashtypelen);
-    if (( ret < 0 ) || (*MAC_len < ret ))
+    if (( ret < 0 ) || (*MAC_len < (size_t)ret ))
         return (SNMPERR_GENERR);
 
 #ifdef NETSNMP_USE_OPENSSL
@@ -472,6 +506,30 @@
     free(cptr);
 #endif
     return (rval);
+
+#elif NETSNMP_USE_INTERNAL_CRYPTO
+#ifndef NETSNMP_DISABLE_MD5
+    if (ISTRANSFORM(hashtype, HMACMD5Auth)) {
+        if (*MAC_len < MD5_DIGEST_LENGTH)
+            return (SNMPERR_GENERR);      /* the buffer isn't big enough */
+	MD5_Init(&cmd5);
+        MD5_Update(&cmd5, buf, buf_len);
+        MD5_Final(MAC, &cmd5);
+        *MAC_len = MD5_DIGEST_LENGTH;
+    } else 
+#endif
+    if (ISTRANSFORM(hashtype, HMACSHA1Auth)) {
+        if (*MAC_len < SHA_DIGEST_LENGTH)
+            return (SNMPERR_GENERR);      /* the buffer isn't big enough */
+	SHA1_Init(&csha1);
+        SHA1_Update(&csha1, buf, buf_len);
+        SHA1_Final(MAC, &csha1);
+        *MAC_len = SHA_DIGEST_LENGTH;
+            
+    } else {
+        return (SNMPERR_GENERR);
+    }
+    return (rval);
 #elif NETSNMP_USE_PKCS11                  /* NETSNMP_USE_PKCS11 */
 
 #ifndef NETSNMP_DISABLE_MD5
@@ -528,10 +586,10 @@
  */
 int
 sc_check_keyed_hash(const oid * authtype, size_t authtypelen,
-                    u_char * key, u_int keylen,
-                    u_char * message, u_int msglen,
-                    u_char * MAC, u_int maclen)
-#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11)
+                    const u_char * key, u_int keylen,
+                    const u_char * message, u_int msglen,
+                    const u_char * MAC, u_int maclen)
+#if defined(NETSNMP_USE_INTERNAL_MD5) || defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_PKCS11) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
     size_t          buf_len = SNMP_MAXBUF_SMALL;
@@ -621,9 +679,9 @@
 sc_encrypt(const oid * privtype, size_t privtypelen,
            u_char * key, u_int keylen,
            u_char * iv, u_int ivlen,
-           u_char * plaintext, u_int ptlen,
+           const u_char * plaintext, u_int ptlen,
            u_char * ciphertext, size_t * ctlen)
-#if defined(NETSNMP_USE_OPENSSL)
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
     int             rval = SNMPERR_SUCCESS;
     u_int           properlength = 0, properlength_iv = 0;
@@ -896,7 +954,7 @@
            u_char * iv, u_int ivlen,
            u_char * ciphertext, u_int ctlen,
            u_char * plaintext, size_t * ptlen)
-#ifdef NETSNMP_USE_OPENSSL
+#if defined(NETSNMP_USE_OPENSSL) || defined(NETSNMP_USE_INTERNAL_CRYPTO)
 {
 
     int             rval = SNMPERR_SUCCESS;
@@ -1076,3 +1134,219 @@
 #endif                          /*  */
 }
 #endif                          /* NETSNMP_USE_OPENSSL */
+
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+
+/* These functions are basically copies of the MDSign() routine in
+   md5.c modified to be used with the OpenSSL hashing functions.  The
+   copyright below is from the md5.c file that these functions were
+   taken from: */
+
+/*
+ * ** **************************************************************************
+ * ** md5.c -- Implementation of MD5 Message Digest Algorithm                 **
+ * ** Updated: 2/16/90 by Ronald L. Rivest                                    **
+ * ** (C) 1990 RSA Data Security, Inc.                                        **
+ * ** **************************************************************************
+ */
+
+/*
+ * MD5_hmac(data, len, MD5): do a checksum on an arbirtrary amount
+ * of data, and prepended with a secret in the standard fashion 
+ */
+static int
+MD5_hmac(const u_char * data, size_t len, u_char * mac, size_t maclen,
+         const u_char * secret, size_t secretlen)
+{
+#define MD5_HASHKEYLEN 64
+#define MD5_SECRETKEYLEN 16
+
+    MD5_CTX         cmd5;
+    u_char          K1[MD5_HASHKEYLEN];
+    u_char          K2[MD5_HASHKEYLEN];
+    u_char          extendedAuthKey[MD5_HASHKEYLEN];
+    u_char          buf[MD5_HASHKEYLEN];
+    size_t          i;
+    const u_char   *cp;
+    u_char         *newdata = NULL;
+    int             rc = 0;
+
+    /*
+     * memset(K1,0,MD5_HASHKEYLEN);
+     * memset(K2,0,MD5_HASHKEYLEN);
+     * memset(buf,0,MD5_HASHKEYLEN);
+     * memset(extendedAuthKey,0,MD5_HASHKEYLEN);
+     */
+
+    if (secretlen != MD5_SECRETKEYLEN || secret == NULL ||
+        mac == NULL || data == NULL ||
+        len <= 0 || maclen <= 0) {
+        /*
+         * DEBUGMSGTL(("md5","MD5 signing not properly initialized")); 
+         */
+        return -1;
+    }
+
+    memset(extendedAuthKey, 0, MD5_HASHKEYLEN);
+    memcpy(extendedAuthKey, secret, secretlen);
+    for (i = 0; i < MD5_HASHKEYLEN; i++) {
+        K1[i] = extendedAuthKey[i] ^ 0x36;
+        K2[i] = extendedAuthKey[i] ^ 0x5c;
+    }
+
+    MD5_Init(&cmd5);
+    rc = !MD5_Update(&cmd5, K1, MD5_HASHKEYLEN);
+    if (rc)
+        goto update_end;
+
+    i = len;
+    if (((uintptr_t) data) % sizeof(long) != 0) {
+        /*
+         * this relies on the ability to use integer math and thus we
+         * must rely on data that aligns on 32-bit-word-boundries 
+         */
+        newdata = netsnmp_memdup(data, len);
+        cp = newdata;
+    } else {
+        cp = data;
+    }
+
+    while (i >= 64) {
+        rc = !MD5_Update(&cmd5, cp, 64);
+        if (rc)
+            goto update_end;
+        cp += 64;
+        i -= 64;
+    }
+
+    rc = !MD5_Update(&cmd5, cp, i);
+    if (rc)
+        goto update_end;
+
+    memset(buf, 0, MD5_HASHKEYLEN);
+    MD5_Final(buf, &cmd5);
+
+    MD5_Init(&cmd5);
+    rc = !MD5_Update(&cmd5, K2, MD5_HASHKEYLEN);
+    if (rc)
+        goto update_end;
+    rc = !MD5_Update(&cmd5, buf, MD5_SECRETKEYLEN);
+    if (rc)
+        goto update_end;
+
+    /*
+     * copy the sign checksum to the outgoing pointer 
+     */
+    MD5_Final(buf, &cmd5);
+    memcpy(mac, buf, maclen);
+
+  update_end:
+    memset(buf, 0, MD5_HASHKEYLEN);
+    memset(K1, 0, MD5_HASHKEYLEN);
+    memset(K2, 0, MD5_HASHKEYLEN);
+    memset(extendedAuthKey, 0, MD5_HASHKEYLEN);
+    memset(&cmd5, 0, sizeof(cmd5));
+
+    if (newdata)
+        free(newdata);
+    return rc;
+}
+
+static int
+SHA1_hmac(const u_char * data, size_t len, u_char * mac, size_t maclen,
+          const u_char * secret, size_t secretlen)
+{
+#define SHA1_HASHKEYLEN   64
+#define SHA1_SECRETKEYLEN 20
+
+    SHA_CTX         csha1;
+    u_char          K1[SHA1_HASHKEYLEN];
+    u_char          K2[SHA1_HASHKEYLEN];
+    u_char          extendedAuthKey[SHA1_HASHKEYLEN];
+    u_char          buf[SHA1_HASHKEYLEN];
+    size_t          i;
+    const u_char   *cp;
+    u_char         *newdata = NULL;
+    int             rc = 0;
+
+    /*
+     * memset(K1,0,SHA1_HASHKEYLEN);
+     * memset(K2,0,SHA1_HASHKEYLEN);
+     * memset(buf,0,SHA1_HASHKEYLEN);
+     * memset(extendedAuthKey,0,SHA1_HASHKEYLEN);
+     */
+
+    if (secretlen != SHA1_SECRETKEYLEN || secret == NULL ||
+        mac == NULL || data == NULL ||
+        len <= 0 || maclen <= 0) {
+        /*
+         * DEBUGMSGTL(("sha1","SHA1 signing not properly initialized")); 
+         */
+        return -1;
+    }
+
+    memset(extendedAuthKey, 0, SHA1_HASHKEYLEN);
+    memcpy(extendedAuthKey, secret, secretlen);
+    for (i = 0; i < SHA1_HASHKEYLEN; i++) {
+        K1[i] = extendedAuthKey[i] ^ 0x36;
+        K2[i] = extendedAuthKey[i] ^ 0x5c;
+    }
+
+    SHA1_Init(&csha1);
+    rc = !SHA1_Update(&csha1, K1, SHA1_HASHKEYLEN);
+    if (rc)
+        goto update_end;
+
+    i = len;
+    if (((uintptr_t) data) % sizeof(long) != 0) {
+        /*
+         * this relies on the ability to use integer math and thus we
+         * must rely on data that aligns on 32-bit-word-boundries 
+         */
+        newdata = netsnmp_memdup(data, len);
+        cp = newdata;
+    } else {
+        cp = data;
+    }
+
+    while (i >= 64) {
+        rc = !SHA1_Update(&csha1, cp, 64);
+        if (rc)
+            goto update_end;
+        cp += 64;
+        i -= 64;
+    }
+
+    rc = !SHA1_Update(&csha1, cp, i);
+    if (rc)
+        goto update_end;
+
+    memset(buf, 0, SHA1_HASHKEYLEN);
+    SHA1_Final(buf, &csha1);
+
+    SHA1_Init(&csha1);
+    rc = !SHA1_Update(&csha1, K2, SHA1_HASHKEYLEN);
+    if (rc)
+        goto update_end;
+    rc = !SHA1_Update(&csha1, buf, SHA1_SECRETKEYLEN);
+    if (rc)
+        goto update_end;
+
+    /*
+     * copy the sign checksum to the outgoing pointer 
+     */
+    SHA1_Final(buf, &csha1);
+    memcpy(mac, buf, maclen);
+
+  update_end:
+    memset(buf, 0, SHA1_HASHKEYLEN);
+    memset(K1, 0, SHA1_HASHKEYLEN);
+    memset(K2, 0, SHA1_HASHKEYLEN);
+    memset(extendedAuthKey, 0, SHA1_HASHKEYLEN);
+    memset(&csha1, 0, sizeof(csha1));
+
+    if (newdata)
+        free(newdata);
+    return rc;
+}
+#endif /* NETSNMP_USE_INTERNAL_CRYPTO */
diff --git a/snmplib/snmp-tc.c b/snmplib/snmp-tc.c
index d8ae783..38285e1 100644
--- a/snmplib/snmp-tc.c
+++ b/snmplib/snmp-tc.c
@@ -18,11 +18,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-#ifdef WIN32
-# include <sys/timeb.h>
-#else
 # include <sys/time.h>
-#endif
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -156,7 +152,7 @@
     string[7] = 0;
     *length = 8;
 
-#ifndef cygwin
+#if defined(HAVE_STRUCT_TM_TM_GMTOFF) || defined(HAVE_TIMEZONE_VARIABLE)
     /*
      * Timezone offset
      */
@@ -367,16 +363,13 @@
     switch (newValue) {
         /*
          * these two end up being equivelent as far as checking the 
-         */
-        /*
          * status goes, although the final states are based on the 
-         */
-        /*
          * newValue. 
          */
     case RS_ACTIVE:
     case RS_NOTINSERVICE:
-        if (oldValue == RS_NOTINSERVICE || oldValue == RS_ACTIVE);
+        if (oldValue == RS_NOTINSERVICE || oldValue == RS_ACTIVE)
+            ;
         else
             return SNMP_ERR_INCONSISTENTVALUE;
         break;
@@ -389,13 +382,6 @@
         break;
 
     case RS_CREATEANDGO:
-        if (oldValue != RS_NONEXISTENT)
-            /*
-             * impossible, we already exist. 
-             */
-            return SNMP_ERR_INCONSISTENTVALUE;
-        break;
-
     case RS_CREATEANDWAIT:
         if (oldValue != RS_NONEXISTENT)
             /*
@@ -416,6 +402,21 @@
 }
 
 char
+check_rowstatus_with_storagetype_transition(int oldValue, int newValue,
+                                            int oldStorage)
+{
+    /*
+     * can not destroy permanent or readonly rows
+     */
+    if ((RS_DESTROY == newValue) &&
+        ((SNMP_STORAGE_PERMANENT == oldStorage) ||
+         (SNMP_STORAGE_READONLY == oldStorage)))
+        return SNMP_ERR_WRONGVALUE;
+
+    return check_rowstatus_transition(oldValue, newValue);
+}
+
+char
 check_storage_transition(int oldValue, int newValue)
 {
     /*
diff --git a/snmplib/snmp.c b/snmplib/snmp.c
index 020ec90..c3763e9 100644
--- a/snmplib/snmp.c
+++ b/snmplib/snmp.c
@@ -51,9 +51,6 @@
 #ifdef HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifndef NULL
 #define NULL 0
 #endif
@@ -90,10 +87,11 @@
 */
 
 void
-xdump(const u_char * cp, size_t length, const char *prefix)
+xdump(const void * data, size_t length, const char *prefix)
 {
-    int             col, count;
-    char           *buffer;
+    const u_char * const cp = (const u_char*)data;
+    int                  col, count;
+    char                *buffer;
 
     buffer = (char *) malloc(strlen(prefix) + 80);
     if (!buffer) {
diff --git a/snmplib/snmpDTLSUDPDomain.c b/snmplib/snmpDTLSUDPDomain.c
deleted file mode 100644
index 33e91a6..0000000
--- a/snmplib/snmpDTLSUDPDomain.c
+++ /dev/null
@@ -1,1198 +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 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.
- */
-
-/*
- * NOTE: THIS IS AN EXPERIMENTAL IMPLEMENTATION AND NOT YET SUITABLE
- * FOR PRODUCTION USE
- *
- * THERE are KNOWN security ISSUES with THIS code!
- * (if nothing else, you can't tie certificates to certain hosts/users)
- */
-
-/*
- * ---------- Creating Certificates ----------
- *
- * Example pub/priv key creation steps using openssl (replace for-user
- * with the appropriate name, etc (e.g. for a user you might use their
- * first.last name and for a server, use it's hostname or something)
- *
- *   1) create the CSR file first:
- *
- *         openssl req -days 365 -new -out for-user.csr -keyout for-user.priv
- *
- *   2) Optionally remove the passphrase if you hate that sort of thing
- *      (obviously not recommended; useful on servers without password prompts)
- *
- *         openssl rsa -in for-user.priv -out for-user.insecure.priv
- *
- *   3) Create a self-signed key from the CSR:
- *
- *      openssl x509 -set_serial `date +%Y%m%d` -in for-user.csr -out for-user.cert -req -signkey for-user.insecure.priv -days 365
- *
- *
- * These can then be used by the config tokens for both the client and
- * the server:
- *
- * ---------- Creating a CA for issuing certs ----------
- *
- * TBD
- *
- * ---------- Configuration ----------
- *
- * In the snmp.conf file, you should specify the following
- * types of configuration lines:
- *
- * To tell the client which keys *it* should use to authenticate with:
- *
- *   defX509ClientPriv /path/to/for-user.insecure.priv
- *   defX509ClientPub  /path/to/for-user.insecure.cert
- *
- * To tell the client to only a list of servers:
- *
- *   defX509ServerCerts /path/to/server-certs.certs
- *
- *   (server-certs.certs can be created by simply cat'ing multiple
- *    server cert files into ones big file)
- *
- * To tell the server it's certs to offer:
- *
- *   defX509ServerPub  /path/to/server1.insecure.cert
- *   defX509ServerPriv /path/to/server1.insecure.priv
- *
- * To tell the server which keys it should accept from clients:
- *
- *   defX509ClientCerts /path/to/client-certs.certs
- *
- * To authorize for R/W a particular CommonName from those certs:
- *
- *   rwuser "John Doe"
- *
- */
-
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <errno.h>
-
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-
-#if HAVE_DMALLOC_H
-#include <dmalloc.h>
-#endif
-
-#include <net-snmp/types.h>
-#include <net-snmp/output_api.h>
-#include <net-snmp/config_api.h>
-
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpDTLSUDPDomain.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/system.h>
-#include <net-snmp/library/tools.h>
-#include <net-snmp/library/snmp_openssl.h>
-#include <net-snmp/library/callback.h>
-
-#include "openssl/bio.h"
-#include "openssl/ssl.h"
-#include "openssl/err.h"
-
-#ifndef INADDR_NONE
-#define INADDR_NONE	-1
-#endif
-
-#ifdef  MSG_DONTWAIT
-#define NETSNMP_DONTWAIT MSG_DONTWAIT
-#else
-#define NETSNMP_DONTWAIT 0
-#endif
-
-#define WE_ARE_SERVER 0
-#define WE_ARE_CLIENT 1
-
-oid             netsnmpDTLSUDPDomain[] = { TRANSPORT_DOMAIN_DTLS_UDP_IP };
-size_t          netsnmpDTLSUDPDomain_len = OID_LENGTH(netsnmpDTLSUDPDomain);
-
-static netsnmp_tdomain dtlsudpDomain;
-
-/* this stores openssl credentials for each connection since openssl
-   can't do it for us at the moment; hopefully future versions will
-   change */
-typedef struct bio_cache_s {
-   BIO *bio;
-   BIO *write_bio;
-   struct sockaddr_in sockaddr;
-   uint32_t ipv4addr;
-   u_short portnum;
-   SSL *con;
-   SSL_CTX *ctx;
-   struct bio_cache_s *next;
-   int msgnum;
-   int sock;
-   char *securityName;
-} bio_cache;
-
-bio_cache *biocache = NULL;
-
-/*
- * cached SSL context information
- * (in theory we may want more than one per client/server but it's
- * unlikely and a CPU and memory waste unless we do need more than one)
- */
-SSL_CTX *client_ctx, *server_ctx;
-
-/* 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) {
-    bio_cache *cachep = NULL;
-    cachep = biocache;
-    while(cachep) {
-
-        if (cachep->ipv4addr == from_addr->sin_addr.s_addr &&
-            cachep->portnum == from_addr->sin_port) {
-            /* found an existing connection */
-            break;
-        }
-            
-        cachep = cachep->next;
-    }
-    return cachep;
-}
-
-static const char * _x509_get_error(int x509failvalue, const char *location) {
-    static const char *reason = NULL;
-    
-    /* XXX: use this instead: X509_verify_cert_error_string(err) */
-
-    switch (x509failvalue) {
-    case X509_V_OK:
-        reason = "X509_V_OK";
-        break;
-    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
-        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
-        break;
-    case X509_V_ERR_UNABLE_TO_GET_CRL:
-        reason = "X509_V_ERR_UNABLE_TO_GET_CRL";
-        break;
-    case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
-        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
-        break;
-    case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
-        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
-        break;
-    case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
-        reason = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
-        break;
-    case X509_V_ERR_CERT_SIGNATURE_FAILURE:
-        reason = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
-        break;
-    case X509_V_ERR_CRL_SIGNATURE_FAILURE:
-        reason = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
-        break;
-    case X509_V_ERR_CERT_NOT_YET_VALID:
-        reason = "X509_V_ERR_CERT_NOT_YET_VALID";
-        break;
-    case X509_V_ERR_CERT_HAS_EXPIRED:
-        reason = "X509_V_ERR_CERT_HAS_EXPIRED";
-        break;
-    case X509_V_ERR_CRL_NOT_YET_VALID:
-        reason = "X509_V_ERR_CRL_NOT_YET_VALID";
-        break;
-    case X509_V_ERR_CRL_HAS_EXPIRED:
-        reason = "X509_V_ERR_CRL_HAS_EXPIRED";
-        break;
-    case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
-        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
-        break;
-    case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
-        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
-        break;
-    case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
-        reason = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
-        break;
-    case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
-        reason = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
-        break;
-    case X509_V_ERR_OUT_OF_MEM:
-        reason = "X509_V_ERR_OUT_OF_MEM";
-        break;
-    case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
-        reason = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
-        break;
-    case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
-        reason = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
-        break;
-    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
-        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
-        break;
-    case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
-        reason = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
-        break;
-    case X509_V_ERR_CERT_CHAIN_TOO_LONG:
-        reason = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
-        break;
-    case X509_V_ERR_CERT_REVOKED:
-        reason = "X509_V_ERR_CERT_REVOKED";
-        break;
-    case X509_V_ERR_INVALID_CA:
-        reason = "X509_V_ERR_INVALID_CA";
-        break;
-    case X509_V_ERR_PATH_LENGTH_EXCEEDED:
-        reason = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
-        break;
-    case X509_V_ERR_INVALID_PURPOSE:
-        reason = "X509_V_ERR_INVALID_PURPOSE";
-        break;
-    case X509_V_ERR_CERT_UNTRUSTED:
-        reason = "X509_V_ERR_CERT_UNTRUSTED";
-        break;
-    case X509_V_ERR_CERT_REJECTED:
-        reason = "X509_V_ERR_CERT_REJECTED";
-        break;
-    case X509_V_ERR_SUBJECT_ISSUER_MISMATCH:
-        reason = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
-        break;
-    case X509_V_ERR_AKID_SKID_MISMATCH:
-        reason = "X509_V_ERR_AKID_SKID_MISMATCH";
-        break;
-    case X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH:
-        reason = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
-        break;
-    case X509_V_ERR_KEYUSAGE_NO_CERTSIGN:
-        reason = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
-        break;
-    case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
-        reason = "X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER";
-        break;
-    case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
-        reason = "X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION";
-        break;
-    case X509_V_ERR_KEYUSAGE_NO_CRL_SIGN:
-        reason = "X509_V_ERR_KEYUSAGE_NO_CRL_SIGN";
-        break;
-    case X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION:
-        reason = "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION";
-        break;
-    case X509_V_ERR_INVALID_NON_CA:
-        reason = "X509_V_ERR_INVALID_NON_CA";
-        break;
-    case X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED:
-        reason = "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED";
-        break;
-    case X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE:
-        reason = "X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE";
-        break;
-    case X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED:
-        reason = "X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED";
-        break;
-    case X509_V_ERR_INVALID_EXTENSION:
-        reason = "X509_V_ERR_INVALID_EXTENSION";
-        break;
-    case X509_V_ERR_INVALID_POLICY_EXTENSION:
-        reason = "X509_V_ERR_INVALID_POLICY_EXTENSION";
-        break;
-    case X509_V_ERR_NO_EXPLICIT_POLICY:
-        reason = "X509_V_ERR_NO_EXPLICIT_POLICY";
-        break;
-    case X509_V_ERR_UNNESTED_RESOURCE:
-        reason = "X509_V_ERR_UNNESTED_RESOURCE";
-        break;
-    case X509_V_ERR_APPLICATION_VERIFICATION:
-        reason = "X509_V_ERR_APPLICATION_VERIFICATION";
-    default:
-        reason = "unknown failure code";
-    }
-
-    return reason;
-}
-
-int verify_callback(int ok, X509_STORE_CTX *ctx) {
-    int err, depth;
-    char buf[1024];
-    X509 *thecert;
-
-    thecert = X509_STORE_CTX_get_current_cert(ctx);
-    err = X509_STORE_CTX_get_error(ctx);
-    depth = X509_STORE_CTX_get_error_depth(ctx);
-    
-    /* things to do: */
-
-    X509_NAME_oneline(X509_get_subject_name(thecert), buf, sizeof(buf));
-    DEBUGMSGTL(("dtlsudp_x509",
-                "Cert: %s\n", buf));
-
-
-    DEBUGMSGTL(("dtlsudp_x509",
-                " verify value: %d, depth=%d, error code=%d, error string=%s\n",
-                ok, depth, err, _x509_get_error(err, "verify callback")));
-
-    /* check if we allow self-signed certs */
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_ALLOW_SELF_SIGNED) &&
-        (X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT == err ||
-         X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN == err)) {
-        DEBUGMSGTL(("dtlsudp_x509", "  accepting a self-signed certificate\n"));
-        return 1;
-    }
-    
-    
-    DEBUGMSGTL(("dtlsudp_x509", "  returing the passed in value of %d\n", ok));
-    return(ok);
-}
-
-static void _openssl_log_error(int rc, SSL *con, const char *location) {
-    const char *reason;
-
-    if (rc == -1) {
-        int sslnum = SSL_get_error(con, rc);
-
-        switch(sslnum) {
-        case SSL_ERROR_NONE:
-            reason = "SSL_ERROR_NONE";
-            break;
-
-        case SSL_ERROR_SSL:
-            reason = "SSL_ERROR_SSL";
-            break;
-
-        case SSL_ERROR_WANT_READ:
-            reason = "SSL_ERROR_WANT_READ";
-            break;
-
-        case SSL_ERROR_WANT_WRITE:
-            reason = "SSL_ERROR_WANT_WRITE";
-            break;
-
-        case SSL_ERROR_WANT_X509_LOOKUP:
-            reason = "SSL_ERROR_WANT_X509_LOOKUP";
-            break;
-
-        case SSL_ERROR_SYSCALL:
-            reason = "SSL_ERROR_SYSCALL";
-            snmp_log(LOG_ERR, "DTLS error: %s: rc=%d, sslerror = %d (%s): system_error=%d (%s)\n",
-                     location, rc, sslnum, reason, errno, strerror(errno));
-            return;
-
-        case SSL_ERROR_ZERO_RETURN:
-            reason = "SSL_ERROR_ZERO_RETURN";
-            break;
-
-        case SSL_ERROR_WANT_CONNECT:
-            reason = "SSL_ERROR_WANT_CONNECT";
-            break;
-
-        case SSL_ERROR_WANT_ACCEPT:
-            reason = "SSL_ERROR_WANT_ACCEPT";
-            break;
-            
-        default:
-            reason = "unknown";
-        }
-
-        snmp_log(LOG_ERR, "DTLS error: %s: rc=%d, sslerror = %d (%s)\n",
-                 location, rc, sslnum, reason);
-    }
-}
-
-/* XXX: lots of malloc/state cleanup needed */
-#define DIEHERE(msg) { snmp_log(LOG_ERR, "%s\n", msg); return NULL; }
-
-static bio_cache *
-start_new_cached_connection(int sock, struct sockaddr_in *remote_addr,
-                            int we_are_client) {
-    bio_cache *cachep = NULL;
-
-    if (!sock)
-        DIEHERE("no socket passed in to start_new_cached_connection\n");
-    if (!remote_addr)
-        DIEHERE("no remote_addr passed in to start_new_cached_connection\n");
-        
-    cachep = SNMP_MALLOC_TYPEDEF(bio_cache);
-    if (!cachep)
-        return NULL;
-    
-    DEBUGMSGTL(("dtlsudp", "starting a new connection\n"));
-    cachep->next = biocache;
-    biocache = cachep;
-
-    cachep->ipv4addr = remote_addr->sin_addr.s_addr;
-    cachep->portnum = remote_addr->sin_port;
-    cachep->sock = sock;
-    memcpy(&cachep->sockaddr, remote_addr, sizeof(*remote_addr));
-
-    if (we_are_client) {
-        DEBUGMSGTL(("dtlsudp", "starting a new connection as a client to sock: %d\n", sock));
-        cachep->con = SSL_new(client_ctx);
-
-        /* XXX: session setting 735 */
-
-        /* create a bio */
-
-        cachep->bio = BIO_new(BIO_s_mem()); /* The one openssl reads from */
-        cachep->write_bio = BIO_new(BIO_s_mem()); /* openssl writes to */
-
-        BIO_set_mem_eof_return(cachep->bio, -1);
-        BIO_set_mem_eof_return(cachep->write_bio, -1);
-
-        SSL_set_bio(cachep->con, cachep->bio, cachep->write_bio);
-        SSL_set_connect_state(cachep->con);
-        
-    } else {
-        /* we're the server */
-
-        cachep->bio = BIO_new(BIO_s_mem()); /* The one openssl reads from */
-
-        if (!cachep->bio)
-            DIEHERE("failed to create the read bio");
-
-        cachep->write_bio = BIO_new(BIO_s_mem()); /* openssl writes to */
-
-        if (!cachep->write_bio) {
-            DIEHERE("failed to create the write bio");
-            BIO_free(cachep->bio);
-        }
-
-        BIO_set_mem_eof_return(cachep->bio, -1);
-        BIO_set_mem_eof_return(cachep->write_bio, -1);
-
-        cachep->con = SSL_new(server_ctx);
-
-        if (!cachep->con) {
-            BIO_free(cachep->bio);
-            BIO_free(cachep->write_bio);
-            DIEHERE("failed to create the write bio");
-        }
-        
-        /* turn on cookie exchange */
-        /* XXX: we need to only create cache entries when cookies succeed */
-        SSL_set_options(cachep->con, SSL_OP_COOKIE_EXCHANGE);
-
-        /* set the bios that openssl should read from and write to */
-        /* (and we'll do the opposite) */
-        SSL_set_bio(cachep->con, cachep->bio, cachep->write_bio);
-        SSL_set_accept_state(cachep->con);
-
-    }
-
-    return cachep;
-}
-
-static bio_cache *
-find_or_create_bio_cache(int sock, struct sockaddr_in *from_addr,
-                         int we_are_client) {
-    bio_cache *cachep = find_bio_cache(from_addr);
-    if (NULL == cachep) {
-        /* none found; need to start a new context */
-        cachep = start_new_cached_connection(sock, from_addr, we_are_client);
-        if (NULL == cachep) {
-            snmp_log(LOG_ERR, "failed to open a new dtls connection\n");
-        }
-    }
-    return cachep;
-}       
-
-/*
- * You can write something into opaque that will subsequently get passed back 
- * to your send function if you like.  For instance, you might want to
- * remember where a PDU came from, so that you can send a reply there...  
- */
-
-static int
-netsnmp_dtlsudp_recv(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int             rc = -1;
-    socklen_t       fromlen = sizeof(struct sockaddr);
-    netsnmp_addr_pair *addr_pair = NULL;
-    struct sockaddr *from;
-    netsnmp_tmStateReference *tmStateRef = NULL;
-    X509            *peer;
-
-    if (t != NULL && t->sock >= 0) {
-        /* create a tmStateRef cache for slow fill-in */
-        tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
-
-        if (tmStateRef == NULL) {
-            *opaque = NULL;
-            *olength = 0;
-            return -1;
-        }
-
-        addr_pair = &tmStateRef->addresses;
-        tmStateRef->have_addresses = 1;
-        from = (struct sockaddr *) &(addr_pair->remote_addr);
-
-	while (rc < 0) {
-#if defined(linux) && defined(IP_PKTINFO)
-            rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen, &(addr_pair->local_addr));
-#else
-            rc = recvfrom(t->sock, buf, size, NETSNMP_DONTWAIT, from, &fromlen);
-#endif /* linux && IP_PKTINFO */
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-
-        DEBUGMSGTL(("dtlsudp", "received %d raw bytes on way to dtls\n", rc));
-        if (rc < 0) {
-            DEBUGMSGTL(("dtlsudp", "recvfrom fd %d err %d (\"%s\")\n",
-                        t->sock, errno, strerror(errno)));
-            SNMP_FREE(tmStateRef);
-            return -1;
-        }
-
-        if (rc >= 0) {
-            /* now that we have the from address filled in, we can look up
-               the openssl context and have openssl read and process
-               appropriately */
-
-            /* if we don't have a cachep for this connection then
-               we're receiving something new and are the server
-               side */
-            /* XXX: allow for a SNMP client to never accept new conns? */
-            bio_cache *cachep =
-                find_or_create_bio_cache(t->sock, &addr_pair->remote_addr,
-                                         WE_ARE_SERVER);
-            if (NULL == cachep) {
-                SNMP_FREE(tmStateRef);
-                return -1;
-            }
-
-            /* write the received buffer to the memory-based input bio */
-            BIO_write(cachep->bio, buf, rc);
-
-            /* XXX: in Wes' other example we do a SSL_pending() call
-               too to ensure we're ready to read...  it's possible
-               that buffered stuff in openssl won't be caught by the
-               net-snmp select loop because it's already been pulled
-               out; need to deal with this) */
-            rc = SSL_read(cachep->con, buf, size);
-            
-            DEBUGMSGTL(("dtlsudp", "received %d decoded bytes from dtls\n", rc));
-
-            if (BIO_ctrl_pending(cachep->write_bio) > 0) {
-                /* we have outgoing data to send; probably DTLS negotation */
-
-                u_char outbuf[65535];
-                int outsize;
-                int rc2;
-                
-                /* for memory bios, we now read from openssl's write
-                   buffer (ie, the packet to go out) and send it out
-                   the udp port manually */
-                outsize = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
-                if (outsize > 0) {
-                    /* 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(cachep->sock, addr_pair->local_addr, addr_pair->remote_addr, outbuf, outsize);
-#else
-                    rc2 = sendto(t->sock, outbuf, outsize, 0, &cachep->sockaddr, sizeof(struct sockaddr));
-#endif /* linux && IP_PKTINFO */
-
-                    if (rc2 == -1) {
-                        snmp_log(LOG_ERR, "failed to send a DTLS specific packet\n");
-                    }
-                }
-            }
-
-            if (SSL_pending(cachep->con)) {
-                fprintf(stderr, "ack: got here...  pending\n");
-                exit(1);
-            }
-
-            if (rc == -1) {
-                _openssl_log_error(rc, cachep->con, "SSL_read");
-                SNMP_FREE(tmStateRef);
-
-                if (SSL_get_error(cachep->con, rc) == SSL_ERROR_WANT_READ)
-                    return -1; /* XXX: it's ok, but what's the right return? */
-                return rc;
-            }
-
-            {
-                char *str = netsnmp_udp_fmtaddr(NULL, addr_pair, sizeof(netsnmp_addr_pair));
-                DEBUGMSGTL(("dtlsudp",
-                            "recvfrom fd %d got %d bytes (from %s)\n",
-                            t->sock, rc, str));
-                free(str);
-            }
-
-            /* XXX: disallow NULL auth/encr algs in our implementations */
-            tmStateRef->transportSecurityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
-
-            /* use x509 cert to do lookup to secname if DNE in cachep yet */
-            if (!cachep->securityName) {
-                if (NULL != (peer = SSL_get_peer_certificate(cachep->con))) {
-                    X509_NAME *subname;
-                    char namebuf[1024];
-                
-                    /* we have one */
-                    subname = X509_get_subject_name(peer);
-                    X509_NAME_get_text_by_NID(subname, NID_commonName,
-                                              namebuf, sizeof(namebuf));
-                    DEBUGMSGTL(("dtlsudp", "got commonname: %s\n",
-                                namebuf));
-                    cachep->securityName = strdup(namebuf);
-                    DEBUGMSGTL(("dtlsudp", "set SecName to: %s\n",
-                                cachep->securityName));
-                } else {
-                    SNMP_FREE(tmStateRef);
-                    return -1;
-                }
-            }
-
-            /* XXX: detect and throw out overflow secname sizes rather
-               than truncating. */
-            strlcpy(tmStateRef->securityName, cachep->securityName,
-                    sizeof(tmStateRef->securityName));
-            tmStateRef->securityName[sizeof(tmStateRef->securityName)-1] = '\0';
-            tmStateRef->securityNameLen = strlen(tmStateRef->securityName);
-
-            *opaque = tmStateRef;
-            *olength = sizeof(netsnmp_tmStateReference);
-
-        } else {
-            DEBUGMSGTL(("dtlsudp", "recvfrom fd %d err %d (\"%s\")\n",
-                        t->sock, errno, strerror(errno)));
-        }
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_dtlsudp_send(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-    netsnmp_addr_pair *addr_pair = NULL;
-    struct sockaddr *to = NULL;
-    bio_cache *cachep = NULL;
-    netsnmp_tmStateReference *tmStateRef = NULL;
-    u_char outbuf[65535];
-    
-    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_addr_pair))
-            addr_pair = (netsnmp_addr_pair *) (t->data);
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(netsnmp_addr_pair)) {
-        addr_pair = (netsnmp_addr_pair *) (t->data);
-    }
-
-    if (NULL == addr_pair) {
-        snmp_log(LOG_ERR, "dtlsudp_send: can't get address to send to\n");
-        return -1;
-    }
-
-    to = (struct sockaddr *) &(addr_pair->remote_addr);
-
-    if (NULL == to || NULL == t || t->sock <= 0) {
-        snmp_log(LOG_ERR, "invalid netsnmp_dtlsudp_send usage\n");
-        return -1;
-    }
-
-    /* we're always a client if we're sending to something unknown yet */
-    if (NULL ==
-        (cachep = find_or_create_bio_cache(t->sock, &addr_pair->remote_addr,
-                                           WE_ARE_CLIENT)))
-        return -1;
-
-    if (!cachep->securityName && tmStateRef && tmStateRef->securityNameLen > 0)
-        cachep->securityName = strdup(tmStateRef->securityName);
-        
-        
-    {
-        char *str = netsnmp_udp_fmtaddr(NULL, (void *) addr_pair,
-                                        sizeof(netsnmp_addr_pair));
-        DEBUGMSGTL(("dtlsudp", "send %d bytes from %p to %s on fd %d\n",
-                    size, buf, str, t->sock));
-        free(str);
-    }
-    rc = SSL_write(cachep->con, buf, size);
-    if (rc < 0) {
-        _openssl_log_error(rc, cachep->con, "SSL_write");
-    }
-
-    /* for memory bios, we now read from openssl's write buffer (ie,
-       the packet to go out) and send it out the udp port manually */
-    rc = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
-    if (rc <= 0) {
-        /* 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_udp_sendto(cachep->sock, &cachep->sockaddr  remote  addr_pair ? &(addr_pair->local_addr) : NULL, to, outbuf, rc);
-#else
-    rc = sendto(t->sock, outbuf, rc, 0, &cachep->sockaddr, sizeof(struct sockaddr));
-#endif /* linux && IP_PKTINFO */
-
-    return rc;
-}
-
-
-
-static int
-netsnmp_dtlsudp_close(netsnmp_transport *t)
-{
-    int rc = -1;
-    /* XXX: issue a proper dtls closure notification(s) */
-    if (t->sock >= 0) {
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-    }
-    return rc;
-}
-
-/*
- * 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_dtlsudp_transport(struct sockaddr_in *addr, int local)
-{
-    netsnmp_transport *t = NULL;
-    int             rc = 0;
-    char           *str = NULL;
-    char           *client_socket = NULL;
-    netsnmp_addr_pair addr_pair;
-
-    if (addr == NULL || addr->sin_family != AF_INET) {
-        return NULL;
-    }
-
-    memset(&addr_pair, 0, sizeof(netsnmp_addr_pair));
-    memcpy(&(addr_pair.remote_addr), addr, sizeof(struct sockaddr_in));
-
-    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
-    if (t == NULL) {
-        return NULL;
-    }
-
-    str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
-                                 sizeof(netsnmp_addr_pair));
-    DEBUGMSGTL(("dtlsudp", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
-
-    t->domain = netsnmpDTLSUDPDomain;
-    t->domain_length = netsnmpDTLSUDPDomain_len;
-
-    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
-    DEBUGMSGTL(("dtlsudp", "openned socket %d as local=%d\n", t->sock,
-                local));
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    /* XXX: Potentially set sock opts here (SO_SNDBUF/SO_RCV_BUF) */
-    /* XXX: and buf size */
-    _netsnmp_udp_sockopt_set(t->sock, local);
-
-    if (local) {
-        /*
-         * 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);
-        if (t->local == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->local, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->local[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->local[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
-        t->local_length = 6;
-
-#if defined(linux) && defined(IP_PKTINFO)
-        { 
-            int sockopt = 1;
-            if (setsockopt(t->sock, SOL_IP, IP_PKTINFO, &sockopt, sizeof sockopt) == -1) {
-                DEBUGMSGTL(("dtlsudp", "couldn't set IP_PKTINFO: %s\n",
-                    strerror(errno)));
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-            DEBUGMSGTL(("dtlsudp", "set IP_PKTINFO\n"));
-        }
-#endif
-        rc = bind(t->sock, (struct sockaddr *) addr,
-                  sizeof(struct sockaddr));
-        if (rc != 0) {
-            netsnmp_dtlsudp_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->data = NULL;
-        t->data_length = 0;
-    } else {
-        /*
-         * This is a client session.  If we've been given a
-         * client address to send from, then bind to that.
-         * Otherwise the send will use "something sensible".
-         */
-        client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                              NETSNMP_DS_LIB_CLIENT_ADDR);
-        if (client_socket) {
-            struct sockaddr_in client_addr;
-            netsnmp_sockaddr_in2(&client_addr, client_socket, NULL);
-            addr_pair.local_addr = client_addr.sin_addr;
-            client_addr.sin_port = 0;
-            DEBUGMSGTL(("dtlsudp", "binding socket: %d\n", t->sock));
-            rc = bind(t->sock, (struct sockaddr *)&client_addr,
-                  sizeof(struct sockaddr));
-            if ( rc != 0 ) {
-                DEBUGMSGTL(("dtlsudp", "failed to bind for clientaddr: %d %s\n",
-                            errno, strerror(errno)));
-                netsnmp_dtlsudp_close(t);
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-        }
-
-        str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
-                 sizeof(netsnmp_addr_pair));
-        DEBUGMSGTL(("dtlsudp", "client open %s\n", str));
-        free(str);
-
-        /*
-         * Save the (remote) address in the
-         * transport-specific data pointer for later use by netsnmp_dtlsudp_send.
-         */
-
-        t->data = SNMP_MALLOC_TYPEDEF(netsnmp_addr_pair);
-        t->remote = (u_char *)malloc(6);
-        if (t->data == NULL || t->remote == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->remote, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->remote[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->remote[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
-        t->remote_length = 6;
-        memcpy(t->data, &addr_pair, sizeof(netsnmp_addr_pair));
-        t->data_length = sizeof(netsnmp_addr_pair);
-
-        /* 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");
-
-    }
-
-    /*
-     * 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;
-    t->f_accept   = NULL;
-    t->f_fmtaddr  = netsnmp_udp_fmtaddr;
-    t->flags = NETSNMP_TRANSPORT_FLAG_TUNNELED;
-
-    return t;
-}
-
-
-void
-netsnmp_dtlsudp_agent_config_tokens_register(void)
-{
-}
-
-
-
-
-netsnmp_transport *
-netsnmp_dtlsudp_create_tstring(const char *str, int local,
-			   const char *default_target)
-{
-    struct sockaddr_in addr;
-
-    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
-        return netsnmp_dtlsudp_transport(&addr, local);
-    } else {
-        return NULL;
-    }
-}
-
-
-netsnmp_transport *
-netsnmp_dtlsudp_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_in addr;
-
-    if (o_len == 6) {
-        unsigned short porttmp = (o[4] << 8) + o[5];
-        addr.sin_family = AF_INET;
-        memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4);
-        addr.sin_port = htons(porttmp);
-        return netsnmp_dtlsudp_transport(&addr, local);
-    }
-    return NULL;
-}
-
-#define LOGANDDIE(msg) { snmp_log(LOG_ERR, "%s\n", msg); return 0; }
-
-static int have_done_init = 0;
-
-static int
-dtlsudp_bootstrap(int majorid, int minorid, void *serverarg, void *clientarg) {
-    const char *certfile;
-    EVP_PKEY *key = NULL;
-    X509 *cert = NULL;
-    BIO *keybio = NULL;
-
-    /* don't do this more than once */
-    if (have_done_init)
-        return 0;
-    have_done_init = 1;
-
-    /***********************************************************************
-     * Set up the client context
-     */
-    client_ctx = SSL_CTX_new(DTLSv1_client_method());
-    if (!client_ctx) {
-        LOGANDDIE("can't create a new context");
-    }
-    SSL_CTX_set_read_ahead (client_ctx, 1); /* Required for DTLS */
-        
-    SSL_CTX_set_verify(client_ctx,
-                       SSL_VERIFY_PEER|
-                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
-                       SSL_VERIFY_CLIENT_ONCE,
-                       &verify_callback);
-
-    keybio = BIO_new(BIO_s_file());
-    if (!keybio)
-        LOGANDDIE ("error creating bio for reading public key");
-
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_CLIENT_PUB);
-
-    DEBUGMSGTL(("dtlsudp", "using public key: %s\n", certfile));
-    if (BIO_read_filename(keybio, certfile) <=0)
-        LOGANDDIE ("error reading public key");
-
-    cert = PEM_read_bio_X509_AUX(keybio, NULL, NULL, NULL);
-    if (!cert)
-        LOGANDDIE("failed to load public key");
-
-    /* XXX: mem leak on previous keybio? */
-
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_CLIENT_PRIV);
-
-    keybio = BIO_new(BIO_s_file());
-    if (!keybio)
-        LOGANDDIE ("error creating bio for reading private key");
-
-    DEBUGMSGTL(("dtlsudp", "using private key: %s\n", certfile));
-    if (!keybio ||
-        BIO_read_filename(keybio, certfile) <= 0)
-        LOGANDDIE ("error reading private key");
-
-    key = PEM_read_bio_PrivateKey(keybio, NULL, NULL, NULL);
-    
-    if (!key)
-        LOGANDDIE("failed to load private key");
-
-
-    if (SSL_CTX_use_certificate(client_ctx, cert) <= 0)
-        LOGANDDIE("failed to set the certificate to use");
-
-    if (SSL_CTX_use_PrivateKey(client_ctx, key) <= 0)
-        LOGANDDIE("failed to set the private key to use");
-
-    if (!SSL_CTX_check_private_key(client_ctx))
-        LOGANDDIE("public and private keys incompatible");
-    
-
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_SERVER_CERTS);
-
-    /* XXX: also need to match individual cert to indiv. host */
-
-    if(! SSL_CTX_load_verify_locations(client_ctx, certfile, NULL)) {
-        LOGANDDIE("failed to load truststore");
-        /* Handle failed load here */
-    }
-
-    if (!SSL_CTX_set_default_verify_paths(client_ctx)) {
-        LOGANDDIE ("failed to set default verify path");
-    }
-
-    /***********************************************************************
-     * Set up the server context
-     */
-    /* setting up for ssl */
-    server_ctx = SSL_CTX_new(DTLSv1_server_method());
-    if (!server_ctx) {
-        LOGANDDIE("can't create a new context");
-    }
-
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_SERVER_PUB);
-
-    if (SSL_CTX_use_certificate_file(server_ctx, certfile,
-                                     SSL_FILETYPE_PEM) < 1) {
-        LOGANDDIE("faild to load cert");
-    }
-    
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_SERVER_PRIV);
-
-    if (SSL_CTX_use_PrivateKey_file(server_ctx, certfile, SSL_FILETYPE_PEM) < 1) {
-        LOGANDDIE("faild to load key");
-    }
-
-    SSL_CTX_set_read_ahead(server_ctx, 1);
-
-
-    certfile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                     NETSNMP_DS_LIB_X509_CLIENT_CERTS);
-    if(! SSL_CTX_load_verify_locations(server_ctx, certfile, NULL)) {
-        LOGANDDIE("failed to load truststore");
-        /* Handle failed load here */
-    }
-
-    SSL_CTX_set_verify(server_ctx,
-                       SSL_VERIFY_PEER|
-                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
-                       SSL_VERIFY_CLIENT_ONCE,
-                       &verify_callback);
-
-    return 0;
-}
-
-
-void
-netsnmp_dtlsudp_ctor(void)
-{
-    DEBUGMSGTL(("dtlsudp", "registering DTLS constructor\n"));
-
-    /* config settings */
-
-    /* bootstrap ssl since we'll need it */
-    netsnmp_init_openssl();
-
-    /*
-     * for the client
-     */
-
-    /* pem file of valid server CERT CAs */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerCerts",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_SERVER_CERTS);
-
-    /* the public client cert to authenticate with */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientPub",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_CLIENT_PUB);
-
-    /* the private client cert to authenticate with */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientPriv",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_CLIENT_PRIV);
-
-    /*
-     * for the server
-     */
-
-    /* The list of valid client keys to accept (or CAs I think) */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ClientCerts",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_CLIENT_CERTS);
-
-    /* The X509 server key to use */
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerPub",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_SERVER_PUB);
-
-    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defX509ServerPriv",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_X509_SERVER_PRIV);
-
-    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "AllowSelfSignedX509",
-                               NETSNMP_DS_LIBRARY_ID,
-                               NETSNMP_DS_LIB_ALLOW_SELF_SIGNED);
-
-    /*
-     * register our boot-strapping needs
-     */
-    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
-			   SNMP_CALLBACK_POST_READ_CONFIG,
-			   dtlsudp_bootstrap, NULL);
-
-    dtlsudpDomain.name = netsnmpDTLSUDPDomain;
-    dtlsudpDomain.name_length = netsnmpDTLSUDPDomain_len;
-    dtlsudpDomain.prefix = (const char**)calloc(2, sizeof(char *));
-    dtlsudpDomain.prefix[0] = "dtlsudp";
-
-    dtlsudpDomain.f_create_from_tstring     = NULL;
-    dtlsudpDomain.f_create_from_tstring_new = netsnmp_dtlsudp_create_tstring;
-    dtlsudpDomain.f_create_from_ostring     = netsnmp_dtlsudp_create_ostring;
-
-    netsnmp_tdomain_register(&dtlsudpDomain);
-}
diff --git a/snmplib/snmpUDPDomain.c b/snmplib/snmpUDPDomain.c
deleted file mode 100644
index 18caee5..0000000
--- a/snmplib/snmpUDPDomain.c
+++ /dev/null
@@ -1,1332 +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 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.
- */
-
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <errno.h>
-
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-
-#if HAVE_DMALLOC_H
-#include <dmalloc.h>
-#endif
-
-#include <net-snmp/types.h>
-#include <net-snmp/output_api.h>
-#include <net-snmp/config_api.h>
-
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/system.h>
-#include <net-snmp/library/tools.h>
-
-#ifndef INADDR_NONE
-#define INADDR_NONE	-1
-#endif
-
-#ifdef  MSG_DONTWAIT
-#define NETSNMP_DONTWAIT MSG_DONTWAIT
-#else
-#define NETSNMP_DONTWAIT 0
-#endif
-
-static netsnmp_tdomain udpDomain;
-
-typedef struct netsnmp_udp_addr_pair_s {
-    struct sockaddr_in remote_addr;
-    struct in_addr local_addr;
-} netsnmp_udp_addr_pair;
-
-/*
- * not static, since snmpUDPIPv6Domain needs it, but not public, either.
- * (ie don't put it in a public header.)
- */
-void _netsnmp_udp_sockopt_set(int fd, int server);
-int
-netsnmp_sockaddr_in2(struct sockaddr_in *addr,
-                     const char *inpeername, const char *default_target);
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-char *
-netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    netsnmp_udp_addr_pair *addr_pair = NULL;
-    struct hostent *host;
-
-    if (data != NULL && len == sizeof(netsnmp_udp_addr_pair)) {
-	addr_pair = (netsnmp_udp_addr_pair *) data;
-    } else if (t != NULL && t->data != NULL) {
-	addr_pair = (netsnmp_udp_addr_pair *) t->data;
-    }
-
-    if (addr_pair == NULL) {
-        return strdup("UDP: unknown");
-    } else {
-        struct sockaddr_in *to = NULL;
-	char tmp[64];
-        to = (struct sockaddr_in *) &(addr_pair->remote_addr);
-        if (to == NULL) {
-            sprintf(tmp, "UDP: unknown->[%s]",
-                    inet_ntoa(addr_pair->local_addr));
-        } else if ( t && t->flags & NETSNMP_TRANSPORT_FLAG_HOSTNAME ) {
-            host = gethostbyaddr((char *)&to->sin_addr, 4, AF_INET);
-            return (host ? strdup(host->h_name) : NULL); 
-        } else {
-            sprintf(tmp, "UDP: [%s]:%hu->",
-                    inet_ntoa(to->sin_addr), ntohs(to->sin_port));
-            sprintf(tmp + strlen(tmp), "[%s]", inet_ntoa(addr_pair->local_addr));
-        }
-        return strdup(tmp);
-    }
-}
-
-
-
-#if (defined(linux) && defined(IP_PKTINFO)) \
-    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
-                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
-#if  defined(linux) && defined(IP_PKTINFO)
-# define netsnmp_dstaddr(x) (&(((struct in_pktinfo *)(CMSG_DATA(x)))->ipi_addr))
-#elif defined(IP_RECVDSTADDR)
-# define netsnmp_dstaddr(x) (&(struct cmsghr *)(CMSG_DATA(x)))
-#endif
-
-int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from, socklen_t *fromlen, struct in_addr *dstip)
-{
-    int r;
-    struct iovec iov[1];
-#if   defined(linux) && defined(IP_PKTINFO)
-    char cmsg[CMSG_SPACE(sizeof(struct in_pktinfo))];
-#elif defined(IP_RECVDSTADDR)
-    char cmsg[CMSG_SPACE(sizeof(struct in_addr))];
-#endif
-    struct cmsghdr *cmsgptr;
-    struct msghdr msg;
-
-    iov[0].iov_base = buf;
-    iov[0].iov_len = len;
-
-    memset(&msg, 0, sizeof msg);
-    msg.msg_name = from;
-    msg.msg_namelen = *fromlen;
-    msg.msg_iov = iov;
-    msg.msg_iovlen = 1;
-    msg.msg_control = &cmsg;
-    msg.msg_controllen = sizeof(cmsg);
-
-    r = recvmsg(s, &msg, NETSNMP_DONTWAIT);
-
-    if (r == -1) {
-        return -1;
-    }
-    
-    DEBUGMSGTL(("netsnmp_udp", "got source addr: %s\n", inet_ntoa(((struct sockaddr_in *)from)->sin_addr)));
-#if   defined(linux) && defined(IP_PKTINFO)
-    for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
-        if (cmsgptr->cmsg_level == SOL_IP && cmsgptr->cmsg_type == IP_PKTINFO) {
-            memcpy((void *) dstip, netsnmp_dstaddr(cmsgptr), sizeof(struct in_addr));
-            DEBUGMSGTL(("netsnmp_udp", "got destination (local) addr %s\n",
-                    inet_ntoa(*dstip)));
-        }
-    }
-#elif defined(IP_RECVDSTADDR)
-    for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
-        if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_RECVDSTADDR) {
-            memcpy((void *) dstip, CMSG_DATA(cmsgptr), sizeof(struct in_addr));
-            DEBUGMSGTL(("netsnmp_udp", "got destination (local) addr %s\n",
-                    inet_ntoa(*dstip)));
-        }
-    }
-#endif
-    return r;
-}
-
-#if   defined(linux) && defined(IP_PKTINFO)
-int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
-			void *data, int len)
-{
-    struct iovec iov = { data, len };
-    struct {
-        struct cmsghdr cm;
-        struct in_pktinfo ipi;
-    } cmsg;
-    struct msghdr m;
-
-    memset(&cmsg, 0, sizeof(cmsg));
-    cmsg.cm.cmsg_len = sizeof(struct cmsghdr) + sizeof(struct in_pktinfo);
-    cmsg.cm.cmsg_level = SOL_IP;
-    cmsg.cm.cmsg_type = IP_PKTINFO;
-    cmsg.ipi.ipi_ifindex = 0;
-    cmsg.ipi.ipi_spec_dst.s_addr = (srcip ? srcip->s_addr : INADDR_ANY);
-
-    m.msg_name		= remote;
-    m.msg_namelen	= sizeof(struct sockaddr_in);
-    m.msg_iov		= &iov;
-    m.msg_iovlen	= 1;
-    m.msg_control	= &cmsg;
-    m.msg_controllen	= sizeof(cmsg);
-    m.msg_flags		= 0;
-
-    return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
-}
-#elif defined(IP_RECVDSTADDR)
-int netsnmp_udp_sendto(int fd, struct in_addr *srcip, struct sockaddr *remote,
-			void *data, int len)
-{
-    struct iovec iov = { data, len };
-    struct cmsghdr *cm;
-    struct in_addr ip;
-    struct msghdr m;
-    char   cmbuf[CMSG_SPACE(sizeof(struct in_addr))];
-
-    memset(&m, 0, sizeof(struct msghdr));
-    m.msg_name		= remote;
-    m.msg_namelen	= sizeof(struct sockaddr_in);
-    m.msg_iov		= &iov;
-    m.msg_iovlen	= 1;
-    m.msg_control	= cmbuf;
-    m.msg_controllen	= sizeof(cmbuf);
-    m.msg_flags		= 0;
-
-    cm = CMSG_FIRSTHDR(&m);
-    cm->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
-    cm->cmsg_level = IPPROTO_IP;
-    cm->cmsg_type = IP_SENDSRCADDR;
-
-    memcpy((struct in_addr *)CMSG_DATA(cm), srcip, sizeof(struct in_addr));
-
-    return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
-}
-#endif
-#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
-
-/*
- * You can write something into opaque that will subsequently get passed back 
- * to your send function if you like.  For instance, you might want to
- * remember where a PDU came from, so that you can send a reply there...  
- */
-
-static int
-netsnmp_udp_recv(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int             rc = -1;
-    socklen_t       fromlen = sizeof(struct sockaddr);
-    netsnmp_udp_addr_pair *addr_pair = NULL;
-    struct sockaddr *from;
-
-    if (t != NULL && t->sock >= 0) {
-        addr_pair = (netsnmp_udp_addr_pair *) malloc(sizeof(netsnmp_udp_addr_pair));
-        if (addr_pair == NULL) {
-            *opaque = NULL;
-            *olength = 0;
-            return -1;
-        } else {
-            memset(addr_pair, 0, sizeof(netsnmp_udp_addr_pair));
-            from = (struct sockaddr *) &(addr_pair->remote_addr);
-        }
-
-	while (rc < 0) {
-#if (defined(linux) && defined(IP_PKTINFO)) \
-    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
-                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
-            rc = netsnmp_udp_recvfrom(t->sock, buf, size, from, &fromlen, &(addr_pair->local_addr));
-#else
-            rc = recvfrom(t->sock, buf, size, NETSNMP_DONTWAIT, from, &fromlen);
-#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-
-        if (rc >= 0) {
-            char *str = netsnmp_udp_fmtaddr(NULL, addr_pair, sizeof(netsnmp_udp_addr_pair));
-            DEBUGMSGTL(("netsnmp_udp",
-			"recvfrom fd %d got %d bytes (from %s)\n",
-			t->sock, rc, str));
-            free(str);
-        } else {
-            DEBUGMSGTL(("netsnmp_udp", "recvfrom fd %d err %d (\"%s\")\n",
-                        t->sock, errno, strerror(errno)));
-        }
-        *opaque = (void *)addr_pair;
-        *olength = sizeof(netsnmp_udp_addr_pair);
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_udp_send(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-    netsnmp_udp_addr_pair *addr_pair = NULL;
-    struct sockaddr *to = NULL;
-
-    if (opaque != NULL && *opaque != NULL &&
-        *olength == sizeof(netsnmp_udp_addr_pair)) {
-        addr_pair = (netsnmp_udp_addr_pair *) (*opaque);
-    } else if (t != NULL && t->data != NULL &&
-                t->data_length == sizeof(netsnmp_udp_addr_pair)) {
-        addr_pair = (netsnmp_udp_addr_pair *) (t->data);
-    }
-
-    to = (struct sockaddr *) &(addr_pair->remote_addr);
-
-    if (to != NULL && t != NULL && t->sock >= 0) {
-        char *str = netsnmp_udp_fmtaddr(NULL, (void *) addr_pair,
-                                        sizeof(netsnmp_udp_addr_pair));
-        DEBUGMSGTL(("netsnmp_udp", "send %d bytes from %p to %s on fd %d\n",
-                    size, buf, str, t->sock));
-        free(str);
-	while (rc < 0) {
-#if (defined(linux) && defined(IP_PKTINFO)) \
-    || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
-                               && HAVE_STRUCT_MSGHDR_MSG_FLAGS
-            rc = netsnmp_udp_sendto(t->sock, addr_pair ? &(addr_pair->local_addr) : NULL, to, buf, size);
-#else
-            rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
-#endif /* (linux && IP_PKTINFO) || IP_RECVDSTADDR && HAVE_STRUCT_MSGHDR_... */
-	    if (rc < 0 && errno != EINTR) {
-                DEBUGMSGTL(("netsnmp_udp", "sendto error, rc %d (errno %d)\n",
-                            rc, errno));
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_udp_close(netsnmp_transport *t)
-{
-    int rc = -1;
-    if (t->sock >= 0) {
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-    }
-    return rc;
-}
-
-/*
- * find largest possible buffer between current size and specified size.
- *
- * Try to maximize the current buffer of type "optname"
- * to the maximum allowable size by the OS (as close to
- * size as possible)
- */
-static int
-_sock_buffer_maximize(int s, int optname, const char *buftype, int size)
-{
-    int            curbuf = 0;
-    socklen_t      curbuflen = sizeof(int);
-    int            lo, mid, hi;
-
-    /*
-     * First we need to determine our current buffer
-     */
-    if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
-                    &curbuflen) == 0) 
-            && (curbuflen == sizeof(int))) {
-
-        DEBUGMSGTL(("verbose:socket:buffer:max", "Current %s is %d\n",
-                    buftype, curbuf));
-
-        /*
-         * Let's not be stupid ... if we were asked for less than what we
-         * already have, then forget about it
-         */
-        if (size <= curbuf) {
-            DEBUGMSGTL(("verbose:socket:buffer:max",
-                        "Requested %s <= current buffer\n", buftype));
-            return curbuf;
-        }
-
-        /*
-         * Do a binary search the optimal buffer within 1k of the point of
-         * failure. This is rather bruteforce, but simple
-         */
-        hi = size;
-        lo = curbuf;
-
-        while (hi - lo > 1024) {
-            mid = (lo + hi) / 2;
-            if (setsockopt(s, SOL_SOCKET, optname, (void *) &mid,
-                        sizeof(int)) == 0) {
-                lo = mid; /* Success: search between mid and hi */
-            } else {
-                hi = mid; /* Failed: search between lo and mid */
-            }
-        }
-
-        /*
-         * Now print if this optimization helped or not
-         */
-        if (getsockopt(s,SOL_SOCKET, optname, (void *) &curbuf,
-                    &curbuflen) == 0) {
-            DEBUGMSGTL(("socket:buffer:max", 
-                        "Maximized %s: %d\n",buftype, curbuf));
-        } 
-    } else {
-        /*
-         * There is really not a lot we can do anymore.
-         * If the OS doesn't give us the current buffer, then what's the 
-         * point in trying to make it better
-         */
-        DEBUGMSGTL(("socket:buffer:max", "Get %s failed ... giving up!\n",
-                    buftype));
-        curbuf = -1;
-    }
-
-    return curbuf;
-}
-
-
-static const char *
-_sock_buf_type_get(int optname, int local)
-{
-    if (optname == SO_SNDBUF) {
-        if (local)
-            return "server send buffer";
-        else
-            return "client send buffer";
-    } else if (optname == SO_RCVBUF) {
-        if (local)
-            return "server receive buffer";
-        else
-            return "client receive buffer";
-    }
-
-    return "unknown buffer";
-}
-
-/*
- *
- * Get the requested buffersize, based on
- * - sockettype : client (local = 0) or server (local = 1) 
- * - buffertype : send (optname = SO_SNDBUF) or recv (SO_RCVBUF)
- *
- * In case a compile time buffer was specified, then use that one
- * if there was no runtime configuration override
- */
-static int
-_sock_buffer_size_get(int optname, int local, const char **buftype)
-{
-    int size;
-
-    if (NULL != buftype)
-        *buftype = _sock_buf_type_get(optname, local);
-
-    if (optname == SO_SNDBUF) {
-        if (local) {
-            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
-                    NETSNMP_DS_LIB_SERVERSENDBUF);
-#ifdef NETSNMP_DEFAULT_SERVER_SEND_BUF
-            if (size <= 0)
-               size = NETSNMP_DEFAULT_SERVER_SEND_BUF;
-#endif
-        } else {
-            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
-                    NETSNMP_DS_LIB_CLIENTSENDBUF);
-#ifdef NETSNMP_DEFAULT_CLIENT_SEND_BUF
-            if (size <= 0)
-               size = NETSNMP_DEFAULT_CLIENT_SEND_BUF;
-#endif
-        }
-    } else if (optname == SO_RCVBUF) {
-        if (local) {
-            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
-                    NETSNMP_DS_LIB_SERVERRECVBUF);
-#ifdef NETSNMP_DEFAULT_SERVER_RECV_BUF
-            if (size <= 0)
-               size = NETSNMP_DEFAULT_SERVER_RECV_BUF;
-#endif
-        } else {
-            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
-                    NETSNMP_DS_LIB_CLIENTRECVBUF);
-#ifdef NETSNMP_DEFAULT_CLIENT_RECV_BUF
-            if (size <= 0)
-               size = NETSNMP_DEFAULT_CLIENT_RECV_BUF;
-#endif
-        }
-    } else {
-        size = 0;
-    }
-
-    DEBUGMSGTL(("socket:buffer", "Requested %s is %d\n",
-                (buftype) ? *buftype : "unknown buffer", size));
-
-    return(size);
-}
-
-/*
- * set socket buffer size
- *
- * @param ss     : socket
- * @param optname: SO_SNDBUF or SO_RCVBUF
- * @param local  : 1 for server, 0 for client
- * @param reqbuf : requested size, or 0 for default
- *
- * @retval    -1 : error
- * @retval    >0 : new buffer size
- */
-int
-netsnmp_sock_buffer_set(int s, int optname, int local, int size)
-{
-#if ! defined(SO_SNDBUF) && ! defined(SO_RCVBUF)
-    DEBUGMSGTL(("socket:buffer", "Changing socket buffer is not supported\n"));
-    return -1;
-#else
-    const char     *buftype;
-    int            curbuf = 0;
-    socklen_t      curbuflen = sizeof(int);
-
-#   ifndef  SO_SNDBUF
-    if (SO_SNDBUF == optname) {
-        DEBUGMSGTL(("socket:buffer",
-                    "Changing socket send buffer is not supported\n"));
-        return -1;
-    }
-#   endif                          /*SO_SNDBUF */
-#   ifndef  SO_RCVBUF
-    if (SO_RCVBUF == optname) {
-        DEBUGMSGTL(("socket:buffer",
-                    "Changing socket receive buffer is not supported\n"));
-        return -1;
-    }
-#   endif                          /*SO_RCVBUF */
-
-    /*
-     * What is the requested buffer size ?
-     */
-    if (0 == size)
-        size = _sock_buffer_size_get(optname, local, &buftype);
-    else {
-        buftype = _sock_buf_type_get(optname, local);
-        DEBUGMSGT(("verbose:socket:buffer", "Requested %s is %d\n",
-                   buftype, size));
-    }
-
-    if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
-                    &curbuflen) == 0) 
-        && (curbuflen == sizeof(int))) {
-        
-        DEBUGMSGT(("verbose:socket:buffer", "Original %s is %d\n",
-                   buftype, curbuf));
-        if (curbuf >= size) {
-            DEBUGMSGT(("verbose:socket:buffer",
-                      "New %s size is smaller than original!\n", buftype));
-        }
-    }
-
-    /*
-     * If the buffersize was not specified or it was a negative value
-     * then don't change the OS buffers at all
-     */
-    if (size <= 0) {
-       DEBUGMSGT(("socket:buffer",
-                    "%s not valid or not specified; using OS default(%d)\n",
-                    buftype,curbuf));
-       return curbuf;
-    }
-
-    /*
-     * Try to set the requested send buffer
-     */
-    if (setsockopt(s, SOL_SOCKET, optname, (void *) &size, sizeof(int)) == 0) {
-        /*
-         * Because some platforms lie about the actual buffer that has been 
-         * set (Linux will always say it worked ...), we print some 
-         * diagnostic output for debugging
-         */
-        DEBUGIF("socket:buffer") {
-            DEBUGMSGT(("socket:buffer", "Set %s to %d\n",
-                       buftype, size));
-            if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
-                            &curbuflen) == 0) 
-                    && (curbuflen == sizeof(int))) {
-
-                DEBUGMSGT(("verbose:socket:buffer",
-                           "Now %s is %d\n", buftype, curbuf));
-            }
-        }
-        /*
-         * If the new buffer is smaller than the size we requested, we will
-         * try to increment the new buffer with 1k increments 
-         * (this will sometime allow us to reach a more optimal buffer.)
-         *   For example : On Solaris, if the max OS buffer is 100k and you
-         *   request 110k, you end up with the default 8k :-(
-         */
-        if (curbuf < size) {
-            curbuf = _sock_buffer_maximize(s, optname, buftype, size);
-            if(-1 != curbuf)
-                size = curbuf;
-        }
-
-    } else {
-        /*
-         * Obviously changing the buffer failed, most like like because we 
-         * requested a buffer greater than the OS limit.
-         * Therefore we need to search for an optimal buffer that is close
-         * enough to the point of failure.
-         * This will allow us to reach a more optimal buffer.
-         *   For example : On Solaris, if the max OS buffer is 100k and you 
-         *   request 110k, you end up with the default 8k :-(
-         *   After this quick seach we would get 1k close to 100k (the max)
-         */
-        DEBUGMSGTL(("socket:buffer", "couldn't set %s to %d\n",
-                    buftype, size));
-
-        curbuf = _sock_buffer_maximize(s, optname, buftype, size);
-        if(-1 != curbuf)
-            size = curbuf;
-    }
-
-    return size;
-#endif
-}
-
-/*
- * Open a UDP-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_udp_transport(struct sockaddr_in *addr, int local)
-{
-    netsnmp_transport *t = NULL;
-    int             rc = 0;
-    char           *str = NULL;
-    char           *client_socket = NULL;
-    netsnmp_udp_addr_pair addr_pair;
-
-    if (addr == NULL || addr->sin_family != AF_INET) {
-        return NULL;
-    }
-
-    memset(&addr_pair, 0, sizeof(netsnmp_udp_addr_pair));
-    memcpy(&(addr_pair.remote_addr), addr, sizeof(struct sockaddr_in));
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        return NULL;
-    }
-
-    str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
-                                 sizeof(netsnmp_udp_addr_pair));
-    DEBUGMSGTL(("netsnmp_udp", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmpUDPDomain;
-    t->domain_length = netsnmpUDPDomain_len;
-
-    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    _netsnmp_udp_sockopt_set(t->sock, local);
-
-    if (local) {
-        /*
-         * 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);
-        if (t->local == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->local, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->local[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->local[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
-        t->local_length = 6;
-
-#if defined(linux) && defined(IP_PKTINFO)
-        { 
-            int sockopt = 1;
-            if (setsockopt(t->sock, SOL_IP, IP_PKTINFO, &sockopt, sizeof sockopt) == -1) {
-                DEBUGMSGTL(("netsnmp_udp", "couldn't set IP_PKTINFO: %s\n",
-                    strerror(errno)));
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-            DEBUGMSGTL(("netsnmp_udp", "set IP_PKTINFO\n"));
-        }
-#elif defined(IP_RECVDSTADDR)
-        { 
-            int sockopt = 1;
-            if (setsockopt(t->sock, IPPROTO_IP, IP_RECVDSTADDR, &sockopt, sizeof sockopt) == -1) {
-                DEBUGMSGTL(("netsnmp_udp", "couldn't set IP_RECVDSTADDR: %s\n",
-                    strerror(errno)));
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-            DEBUGMSGTL(("netsnmp_udp", "set IP_RECVDSTADDR\n"));
-        }
-#endif
-        rc = bind(t->sock, (struct sockaddr *) addr,
-                  sizeof(struct sockaddr));
-        if (rc != 0) {
-            netsnmp_udp_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->data = NULL;
-        t->data_length = 0;
-    } else {
-        /*
-         * This is a client session.  If we've been given a
-         * client address to send from, then bind to that.
-         * Otherwise the send will use "something sensible".
-         */
-        client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                              NETSNMP_DS_LIB_CLIENT_ADDR);
-        if (client_socket) {
-            struct sockaddr_in client_addr;
-            netsnmp_sockaddr_in2(&client_addr, client_socket, NULL);
-            addr_pair.local_addr = client_addr.sin_addr;
-            rc = bind(t->sock, (struct sockaddr *)&client_addr,
-                  sizeof(struct sockaddr));
-            if ( rc != 0 ) {
-                DEBUGMSGTL(("netsnmp_udp", "failed to bind for clientaddr: %d %s\n",
-                            errno, strerror(errno)));
-                netsnmp_udp_close(t);
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-        }
-
-        str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
-                 sizeof(netsnmp_udp_addr_pair));
-        DEBUGMSGTL(("netsnmp_udp", "client open %s\n", str));
-        free(str);
-
-        /*
-         * Save the (remote) address in the
-         * transport-specific data pointer for later use by netsnmp_udp_send.
-         */
-
-        t->data = malloc(sizeof(netsnmp_udp_addr_pair));
-        t->remote = (u_char *)malloc(6);
-        if (t->data == NULL || t->remote == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->remote, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->remote[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->remote[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
-        t->remote_length = 6;
-        memcpy(t->data, &addr_pair, sizeof(netsnmp_udp_addr_pair));
-        t->data_length = sizeof(netsnmp_udp_addr_pair);
-    }
-
-    /*
-     * 16-bit length field, 8 byte UDP header, 20 byte IPv4 header  
-     */
-
-    t->msgMaxSize = 0xffff - 8 - 20;
-    t->f_recv     = netsnmp_udp_recv;
-    t->f_send     = netsnmp_udp_send;
-    t->f_close    = netsnmp_udp_close;
-    t->f_accept   = NULL;
-    t->f_fmtaddr  = netsnmp_udp_fmtaddr;
-
-    return t;
-}
-
-
-void
-_netsnmp_udp_sockopt_set(int fd, int local)
-{
-#ifdef  SO_BSDCOMPAT
-    /*
-     * Patch for Linux.  Without this, UDP packets that fail get an ICMP
-     * response.  Linux turns the failed ICMP response into an error message
-     * and return value, unlike all other OS's.  
-     */
-    if (0 == netsnmp_os_prematch("Linux","2.4"))
-    {
-        int             one = 1;
-        DEBUGMSGTL(("socket:option", "setting socket option SO_BSDCOMPAT\n"));
-        setsockopt(fd, SOL_SOCKET, SO_BSDCOMPAT, (void *) &one,
-                   sizeof(one));
-    }
-#endif                          /*SO_BSDCOMPAT */
-    /*
-     * SO_REUSEADDR will allow multiple apps to open the same port at
-     * the same time. Only the last one to open the socket will get
-     * data. Obviously, for an agent, this is a bad thing. There should
-     * only be one listener.
-     */
-#ifdef ALLOW_PORT_HIJACKING
-#ifdef  SO_REUSEADDR
-    /*
-     * Allow the same port to be specified multiple times without failing.
-     *    (useful for a listener)
-     */
-    {
-        int             one = 1;
-        DEBUGMSGTL(("socket:option", "setting socket option SO_REUSEADDR\n"));
-        setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
-                   sizeof(one));
-    }
-#endif                          /*SO_REUSEADDR */
-#endif
-
-    /*
-     * Try to set the send and receive buffers to a reasonably large value, so
-     * that we can send and receive big PDUs (defaults to 8192 bytes (!) on
-     * Solaris, for instance).  Don't worry too much about errors -- just
-     * plough on regardless.  
-     */
-    netsnmp_sock_buffer_set(fd, SO_SNDBUF, local, 0);
-    netsnmp_sock_buffer_set(fd, SO_RCVBUF, local, 0);
-}
-
-int
-netsnmp_sockaddr_in2(struct sockaddr_in *addr,
-                     const char *inpeername, const char *default_target)
-{
-    int ret;
-
-    if (addr == NULL) {
-        return 0;
-    }
-
-    DEBUGMSGTL(("netsnmp_sockaddr_in",
-                "addr %p, inpeername \"%s\", default_target \"%s\"\n",
-                addr, inpeername ? inpeername : "[NIL]",
-                default_target ? default_target : "[NIL]"));
-
-    memset(addr, 0, sizeof(struct sockaddr_in));
-    addr->sin_addr.s_addr = htonl(INADDR_ANY);
-    addr->sin_family = AF_INET;
-    addr->sin_port = htons((u_short)SNMP_PORT);
-
-    {
-	int port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
-				      NETSNMP_DS_LIB_DEFAULT_PORT);
-
-	if (port != 0) {
-	    addr->sin_port = htons((u_short)port);
-	} else if (default_target != NULL)
-	    netsnmp_sockaddr_in2(addr, default_target, NULL);
-    }
-
-    if (inpeername != NULL && *inpeername != '\0') {
-	const char     *host, *port;
-	char           *peername = NULL;
-        char           *cp;
-        /*
-         * Duplicate the peername because we might want to mank around with
-         * it.  
-         */
-
-        peername = strdup(inpeername);
-        if (peername == NULL) {
-            return 0;
-        }
-
-        /*
-         * Try and extract an appended port number.  
-         */
-        cp = strchr(peername, ':');
-        if (cp != NULL) {
-            *cp = '\0';
-            port = cp + 1;
-            host = peername;
-        } else {
-            host = NULL;
-            port = peername;
-        }
-
-        /*
-         * Try to convert the user port specifier
-         */
-        if (port && *port == '\0')
-            port = NULL;
-
-        if (port != NULL) {
-            long int l;
-            char* ep;
-
-            DEBUGMSGTL(("netsnmp_sockaddr_in", "check user service %s\n",
-                        port));
-
-            l = strtol(port, &ep, 10);
-            if (ep != port && *ep == '\0' && 0 <= l && l <= 0x0ffff)
-                addr->sin_port = htons((u_short)l);
-            else {
-                if (host == NULL) {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in",
-                                "servname not numeric, "
-				"check if it really is a destination)\n"));
-                    host = port;
-                    port = NULL;
-                } else {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in",
-                                "servname not numeric\n"));
-                    free(peername);
-                    return 0;
-                }
-            }
-        }
-
-        /*
-         * Try to convert the user host specifier
-         */
-        if (host && *host == '\0')
-            host = NULL;
-
-        if (host != NULL) {
-            DEBUGMSGTL(("netsnmp_sockaddr_in",
-                        "check destination %s\n", host));
-
-
-            if (strcmp(peername, "255.255.255.255") == 0 ) {
-                /*
-                 * The explicit broadcast address hack
-                 */
-                DEBUGMSGTL(("netsnmp_sockaddr_in", "Explicit UDP broadcast\n"));
-                addr->sin_addr.s_addr = INADDR_NONE;
-            } else {
-                ret =
-                    netsnmp_gethostbyname_v4(peername, &addr->sin_addr.s_addr);
-                if (ret < 0) {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in",
-                                "couldn't resolve hostname\n"));
-                    free(peername);
-                    return 0;
-                }
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (resolved okay)\n"));
-            }
-        }
-	free(peername);
-    }
-
-    /*
-     * Finished
-     */
-
-    DEBUGMSGTL(("netsnmp_sockaddr_in", "return { AF_INET, %s:%hu }\n",
-                inet_ntoa(addr->sin_addr), ntohs(addr->sin_port)));
-    return 1;
-}
-
-
-int
-netsnmp_sockaddr_in(struct sockaddr_in *addr,
-                    const char *inpeername, int remote_port)
-{
-    char buf[sizeof(int) * 3 + 2];
-    sprintf(buf, ":%u", remote_port);
-    return netsnmp_sockaddr_in2(addr, inpeername, remote_port ? buf : NULL);
-}
-
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-/*
- * The following functions provide the "com2sec" configuration token
- * functionality for compatibility.  
- */
-
-#define EXAMPLE_NETWORK		"NETWORK"
-#define EXAMPLE_COMMUNITY	"COMMUNITY"
-
-typedef struct _com2SecEntry {
-    char            community[COMMUNITY_MAX_LEN];
-    unsigned long   network;
-    unsigned long   mask;
-    char            secName[VACMSTRINGLEN];
-    char            contextName[VACMSTRINGLEN];
-    struct _com2SecEntry *next;
-} com2SecEntry;
-
-com2SecEntry   *com2SecList = NULL, *com2SecListLast = NULL;
-
-void
-netsnmp_udp_parse_security(const char *token, char *param)
-{
-    char            secName[VACMSTRINGLEN];
-    char            contextName[VACMSTRINGLEN];
-    char            community[COMMUNITY_MAX_LEN];
-    char            source[SNMP_MAXBUF_SMALL];
-    char           *cp = NULL;
-    const char     *strmask = NULL;
-    com2SecEntry   *e = NULL;
-    in_addr_t   network = 0, mask = 0;
-
-    /*
-     * Get security, source address/netmask and community strings.  
-     */
-
-    cp = copy_nword( param, secName, sizeof(secName));
-    if (strcmp(secName, "-Cn") == 0) {
-        if (!cp) {
-            config_perror("missing CONTEXT_NAME parameter");
-            return;
-        }
-        cp = copy_nword( cp, contextName, sizeof(contextName));
-        cp = copy_nword( cp, secName, sizeof(secName));
-    } else {
-        contextName[0] = '\0';
-    }
-    if (secName[0] == '\0') {
-        config_perror("missing NAME parameter");
-        return;
-    } else if (strlen(secName) > (VACMSTRINGLEN - 1)) {
-        config_perror("security name too long");
-        return;
-    }
-    cp = copy_nword( cp, source, sizeof(source));
-    if (source[0] == '\0') {
-        config_perror("missing SOURCE parameter");
-        return;
-    } else if (strncmp(source, EXAMPLE_NETWORK, strlen(EXAMPLE_NETWORK)) ==
-               0) {
-        config_perror("example config NETWORK not properly configured");
-        return;
-    }
-    cp = copy_nword( cp, community, sizeof(community));
-    if (community[0] == '\0') {
-        config_perror("missing COMMUNITY parameter\n");
-        return;
-    } else
-        if (strncmp
-            (community, EXAMPLE_COMMUNITY, strlen(EXAMPLE_COMMUNITY))
-            == 0) {
-        config_perror("example config COMMUNITY not properly configured");
-        return;
-    } else if (strlen(community) > (COMMUNITY_MAX_LEN - 1)) {
-        config_perror("community name too long");
-        return;
-    }
-
-    /*
-     * Process the source address/netmask string.  
-     */
-
-    cp = strchr(source, '/');
-    if (cp != NULL) {
-        /*
-         * Mask given.  
-         */
-        *cp = '\0';
-        strmask = cp + 1;
-    }
-
-    /*
-     * Deal with the network part first.  
-     */
-
-    if ((strcmp(source, "default") == 0)
-        || (strcmp(source, "0.0.0.0") == 0)) {
-        network = 0;
-        strmask = "0.0.0.0";
-    } else {
-        /*
-         * Try interpreting as a dotted quad.  
-         */
-        network = inet_addr(source);
-
-        if (network == (in_addr_t) -1) {
-            /*
-             * Nope, wasn't a dotted quad.  Must be a hostname.  
-             */
-            int ret = netsnmp_gethostbyname_v4(source, &network);
-            if (ret < 0) {
-                config_perror("cannot resolve source hostname");
-                return;
-            }
-        }
-    }
-
-    /*
-     * Now work out the mask.  
-     */
-
-    if (strmask == NULL || *strmask == '\0') {
-        /*
-         * No mask was given.  Use 255.255.255.255.  
-         */
-        mask = 0xffffffffL;
-    } else {
-        if (strchr(strmask, '.')) {
-            /*
-             * Try to interpret mask as a dotted quad.  
-             */
-            mask = inet_addr(strmask);
-            if (mask == (in_addr_t) -1 &&
-                strncmp(strmask, "255.255.255.255", 15) != 0) {
-                config_perror("bad mask");
-                return;
-            }
-        } else {
-            /*
-             * Try to interpret mask as a "number of 1 bits".  
-             */
-            int             maskLen = atoi(strmask), maskBit = 0x80000000L;
-            if (maskLen <= 0 || maskLen > 32) {
-                config_perror("bad mask length");
-                return;
-            }
-            while (maskLen--) {
-                mask |= maskBit;
-                maskBit >>= 1;
-            }
-            mask = htonl(mask);
-        }
-    }
-
-    /*
-     * Check that the network and mask are consistent.  
-     */
-
-    if (network & ~mask) {
-        config_perror("source/mask mismatch");
-        return;
-    }
-
-    e = (com2SecEntry *) malloc(sizeof(com2SecEntry));
-    if (e == NULL) {
-        config_perror("memory error");
-        return;
-    }
-
-    /*
-     * Everything is okay.  Copy the parameters to the structure allocated
-     * above and add it to END of the list.  
-     */
-
-    DEBUGMSGTL(("netsnmp_udp_parse_security",
-                "<\"%s\", 0x%08x/0x%08x> => \"%s\"\n", community, network,
-                mask, secName));
-
-    strcpy(e->contextName, contextName);
-    strcpy(e->secName, secName);
-    strcpy(e->community, community);
-    e->network = network;
-    e->mask = mask;
-    e->next = NULL;
-
-    if (com2SecListLast != NULL) {
-        com2SecListLast->next = e;
-        com2SecListLast = e;
-    } else {
-        com2SecListLast = com2SecList = e;
-    }
-}
-
-
-void
-netsnmp_udp_com2SecList_free(void)
-{
-    com2SecEntry   *e = com2SecList;
-    while (e != NULL) {
-        com2SecEntry   *tmp = e;
-        e = e->next;
-        free(tmp);
-    }
-    com2SecList = com2SecListLast = NULL;
-}
-#endif /* support for community based SNMP */
-
-void
-netsnmp_udp_agent_config_tokens_register(void)
-{
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-    register_app_config_handler("com2sec", netsnmp_udp_parse_security,
-                                netsnmp_udp_com2SecList_free,
-                                "[-Cn CONTEXT] secName IPv4-network-address[/netmask] community");
-#endif /* support for community based SNMP */
-}
-
-
-
-/*
- * Return 0 if there are no com2sec entries, or return 1 if there ARE com2sec 
- * entries.  On return, if a com2sec entry matched the passed parameters,
- * then *secName points at the appropriate security name, or is NULL if the
- * parameters did not match any com2sec entry.  
- */
-
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-int
-netsnmp_udp_getSecName(void *opaque, int olength,
-                       const char *community,
-                       size_t community_len, char **secName,
-                       char **contextName)
-{
-    com2SecEntry   *c;
-    netsnmp_udp_addr_pair *addr_pair = (netsnmp_udp_addr_pair *) opaque;
-    struct sockaddr_in *from = (struct sockaddr_in *) &(addr_pair->remote_addr);
-    char           *ztcommunity = NULL;
-
-    if (secName != NULL) {
-        *secName = NULL;  /* Haven't found anything yet */
-    }
-
-    /*
-     * Special case if there are NO entries (as opposed to no MATCHING
-     * entries).  
-     */
-
-    if (com2SecList == NULL) {
-        DEBUGMSGTL(("netsnmp_udp_getSecName", "no com2sec entries\n"));
-        return 0;
-    }
-
-    /*
-     * If there is no IPv4 source address, then there can be no valid security
-     * name.  
-     */
-
-   DEBUGMSGTL(("netsnmp_udp_getSecName", "opaque = %p (len = %d), sizeof = %d, family = %d (%d)\n",
-   opaque, olength, (int)sizeof(netsnmp_udp_addr_pair), from->sin_family, AF_INET));
-    if (opaque == NULL || olength != sizeof(netsnmp_udp_addr_pair) ||
-        from->sin_family != AF_INET) {
-        DEBUGMSGTL(("netsnmp_udp_getSecName",
-		    "no IPv4 source address in PDU?\n"));
-        return 1;
-    }
-
-    DEBUGIF("netsnmp_udp_getSecName") {
-	ztcommunity = (char *)malloc(community_len + 1);
-	if (ztcommunity != NULL) {
-	    memcpy(ztcommunity, community, community_len);
-	    ztcommunity[community_len] = '\0';
-	}
-
-	DEBUGMSGTL(("netsnmp_udp_getSecName", "resolve <\"%s\", 0x%08lx>\n",
-		    ztcommunity ? ztcommunity : "<malloc error>",
-		    (unsigned long)(from->sin_addr.s_addr)));
-    }
-
-    for (c = com2SecList; c != NULL; c = c->next) {
-        DEBUGMSGTL(("netsnmp_udp_getSecName","compare <\"%s\", 0x%08lx/0x%08lx>",
-		    c->community, c->network, c->mask));
-        if ((community_len == strlen(c->community)) &&
-	    (memcmp(community, c->community, community_len) == 0) &&
-            ((from->sin_addr.s_addr & c->mask) == c->network)) {
-            DEBUGMSG(("netsnmp_udp_getSecName", "... SUCCESS\n"));
-            if (secName != NULL) {
-                *secName = c->secName;
-                *contextName = c->contextName;
-            }
-            break;
-        }
-        DEBUGMSG(("netsnmp_udp_getSecName", "... nope\n"));
-    }
-    if (ztcommunity != NULL) {
-        free(ztcommunity);
-    }
-    return 1;
-}
-#endif /* support for community based SNMP */
-
-
-netsnmp_transport *
-netsnmp_udp_create_tstring(const char *str, int local,
-			   const char *default_target)
-{
-    struct sockaddr_in addr;
-
-    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
-        return netsnmp_udp_transport(&addr, local);
-    } else {
-        return NULL;
-    }
-}
-
-
-netsnmp_transport *
-netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_in addr;
-
-    if (o_len == 6) {
-        unsigned short porttmp = (o[4] << 8) + o[5];
-        addr.sin_family = AF_INET;
-        memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4);
-        addr.sin_port = htons(porttmp);
-        return netsnmp_udp_transport(&addr, local);
-    }
-    return NULL;
-}
-
-
-void
-netsnmp_udp_ctor(void)
-{
-    udpDomain.name = netsnmpUDPDomain;
-    udpDomain.name_length = netsnmpUDPDomain_len;
-    udpDomain.prefix = (const char**)calloc(2, sizeof(char *));
-    udpDomain.prefix[0] = "udp";
-
-    udpDomain.f_create_from_tstring     = NULL;
-    udpDomain.f_create_from_tstring_new = netsnmp_udp_create_tstring;
-    udpDomain.f_create_from_ostring     = netsnmp_udp_create_ostring;
-
-    netsnmp_tdomain_register(&udpDomain);
-}
diff --git a/snmplib/snmpUDPIPv6Domain.c b/snmplib/snmpUDPIPv6Domain.c
deleted file mode 100644
index a9277d1..0000000
--- a/snmplib/snmpUDPIPv6Domain.c
+++ /dev/null
@@ -1,1418 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <errno.h>
-
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#if defined(HAVE_WINSOCK_H)
-    /*
-     *  Windows IPv6 support is part of WinSock2 only
-     */
-#include <winsock2.h>
-#include <ws2tcpip.h>
-
-#ifndef HAVE_INET_PTON
-extern int         inet_pton(int, const char*, void*);
-#endif
-#ifndef HAVE_INET_NTOP
-extern const char *inet_ntop(int, const void*, char*, size_t);
-#endif
-static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
-#endif
-
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-
-#if HAVE_DMALLOC_H
-#include <dmalloc.h>
-#endif
-
-#if HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
-#define SS_FAMILY ss_family
-#elif HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
-#define SS_FAMILY __ss_family
-#endif
-
-#if defined(darwin)
-#include <stdint.h> /* for uint8_t */
-#endif
-
-#include <net-snmp/types.h>
-#include <net-snmp/output_api.h>
-#include <net-snmp/config_api.h>
-
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPIPv6Domain.h>
-
-oid netsnmp_UDPIPv6Domain[] = { TRANSPORT_DOMAIN_UDP_IPV6 };
-static netsnmp_tdomain udp6Domain;
-
-/*
- * from snmpUDPDomain. not static, but not public, either.
- * (ie don't put it in a public header.)
- */
-extern void _netsnmp_udp_sockopt_set(int fd, int server);
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-static char *
-netsnmp_udp6_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    struct sockaddr_in6 *to = NULL;
-
-    DEBUGMSGTL(("netsnmp_udp6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
-                data, len));
-    if (data != NULL && len == sizeof(struct sockaddr_in6)) {
-        to = (struct sockaddr_in6 *) data;
-    } else if (t != NULL && t->data != NULL) {
-        to = (struct sockaddr_in6 *) t->data;
-    }
-    if (to == NULL) {
-        return strdup("UDP/IPv6: unknown");
-    } else {
-        char addr[INET6_ADDRSTRLEN];
-        char tmp[INET6_ADDRSTRLEN + 18];
-
-        sprintf(tmp, "UDP/IPv6: [%s]:%hu",
-                inet_ntop(AF_INET6, (void *) &(to->sin6_addr), addr,
-                          INET6_ADDRSTRLEN), ntohs(to->sin6_port));
-        return strdup(tmp);
-    }
-}
-
-
-
-/*
- * You can write something into opaque that will subsequently get passed back 
- * to your send function if you like.  For instance, you might want to
- * remember where a PDU came from, so that you can send a reply there...  
- */
-
-static int
-netsnmp_udp6_recv(netsnmp_transport *t, void *buf, int size,
-		  void **opaque, int *olength)
-{
-    int             rc = -1;
-    socklen_t       fromlen = sizeof(struct sockaddr_in6);
-    struct sockaddr *from;
-
-    if (t != NULL && t->sock >= 0) {
-        from = (struct sockaddr *) malloc(sizeof(struct sockaddr_in6));
-        if (from == NULL) {
-            *opaque = NULL;
-            *olength = 0;
-            return -1;
-        } else {
-            memset(from, 0, fromlen);
-        }
-
-	while (rc < 0) {
-	  rc = recvfrom(t->sock, buf, size, 0, from, &fromlen);
-	  if (rc < 0 && errno != EINTR) {
-	    break;
-	  }
-	}
-
-        if (rc >= 0) {
-	    char *str = netsnmp_udp6_fmtaddr(NULL, from, fromlen);
-            DEBUGMSGTL(("netsnmp_udp6",
-			"recvfrom fd %d got %d bytes (from %s)\n", t->sock,
-                        rc, str));
-            free(str);
-        } else {
-            DEBUGMSGTL(("netsnmp_udp6", "recvfrom fd %d err %d (\"%s\")\n",
-			t->sock, errno, strerror(errno)));
-        }
-        *opaque = (void *) from;
-        *olength = sizeof(struct sockaddr_in6);
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_udp6_send(netsnmp_transport *t, void *buf, int size,
-		  void **opaque, int *olength)
-{
-    int rc = -1;
-    struct sockaddr *to = NULL;
-
-    if (opaque != NULL && *opaque != NULL &&
-        *olength == sizeof(struct sockaddr_in6)) {
-        to = (struct sockaddr *) (*opaque);
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(struct sockaddr_in6)) {
-        to = (struct sockaddr *) (t->data);
-    }
-
-    if (to != NULL && t != NULL && t->sock >= 0) {
-        char *str = netsnmp_udp6_fmtaddr(NULL, (void *)to,
-					    sizeof(struct sockaddr_in6));
-        DEBUGMSGTL(("netsnmp_udp6", "send %d bytes from %p to %s on fd %d\n",
-                    size, buf, str, t->sock));
-        free(str);
-	while (rc < 0) {
-	    rc = sendto(t->sock, buf, size, 0, to,sizeof(struct sockaddr_in6));
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_udp6_close(netsnmp_transport *t)
-{
-    int rc = -1;
-    if (t != NULL && t->sock >= 0) {
-        DEBUGMSGTL(("netsnmp_udp6", "close fd %d\n", t->sock));
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-    }
-    return rc;
-}
-
-
-
-/*
- * Open a UDP/IPv6-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_udp6_transport(struct sockaddr_in6 *addr, int local)
-{
-    netsnmp_transport *t = NULL;
-    int             rc = 0;
-    char           *str = NULL;
-
-    if (addr == NULL || addr->sin6_family != AF_INET6) {
-        return NULL;
-    }
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        return NULL;
-    }
-
-    str = netsnmp_udp6_fmtaddr(NULL, (void *) addr,
-				  sizeof(struct sockaddr_in6));
-    DEBUGMSGTL(("netsnmp_udp6", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmp_UDPIPv6Domain;
-    t->domain_length =
-        sizeof(netsnmp_UDPIPv6Domain) / sizeof(netsnmp_UDPIPv6Domain[0]);
-
-    t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    _netsnmp_udp_sockopt_set(t->sock, local);
-
-    if (local) {
-        /*
-         * 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.
-         */
-
-#ifdef IPV6_V6ONLY
-        /* Try to restrict PF_INET6 socket to IPv6 communications only. */
-        {
-	  int one=1;
-	  if (setsockopt(t->sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) != 0) {
-	    DEBUGMSGTL(("netsnmp_udp6", "couldn't set IPV6_V6ONLY to %d bytes: %s\n", one, strerror(errno)));
-	  } 
-	}
-#endif
-
-        rc = bind(t->sock, (struct sockaddr *) addr,
-		  sizeof(struct sockaddr_in6));
-        if (rc != 0) {
-            netsnmp_udp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->local = (unsigned char*)malloc(18);
-        if (t->local == NULL) {
-            netsnmp_udp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->local, addr->sin6_addr.s6_addr, 16);
-        t->local[16] = (addr->sin6_port & 0xff00) >> 8;
-        t->local[17] = (addr->sin6_port & 0x00ff) >> 0;
-        t->local_length = 18;
-        t->data = NULL;
-        t->data_length = 0;
-    } 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));
-        if (t->data == NULL) {
-            netsnmp_udp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->data, addr, sizeof(struct sockaddr_in6));
-        t->data_length = sizeof(struct sockaddr_in6);
-        t->remote = (unsigned char*)malloc(18);
-        if (t->remote == NULL) {
-            netsnmp_udp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->remote, addr->sin6_addr.s6_addr, 16);
-        t->remote[16] = (addr->sin6_port & 0xff00) >> 8;
-        t->remote[17] = (addr->sin6_port & 0x00ff) >> 0;
-        t->remote_length = 18;
-    }
-
-    /*
-     * 16-bit length field, 8 byte UDP header, 40 byte IPv6 header.  
-     */
-
-    t->msgMaxSize = 0xffff - 8 - 40;
-    t->f_recv     = netsnmp_udp6_recv;
-    t->f_send     = netsnmp_udp6_send;
-    t->f_close    = netsnmp_udp6_close;
-    t->f_accept   = NULL;
-    t->f_fmtaddr  = netsnmp_udp6_fmtaddr;
-
-    return t;
-}
-
-
-/*
- * Not extern but used from here and snmpTCPIPv6Domain.C
- */
-int
-netsnmp_sockaddr_in6_2(struct sockaddr_in6 *addr,
-                       const char *inpeername, const char *default_target)
-{
-    char           *cp = NULL, *peername = NULL;
-    char            debug_addr[INET6_ADDRSTRLEN];
-#if HAVE_GETADDRINFO
-    struct addrinfo *addrs = NULL;
-    int             err;
-#elif HAVE_GETIPNODEBYNAME
-    struct hostent *hp = NULL;
-    int             err;
-#elif HAVE_GETHOSTBYNAME
-    struct hostent *hp = NULL;
-#endif
-    int             portno;
-
-    if (addr == NULL) {
-        return 0;
-    }
-
-    DEBUGMSGTL(("netsnmp_sockaddr_in6",
-		"addr %p, peername \"%s\", default_target \"%s\"\n",
-                addr, inpeername ? inpeername : "[NIL]",
-		default_target ? default_target : "[NIL]"));
-
-    memset(addr, 0, sizeof(struct sockaddr_in6));
-    addr->sin6_family = AF_INET6;
-    addr->sin6_addr = in6addr_any;
-    addr->sin6_port = htons((u_short)SNMP_PORT);
-
-    {
-      int port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
-				    NETSNMP_DS_LIB_DEFAULT_PORT);
-      if (port != 0)
-        addr->sin6_port = htons((u_short)port);
-      else if (default_target != NULL)
-	netsnmp_sockaddr_in6_2(addr, default_target, NULL);
-    }
-
-    if (inpeername != NULL) {
-        /*
-         * Duplicate the peername because we might want to mank around with
-         * it.  
-         */
-
-        peername = strdup(inpeername);
-        if (peername == NULL) {
-            return 0;
-        }
-
-        for (cp = peername; *cp && isdigit((unsigned char) *cp); cp++);
-        portno = atoi(peername);
-        if (!*cp &&  portno != 0) {
-            /*
-             * Okay, it looks like JUST a port number.  
-             */
-            DEBUGMSGTL(("netsnmp_sockaddr_in6", "totally numeric: %d\n",
-                        portno));
-            addr->sin6_port = htons(portno);
-            goto resolved;
-        }
-
-        /*
-         * See if it is an IPv6 address covered with square brackets. Also check
-         * for an appended :port.  
-         */
-        if (*peername == '[') {
-            cp = strchr(peername, ']');
-            if (cp != NULL) {
-	      /*
-	       * See if it is an IPv6 link-local address with interface
-	       * name as <zone_id>, like fe80::1234%eth0.
-	       * Please refer to the internet draft, IPv6 Scoped Address Architecture
-	       * http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-scoping-arch-04.txt
-	       *
-	       */
-	        char *scope_id;
-#ifdef HAVE_IF_NAMETOINDEX
-	        unsigned int if_index = 0;
-#endif
-                *cp = '\0';
-		scope_id = strchr(peername + 1, '%');
-		if (scope_id != NULL) {
-		    *scope_id = '\0';
-#ifdef HAVE_IF_NAMETOINDEX
-		    if_index = if_nametoindex(scope_id + 1);
-#endif
-		}
-                if (*(cp + 1) == ':') {
-                    portno = atoi(cp+2);
-                    if (portno != 0 &&
-                        inet_pton(AF_INET6, peername + 1,
-                                  (void *) &(addr->sin6_addr))) {
-                        DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                                    "IPv6 address with port suffix :%d\n",
-                                    portno));
-                        if (portno > 0 && portno < 0xffff) {
-                            addr->sin6_port = htons(portno);
-                        } else {
-                            DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
-                            return 0;
-                        }
-
-#if defined(HAVE_IF_NAMETOINDEX) && defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
-                        addr->sin6_scope_id = if_index;
-#endif
-                        goto resolved;
-                    }
-                } else {
-                    if (inet_pton
-                        (AF_INET6, peername + 1,
-                         (void *) &(addr->sin6_addr))) {
-                        DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                                    "IPv6 address with square brackets\n"));
-                        portno = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
-				                    NETSNMP_DS_LIB_DEFAULT_PORT);
-                        if (portno <= 0)
-                            portno = SNMP_PORT;
-                        addr->sin6_port = htons(portno);
-#if defined(HAVE_IF_NAMETOINDEX) && defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
-                        addr->sin6_scope_id = if_index;
-#endif
-                        goto resolved;
-                    }
-                }
-		if (scope_id != NULL) {
-		  *scope_id = '%';
-		}
-		*cp = ']';
-            }
-        }
-
-        cp = strrchr(peername, ':');
-        if (cp != NULL) {
-	    char *scope_id;
-#ifdef HAVE_IF_NAMETOINDEX
-	    unsigned int if_index = 0;
-#endif
-	    *cp = '\0';
-	    scope_id = strchr(peername + 1, '%');
-	    if (scope_id != NULL) {
-	        *scope_id = '\0';
-#ifdef HAVE_IF_NAMETOINDEX
-	        if_index = if_nametoindex(scope_id + 1);
-#endif
-	    }
-            portno = atoi(cp + 1);
-            if (portno != 0 &&
-                inet_pton(AF_INET6, peername,
-                          (void *) &(addr->sin6_addr))) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "IPv6 address with port suffix :%d\n",
-                            atoi(cp + 1)));
-                if (portno > 0 && portno < 0xffff) {
-                    addr->sin6_port = htons(portno);
-                } else {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
-                    return 0;
-                }
-
-#if defined(HAVE_IF_NAMETOINDEX) && defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
-                addr->sin6_scope_id = if_index;
-#endif
-                goto resolved;
-            }
-	    if (scope_id != NULL) {
-	      *scope_id = '%';
-	    }
-            *cp = ':';
-        }
-
-        /*
-         * See if it is JUST an IPv6 address.  
-         */
-        if (inet_pton(AF_INET6, peername, (void *) &(addr->sin6_addr))) {
-            DEBUGMSGTL(("netsnmp_sockaddr_in6", "just IPv6 address\n"));
-            goto resolved;
-        }
-
-        /*
-         * Well, it must be a hostname then, possibly with an appended :port.
-         * Sort that out first.  
-         */
-
-        cp = strrchr(peername, ':');
-        if (cp != NULL) {
-            *cp = '\0';
-            portno = atoi(cp + 1);
-            if (portno != 0) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "hostname(?) with port suffix :%d\n",
-                            portno));
-                if (portno > 0 && portno < 0xffff) {
-                    addr->sin6_port = htons(portno);
-                } else {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in6", "invalid port number: %d", portno));
-                    return 0;
-                }
-
-            } else {
-                /*
-                 * No idea, looks bogus but we might as well pass the full thing to
-                 * the name resolver below.  
-                 */
-                *cp = ':';
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "hostname(?) with embedded ':'?\n"));
-            }
-            /*
-             * Fall through.  
-             */
-        }
-
-        if (peername[0] == '\0') {
-          DEBUGMSGTL(("netsnmp_sockaddr_in6", "empty hostname\n"));
-          free(peername);
-          return 0;
-        }
-
-#if HAVE_GETADDRINFO
-        {
-            struct addrinfo hint = { 0 };
-            hint.ai_flags = 0;
-            hint.ai_family = PF_INET6;
-            hint.ai_socktype = SOCK_DGRAM;
-            hint.ai_protocol = 0;
-
-            err = 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;
-        }
-        if (addrs != NULL) {
-        DEBUGMSGTL(("netsnmp_sockaddr_in6", "hostname (resolved okay)\n"));
-        memcpy(&addr->sin6_addr,
-               &((struct sockaddr_in6 *) addrs->ai_addr)->sin6_addr,
-               sizeof(struct in6_addr));
-		freeaddrinfo(addrs);
-        }
-		else {
-        DEBUGMSGTL(("netsnmp_sockaddr_in6", "Failed to resolve IPv6 hostname\n"));
-		}
-#elif HAVE_GETIPNODEBYNAME
-        hp = getipnodebyname(peername, AF_INET6, 0, &err);
-        if (hp == NULL) {
-            DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                        "hostname (couldn't resolve = %d)\n", err));
-            free(peername);
-            return 0;
-        }
-        DEBUGMSGTL(("netsnmp_sockaddr_in6", "hostname (resolved okay)\n"));
-        memcpy(&(addr->sin6_addr), hp->h_addr, hp->h_length);
-#elif HAVE_GETHOSTBYNAME
-        hp = gethostbyname(peername);
-        if (hp == NULL) {
-            DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                        "hostname (couldn't resolve)\n"));
-            free(peername);
-            return 0;
-        } else {
-            if (hp->h_addrtype != AF_INET6) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "hostname (not AF_INET6!)\n"));
-                free(peername);
-                return 0;
-            } else {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "hostname (resolved okay)\n"));
-                memcpy(&(addr->sin6_addr), hp->h_addr, hp->h_length);
-            }
-        }
-#else                           /*HAVE_GETHOSTBYNAME */
-        /*
-         * There is no name resolving function available.  
-         */
-        snmp_log(LOG_ERR,
-                 "no getaddrinfo()/getipnodebyname()/gethostbyname()\n");
-        free(peername);
-        return 0;
-#endif                          /*HAVE_GETHOSTBYNAME */
-    } else {
-        DEBUGMSGTL(("netsnmp_sockaddr_in6", "NULL peername"));
-        return 0;
-    }
-
-  resolved:
-    DEBUGMSGTL(("netsnmp_sockaddr_in6", "return { AF_INET6, [%s]:%hu }\n",
-                inet_ntop(AF_INET6, &addr->sin6_addr, debug_addr,
-                          sizeof(debug_addr)), ntohs(addr->sin6_port)));
-    free(peername);
-    return 1;
-}
-
-
-int
-netsnmp_sockaddr_in6(struct sockaddr_in6 *addr,
-                     const char *inpeername, int remote_port)
-{
-    char buf[sizeof(remote_port) * 3 + 2];
-    sprintf(buf, ":%u", remote_port);
-    return netsnmp_sockaddr_in6_2(addr, inpeername, remote_port ? buf : NULL);
-}
-
-/*
- * int
- * inet_make_mask_addr( int pf, void *dst, int masklength )
- *      convert from bit length specified masklength to network format, 
- *      which fills 1 from until specified bit length.
- *      dst is usally the structer of sockaddr_in or sockaddr_in6. 
- *      makelength must be an interger from 0 to 32 if pf is PF_INET,
- *      or from 0 to 128 if pf is PF_INET6.
- * return:
- *      0 if the input data, masklength was valid for 
- *      the specified protocol family.
- *      -1 if the the input data wasn't valid.
- */
-
-int
-inet_make_mask_addr(int pf, void *dst, int masklength)
-{
-
-    unsigned long   Mask = 0;
-    int             maskBit = 0x80000000L;
-    unsigned char   mask = 0;
-    unsigned char   maskbit = 0x80L;
-    int             i, j, jj;
-
-
-    switch (pf) {
-    case PF_INET:
-        if (masklength < 0 || masklength > 32)
-            return -1;
-
-        ((struct in_addr *) dst)->s_addr = 0;
-
-        while (masklength--) {
-            Mask |= maskBit;
-            maskBit >>= 1;
-        }
-        ((struct in_addr *) dst)->s_addr = htonl(Mask);
-        break;
-
-    case PF_INET6:
-        if (masklength < 0 || masklength > 128)
-            return -1;
-
-
-        for (i = 0; i < 16; i++) {
-            (*(u_char *) (&((struct in6_addr *) dst)->s6_addr[i])) = 0x00;
-        }
-
-        j = (int) masklength / 8;
-        jj = masklength % 8;
-
-        for (i = 0; i < j; i++) {
-            (*(u_char *) (&((struct in6_addr *) dst)->s6_addr[i])) = 0xff;
-        }
-        while (jj--) {
-            mask |= maskbit;
-            maskbit >>= 1;
-        }
-
-	if (j < sizeof (((struct in6_addr *) dst)->s6_addr)){
-	    (*(u_char *) (&((struct in6_addr *) dst)->s6_addr[j])) = mask;
-	}
-
-        break;
-    default:
-        return -1;              /* unsupported protocol family */
-    }
-    return 0;
-}
-
-/*
- * int
- * inet_addr_complement( int pf, void *src, void *dst )
- *      convert from src to dst, which all bits 
- *      are bit-compliment of src.
- *      Src, dst are ususally sockaddr_in or sockaddr_in6.  
- * return:
- *      0 if the input data src and dst have the same size
- *      -1 if the the input data wasn't valid.
- */
-
-int
-inet_addr_complement(int pf, void *src, void *dst)
-{
-
-    int             i;
-
-    if (sizeof(src) != sizeof(dst))
-        return -1;
-
-    switch (pf) {
-    case PF_INET:
-        ((struct in_addr *) dst)->s_addr =
-            ~((struct in_addr *) src)->s_addr;
-        break;
-    case PF_INET6:
-        for (i = 0; i < 16; i++) {
-            (*(u_char *) (&((struct in6_addr *) dst)->s6_addr[i])) =
-                (~(*(u_char *) (&((struct in6_addr *) src)->s6_addr[i])))
-                & 0xff;
-        }
-        break;
-    default:
-        return -1;
-    }
-    return 0;
-}
-
-/*
- * int
- * inet_addr_and( int pf, void *src1, void *src2, void *dst) 
- *      take AND operation on src1 and src2, and output the result to dst.
- *      Src1, src2, and dst are ususally sockaddr_in or sockaddr_in6.  
- * return:
- *      0 if the input data src and dst have the same size
- *      -1 if the the input data are not the same size
- */
-
-int
-inet_addr_and(int pf, void *src1, void *src2, void *dst)
-{
-    int             i;
-
-    if (sizeof(src1) != sizeof(src2) || sizeof(src2) != sizeof(dst))
-        return -1;
-
-    switch (pf) {
-    case PF_INET:
-        ((struct in_addr *) dst)->s_addr =
-            ((struct in_addr *) src1)->s_addr & ((struct in_addr *) src2)->
-            s_addr;
-        break;
-
-    case PF_INET6:
-        for (i = 0; i < 16; i++) {
-            (*(u_char *) (&((struct in6_addr *) dst)->s6_addr[i])) =
-                (*(u_char *) (&((struct in6_addr *) src1)->s6_addr[i])) &
-                (*(u_char *) (&((struct in6_addr *) src2)->s6_addr[i]));
-        }
-        break;
-    default:
-        return -1;
-    }
-    return 0;
-}
-
-
-/*
- * int
- * inet_addrs_consistence (int pf, void *net, void *mask ) 
- *      This function checks if the network address net is consistent
- *      with the netmask address, mask.
- *      Net and mask are ususally sockaddr_in or sockaddr_in6.  
- * Note:
- *      Must spefiey protocol family in pf.
- * return:
- *      0 if there is no consistence with address "net" and "mask".
- *      -1 if network address is inconsistent with netmask address, for 
- *      instance, network address is 192.168.0.128 in spite of netmask, 
- *      which is 255.255.255.0. 
- *      The case that the size of net and mask are different also returns -1.
- */
-
-int
-inet_addrs_consistence(int pf, void *net, void *mask)
-{
-    struct sockaddr_in *tmp, *dst;
-    struct sockaddr_in6 *tmp6, *dst6;
-    int             ret;
-
-    switch (pf) {
-    case PF_INET:
-        tmp = (struct sockaddr_in *) malloc(sizeof(struct sockaddr_in));
-        if (!tmp) {
-            config_perror("Resource failure in inet_addr_consistence()");
-            return -1;
-        }
-        memset(tmp, 0, sizeof(*tmp));
-        tmp->sin_family = PF_INET;
-        if (inet_addr_complement
-            (PF_INET, (struct in_addr *) mask, &tmp->sin_addr) != 0) {
-            config_perror("Fail in function of inet_addr_complement()");
-            free(tmp);
-            return -1;
-        }
-        dst = (struct sockaddr_in *) malloc(sizeof(struct sockaddr_in));
-        if (!dst) {
-            config_perror("Resource failure in inet_addr_consistence()");
-            free(tmp);
-            return -1;
-        }
-        memset(dst, 0, sizeof(*dst));
-        dst->sin_family = PF_INET;
-        if (inet_addr_and
-            (PF_INET, (struct in_addr *) net, &tmp->sin_addr,
-             &dst->sin_addr) != 0) {
-            config_perror("Fail in function of inet_addr_and()");
-            free(dst);
-            free(tmp);
-            return -1;
-        }
-        ret = ((dst->sin_addr.s_addr == INADDR_ANY) ? 0 : -1);
-        free(dst);
-        free(tmp);
-        break;
-    case PF_INET6:
-        tmp6 = (struct sockaddr_in6 *) malloc(sizeof(struct sockaddr_in6));
-        if (!tmp6) {
-            config_perror("Resource failure in inet_addr_consistence()");
-            return -1;
-        }
-        memset(tmp6, 0, sizeof(*tmp6));
-        tmp6->sin6_family = PF_INET6;
-        if (inet_addr_complement
-            (PF_INET6, (struct in6_addr *) mask, &tmp6->sin6_addr) != 0) {
-            config_perror("Fail in function of inet_addr_complement()");
-            free(tmp6);
-            return -1;
-        }
-        dst6 = (struct sockaddr_in6 *) malloc(sizeof(struct sockaddr_in6));
-        if (!dst6) {
-            config_perror("Resource failure in inet_addr_consistence()");
-            free(tmp6);
-            return -1;
-        }
-        memset(dst6, 0, sizeof(*dst6));
-        dst6->sin6_family = PF_INET6;
-        if (inet_addr_and
-            (PF_INET6, (struct in6_addr *) net, &tmp6->sin6_addr,
-             &dst6->sin6_addr)) {
-            config_perror("Fail in function of inet_addr_and()");
-            free(dst6);
-            free(tmp6);
-            return -1;
-        }
-        ret = (IN6_IS_ADDR_UNSPECIFIED(&dst6->sin6_addr) == 1 ? 0 : -1);
-        free(dst6);
-        free(tmp6);
-        break;
-    default:
-        return -1;
-    }
-    return ret;
-}
-
-/*
- * int
- * masked_address_are_equal (pf, from, mask, network) 
- *      This function takes AND operation on address "from" and "mask",
- *      and check the result is equal to address "network". 
- *      From, net and mask are ususally sockaddr_in or sockaddr_in6.  
- * Note:
- *      Must spefiey protocol family in pf.
- * return:
- *      0 if address "from" masked by address "mask" is eqaul to 
- *      address "network". 
- *      -1 if address "from" masked by address "mask" isn't eqaul to 
- *      address "network". For instance, address "from" is 
- *       192.168.0.129 and "mask" is 255.255.255.128. Then, masked 
- *      address is 192.168.0.128. If address "network" is 192.168.0.128,
- *      return 0, otherwise -1.
- *      Also retunn -1 if each address family of from, mask, network
- *      isn't the same.
- */
-
-int
-masked_address_are_equal(int af, struct sockaddr_storage *from,
-                         struct sockaddr_storage *mask,
-                         struct sockaddr_storage *network)
-{
-
-    struct sockaddr_storage ss;
-    memset(&ss, 0, sizeof(ss));
-
-    switch (af) {
-    case PF_INET:
-        if (mask->SS_FAMILY != PF_INET || network->SS_FAMILY != PF_INET) {
-            return -1;
-        }
-        ss.SS_FAMILY = PF_INET;
-        inet_addr_and(PF_INET,
-                      &((struct sockaddr_in *) from)->sin_addr,
-                      &((struct sockaddr_in *) mask)->sin_addr,
-                      &((struct sockaddr_in *) &ss)->sin_addr);
-        if (((struct sockaddr_in *) &ss)->sin_addr.s_addr ==
-            ((struct sockaddr_in *) network)->sin_addr.s_addr) {
-            return 0;
-        } else {
-            return -1;
-        }
-        break;
-    case PF_INET6:
-        if (mask->SS_FAMILY != PF_INET6 || network->SS_FAMILY != PF_INET6) {
-            return -1;
-        }
-        ss.SS_FAMILY = PF_INET6;
-        inet_addr_and(PF_INET6,
-                      &((struct sockaddr_in6 *) from)->sin6_addr,
-                      &((struct sockaddr_in6 *) mask)->sin6_addr,
-                      &((struct sockaddr_in6 *) &ss)->sin6_addr);
-#ifndef IN6_ARE_ADDR_EQUAL
-#define IN6_ARE_ADDR_EQUAL(a,b) IN6_ADDR_EQUAL(a,b)
-#endif
-        if (IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *) &ss)->sin6_addr,
-                               &((struct sockaddr_in6 *) network)->
-                               sin6_addr) == 1) {
-            return 0;
-        } else {
-            return -1;
-        }
-        break;
-    default:
-        return -1;
-    }
-}
-
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-/*
- * The following functions provide the "com2sec6" configuration token
- * functionality for compatibility.  
- */
-
-#define EXAMPLE_NETWORK       "NETWORK"
-#define EXAMPLE_COMMUNITY     "COMMUNITY"
-
-typedef struct _com2Sec6Entry {
-    char            community[COMMUNITY_MAX_LEN];
-    struct sockaddr_in6 network;
-    struct sockaddr_in6 mask;
-    char            secName[VACMSTRINGLEN];
-    char            contextName[VACMSTRINGLEN];
-    struct _com2Sec6Entry *next;
-} com2Sec6Entry;
-
-com2Sec6Entry  *com2Sec6List = NULL, *com2Sec6ListLast = NULL;
-
-
-void
-memmove_com2Sec6Entry(com2Sec6Entry * c,
-                      char *secName,
-                      char *community,
-                      struct sockaddr_in6 net, struct sockaddr_in6 mask,
-                      char *contextName)
-{
-    snprintf(c->secName, strlen(secName) + 1, "%s", secName);
-    snprintf(c->contextName, strlen(contextName) + 1, "%s", contextName);
-    snprintf(c->community, strlen(community) + 1, "%s", community);
-    memmove(&c->network, &net, sizeof(net));
-    memmove(&c->mask, &mask, sizeof(mask));
-    c->next = NULL;
-}
-
-
-#ifndef IPV6_STRING_LEN
-#define IPV6_STRING_LEN 55
-#endif
-
-void
-netsnmp_udp6_parse_security(const char *token, char *param)
-{
-    char            secName[VACMSTRINGLEN];
-    char            contextName[VACMSTRINGLEN];
-    char            community[COMMUNITY_MAX_LEN];
-    char            source[IPV6_STRING_LEN];
-    char           *cp = NULL, *strnetwork = NULL, *strmask = NULL;
-    com2Sec6Entry  *e = NULL;
-    struct sockaddr_in6 net, mask;
-    struct sockaddr_in tmp;
-
-    memset(&net, 0, sizeof(net));
-    memset(&mask, 0, sizeof(mask));
-    memset(&tmp, 0, sizeof(tmp));
-    net.sin6_family = AF_INET6;
-    mask.sin6_family = AF_INET6;
-    tmp.sin_family = AF_INET;
-
-
-    /*
-     * Get security, source address/netmask and community strings.  
-     */
-    cp = copy_nword( param, secName, sizeof(secName));
-    if (strcmp(secName, "-Cn") == 0) {
-        if (!cp) {
-            config_perror("missing CONTEXT_NAME parameter");
-            return;
-        }
-        cp = copy_nword( cp, contextName, sizeof(contextName));
-        cp = copy_nword( cp, secName, sizeof(secName));
-    } else {
-        contextName[0] = '\0';
-    }
-    if (secName[0] == '\0') {
-        config_perror("missing NAME parameter");
-        return;
-    } else if (strlen(secName) > (VACMSTRINGLEN - 1)) {
-        config_perror("security name too long");
-        return;
-    }
-    cp = copy_nword( cp, source, sizeof(source));
-    if (source[0] == '\0') {
-        config_perror("missing SOURCE parameter");
-        return;
-    } else if (strncmp(source, EXAMPLE_NETWORK, strlen(EXAMPLE_NETWORK)) ==
-               0) {
-        config_perror("example config NETWORK not properly configured");
-        return;
-    }
-    cp = copy_nword( cp, community, sizeof(community));
-    if (community[0] == '\0') {
-        config_perror("missing COMMUNITY parameter\n");
-        return;
-    } else
-        if (strncmp
-            (community, EXAMPLE_COMMUNITY, strlen(EXAMPLE_COMMUNITY))
-            == 0) {
-        config_perror("example config COMMUNITY not properly configured");
-        return;
-    } else if (strlen(community) > (COMMUNITY_MAX_LEN - 1)) {
-        config_perror("community name too long");
-        return;
-    }
-
-    /*
-     * Process the source address/netmask string.  
-     */
-    cp = strchr(source, '/');
-    if (cp != NULL) {
-        /*
-         * Mask given.  
-         */
-        *cp = '\0';
-        strmask = cp + 1;
-    }
-
-    /*
-     * Deal with the network part first.  
-     */
-    if ((strcmp(source, "default") == 0) || (strcmp(source, "::") == 0)) {
-        if ((strnetwork = strdup("0::0")) != NULL)
-	{
-	    if ((strmask = strdup("0::0")) != NULL)
-	    {
-	
-		inet_pton(AF_INET6, strnetwork, &net.sin6_addr);
-		inet_pton(AF_INET6, strmask, &mask.sin6_addr);
-		
-		e = (com2Sec6Entry *) malloc(sizeof(com2Sec6Entry));
-		if (e != NULL) {
-		    memmove_com2Sec6Entry(e, secName, community, net, mask, contextName);
-		    if (com2Sec6ListLast != NULL) {
-			com2Sec6ListLast->next = e;
-			com2Sec6ListLast = e;
-		    } else {
-			com2Sec6ListLast = com2Sec6List = e;
-		    }
-		}
-		else {
-		    config_perror ("memory error");
-		}
-		free (strmask);
-	    }
-	    else {
-		DEBUGMSGTL(("netsnmp_udp6_parse_security",
-			    "Couldn't allocate enough memory\n"));
-	    }
-	    free (strnetwork);
-	}
-	else {
-	    DEBUGMSGTL(("netsnmp_udp6_parse_security",
-			"Couldn't allocate enough memory\n"));
-	}
-    } else {
-        /*
-         * Try interpreting as IPv6 address.  
-         */
-        if (inet_pton(AF_INET6, source, &net.sin6_addr) == 1) {
-            if (strmask == NULL || *strmask == '\0') {
-                inet_make_mask_addr(PF_INET6, &mask.sin6_addr, 128);
-            } else {
-                if (strchr(strmask, ':')) {
-                    if (inet_pton(PF_INET6, strmask, &net.sin6_addr) != 1) {
-                        config_perror("bad mask");
-                        return;
-                    }
-                } else {
-                    if (inet_make_mask_addr
-                        (PF_INET6, &mask.sin6_addr, atoi(strmask)) != 0) {
-                        config_perror("bad mask");
-                        return;
-
-                    }
-                }
-            }
-            /*
-             * Check that the network and mask are consistent.  
-             */
-            if (inet_addrs_consistence
-                (PF_INET6, &net.sin6_addr, &mask.sin6_addr) != 0) {
-                config_perror("source/mask mismatch");
-                return;
-            }
-
-            e = (com2Sec6Entry *) malloc(sizeof(com2Sec6Entry));
-            if (e == NULL) {
-                config_perror("memory error");
-                return;
-            }
-
-            /*
-             * Everything is okay.  Copy the parameters to the structure allocated
-             * above and add it to END of the list.  
-             */
-            if (strmask != NULL && strnetwork != NULL) {
-                DEBUGMSGTL(("netsnmp_udp6_parse_security",
-                            "<\"%s\", %s/%s> => \"%s\"\n", community,
-                            strnetwork, strmask, secName));
-                free(strmask);
-                free(strnetwork);
-            } else {
-                DEBUGMSGTL(("netsnmp_udp6_parse_security",
-                            "Couldn't allocate enough memory\n"));
-            }
-            memmove_com2Sec6Entry(e, secName, community, net, mask,
-                                  contextName);
-            if (com2Sec6ListLast != NULL) {
-                com2Sec6ListLast->next = e;
-                com2Sec6ListLast = e;
-            } else {
-                com2Sec6ListLast = com2Sec6List = e;
-            }
-
-#if HAVE_GETADDRINFO
-
-        } else {
-            /*
-             * Nope, Must be a hostname.  
-             */
-            struct addrinfo hints, *ai, *res;
-            char            hbuf[NI_MAXHOST];
-            int             gai_error;
-
-            memset(&hints, 0, sizeof(hints));
-            hints.ai_family = PF_INET6;
-            hints.ai_socktype = SOCK_DGRAM;
-            if ((gai_error = getaddrinfo(source, NULL, &hints, &res)) != 0) {
-                config_perror(gai_strerror(gai_error));
-                return;
-            }
-
-            for (ai = res; ai != NULL; ai = ai->ai_next) {
-                if (getnameinfo
-                    (ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), NULL,
-                     0, NI_NUMERICHOST)) {
-                    config_perror("getnameinfo failed");
-                }
-                memmove(&net, ai->ai_addr, sizeof(struct sockaddr_in6));
-                inet_make_mask_addr(PF_INET6, &mask.sin6_addr, 128);
-
-                e = (com2Sec6Entry *) malloc(sizeof(com2Sec6Entry));
-                if (e == NULL) {
-                    config_perror("memory error");
-                    return;
-                }
-
-                /*
-                 * Everything is okay.  Copy the parameters to the structure allocated
-                 * above and add it to END of the list.  
-                 */
-                DEBUGMSGTL(("netsnmp_udp6_parse_security",
-                            "<\"%s\", %s> => \"%s\"\n", community, hbuf,
-                            secName));
-                memmove_com2Sec6Entry(e, secName, community, net, mask,
-                                      contextName);
-                if (com2Sec6ListLast != NULL) {
-                    com2Sec6ListLast->next = e;
-                    com2Sec6ListLast = e;
-                } else {
-                    com2Sec6ListLast = com2Sec6List = e;
-                }
-            }
-            if (res != NULL)
-                freeaddrinfo(res);
-
-#endif /* HAVE_GETADDRINFO */
-
-        }
-        /*
-         * free(strnetwork); 
-         */
-    }
-}
-
-void
-netsnmp_udp6_com2Sec6List_free(void)
-{
-    com2Sec6Entry  *e = com2Sec6List;
-    while (e != NULL) {
-        com2Sec6Entry  *tmp = e;
-        e = e->next;
-        free(tmp);
-    }
-    com2Sec6List = com2Sec6ListLast = NULL;
-}
-
-#endif /* support for community based SNMP */
-
-void
-netsnmp_udp6_agent_config_tokens_register(void)
-{
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-    register_app_config_handler("com2sec6", netsnmp_udp6_parse_security,
-                                netsnmp_udp6_com2Sec6List_free,
-                                "[-Cn CONTEXT] secName IPv6-network-address[/netmask] community");
-#endif /* support for community based SNMP */
-}
-
-
-
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-/*
- * Return 0 if there are no com2sec entries, or return 1 if there ARE com2sec 
- * entries.  On return, if a com2sec entry matched the passed parameters,
- * then *secName points at the appropriate security name, or is NULL if the
- * parameters did not match any com2sec entry.  
- */
-
-int
-netsnmp_udp6_getSecName(void *opaque, int olength,
-                        const char *community,
-                        int community_len, char **secName, char **contextName)
-{
-    com2Sec6Entry  *c;
-    struct sockaddr_in6 *from = (struct sockaddr_in6 *) opaque;
-    char           *ztcommunity = NULL;
-    char            str6[INET6_ADDRSTRLEN];
-
-    if (secName != NULL) {
-        *secName = NULL;  /* Haven't found anything yet */
-    }
-
-    /*
-     * Special case if there are NO entries (as opposed to no MATCHING
-     * entries).  
-     */
-
-    if (com2Sec6List == NULL) {
-        DEBUGMSGTL(("netsnmp_udp6_getSecName", "no com2sec entries\n"));
-        return 0;
-    }
-
-    /*
-     * If there is no IPv6 source address, 
-     * then there can be no valid security name.  
-     */
-
-    if (opaque == NULL || olength != sizeof(struct sockaddr_in6)
-        || from->sin6_family != PF_INET6) {
-        DEBUGMSGTL(("netsnmp_udp6_getSecName",
-                    "no IPv6 source address in PDU?\n"));
-        return 1;
-    }
-
-    ztcommunity = (char *) malloc(community_len + 1);
-    if (ztcommunity != NULL) {
-        memcpy(ztcommunity, community, community_len);
-        ztcommunity[community_len] = '\0';
-    }
-
-    inet_ntop(AF_INET6, &from->sin6_addr, str6, sizeof(str6));
-    DEBUGMSGTL(("netsnmp_udp6_getSecName", "resolve <\"%s\", %s>\n",
-                ztcommunity ? ztcommunity : "<malloc error>", str6));
-
-    for (c = com2Sec6List; c != NULL; c = c->next) {
-	char str_net[INET6_ADDRSTRLEN], str_mask[INET6_ADDRSTRLEN];
-        DEBUGMSGTL(("netsnmp_udp6_getSecName",
-                    "compare <\"%s\", %s/%s>", c->community,
-                    inet_ntop(AF_INET6, &c->network.sin6_addr, str_net, sizeof str_net),
-		    inet_ntop(AF_INET6, &c->mask.sin6_addr, str_mask, sizeof str_mask)));
-
-        if ((community_len == (int)strlen(c->community)) &&
-            (memcmp(community, c->community, community_len) == 0) &&
-            (masked_address_are_equal(from->sin6_family,
-                                      (struct sockaddr_storage *) from,
-                                      (struct sockaddr_storage *) &c->mask,
-                                      (struct sockaddr_storage *) &c->network)
-					== 0)) {
-            DEBUGMSG(("netsnmp_udp6_getSecName", "... SUCCESS\n"));
-            if (secName != NULL) {
-                *secName = c->secName;
-                *contextName = c->contextName;
-            }
-            break;
-        }
-        DEBUGMSG(("netsnmp_udp6_getSecName", "... nope\n"));
-    }
-    if (ztcommunity != NULL) {
-        free(ztcommunity);
-    }
-    return 1;
-}
-#endif /* support for community based SNMP */
-
-netsnmp_transport *
-netsnmp_udp6_create_tstring(const char *str, int local,
-			    const char *default_target)
-{
-    struct sockaddr_in6 addr;
-
-    if (netsnmp_sockaddr_in6_2(&addr, str, default_target)) {
-        return netsnmp_udp6_transport(&addr, local);
-    } else {
-        return NULL;
-    }
-}
-
-
-/*
- * See:
- * 
- * http://www.ietf.org/internet-drafts/draft-ietf-ops-taddress-mib-01.txt
- * 
- * (or newer equivalent) for details of the TC which we are using for
- * the mapping here.  
- */
-
-netsnmp_transport *
-netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_in6 addr;
-
-    if (o_len == 18) {
-        memset((u_char *) & addr, 0, sizeof(struct sockaddr_in6));
-        addr.sin6_family = AF_INET6;
-        memcpy((u_char *) & (addr.sin6_addr.s6_addr), o, 16);
-        addr.sin6_port = (o[16] << 8) + o[17];
-        return netsnmp_udp6_transport(&addr, local);
-    }
-    return NULL;
-}
-
-
-void
-netsnmp_udp6_ctor(void)
-{
-    udp6Domain.name = netsnmp_UDPIPv6Domain;
-    udp6Domain.name_length = sizeof(netsnmp_UDPIPv6Domain) / sizeof(oid);
-    udp6Domain.f_create_from_tstring     = NULL;
-    udp6Domain.f_create_from_tstring_new = netsnmp_udp6_create_tstring;
-    udp6Domain.f_create_from_ostring     = netsnmp_udp6_create_ostring;
-    udp6Domain.prefix = (const char**)calloc(5, sizeof(char *));
-    udp6Domain.prefix[0] = "udp6";
-    udp6Domain.prefix[1] = "ipv6";
-    udp6Domain.prefix[2] = "udpv6";
-    udp6Domain.prefix[3] = "udpipv6";
-
-    netsnmp_tdomain_register(&udp6Domain);
-}
-
-#else
-
-#ifdef NETSNMP_DLL
-/* need this hook for win32 MSVC++ DLL build */
-void
-netsnmp_udp6_agent_config_tokens_register(void)
-{ }
-#endif
-
-#endif /* NETSNMP_TRANSPORT_UDPIPV6_DOMAIN */
-
diff --git a/snmplib/snmp_alarm.c b/snmplib/snmp_alarm.c
index 5d37d6f..74628be 100644
--- a/snmplib/snmp_alarm.c
+++ b/snmplib/snmp_alarm.c
@@ -34,11 +34,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -47,9 +43,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_DMALLOC_H
 #include <dmalloc.h>
@@ -89,23 +82,22 @@
 void
 sa_update_entry(struct snmp_alarm *a)
 {
-    if (a->t_last.tv_sec == 0 && a->t_last.tv_usec == 0) {
+    if (!timerisset(&a->t_last)) {
         struct timeval  t_now;
         /*
          * Never been called yet, call time `t' from now.  
          */
         gettimeofday(&t_now, NULL);
 
-        a->t_last.tv_sec = t_now.tv_sec;
-        a->t_last.tv_usec = t_now.tv_usec;
+        a->t_last = t_now;
 
         NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
-    } else if (a->t_next.tv_sec == 0 && a->t_next.tv_usec == 0) {
+    } else if (!timerisset(&a->t_next)) {
         /*
          * We've been called but not reset for the next call.  
          */
         if (a->flags & SA_REPEAT) {
-            if (a->t.tv_sec == 0 && a->t.tv_usec == 0) {
+            if (!timerisset(&a->t)) {
                 DEBUGMSGTL(("snmp_alarm",
                             "update_entry: illegal interval specified\n"));
                 snmp_alarm_unregister(a->clientreg);
@@ -190,27 +182,21 @@
     gettimeofday(&t_now, NULL);
 
     for (a = thealarms; a != NULL; a = a->next) {
-        /* 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));
-            a->t_next.tv_sec = t_now.tv_sec + a->t.tv_sec;
-            a->t_next.tv_usec = t_now.tv_usec + a->t.tv_usec;
-        }
-        if (lowest == NULL) {
-            lowest = a;
-        } else if (a->t_next.tv_sec == lowest->t_next.tv_sec) {
-            if (a->t_next.tv_usec < lowest->t_next.tv_usec) {
-                lowest = a;
+        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);
             }
-        } else if (a->t_next.tv_sec < lowest->t_next.tv_sec) {
-            lowest = a;
-        }
+            if (lowest == NULL || timercmp(&a->t_next, &lowest->t_next, <))
+                lowest = a;
+       }
     }
     return lowest;
 }
 
+NETSNMP_IMPORT struct snmp_alarm *sa_find_specific(unsigned int clientreg);
 struct snmp_alarm *
 sa_find_specific(unsigned int clientreg)
 {
@@ -245,15 +231,15 @@
 
         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.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;
+                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",
@@ -276,39 +262,56 @@
 
 
 
+/**
+ * Look up the time at which the next alarm will fire.
+ *
+ * @param[out] alarm_tm Time at which the next alarm will fire.
+ * @param[in] now Earliest time that should be written into *alarm_tm.
+ *
+ * @return Zero if no alarms are scheduled; non-zero 'clientreg' value
+ *   identifying the first alarm that will fire if one or more alarms are
+ *   scheduled.
+ */
 int
-get_next_alarm_delay_time(struct timeval *delta)
+netsnmp_get_next_alarm_time(struct timeval *alarm_tm, const struct timeval *now)
 {
     struct snmp_alarm *sa_ptr;
-    struct timeval  t_now;
 
     sa_ptr = sa_find_next();
 
     if (sa_ptr) {
-        gettimeofday(&t_now, NULL);
-
-        if (timercmp(&t_now, &sa_ptr->t_next, >)) {
-            /*
-             * Time has already passed.  Return the smallest possible amount of
-             * time.  
-             */
-            delta->tv_sec = 0;
-            delta->tv_usec = 1;
-            return sa_ptr->clientreg;
-        } else {
-            /*
-             * Time is still in the future.  
-             */
-            NETSNMP_TIMERSUB(&sa_ptr->t_next, &t_now, delta);
-
-            return sa_ptr->clientreg;
-        }
+        netsnmp_assert(alarm_tm);
+        netsnmp_assert(timerisset(&sa_ptr->t_next));
+        if (timercmp(&sa_ptr->t_next, now, >))
+            *alarm_tm = sa_ptr->t_next;
+        else
+            *alarm_tm = *now;
+        return sa_ptr->clientreg;
+    } else {
+        return 0;
     }
+}
 
-    /*
-     * Nothing Left.  
-     */
-    return 0;
+/**
+ * Get the time until the next alarm will fire.
+ *
+ * @param[out] delta Time until the next alarm.
+ *
+ * @return Zero if no alarms are scheduled; non-zero 'clientreg' value
+ *   identifying the first alarm that will fire if one or more alarms are
+ *   scheduled.
+ */
+int
+get_next_alarm_delay_time(struct timeval *delta)
+{
+    struct timeval t_now, alarm_tm;
+    int res;
+
+    gettimeofday(&t_now, NULL);
+    res = netsnmp_get_next_alarm_time(&alarm_tm, &t_now);
+    if (res)
+        NETSNMP_TIMERSUB(&alarm_tm, &t_now, delta);
+    return res;
 }
 
 
@@ -330,10 +333,8 @@
 # ifdef HAVE_SETITIMER
         struct itimerval it;
 
-        it.it_value.tv_sec = delta.tv_sec;
-        it.it_value.tv_usec = delta.tv_usec;
-        it.it_interval.tv_sec = 0;
-        it.it_interval.tv_usec = 0;
+        it.it_value = delta;
+        timerclear(&it.it_interval);
 
         signal(SIGALRM, alarm_handler);
         setitimer(ITIMER_REAL, &it, NULL);
@@ -375,7 +376,7 @@
  *
  * @param clientarg is a void pointer used by the callback function.  This 
  *	pointer is assigned to snmp_alarm->clientarg and passed into the
- *	callback function for the client's specifc needs.
+ *	callback function for the client's specific needs.
  *
  * @return Returns a unique unsigned integer(which is also passed as the first 
  *	argument of each callback), which can then be used to remove the
@@ -391,40 +392,17 @@
 snmp_alarm_register(unsigned int when, unsigned int flags,
                     SNMPAlarmCallback * thecallback, void *clientarg)
 {
-    struct snmp_alarm **sa_pptr;
-    if (thealarms != NULL) {
-        for (sa_pptr = &thealarms; (*sa_pptr) != NULL;
-             sa_pptr = &((*sa_pptr)->next));
-    } else {
-        sa_pptr = &thealarms;
-    }
-
-    *sa_pptr = SNMP_MALLOC_STRUCT(snmp_alarm);
-    if (*sa_pptr == NULL)
-        return 0;
+    struct timeval  t;
 
     if (0 == when) {
-        (*sa_pptr)->t.tv_sec = 0;
-        (*sa_pptr)->t.tv_usec = 1;
+        t.tv_sec = 0;
+        t.tv_usec = 1;
     } else {
-        (*sa_pptr)->t.tv_sec = when;
-        (*sa_pptr)->t.tv_usec = 0;
+        t.tv_sec = when;
+        t.tv_usec = 0;
     }
-    (*sa_pptr)->flags = flags;
-    (*sa_pptr)->clientarg = clientarg;
-    (*sa_pptr)->thecallback = thecallback;
-    (*sa_pptr)->clientreg = regnum++;
-    (*sa_pptr)->next = NULL;
-    sa_update_entry(*sa_pptr);
 
-    DEBUGMSGTL(("snmp_alarm",
-		"registered alarm %d, t = %ld.%03ld, flags=0x%02x\n",
-                (*sa_pptr)->clientreg, (*sa_pptr)->t.tv_sec,
-                ((*sa_pptr)->t.tv_usec / 1000), (*sa_pptr)->flags));
-
-    if (start_alarms)
-        set_an_alarm();
-    return (*sa_pptr)->clientreg;
+    return snmp_alarm_register_hr(t, flags, thecallback, clientarg);
 }
 
 
@@ -452,7 +430,7 @@
  *
  * @param cd is a void pointer used by the callback function.  This 
  *	pointer is assigned to snmp_alarm->clientarg and passed into the
- *	callback function for the client's specifc needs.
+ *	callback function for the client's specific needs.
  *
  * @return Returns a unique unsigned integer(which is also passed as the first 
  *	argument of each callback), which can then be used to remove the
@@ -477,8 +455,7 @@
         return 0;
     }
 
-    (*s)->t.tv_sec = t.tv_sec;
-    (*s)->t.tv_usec = t.tv_usec;
+    (*s)->t = t;
     (*s)->flags = flags;
     (*s)->clientarg = cd;
     (*s)->thecallback = cb;
diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
index 5d7a3c7..0dcf66d 100644
--- a/snmplib/snmp_api.c
+++ b/snmplib/snmp_api.c
@@ -1,3 +1,4 @@
+
 /* 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:
@@ -56,11 +57,7 @@
 #include <sys/param.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -81,9 +78,6 @@
 #if HAVE_IO_H
 #include <io.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -141,8 +135,14 @@
 #include <net-snmp/library/snmp_service.h>
 #include <net-snmp/library/vacm.h>
 
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+extern void netsnmp_certs_init(void);
+#endif
+
 static void     _init_snmp(void);
 
+static int      _snmp_store_needed = 0;
+
 #include "../agent/mibgroup/agentx/protocol.h"
 #include <net-snmp/library/transform_oids.h>
 #ifndef timercmp
@@ -301,6 +301,9 @@
     "Kerberos related error",   /* SNMPERR_KRB5 */
     "Protocol error",		/* SNMPERR_PROTOCOL */
     "OID not increasing",       /* SNMPERR_OID_NONINCREASING */
+    "Context probe",            /* SNMPERR_JUST_A_CONTEXT_PROBE */
+    "Configuration data found but the transport can't be configured", /* SNMPERR_TRANSPORT_NO_CONFIG */
+    "Transport configuration failed", /* SNMPERR_TRANSPORT_CONFIG_ERROR */
 };
 
 static const char *secLevelName[] = {
@@ -361,7 +364,9 @@
 static void     register_default_handlers(void);
 static struct session_list *snmp_sess_copy(netsnmp_session * pss);
 int             snmp_get_errno(void);
+NETSNMP_IMPORT
 void            snmp_synch_reset(netsnmp_session * notused);
+NETSNMP_IMPORT
 void            snmp_synch_setup(netsnmp_session * notused);
 
 #ifndef HAVE_STRERROR
@@ -665,9 +670,6 @@
     /*
      * get pseudo-random values for request ID and message ID 
      */
-    /*
-     * don't allow zero value to repeat init 
-     */
 #ifdef SVR4
     srand48(tv.tv_sec ^ tv.tv_usec);
     tmpReqid = lrand48();
@@ -678,6 +680,9 @@
     tmpMsgid = random();
 #endif
 
+    /*
+     * don't allow zero value to repeat init 
+     */
     if (tmpReqid == 0)
         tmpReqid = 1;
     if (tmpMsgid == 0)
@@ -692,11 +697,16 @@
     netsnmp_register_default_target("snmp", "tcp", ":161");
     netsnmp_register_default_target("snmp", "udp6", ":161");
     netsnmp_register_default_target("snmp", "tcp6", ":161");
+    netsnmp_register_default_target("snmp", "dtlsudp", ":10161");
+    netsnmp_register_default_target("snmp", "tlstcp", ":10161");
     netsnmp_register_default_target("snmp", "ipx", "/36879");
+
     netsnmp_register_default_target("snmptrap", "udp", ":162");
     netsnmp_register_default_target("snmptrap", "tcp", ":162");
     netsnmp_register_default_target("snmptrap", "udp6", ":162");
     netsnmp_register_default_target("snmptrap", "tcp6", ":162");
+    netsnmp_register_default_target("snmptrap", "dtlsudp", ":10162");
+    netsnmp_register_default_target("snmptrap", "tlstcp", ":10162");
     netsnmp_register_default_target("snmptrap", "ipx", "/36880");
 
     netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, 
@@ -826,10 +836,14 @@
     snmp_init_statistics();
     register_mib_handlers();
     register_default_handlers();
+    init_snmp_transport();
     init_snmpv3(type);
     init_snmp_alarm();
     init_snmp_enum(type);
     init_vacm();
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+    netsnmp_certs_init();
+#endif
 
     read_premib_configs();
 #ifndef NETSNMP_DISABLE_MIB_LOADING
@@ -840,6 +854,28 @@
 
 }                               /* end init_snmp() */
 
+/**
+ * set a flag indicating that the persistent store needs to be saved.
+ */
+void
+snmp_store_needed(const char *type)
+{
+    DEBUGMSGTL(("snmp_store", "setting needed flag...\n"));
+    _snmp_store_needed = 1;
+}
+
+void
+snmp_store_if_needed(void)
+{
+    if (0 == _snmp_store_needed)
+        return;
+    
+    DEBUGMSGTL(("snmp_store", "store needed...\n"));
+    snmp_store(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                     NETSNMP_DS_LIB_APPTYPE));
+    _snmp_store_needed = 0;
+}
+
 void
 snmp_store(const char *type)
 {
@@ -957,7 +993,6 @@
     struct snmp_secmod_def *sptr;
     char           *cp;
     u_char         *ucp;
-    size_t          i;
 
     in_session->s_snmp_errno = 0;
     in_session->s_errno = 0;
@@ -1060,39 +1095,6 @@
             netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SECLEVEL);
     }
 
-    if (session->securityLevel == 0)
-        session->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
-
-    if (in_session->securityAuthProtoLen > 0) {
-        session->securityAuthProto =
-            snmp_duplicate_objid(in_session->securityAuthProto,
-                                 in_session->securityAuthProtoLen);
-        if (session->securityAuthProto == NULL) {
-            snmp_sess_close(slp);
-            in_session->s_snmp_errno = SNMPERR_MALLOC;
-            return (NULL);
-        }
-    } else if (get_default_authtype(&i) != NULL) {
-        session->securityAuthProto =
-            snmp_duplicate_objid(get_default_authtype(NULL), i);
-        session->securityAuthProtoLen = i;
-    }
-
-    if (in_session->securityPrivProtoLen > 0) {
-        session->securityPrivProto =
-            snmp_duplicate_objid(in_session->securityPrivProto,
-                                 in_session->securityPrivProtoLen);
-        if (session->securityPrivProto == NULL) {
-            snmp_sess_close(slp);
-            in_session->s_snmp_errno = SNMPERR_MALLOC;
-            return (NULL);
-        }
-    } else if (get_default_privtype(&i) != NULL) {
-        session->securityPrivProto =
-            snmp_duplicate_objid(get_default_privtype(NULL), i);
-        session->securityPrivProtoLen = i;
-    }
-
     if (in_session->securityEngineIDLen > 0) {
         ucp = (u_char *) malloc(in_session->securityEngineIDLen);
         if (ucp == NULL) {
@@ -1170,69 +1172,6 @@
         session->securityNameLen = strlen(cp);
     }
 
-    if ((in_session->securityAuthKeyLen <= 0) &&
-        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_AUTHMASTERKEY)))) {
-        size_t buflen = sizeof(session->securityAuthKey);
-        u_char *tmpp = session->securityAuthKey;
-        session->securityAuthKeyLen = 0;
-        /* it will be a hex string */
-        if (!snmp_hex_to_binary(&tmpp, &buflen,
-                                &session->securityAuthKeyLen, 0, cp)) {
-            snmp_set_detail("error parsing authentication master key");
-            snmp_sess_close(slp);
-            return NULL;
-        }
-    } else if ((in_session->securityAuthKeyLen <= 0) &&
-        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_AUTHPASSPHRASE)) ||
-         (cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_PASSPHRASE)))) {
-        session->securityAuthKeyLen = USM_AUTH_KU_LEN;
-        if (generate_Ku(session->securityAuthProto,
-                        session->securityAuthProtoLen,
-                        (u_char *) cp, strlen(cp),
-                        session->securityAuthKey,
-                        &session->securityAuthKeyLen) != SNMPERR_SUCCESS) {
-            snmp_set_detail
-                ("Error generating a key (Ku) from the supplied authentication pass phrase.");
-            snmp_sess_close(slp);
-            return NULL;
-        }
-    }
-
-    
-    if ((in_session->securityPrivKeyLen <= 0) &&
-        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_PRIVMASTERKEY)))) {
-        size_t buflen = sizeof(session->securityPrivKey);
-        u_char *tmpp = session->securityPrivKey;
-        session->securityPrivKeyLen = 0;
-        /* it will be a hex string */
-        if (!snmp_hex_to_binary(&tmpp, &buflen,
-                                &session->securityPrivKeyLen, 0, cp)) {
-            snmp_set_detail("error parsing encryption master key");
-            snmp_sess_close(slp);
-            return NULL;
-        }
-    } else if ((in_session->securityPrivKeyLen <= 0) &&
-        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_PRIVPASSPHRASE)) ||
-         (cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-				     NETSNMP_DS_LIB_PASSPHRASE)))) {
-        session->securityPrivKeyLen = USM_PRIV_KU_LEN;
-        if (generate_Ku(session->securityAuthProto,
-                        session->securityAuthProtoLen,
-                        (u_char *) cp, strlen(cp),
-                        session->securityPrivKey,
-                        &session->securityPrivKeyLen) != SNMPERR_SUCCESS) {
-            snmp_set_detail
-                ("Error generating a key (Ku) from the supplied privacy pass phrase.");
-            snmp_sess_close(slp);
-            return NULL;
-        }
-    }
-
     if (session->retries == SNMP_DEFAULT_RETRIES)
         session->retries = DEFAULT_RETRIES;
     if (session->timeout == SNMP_DEFAULT_TIMEOUT)
@@ -1242,14 +1181,35 @@
     snmp_call_callbacks(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SESSION_INIT,
                         session);
 
-    if ((sptr = find_sec_mod(session->securityModel)) != NULL &&
-        sptr->session_open != NULL) {
+    if ((sptr = find_sec_mod(session->securityModel)) != NULL) {
         /*
-         * security module specific inialization 
+         * security module specific copying 
          */
-        (*sptr->session_open) (session);
+        if (sptr->session_setup) {
+            int ret = (*sptr->session_setup) (in_session, session);
+            if (ret != SNMPERR_SUCCESS) {
+                snmp_sess_close(slp);
+                return NULL;
+            }
+        }
+
+        /*
+         * security module specific opening
+         */
+        if (sptr->session_open) {
+            int ret = (*sptr->session_open) (session);
+            if (ret != SNMPERR_SUCCESS) {
+                snmp_sess_close(slp);
+                return NULL;
+            }
+        }
     }
 
+    /* Anything below this point should only be done if the transport
+       had no say in the matter */
+    if (session->securityLevel == 0)
+        session->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
+
     return (slp);
 }
 
@@ -1347,7 +1307,7 @@
             response->variables->val_len;
         
         if (snmp_get_do_debugging()) {
-            int i;
+            size_t i;
             DEBUGMSGTL(("snmp_sess_open",
                         "  probe found engineID:  "));
             for (i = 0; i < session->securityEngineIDLen; i++)
@@ -1483,7 +1443,113 @@
     return 1;
 }
 
+/*******************************************************************-o-******
+ * netsnmp_sess_config_transport
+ *
+ * Parameters:
+ *	*in_session
+ *	*in_transport
+ *
+ * Returns:
+ *      SNMPERR_SUCCESS                     - Yay
+ *      SNMPERR_GENERR                      - Generic Error
+ *      SNMPERR_TRANSPORT_CONFIG_ERROR      - Transport rejected config
+ *      SNMPERR_TRANSPORT_NO_CONFIG         - Transport can't config
+ */
+int
+netsnmp_sess_config_transport(netsnmp_container *transport_configuration,
+                              netsnmp_transport *transport)
+{
+    /* Optional supplimental transport configuration information and
+       final call to actually open the transport */
+    if (transport_configuration) {
+        DEBUGMSGTL(("snmp_sess", "configuring transport\n"));
+        if (transport->f_config) {
+            netsnmp_iterator *iter;
+            netsnmp_transport_config *config_data;
+            int ret;
 
+            iter = CONTAINER_ITERATOR(transport_configuration);
+            if (NULL == iter) {
+                return SNMPERR_GENERR;
+            }
+
+            for(config_data = (netsnmp_transport_config*)ITERATOR_FIRST(iter); config_data;
+                config_data = (netsnmp_transport_config*)ITERATOR_NEXT(iter)) {
+                ret = transport->f_config(transport, config_data->key,
+                                          config_data->value);
+                if (ret) {
+                    return SNMPERR_TRANSPORT_CONFIG_ERROR;
+                }
+            }
+        } else {
+            return SNMPERR_TRANSPORT_NO_CONFIG;
+        }
+    }
+    return SNMPERR_SUCCESS;
+}
+
+ 
+/**
+ * Copies configuration from the session and calls f_open
+ * This function copies any configuration stored in the session
+ * pointer to the transport if it has a f_config pointer and then
+ * calls the transport's f_open function to actually open the
+ * connection.
+ *
+ * @param in_session A pointer to the session that config information is in.
+ * @param transport A pointer to the transport to config/open.
+ *
+ * @return SNMPERR_SUCCESS : on success
+ */
+
+/*******************************************************************-o-******
+ * netsnmp_sess_config_transport
+ *
+ * Parameters:
+ *	*in_session
+ *	*in_transport
+ *
+ * Returns:
+ *      SNMPERR_SUCCESS                     - Yay
+ *      SNMPERR_GENERR                      - Generic Error
+ *      SNMPERR_TRANSPORT_CONFIG_ERROR      - Transport rejected config
+ *      SNMPERR_TRANSPORT_NO_CONFIG         - Transport can't config
+ */
+int
+netsnmp_sess_config_and_open_transport(netsnmp_session *in_session,
+                                       netsnmp_transport *transport)
+{
+    int rc;
+    
+    DEBUGMSGTL(("snmp_sess", "opening transport: %x\n", transport->flags & NETSNMP_TRANSPORT_FLAG_OPENED));
+
+    /* don't double open */
+    if (transport->flags & NETSNMP_TRANSPORT_FLAG_OPENED)
+        return SNMPERR_SUCCESS;
+
+    if ((rc = netsnmp_sess_config_transport(in_session->transport_configuration,
+                                            transport)) != SNMPERR_SUCCESS) {
+        in_session->s_snmp_errno = rc;
+        in_session->s_errno = 0;
+        return rc;
+    }
+        
+    if (transport->f_open)
+        transport = transport->f_open(transport);
+
+    if (transport == NULL) {
+        DEBUGMSGTL(("snmp_sess", "couldn't interpret peername\n"));
+        in_session->s_snmp_errno = SNMPERR_BAD_ADDRESS;
+        in_session->s_errno = errno;
+        snmp_set_detail(in_session->peername);
+        return SNMPERR_BAD_ADDRESS;
+    }
+
+    transport->flags |= NETSNMP_TRANSPORT_FLAG_OPENED;
+    DEBUGMSGTL(("snmp_sess", "done opening transport: %x\n", transport->flags & NETSNMP_TRANSPORT_FLAG_OPENED));
+    return SNMPERR_SUCCESS;
+}
 
 /*******************************************************************-o-******
  * snmp_sess_open
@@ -1501,6 +1567,7 @@
 _sess_open(netsnmp_session * in_session)
 {
     netsnmp_transport *transport = NULL;
+    int rc;
 
     in_session->s_snmp_errno = 0;
     in_session->s_errno = 0;
@@ -1536,8 +1603,24 @@
                                   NETSNMP_DS_LIB_CLIENT_ADDR, clientaddr_save);
     }
 
+    if (transport == NULL) {
+        DEBUGMSGTL(("_sess_open", "couldn't interpret peername\n"));
+        in_session->s_snmp_errno = SNMPERR_BAD_ADDRESS;
+        in_session->s_errno = errno;
+        snmp_set_detail(in_session->peername);
+        return NULL;
+    }
+
+    /* Optional supplimental transport configuration information and
+       final call to actually open the transport */
+    if ((rc = netsnmp_sess_config_and_open_transport(in_session, transport))
+        != SNMPERR_SUCCESS) {
+        transport = NULL;
+        return NULL;
+    }
+
 #if defined(SO_BROADCAST) && defined(SOL_SOCKET)
-    if ( transport != 0 && (in_session->flags & SNMP_FLAGS_UDP_BROADCAST) ) {
+    if ( in_session->flags & SNMP_FLAGS_UDP_BROADCAST) {
         int   b = 1;
         int   rc;
 
@@ -1554,14 +1637,6 @@
     }
 #endif
 
-    if (transport == NULL) {
-        DEBUGMSGTL(("_sess_open", "couldn't interpret peername\n"));
-        in_session->s_snmp_errno = SNMPERR_BAD_ADDRESS;
-        in_session->s_errno = errno;
-        snmp_set_detail(in_session->peername);
-        return NULL;
-    }
-
     return snmp_sess_add(in_session, transport, NULL, NULL);
 }
 
@@ -1657,7 +1732,8 @@
                                               size_t))
 {
     struct session_list *slp;
-
+    int rc;
+    
     _init_snmp();
 
     if (transport == NULL)
@@ -1669,8 +1745,24 @@
         return NULL;
     }
 
+    /* if the transport hasn't been fully opened yet, open it now */
+    if ((rc = netsnmp_sess_config_and_open_transport(in_session, transport))
+        != SNMPERR_SUCCESS) {
+        return NULL;
+    }
+
+    if (transport->f_setup_session) {
+        if (SNMPERR_SUCCESS !=
+            transport->f_setup_session(transport, in_session)) {
+            netsnmp_transport_free(transport);
+            return NULL;
+        }
+    }
+        
+            
     DEBUGMSGTL(("snmp_sess_add", "fd %d\n", transport->sock));
 
+
     if ((slp = snmp_sess_copy(in_session)) == NULL) {
         transport->f_close(transport);
         netsnmp_transport_free(transport);
@@ -2326,7 +2418,7 @@
         }
     }
     if (pdu->securityNameLen == 0 && pdu->securityName == NULL) {
-        if (session->securityModel != NETSNMP_TSM_SECURITY_MODEL &&
+        if (session->securityModel != SNMP_SEC_MODEL_TSM &&
             session->securityNameLen == 0) {
             session->s_snmp_errno = SNMPERR_BAD_SEC_NAME;
             return -1;
@@ -2338,6 +2430,9 @@
                 return -1;
             }
             pdu->securityNameLen = session->securityNameLen;
+        } else {
+            pdu->securityName = strdup("");
+            session->securityName = strdup("");
         }
     }
     if (pdu->securityLevel == 0) {
@@ -3676,8 +3771,10 @@
     data = asn_parse_sequence(data, &length, &type,
                               (ASN_SEQUENCE | ASN_CONSTRUCTOR), "version");
     if (data) {
+        DEBUGDUMPHEADER("recv", "SNMP Version");
         data =
             asn_parse_int(data, &length, &type, &version, sizeof(version));
+        DEBUGINDENTLESS();
         if (!data || type != ASN_INTEGER) {
             return SNMPERR_BAD_VERSION;
         }
@@ -4873,11 +4970,12 @@
      * 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->securityEngineIDLen != pdu->contextEngineIDLen ||
-        memcmp(pdu->securityEngineID, pdu->contextEngineID,
-               pdu->securityEngineIDLen) != 0) {
+    if (pdu->securityModel == NETSNMP_SECMOD_USM &&
+        (pdu->securityEngineIDLen != pdu->contextEngineIDLen ||
+         memcmp(pdu->securityEngineID, pdu->contextEngineID,
+                pdu->securityEngineIDLen) != 0)) {
         DEBUGMSGTL(("scopedPDU_parse",
-                    "inconsistent engineID information in message\n"));
+                    "Note: security and context engineIDs differ\n"));
     }
 
     /*
@@ -5157,32 +5255,15 @@
         return 0;
     }
 
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DUMP_PACKET)) {
-        if (transport->f_fmtaddr != NULL) {
-            char           *dest_txt =
-                transport->f_fmtaddr(transport, pdu->transport_data,
-                                     pdu->transport_data_length);
-            if (dest_txt != NULL) {
-                snmp_log(LOG_DEBUG, "\nSending %lu bytes to %s\n", (unsigned long)length,
-                         dest_txt);
-                SNMP_FREE(dest_txt);
-            } else {
-                snmp_log(LOG_DEBUG, "\nSending %lu bytes to <UNKNOWN>\n",
-                         (unsigned long)length);
-            }
-        }
-        xdump(packet, length, "");
-    }
-
     /*
      * Send the message.  
      */
 
-    DEBUGMSGTL(("sess_process_packet", "sending message id#%ld reqid#%ld\n",
-                pdu->msgid, pdu->reqid));
-    result = transport->f_send(transport, packet, length,
-                               &(pdu->transport_data),
-                               &(pdu->transport_data_length));
+    DEBUGMSGTL(("sess_process_packet", "sending message id#%ld reqid#%ld len %"
+                NETSNMP_PRIz "u\n", pdu->msgid, pdu->reqid, length));
+    result = netsnmp_transport_send(transport, packet, length,
+                                    &(pdu->transport_data),
+                                    &(pdu->transport_data_length));
 
     SNMP_FREE(pktbuf);
 
@@ -5416,20 +5497,12 @@
 	      "session %p fd %d pkt %p length %d\n", sessp,
 	      transport->sock, packetptr, length));
 
-  if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
-			     NETSNMP_DS_LIB_DUMP_PACKET)) {
-    if (transport->f_fmtaddr != NULL) {
-      char *addrtxt = transport->f_fmtaddr(transport, opaque, olength);
-      if (addrtxt != NULL) {
-	snmp_log(LOG_DEBUG, "\nReceived %d bytes from %s\n",
-		 length, addrtxt);
-	SNMP_FREE(addrtxt);
-      } else {
-	snmp_log(LOG_DEBUG, "\nReceived %d bytes from <UNKNOWN>\n",
-		 length);
-      }
-    }
-    xdump(packetptr, length, "");
+  if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,NETSNMP_DS_LIB_DUMP_PACKET)) {
+      char *addrtxt = netsnmp_transport_peer_string(transport, opaque, olength);
+      snmp_log(LOG_DEBUG, "\nReceived %d byte packet from %s\n",
+               length, addrtxt);
+      SNMP_FREE(addrtxt);
+      xdump(packetptr, length, "");
   }
 
   /*
@@ -5472,8 +5545,8 @@
     ret = snmp_parse(sessp, sp, pdu, packetptr, length);
   }
 
-  DEBUGMSGTL(("sess_process_packet", "received message id#%ld reqid#%ld\n",
-              pdu->msgid, pdu->reqid));
+  DEBUGMSGTL(("sess_process_packet", "received message id#%ld reqid#%ld len "
+              "%u\n", pdu->msgid, pdu->reqid, length));
 
   if (ret != SNMP_ERR_NOERROR) {
     DEBUGMSGTL(("sess_process_packet", "parse fail\n"));
@@ -5901,7 +5974,8 @@
         }
     }
 
-    length = transport->f_recv(transport, rxbuf, rxbuf_len, &opaque, &olength);
+    length = netsnmp_transport_recv(transport, rxbuf, rxbuf_len, &opaque,
+                                    &olength);
 
     if (length == -1 && !(transport->flags & NETSNMP_TRANSPORT_FLAG_STREAM)) {
         sp->s_snmp_errno = SNMPERR_BAD_RECVFROM;
@@ -5972,7 +6046,7 @@
                         "  loop packet_len %" NETSNMP_PRIz "u, PDU length %"
                         NETSNMP_PRIz "u\n", isp->packet_len, pdulen));
 
-            if ((pdulen > MAX_PACKET_LENGTH) || (pdulen < 0)) {
+            if (pdulen > MAX_PACKET_LENGTH) {
                 /*
                  * Illegal length, drop the connection.  
                  */
@@ -6157,7 +6231,7 @@
 }
 
 
-/*
+/**
  * Returns info about what snmp requires from a select statement.
  * numfds is the number of fds in the list that are significant.
  * All file descriptors opened for SNMP are OR'd into the fdset.
@@ -6178,91 +6252,121 @@
  *
  * snmp_select_info returns the number of open sockets.  (i.e. The number of
  * sessions open)
+ *
+ * @see See also snmp_sess_select_info2_flags().
  */
-
 int
-snmp_select_info(int *numfds,
-                 fd_set * fdset, struct timeval *timeout, int *block)
-    /*
-     * input:  set to 1 if input timeout value is undefined  
-     * set to 0 if input timeout value is defined    
-     * output: set to 1 if output timeout value is undefined 
-     * set to 0 if output rimeout vlaue id defined   
-     */
+snmp_select_info(int *numfds, fd_set *fdset, struct timeval *timeout,
+                 int *block)
 {
-    return snmp_sess_select_info((void *) 0, numfds, fdset, timeout,
-                                 block);
+    return snmp_sess_select_info(NULL, numfds, fdset, timeout, block);
 }
 
+/**
+ * @see See also snmp_sess_select_info2_flags().
+ */
 int
-snmp_select_info2(int *numfds,
-                  netsnmp_large_fd_set * fdset,
+snmp_select_info2(int *numfds, netsnmp_large_fd_set *fdset,
 		  struct timeval *timeout, int *block)
-    /*
-     * input:  set to 1 if input timeout value is undefined  
-     * set to 0 if input timeout value is defined    
-     * output: set to 1 if output timeout value is undefined 
-     * set to 0 if output rimeout vlaue id defined   
-     */
 {
-    return snmp_sess_select_info2((void *) 0, numfds, fdset, timeout,
-                                  block);
+    return snmp_sess_select_info2(NULL, numfds, fdset, timeout, block);
 }
 
-/*
- * Same as snmp_select_info, but works just one session. 
+/**
+ * @see See also snmp_sess_select_info2_flags().
  */
 int
-snmp_sess_select_info(void *sessp,
-                      int *numfds,
-                      fd_set * fdset, struct timeval *timeout, int *block)
+snmp_sess_select_info(void *sessp, int *numfds, fd_set *fdset,
+                      struct timeval *timeout, int *block)
+{
+    return snmp_sess_select_info_flags(sessp, numfds, fdset, timeout, block,
+                                       NETSNMP_SELECT_NOFLAGS);
+}
+        
+/**
+ * @see See also snmp_sess_select_info2_flags().
+ */
+int
+snmp_sess_select_info_flags(void *sessp, int *numfds, fd_set *fdset,
+                            struct timeval *timeout, int *block, int flags)
 {
   int rc;
   netsnmp_large_fd_set lfdset;
 
   netsnmp_large_fd_set_init(&lfdset, FD_SETSIZE);
   netsnmp_copy_fd_set_to_large_fd_set(&lfdset, fdset);
-  rc = snmp_sess_select_info2(sessp, numfds, &lfdset, timeout, block);
+  rc = snmp_sess_select_info2_flags(sessp, numfds, &lfdset, timeout,
+                                    block, flags);
   if (netsnmp_copy_large_fd_set_to_fd_set(fdset, &lfdset) < 0) {
       snmp_log(LOG_ERR,
 	     "Use snmp_sess_select_info2() for processing"
-	     " large file descriptors");
+	     " large file descriptors\n");
   }
   netsnmp_large_fd_set_cleanup(&lfdset);
   return rc;
 }
 
+/**
+ * @see See also snmp_sess_select_info2_flags().
+ */
 int
-snmp_sess_select_info2(void *sessp,
-                       int *numfds,
-                       netsnmp_large_fd_set * fdset,
+snmp_sess_select_info2(void *sessp, int *numfds, netsnmp_large_fd_set *fdset,
 		       struct timeval *timeout, int *block)
 {
-    struct session_list *slptest = (struct session_list *) sessp;
+    return snmp_sess_select_info2_flags(sessp, numfds, fdset, timeout, block,
+                                        NETSNMP_SELECT_NOFLAGS);
+}
+
+/**
+ * Compute/update the arguments to be passed to select().
+ *
+ * @param[in]     sessp   Which sessions to process: either a pointer to a
+ *   specific session or NULL which means to process all sessions.
+ * @param[in,out] numfds  On POSIX systems one more than the the largest file
+ *   descriptor that is present in *fdset. On systems that use Winsock (MinGW
+ *   and MSVC), do not use the value written into *numfds.
+ * @param[in,out] fdset   A large file descriptor set to which all file
+ *   descriptors will be added that are associated with one of the examined
+ *   sessions.
+ * @param[in,out] timeout On input, if *block = 1, the maximum time the caller
+ *   will block while waiting for Net-SNMP activity. On output, if this function
+ *   has set *block to 0, the maximum time the caller is allowed to wait before
+ *   invoking the Net-SNMP processing functions (snmp_read(), snmp_timeout()
+ *   and run_alarms()). If this function has set *block to 1, *timeout won't
+ *   have been modified and no alarms are active.
+ * @param[in,out] block   On input, whether the caller prefers to block forever
+ *   when no alarms are active. On output, 0 means that no alarms are active
+ *   nor that there is a timeout pending for any of the processed sessions.
+ * @param[in]     flags   Either 0 or NETSNMP_SELECT_NOALARMS.
+ *
+ * @return Number of sessions processed by this function.
+ *
+ * @see See also agent_check_and_process() for an example of how to use this
+ *   function.
+ */
+int
+snmp_sess_select_info2_flags(void *sessp, int *numfds,
+                             netsnmp_large_fd_set * fdset,
+                             struct timeval *timeout, int *block, int flags)
+{
     struct session_list *slp, *next = NULL;
     netsnmp_request_list *rp;
-    struct timeval  now, earliest, delta;
+    struct timeval  now, earliest, alarm_tm;
     int             active = 0, requests = 0;
     int             next_alarm = 0;
 
     timerclear(&earliest);
 
     /*
-     * For each request outstanding, add its socket to the fdset,
+     * For each session examined, add its socket to the fdset,
      * and if it is the earliest timeout to expire, mark it as lowest.
      * If a single session is specified, do just for that session.
      */
 
-    if (sessp) {
-        slp = slptest;
-    } else {
-        slp = Sessions;
-    }
-
     DEBUGMSGTL(("sess_select", "for %s session%s: ",
                 sessp ? "single" : "all", sessp ? "" : "s"));
 
-    for (; slp; slp = next) {
+    for (slp = sessp ? sessp : Sessions; slp; slp = next) {
         next = slp->next;
 
         if (slp->transport == NULL) {
@@ -6319,10 +6423,15 @@
     }
     DEBUGMSG(("sess_select", "\n"));
 
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_ALARM_DONT_USE_SIG)) {
-        next_alarm = get_next_alarm_delay_time(&delta);
-        DEBUGMSGT(("sess_select","next alarm %d.%06d sec\n",
-                   (int)delta.tv_sec, (int)delta.tv_usec));
+    gettimeofday(&now, NULL);
+
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_ALARM_DONT_USE_SIG) &&
+        !(flags & NETSNMP_SELECT_NOALARMS)) {
+        next_alarm = netsnmp_get_next_alarm_time(&alarm_tm, &now);
+        if (next_alarm)
+            DEBUGMSGT(("sess_select","next alarm at %ld.%06ld sec\n",
+                       (long)alarm_tm.tv_sec, (long)alarm_tm.tv_usec));
     }
     if (next_alarm == 0 && requests == 0) {
         /*
@@ -6333,51 +6442,18 @@
         return active;
     }
 
-    /*
-     * * Now find out how much time until the earliest timeout.  This
-     * * transforms earliest from an absolute time into a delta time, the
-     * * time left until the select should timeout.
-     */
-    gettimeofday(&now, (struct timezone *) 0);
-    /*
-     * Now = now;
-     */
+    if (next_alarm &&
+        (!timerisset(&earliest) || timercmp(&alarm_tm, &earliest, <)))
+        earliest = alarm_tm;
 
-    if (next_alarm) {
-        delta.tv_sec += now.tv_sec;
-        delta.tv_usec += now.tv_usec;
-        while (delta.tv_usec >= 1000000) {
-            delta.tv_usec -= 1000000;
-            delta.tv_sec += 1;
-        }
-        if (!timerisset(&earliest) ||
-            ((earliest.tv_sec > delta.tv_sec) ||
-             ((earliest.tv_sec == delta.tv_sec) &&
-              (earliest.tv_usec > delta.tv_usec)))) {
-            earliest.tv_sec = delta.tv_sec;
-            earliest.tv_usec = delta.tv_usec;
-        }
-    }
-
-    if (earliest.tv_sec < now.tv_sec) {
-        DEBUGMSGT(("verbose:sess_select","timer overdue\n"));
-        earliest.tv_sec = 0;
-        earliest.tv_usec = 0;
-    } else if (earliest.tv_sec == now.tv_sec) {
-        earliest.tv_sec = 0;
-        earliest.tv_usec = (earliest.tv_usec - now.tv_usec);
-        if (earliest.tv_usec < 0) {
-            earliest.tv_usec = 100;
-        }
-        DEBUGMSGT(("verbose:sess_select","timer due *real* soon. %d usec\n",
-                   (int)earliest.tv_usec));
+    NETSNMP_TIMERSUB(&earliest, &now, &earliest);
+    if (earliest.tv_sec < 0) {
+        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));
+        timerclear(&earliest);
     } else {
-        earliest.tv_sec = (earliest.tv_sec - now.tv_sec);
-        earliest.tv_usec = (earliest.tv_usec - now.tv_usec);
-        if (earliest.tv_usec < 0) {
-            earliest.tv_sec--;
-            earliest.tv_usec = (1000000L + earliest.tv_usec);
-        }
         DEBUGMSGT(("verbose:sess_select","timer due in %d.%06d sec\n",
                    (int)earliest.tv_sec, (int)earliest.tv_usec));
     }
@@ -6490,28 +6566,12 @@
         return -1;
     }
 
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DUMP_PACKET)) {
-        if (transport->f_fmtaddr != NULL) {
-            char           *str = NULL;
-            str = transport->f_fmtaddr(transport, rp->pdu->transport_data,
-                                       rp->pdu->transport_data_length);
-            if (str != NULL) {
-                snmp_log(LOG_DEBUG, "\nResending %lu bytes to %s\n", 
-                         (unsigned long)length, str);
-                SNMP_FREE(str);
-            } else {
-                snmp_log(LOG_DEBUG, "\nResending %lu bytes to <UNKNOWN>\n",
-                         (unsigned long)length);
-            }
-        }
-        xdump(packet, length, "");
-    }
-
-    DEBUGMSGTL(("sess_process_packet", "resending message id#%ld reqid#%ld rp_reqid#%ld rp_msgid#%ld\n",
-                rp->pdu->msgid, rp->pdu->reqid, rp->request_id, rp->message_id));
-    result = transport->f_send(transport, packet, length,
-                               &(rp->pdu->transport_data),
-                               &(rp->pdu->transport_data_length));
+    DEBUGMSGTL(("sess_process_packet", "resending message id#%ld reqid#%ld "
+                "rp_reqid#%ld rp_msgid#%ld len %" NETSNMP_PRIz "u\n",
+                rp->pdu->msgid, rp->pdu->reqid, rp->request_id, rp->message_id, length));
+    result = netsnmp_transport_send(transport, packet, length,
+                                    &(rp->pdu->transport_data),
+                                    &(rp->pdu->transport_data_length));
 
     /*
      * We are finished with the local packet buffer, if we allocated one (due
@@ -7633,12 +7693,12 @@
 /*
  * generic statistics counter functions 
  */
-static u_int    statistics[MAX_STATS];
+static u_int    statistics[NETSNMP_STAT_MAX_STATS];
 
 u_int
 snmp_increment_statistic(int which)
 {
-    if (which >= 0 && which < MAX_STATS) {
+    if (which >= 0 && which < NETSNMP_STAT_MAX_STATS) {
         statistics[which]++;
         return statistics[which];
     }
@@ -7648,7 +7708,7 @@
 u_int
 snmp_increment_statistic_by(int which, int count)
 {
-    if (which >= 0 && which < MAX_STATS) {
+    if (which >= 0 && which < NETSNMP_STAT_MAX_STATS) {
         statistics[which] += count;
         return statistics[which];
     }
@@ -7658,7 +7718,7 @@
 u_int
 snmp_get_statistic(int which)
 {
-    if (which >= 0 && which < MAX_STATS)
+    if (which >= 0 && which < NETSNMP_STAT_MAX_STATS)
         return statistics[which];
     return 0;
 }
diff --git a/snmplib/snmp_auth.c b/snmplib/snmp_auth.c
index ddfd3d3..4b408f1 100644
--- a/snmplib/snmp_auth.c
+++ b/snmplib/snmp_auth.c
@@ -43,11 +43,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -73,10 +69,6 @@
 #include <dmalloc.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #ifdef vms
 #include <in.h>
 #endif
diff --git a/snmplib/snmp_client.c b/snmplib/snmp_client.c
index b34c920..bff325e 100644
--- a/snmplib/snmp_client.c
+++ b/snmplib/snmp_client.c
@@ -56,11 +56,7 @@
 #endif
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -89,10 +85,6 @@
 #include <dmalloc.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/types.h>
 
 #include <net-snmp/agent/ds_agent.h>
@@ -104,6 +96,7 @@
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/snmp_logging.h>
 #include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/pdu_api.h>
 
 
 #ifndef BSD4_3
@@ -563,7 +556,7 @@
 /*
  * This function will clone a full varbind list
  *
- * Returns a pointer to the cloned PDU if successful.
+ * Returns a pointer to the cloned varbind list if successful.
  * Returns 0 if failure
  */
 netsnmp_variable_list *
@@ -626,7 +619,7 @@
     if ((pdu->command != SNMP_MSG_RESPONSE)
         || (pdu->errstat == SNMP_ERR_NOERROR)
         || (NULL == pdu->variables)
-        || (pdu->errindex > snmp_varbind_len(pdu))
+        || (pdu->errindex > (int)snmp_varbind_len(pdu))
         || (pdu->errindex <= 0)) {
         return NULL;            /* pre-condition tests fail */
     }
@@ -765,7 +758,7 @@
 
 netsnmp_variable_list*
 find_varbind_in_list( netsnmp_variable_list *vblist,
-                      oid *name, size_t len)
+                      const oid *name, size_t len)
 {
     for (; vblist != NULL; vblist = vblist->next_variable)
         if (!snmp_oid_compare(vblist->name, vblist->name_length, name, len))
@@ -1046,7 +1039,8 @@
         block = NETSNMP_SNMPBLOCK;
         tvp = &timeout;
         timerclear(tvp);
-        snmp_select_info(&numfds, &fdset, tvp, &block);
+        snmp_sess_select_info_flags(0, &numfds, &fdset, tvp, &block,
+                                    NETSNMP_SELECT_NOALARMS);
         if (block == 1)
             tvp = NULL;         /* block without timeout */
         count = select(numfds, &fdset, NULL, NULL, tvp);
@@ -1137,7 +1131,8 @@
         block = NETSNMP_SNMPBLOCK;
         tvp = &timeout;
         timerclear(tvp);
-        snmp_sess_select_info(sessp, &numfds, &fdset, tvp, &block);
+        snmp_sess_select_info_flags(sessp, &numfds, &fdset, tvp, &block,
+                                    NETSNMP_SELECT_NOALARMS);
         if (block == 1)
             tvp = NULL;         /* block without timeout */
         count = select(numfds, &fdset, NULL, NULL, tvp);
@@ -1268,7 +1263,7 @@
     netsnmp_pdu *pdu      = snmp_pdu_create( request );
     netsnmp_pdu *response = NULL;
     netsnmp_variable_list *vb1, *vb2, *vtmp;
-    int ret;
+    int ret, count;
 
     DEBUGMSGTL(("iquery", "query on session %p\n", session));
     /*
@@ -1295,6 +1290,8 @@
      */
     if ( ret == SNMP_ERR_NOERROR ) {
         if ( response->errstat != SNMP_ERR_NOERROR ) {
+            DEBUGMSGT(("iquery", "Error in packet: %s\n",
+                       snmp_errstring(response->errstat)));
             /*
              * If the request failed, then remove the
              *  offending varbind and try again.
@@ -1304,6 +1301,16 @@
              *       NETSNMP_DS_APP_DONT_FIX_PDUS ??
              */
             ret = response->errstat;
+            if (response->errindex != 0) {
+                DEBUGMSGT(("iquery:result", "Failed object:\n"));
+                for (count = 1, vtmp = response->variables;
+                     vtmp && count != response->errindex;
+                     vtmp = vtmp->next_variable, count++)
+                    /*EMPTY*/;
+                if (vtmp)
+                    DEBUGMSGVAR(("iquery:result", vtmp));
+                DEBUGMSG(("iquery:result", "\n"));
+            }
             if (request != SNMP_MSG_SET &&
                 response->errindex != 0) {
                 DEBUGMSGTL(("iquery", "retrying query (%d, %ld)\n", ret, response->errindex));
@@ -1317,6 +1324,8 @@
             for (vb1 = response->variables, vb2 = list;
                  vb1;
                  vb1 = vb1->next_variable,  vb2 = vb2->next_variable) {
+                DEBUGMSGVAR(("iquery:result", vb1));
+                DEBUGMSG(("iquery:results", "\n"));
                 if ( !vb2 ) {
                     ret = SNMP_ERR_GENERR;
                     break;
@@ -1409,4 +1418,444 @@
     snmp_free_varbind( vb );
     return ret;
 }
+
+/** **************************************************************************
+ *
+ * state machine
+ *
+ */
+int
+netsnmp_state_machine_run( netsnmp_state_machine_input *input)
+{
+    netsnmp_state_machine_step *current, *last;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->steps, SNMPERR_GENERR );
+    last = current = input->steps;
+
+    DEBUGMSGT(("state_machine:run", "starting step: %s\n", current->name));
+
+    while (current) {
+
+        /*
+         * log step and check for required data
+         */
+        DEBUGMSGT(("state_machine:run", "at step: %s\n", current->name));
+        if (NULL == current->run) {
+            DEBUGMSGT(("state_machine:run", "no run step\n"));
+            current->result = last->result;
+            break;
+        }
+
+        /*
+         * run step
+         */
+        DEBUGMSGT(("state_machine:run", "running step: %s\n", current->name));
+        current->result = (*current->run)( input, current );
+        ++input->steps_so_far;
+        
+        /*
+         * log result and move to next step
+         */
+        input->last_run = current;
+        DEBUGMSGT(("state_machine:run:result", "step %s returned %d\n",
+                   current->name, current->result));
+        if (SNMPERR_SUCCESS == current->result)
+            current = current->on_success;
+        else if (SNMPERR_ABORT == current->result) {
+            DEBUGMSGT(("state_machine:run:result", "ABORT from %s\n",
+                       current->name));
+            break;
+        }
+        else
+            current = current->on_error;
+    }
+
+    /*
+     * run cleanup
+     */
+    if ((input->cleanup) && (input->cleanup->run))
+        (*input->cleanup->run)( input, input->last_run );
+
+    return input->last_run->result;
+}
+
+/** **************************************************************************
+ *
+ * row create state machine steps
+ *
+ */
+typedef struct rowcreate_state_s {
+
+    netsnmp_session        *session;
+    netsnmp_variable_list  *vars;
+    int                     row_status_index;
+} rowcreate_state;
+
+static netsnmp_variable_list *
+_get_vb_num(netsnmp_variable_list *vars, int index)
+{
+    for (; vars && index > 0; --index)
+        vars = vars->next_variable;
+
+    if (!vars || index > 0)
+        return NULL;
+    
+    return vars;
+}
+
+
+/*
+ * cleanup
+ */
+static int 
+_row_status_state_cleanup(netsnmp_state_machine_input *input,
+                 netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_ABORT );
+    netsnmp_require_ptr_LRV( step, SNMPERR_ABORT );
+
+    DEBUGMSGT(("row_create:called", "_row_status_state_cleanup, last run step was %s rc %d\n",
+               step->name, step->result));
+
+    ctx = (rowcreate_state *)input->input_context;
+    if (ctx && ctx->vars)
+        snmp_free_varbind( ctx->vars );
+
+    return SNMPERR_SUCCESS;
+}
+
+/*
+ * send a request to activate the row
+ */
+static int 
+_row_status_state_activate(netsnmp_state_machine_input *input,
+                  netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *rs_var, *var = NULL;
+    int32_t                rc, val = RS_ACTIVE;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    /*
+     * just send the rowstatus varbind
+     */
+    rs_var = _get_vb_num(ctx->vars, ctx->row_status_index);
+    netsnmp_require_ptr_LRV(rs_var, SNMPERR_GENERR);
+
+    var = snmp_varlist_add_variable(&var, rs_var->name, rs_var->name_length,
+                                    rs_var->type, &val, sizeof(val));
+    netsnmp_require_ptr_LRV( var, SNMPERR_GENERR );
+
+    /*
+     * send set
+     */
+    rc = netsnmp_query_set( var, ctx->session );
+    if (-2 == rc)
+        rc = SNMPERR_ABORT;
+
+    snmp_free_varbind(var);
+
+    return rc;
+}
+
+/*
+ * send each non-row status column, one at a time
+ */
+static int 
+_row_status_state_single_value_cols(netsnmp_state_machine_input *input,
+                                    netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *var, *tmp_next, *row_status;
+    int                    rc = SNMPERR_GENERR;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    row_status = _get_vb_num(ctx->vars, ctx->row_status_index);
+    netsnmp_require_ptr_LRV(row_status, SNMPERR_GENERR);
+
+    /*
+     * try one varbind at a time
+     */
+    for (var = ctx->vars; var; var = var->next_variable) {
+        if (var == row_status)
+            continue;
+
+        tmp_next = var->next_variable;
+        var->next_variable = NULL;
+
+        /*
+         * send set
+         */
+        rc = netsnmp_query_set( var, ctx->session );
+        var->next_variable = tmp_next;
+        if (-2 == rc)
+            rc = SNMPERR_ABORT;
+        if (rc != SNMPERR_SUCCESS)
+            break;
+    }
+
+    return rc;
+}
+
+/*
+ * send all values except row status
+ */
+static int 
+_row_status_state_multiple_values_cols(netsnmp_state_machine_input *input,
+                                       netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *vars, *var, *last, *row_status;
+    int                    rc;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    vars = snmp_clone_varbind(ctx->vars);
+    netsnmp_require_ptr_LRV(vars, SNMPERR_GENERR);
+
+    row_status = _get_vb_num(vars, ctx->row_status_index);
+    if (NULL == row_status) {
+        snmp_free_varbind(vars);
+        return SNMPERR_GENERR;
+    }
+
+    /*
+     * remove row status varbind
+     */
+    if (row_status == vars) {
+        vars = row_status->next_variable;
+        row_status->next_variable = NULL;
+    }
+    else {
+        for (last=vars, var=last->next_variable;
+             var;
+             last=var, var = var->next_variable) {
+            if (var == row_status) {
+                last->next_variable = var->next_variable;
+                break;
+            }
+        }
+    }
+    snmp_free_var(row_status);
+
+    /*
+     * send set
+     */
+    rc = netsnmp_query_set( vars, ctx->session );
+    if (-2 == rc)
+        rc = SNMPERR_ABORT;
+
+    snmp_free_varbind(vars);
+
+    return rc;
+}
+
+/*
+ * send a createAndWait request with no other values
+ */
+static int 
+_row_status_state_single_value_createAndWait(netsnmp_state_machine_input *input,
+                                             netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *var = NULL, *rs_var;
+    int32_t                rc, val = RS_CREATEANDWAIT;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    rs_var = _get_vb_num(ctx->vars, ctx->row_status_index);
+    netsnmp_require_ptr_LRV(rs_var, SNMPERR_GENERR);
+
+    var = snmp_varlist_add_variable(&var, rs_var->name, rs_var->name_length,
+                                    rs_var->type, &val, sizeof(val));
+    netsnmp_require_ptr_LRV(var, SNMPERR_GENERR);
+
+    /*
+     * send set
+     */
+    rc = netsnmp_query_set( var, ctx->session );
+    if (-2 == rc)
+        rc = SNMPERR_ABORT;
+
+    snmp_free_varbind(var);
+
+    return rc;
+}
+
+/*
+ * send a creatAndWait request with all values
+ */
+static int 
+_row_status_state_all_values_createAndWait(netsnmp_state_machine_input *input,
+                                           netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *vars, *rs_var;
+    int                    rc;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    vars = snmp_clone_varbind(ctx->vars);
+    netsnmp_require_ptr_LRV(vars, SNMPERR_GENERR);
+
+    /*
+     * make sure row stats is createAndWait
+     */
+    rs_var = _get_vb_num(vars, ctx->row_status_index);
+    if (NULL == rs_var) {
+        snmp_free_varbind(vars);
+        return SNMPERR_GENERR;
+    }
+
+    if (*rs_var->val.integer != RS_CREATEANDWAIT)
+        *rs_var->val.integer = RS_CREATEANDWAIT;
+
+    /*
+     * send set
+     */
+    rc = netsnmp_query_set( vars, ctx->session );
+    if (-2 == rc)
+        rc = SNMPERR_ABORT;
+
+    snmp_free_varbind(vars);
+
+    return rc;
+}
+
+
+/**
+ * send createAndGo request with all values
+ */
+static int 
+_row_status_state_all_values_createAndGo(netsnmp_state_machine_input *input,
+                                         netsnmp_state_machine_step *step)
+{
+    rowcreate_state       *ctx;
+    netsnmp_variable_list *vars, *rs_var;
+    int                    rc;
+
+    netsnmp_require_ptr_LRV( input, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( step, SNMPERR_GENERR );
+    netsnmp_require_ptr_LRV( input->input_context, SNMPERR_GENERR );
+
+    ctx = (rowcreate_state *)input->input_context;
+
+    DEBUGMSGT(("row_create:called", "called %s\n", step->name));
+
+    vars = snmp_clone_varbind(ctx->vars);
+    netsnmp_require_ptr_LRV(vars, SNMPERR_GENERR);
+
+    /*
+     * make sure row stats is createAndGo
+     */
+    rs_var = _get_vb_num(vars, ctx->row_status_index + 1);
+    if (NULL == rs_var) {
+        snmp_free_varbind(vars);
+        return SNMPERR_GENERR;
+    }
+
+    if (*rs_var->val.integer != RS_CREATEANDGO)
+        *rs_var->val.integer = RS_CREATEANDGO;
+
+    /*
+     * send set
+     */
+    rc = netsnmp_query_set( vars, ctx->session );
+    if (-2 == rc)
+        rc = SNMPERR_ABORT;
+
+    snmp_free_varbind(vars);
+
+    return rc;
+}
+
+/** **************************************************************************
+ *
+ * row api
+ *
+ */
+int
+netsnmp_row_create(netsnmp_session *sess, netsnmp_variable_list *vars,
+                   int row_status_index)
+{
+    netsnmp_state_machine_step rc_cleanup =
+        { "row_create_cleanup", 0, _row_status_state_cleanup,
+          0, NULL, NULL, 0, NULL };
+    netsnmp_state_machine_step rc_activate =
+        { "row_create_activate", 0, _row_status_state_activate,
+          0, NULL, NULL, 0, NULL };
+    netsnmp_state_machine_step rc_sv_cols =
+        { "row_create_single_value_cols", 0,
+          _row_status_state_single_value_cols, 0, &rc_activate,NULL, 0, NULL };
+    netsnmp_state_machine_step rc_mv_cols =
+        { "row_create_multiple_values_cols", 0,
+          _row_status_state_multiple_values_cols, 0, &rc_activate, &rc_sv_cols,
+          0, NULL };
+    netsnmp_state_machine_step rc_sv_caw =
+        { "row_create_single_value_createAndWait", 0,
+          _row_status_state_single_value_createAndWait, 0, &rc_mv_cols, NULL,
+          0, NULL };
+    netsnmp_state_machine_step rc_av_caw =
+        { "row_create_all_values_createAndWait", 0,
+          _row_status_state_all_values_createAndWait, 0, &rc_activate,
+          &rc_sv_caw, 0, NULL };
+    netsnmp_state_machine_step rc_av_cag =
+        { "row_create_all_values_createAndGo", 0,
+          _row_status_state_all_values_createAndGo, 0, NULL, &rc_av_caw, 0,
+          NULL };
+
+    netsnmp_state_machine_input sm_input = { "row_create_machine", 0,
+                                             &rc_av_cag, &rc_cleanup };
+    rowcreate_state state;
+
+    netsnmp_require_ptr_LRV( sess, SNMPERR_GENERR);
+    netsnmp_require_ptr_LRV( vars, SNMPERR_GENERR);
+
+    state.session = sess;
+    state.vars = vars;
+
+    state.row_status_index = row_status_index;
+    sm_input.input_context = &state;
+
+    netsnmp_state_machine_run( &sm_input);
+
+    return SNMPERR_SUCCESS;
+}
+
+
 /** @} */
diff --git a/snmplib/snmp_debug.c b/snmplib/snmp_debug.c
index cb3bc8c..27ce233 100644
--- a/snmplib/snmp_debug.c
+++ b/snmplib/snmp_debug.c
@@ -15,9 +15,6 @@
 #include <netinet/in.h>
 #endif
 #include <stdarg.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -39,6 +36,8 @@
 #define SNMP_DEBUG_ACTIVE             1
 #define SNMP_DEBUG_EXCLUDED           2
 
+#ifndef NETSNMP_NO_DEBUGGING
+
 static int      dodebug = NETSNMP_ALWAYS_DEBUG;
 int             debug_num_tokens = 0;
 static int      debug_print_everything = 0;
@@ -77,12 +76,18 @@
 	debugindent += amount;
 }
 
+NETSNMP_IMPORT void
+debug_config_register_tokens(const char *configtoken, char *tokens);
+
 void
 debug_config_register_tokens(const char *configtoken, char *tokens)
 {
     debug_register_tokens(tokens);
 }
 
+NETSNMP_IMPORT void
+debug_config_turn_on_debugging(const char *configtoken, char *line);
+
 void
 debug_config_turn_on_debugging(const char *configtoken, char *line)
 {
@@ -90,18 +95,7 @@
 }
 
 void
-snmp_debug_init(void)
-{
-    register_prenetsnmp_mib_handler("snmp", "doDebugging",
-                                    debug_config_turn_on_debugging, NULL,
-                                    "(1|0)");
-    register_prenetsnmp_mib_handler("snmp", "debugTokens",
-                                    debug_config_register_tokens, NULL,
-                                    "token[,token...]");
-}
-
-void
-debug_register_tokens(char *tokens)
+debug_register_tokens(const char *tokens)
 {
     char           *newp, *cp;
     char           *st = NULL;
@@ -137,17 +131,16 @@
     free(newp);
 }
 
-
-/* 
+/*
  * Print all registered tokens along with their current status
  */
-void 
+void
 debug_print_registered_tokens(void) {
     int i;
 
     snmp_log(LOG_INFO, "%d tokens registered :\n", debug_num_tokens);
     for (i=0; i<debug_num_tokens; i++) {
-        snmp_log( LOG_INFO, "%d) %s : %d\n", 
+        snmp_log( LOG_INFO, "%d) %s : %d\n",
                  i, dbg_tokens [i].token_name, dbg_tokens [i].enabled);
     }
 }
@@ -170,7 +163,7 @@
     } else {
         for(i=0; i < debug_num_tokens; i++) {
             if (dbg_tokens[i].token_name &&
-                strncmp(dbg_tokens[i].token_name, token, 
+                strncmp(dbg_tokens[i].token_name, token,
                         strlen(dbg_tokens[i].token_name)) == 0) {
                 dbg_tokens[i].enabled = SNMP_DEBUG_ACTIVE;
                 return SNMPERR_SUCCESS;
@@ -206,13 +199,12 @@
     return SNMPERR_GENERR;
 }
 
-
 /*
  * debug_is_token_registered(char *TOKEN):
- * 
+ *
  * returns SNMPERR_SUCCESS
  * or SNMPERR_GENERR
- * 
+ *
  * if TOKEN has been registered and debugging support is turned on.
  */
 int
@@ -221,14 +213,14 @@
     int             i, rc;
 
     /*
-     * debugging flag is on or off 
+     * debugging flag is on or off
      */
     if (!dodebug)
         return SNMPERR_GENERR;
 
     if (debug_num_tokens == 0 || debug_print_everything) {
         /*
-         * no tokens specified, print everything 
+         * no tokens specified, print everything
          */
         return SNMPERR_SUCCESS;
     }
@@ -350,12 +342,12 @@
         rc = sprint_realloc_objid(&buf, &buf_len, &out_len, 1, theoid,
                                   var_subid-1);  /* Adjust for C's 0-based array indexing */
         if (rc) {
-            sprintf(tmpbuf, ".%lu--%lu", theoid[var_subid - 1],
-                    range_ubound);
+            sprintf(tmpbuf, ".%" NETSNMP_PRIo "u--%" NETSNMP_PRIo "u",
+                    theoid[var_subid - 1], range_ubound);
             rc = snmp_cstrcat(&buf, &buf_len, &out_len, 1, tmpbuf);
             if (rc) {
                 for (i = var_subid; i < len; i++) {
-                    sprintf(tmpbuf, ".%lu", theoid[i]);
+                    sprintf(tmpbuf, ".%" NETSNMP_PRIo "u", theoid[i]);
                     if (!snmp_cstrcat(&buf, &buf_len, &out_len, 1, tmpbuf)) {
                         break;
                     }
@@ -372,7 +364,7 @@
 }
 
 void
-debugmsg_hex(const char *token, u_char * thedata, size_t len)
+debugmsg_hex(const char *token, const u_char * thedata, size_t len)
 {
     u_char         *buf = NULL;
     size_t          buf_len = 0, out_len = 0;
@@ -394,7 +386,7 @@
 }
 
 void
-debugmsg_hextli(const char *token, u_char * thedata, size_t len)
+debugmsg_hextli(const char *token, const u_char * thedata, size_t len)
 {
     char            buf[SPRINT_MAX_LEN], token2[SPRINT_MAX_LEN];
     u_char         *b3 = NULL;
@@ -468,3 +460,119 @@
 {
     return dodebug;
 }
+
+#else /* ! NETSNMP_NO_DEBUGGING */
+
+#if __GNUC__ > 2
+#define UNUSED __attribute__((unused))
+#else
+#define UNUSED
+#endif
+
+int debug_indent_get(void) { return 0; }
+
+const char* debug_indent(void) { return ""; }
+
+void debug_indent_add(int amount UNUSED) { }
+
+NETSNMP_IMPORT void
+debug_config_register_tokens(const char *configtoken, char *tokens);
+
+void
+debug_config_register_tokens(const char *configtoken UNUSED,
+                             char *tokens UNUSED)
+{ }
+
+NETSNMP_IMPORT void
+debug_config_turn_on_debugging(const char *configtoken, char *line);
+
+void
+debug_config_turn_on_debugging(const char *configtoken UNUSED,
+                               char *line UNUSED)
+{ }
+
+void
+debug_register_tokens(const char *tokens UNUSED)
+{ }
+
+void
+debug_print_registered_tokens(void)
+{ }
+
+
+int
+debug_enable_token_logs (const char *token UNUSED)
+{ return SNMPERR_GENERR; }
+
+int
+debug_disable_token_logs (const char *token UNUSED)
+{ return SNMPERR_GENERR; }
+
+int
+debug_is_token_registered(const char *token UNUSED)
+{ return SNMPERR_GENERR; }
+
+void
+debugmsg(const char *token UNUSED, const char *format UNUSED, ...)
+{ }
+
+void
+debugmsg_oid(const char *token UNUSED, const oid * theoid UNUSED,
+             size_t len UNUSED)
+{ }
+
+void
+debugmsg_suboid(const char *token UNUSED, const oid * theoid UNUSED,
+                size_t len UNUSED)
+{ }
+
+void
+debugmsg_var(const char *token UNUSED, netsnmp_variable_list * var UNUSED)
+{ }
+
+void
+debugmsg_oidrange(const char *token UNUSED, const oid * theoid UNUSED,
+                  size_t len UNUSED, size_t var_subid UNUSED,
+                  oid range_ubound UNUSED)
+{ }
+
+void
+debugmsg_hex(const char *token UNUSED, const u_char * thedata UNUSED,
+             size_t len UNUSED)
+{ }
+
+void
+debugmsg_hextli(const char *token UNUSED, const u_char * thedata UNUSED,
+                size_t len UNUSED)
+{ }
+
+void
+debugmsgtoken(const char *token UNUSED, const char *format UNUSED, ...)
+{ }
+
+void
+debug_combo_nc(const char *token UNUSED, const char *format UNUSED, ...)
+{ }
+
+void
+snmp_set_do_debugging(int val UNUSED)
+{ }
+
+int
+snmp_get_do_debugging(void)
+{
+    return 0;
+}
+
+#endif /* NETSNMP_NO_DEBUGGING */
+
+void
+snmp_debug_init(void)
+{
+    register_prenetsnmp_mib_handler("snmp", "doDebugging",
+                                    debug_config_turn_on_debugging, NULL,
+                                    "(1|0)");
+    register_prenetsnmp_mib_handler("snmp", "debugTokens",
+                                    debug_config_register_tokens, NULL,
+                                    "token[,token...]");
+}
diff --git a/snmplib/snmp_enum.c b/snmplib/snmp_enum.c
index 5f735ee..39966fa 100644
--- a/snmplib/snmp_enum.c
+++ b/snmplib/snmp_enum.c
@@ -20,6 +20,7 @@
 
 #include <net-snmp/library/snmp_enum.h>
 #include <net-snmp/library/tools.h>
+#include <net-snmp/library/snmp_assert.h>
 
 struct snmp_enum_list_str {
     char           *name;
@@ -30,7 +31,7 @@
 static struct snmp_enum_list ***snmp_enum_lists;
 unsigned int    current_maj_num;
 unsigned int    current_min_num;
-struct snmp_enum_list_str *sliststorage;
+static struct snmp_enum_list_str *sliststorage;
 
 static void
 free_enum_list(struct snmp_enum_list *list);
@@ -40,9 +41,11 @@
 {
     int             i;
 
-    if (!snmp_enum_lists)
-        snmp_enum_lists = (struct snmp_enum_list ***)
-            calloc(1, sizeof(struct snmp_enum_list **) * SE_MAX_IDS);
+    if (NULL != snmp_enum_lists)
+        return SE_OK;
+
+    snmp_enum_lists = (struct snmp_enum_list ***)
+        calloc(1, sizeof(struct snmp_enum_list **) * SE_MAX_IDS);
     if (!snmp_enum_lists)
         return SE_NOMEM;
     current_maj_num = SE_MAX_IDS;
@@ -56,9 +59,6 @@
     }
     current_min_num = SE_MAX_SUBIDS;
 
-    if (!sliststorage)
-        sliststorage = NULL;
-
     register_config_handler(type, "enum", se_read_conf, NULL, NULL);
     return SE_OK;
 }
@@ -75,7 +75,7 @@
          */
         return SE_NOMEM;
     }
-
+    netsnmp_assert(NULL != snmp_enum_lists);
 
     if (snmp_enum_lists[major][minor] != NULL)
         ret = SE_ALREADY_THERE;
@@ -191,6 +191,7 @@
 {
     if (major > current_maj_num || minor > current_min_num)
         return NULL;
+    netsnmp_assert(NULL != snmp_enum_lists);
 
     return snmp_enum_lists[major][minor];
 }
@@ -257,18 +258,19 @@
 int
 se_add_pair_to_list(struct snmp_enum_list **list, char *label, int value)
 {
-    struct snmp_enum_list *lastnode = NULL;
+    struct snmp_enum_list *lastnode = NULL, *tmp;
 
     if (!list)
         return SE_DNE;
 
-    while (*list) {
-        if ((*list)->value == value) {
+    tmp = *list;
+    while (tmp) {
+        if (tmp->value == value) {
             free(label);
             return (SE_ALREADY_THERE);
         }
-        lastnode = (*list);
-        (*list) = (*list)->next;
+        lastnode = tmp;
+        tmp = tmp->next;
     }
 
     if (lastnode) {
@@ -456,24 +458,3 @@
     for (sptr = sliststorage; sptr != NULL; sptr = sptr->next)
         se_clear_list(&(sptr->list));
 }
-
-#ifdef TESTING
-main()
-{
-    init_snmp_enum();
-    se_add_pair(1, 1, strdup("hi"), 1);
-    se_add_pair(1, 1, strdup("there"), 2);
-    printf("hi: %d\n", se_find_value(1, 1, "hi"));
-    printf("2: %s\n", se_find_label(1, 1, 2));
-
-    se_add_pair_to_slist("testing", "life, and everything", 42);
-    se_add_pair_to_slist("testing", "restaurant at the end of the universe",
-                         2);
-
-    printf("life, and everything: %d\n",
-           se_find_value_in_slist("testing", "life, and everything"));
-    printf("2: %s\n", se_find_label_in_slist("testing", 2));
-
-    se_clear_all_lists();
-}
-#endif                          /* TESTING */
diff --git a/snmplib/snmp_logging.c b/snmplib/snmp_logging.c
index 7f19eb5..b30f165 100644
--- a/snmplib/snmp_logging.c
+++ b/snmplib/snmp_logging.c
@@ -42,11 +42,7 @@
 #endif
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -68,14 +64,6 @@
 #include <dmalloc.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/library/snmp_logging.h>      /* For this file's "internal" definitions */
@@ -102,12 +90,30 @@
  */
 netsnmp_log_handler *logh_head = NULL;
 netsnmp_log_handler *logh_priorities[LOG_DEBUG+1];
-
-static int      newline = 1;	 /* MTCRITICAL_RESOURCE */
+static int  logh_enabled = 0;
 
 static char syslogname[64] = DEFAULT_LOG_ID;
 
 void
+netsnmp_disable_this_loghandler(netsnmp_log_handler *logh)
+{
+    if (!logh || (0 == logh->enabled))
+        return;
+    logh->enabled = 0;
+    --logh_enabled;
+    netsnmp_assert(logh_enabled >= 0);
+}
+
+void
+netsnmp_enable_this_loghandler(netsnmp_log_handler *logh)
+{
+    if (!logh || (0 != logh->enabled))
+        return;
+    logh->enabled = 1;
+    ++logh_enabled;
+}
+
+void
 netsnmp_enable_filelog(netsnmp_log_handler *logh, int dont_zero_log);
 
 #ifndef HAVE_VSNPRINTF
@@ -119,10 +125,22 @@
 #endif
 
 void
+parse_config_logOption(const char *token, char *cptr)
+{
+  int my_argc = 0 ;
+  char **my_argv = NULL;
+
+  snmp_log_options( cptr, my_argc, my_argv );
+}
+
+void
 init_snmp_logging(void)
 {
     netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "logTimestamp", 
 			 NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_LOG_TIMESTAMP);
+    register_prenetsnmp_mib_handler("snmp", "logOption",
+                                    parse_config_logOption, NULL, "string");
+
 }
 
 void
@@ -321,6 +339,8 @@
     int             inc_optind = 0;
     netsnmp_log_handler *logh;
 
+    DEBUGMSGT(("logging:options", "optarg: '%s', argc %d, argv '%s'\n",
+               optarg, argc, argv ? argv[0] : "NULL"));
     optarg++;
     if (!*cp)
         cp = &missing_opt;
@@ -334,7 +354,7 @@
     /*
      * and '.... "-Lx value" ....'  (*with* the quotes)
      */
-    while (*optarg && isspace(*optarg)) {
+    while (*optarg && isspace((unsigned char)(*optarg))) {
         optarg++;
     }
     /*
@@ -352,6 +372,7 @@
         inc_optind = 1;
     }
 
+    DEBUGMSGT(("logging:options", "*cp: '%c'\n", *cp));
     switch (*cp) {
 
     /*
@@ -513,11 +534,7 @@
 int
 snmp_get_do_logging(void)
 {
-    netsnmp_log_handler *logh;
-    for (logh = logh_head; logh; logh = logh->next)
-        if (logh->enabled)
-            return 1;
-    return 0;
+    return (logh_enabled > 0);
 }
 
 
@@ -555,7 +572,7 @@
     logh->imagic  = 0;
 #endif
 
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
 }
 
 void
@@ -579,7 +596,7 @@
         fclose((FILE*)logh->magic);
         logh->magic   = NULL;
     }
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
 }
 
 void
@@ -620,7 +637,7 @@
     for (logh = logh_head; logh; logh = logh->next)
         if (logh->enabled && (logh->type == NETSNMP_LOGHANDLER_STDOUT ||
                               logh->type == NETSNMP_LOGHANDLER_STDERR)) {
-            logh->enabled = 0;
+            netsnmp_disable_this_loghandler(logh);
 	}
 }
 
@@ -631,7 +648,7 @@
 
     for (logh = logh_head; logh; logh = logh->next)
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_CALLBACK) {
-            logh->enabled = 0;
+            netsnmp_disable_this_loghandler(logh);
 	}
 }
 
@@ -645,7 +662,7 @@
             snmp_disable_syslog_entry(logh);
         if (logh->type == NETSNMP_LOGHANDLER_FILE)
             snmp_disable_filelog_entry(logh);
-        logh->enabled = 0;
+        netsnmp_disable_this_loghandler(logh);
     }
 }
 
@@ -716,7 +733,10 @@
         if (logh->type == NETSNMP_LOGHANDLER_SYSLOG) {
             logh->magic   = (void*)eventlog_h;
             logh->imagic  = enable;	/* syslog open */
-            logh->enabled = enable;
+            if (logh->enabled && (0 == enable))
+                netsnmp_disable_this_loghandler(logh);
+            else if ((0 == logh->enabled) && enable)
+                netsnmp_enable_this_loghandler(logh);
             found         = 1;
 	}
 
@@ -727,7 +747,10 @@
             logh->magic    = (void*)eventlog_h;
             logh->token    = strdup(ident);
             logh->imagic   = enable;	/* syslog open */
-            logh->enabled  = enable;
+            if (logh->enabled && (0 == enable))
+                netsnmp_disable_this_loghandler(logh);
+            else if ((0 == logh->enabled) && enable)
+                netsnmp_enable_this_loghandler(logh);
         }
     }
 }
@@ -742,12 +765,14 @@
 
     if (!logh->magic) {
         logfile = fopen(logh->token, dont_zero_log ? "a" : "w");
-        if (!logfile)
+        if (!logfile) {
+	    snmp_log_perror(logh->token);
             return;
+	}
         logh->magic = (void*)logfile;
         netsnmp_set_line_buffering(logfile);
     }
-    logh->enabled = 1;
+    netsnmp_enable_this_loghandler(logh);
 }
 
 void
@@ -790,7 +815,7 @@
     for (logh = logh_head; logh; logh = logh->next)
         if (logh->type == NETSNMP_LOGHANDLER_STDOUT ||
             logh->type == NETSNMP_LOGHANDLER_STDERR) {
-            logh->enabled = 1;
+            netsnmp_enable_this_loghandler(logh);
             found         = 1;
         }
 
@@ -811,7 +836,7 @@
 
     for (logh = logh_head; logh; logh = logh->next)
         if (logh->type == NETSNMP_LOGHANDLER_CALLBACK) {
-            logh->enabled = 1;
+            netsnmp_enable_this_loghandler(logh);
             found         = 1;
 	}
 
@@ -900,6 +925,9 @@
     if (!logh)
         return NULL;
 
+    DEBUGMSGT(("logging:register", "registering log type %d with pri %d\n",
+               type, priority));
+
     logh->type     = type;
     switch ( type ) {
     case NETSNMP_LOGHANDLER_STDOUT:
@@ -927,7 +955,7 @@
         return NULL;
     }
     logh->priority = priority;
-    logh->enabled  = 1;
+    netsnmp_enable_this_loghandler(logh);
     netsnmp_add_loghandler( logh );
     return logh;
 }
@@ -941,7 +969,7 @@
     logh = netsnmp_find_loghandler( token );
     if (!logh)
         return 0;
-    logh->enabled = 1;
+    netsnmp_enable_this_loghandler(logh);
     return 1;
 }
 
@@ -954,7 +982,7 @@
     logh = netsnmp_find_loghandler( token );
     if (!logh)
         return 0;
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
     return 1;
 }
 
@@ -986,6 +1014,8 @@
 int
 log_handler_stdouterr(  netsnmp_log_handler* logh, int pri, const char *str)
 {
+    static int      newline = 1;	 /* MTCRITICAL_RESOURCE */
+    const char     *newline_ptr;
     char            sbuf[40];
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
@@ -994,7 +1024,12 @@
     } else {
         strcpy(sbuf, "");
     }
-    newline = str[strlen(str) - 1] == '\n';	/* XXX - Eh ? */
+    /*
+     * Remember whether or not the current line ends with a newline for the
+     * next call of log_handler_stdouterr().
+     */
+    newline_ptr = strrchr(str, '\n');
+    newline = newline_ptr && newline_ptr[1] == 0;
 
     if (logh->imagic)
        printf(         "%s%s", sbuf, str);
@@ -1160,17 +1195,33 @@
 void
 snmp_log_string(int priority, const char *str)
 {
+    static int stderr_enabled = 0;
+    static netsnmp_log_handler lh = { 1, 0, 0, 0, "stderr",
+                                      log_handler_stdouterr, 0, NULL,  NULL,
+                                      NULL };
     netsnmp_log_handler *logh;
 
     /*
      * We've got to be able to log messages *somewhere*!
      * If you don't want stderr logging, then enable something else.
      */
-    if (!logh_head) {
-        snmp_enable_stderrlog();
-        snmp_log_string(LOG_WARNING,
-                        "No log handling enabled - turning on stderr logging\n");
+    if (0 == logh_enabled) {
+        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 );
+
+        return;
     }
+    else if (stderr_enabled) {
+        stderr_enabled = 0;
+        log_handler_stdouterr( &lh, LOG_INFO,
+                               "Log handling defined - disabling stderr\n" );
+    }
+        
 
     /*
      * Start at the given priority, and work "upwards"....
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
index 59831dd..e13e59e 100644
--- a/snmplib/snmp_openssl.c
+++ b/snmplib/snmp_openssl.c
@@ -1,24 +1,33 @@
 /*
- * snmptsmsm.c
- *
- * This code merely does openssl initialization so that multilpe
- * modules are safe to call netsnmp_init_openssl() for bootstrapping
- * without worrying about other callers that may have already done so.
+ * snmp_openssl.c
  */
 
 #include <net-snmp/net-snmp-config.h>
 
 #include <net-snmp/net-snmp-includes.h>
 
-#include <net-snmp/library/snmp_openssl.h>
-
 #if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
 
+#include <ctype.h>
+
 #include <openssl/evp.h>
 #include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <openssl/x509v3.h>
+#include <openssl/err.h>
+#include <openssl/objects.h>
+
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/cert_util.h>
+#include <net-snmp/library/snmp_openssl.h>
 
 static u_char have_started_already = 0;
 
+/*
+ * This code merely does openssl initialization so that multilpe
+ * modules are safe to call netsnmp_init_openssl() for bootstrapping
+ * without worrying about other callers that may have already done so.
+ */
 void netsnmp_init_openssl(void) {
 
     /* avoid duplicate calls */
@@ -35,4 +44,821 @@
     OpenSSL_add_all_algorithms();
 }
 
+/** netsnmp_openssl_cert_get_name: get subject name field from cert
+ * @internal
+ */
+/** instead of exposing this function, make helper functions for each
+ * field, like netsnmp_openssl_cert_get_commonName, below */
+static char *
+_cert_get_name(X509 *ocert, int which, char **buf, int *len, int flags)
+{
+    X509_NAME       *osubj_name;
+    int              space;
+    char            *buf_ptr;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    osubj_name = X509_get_subject_name(ocert);
+    if (NULL == osubj_name) {
+        DEBUGMSGT(("openssl:cert:name", "no subject name!\n"));
+        return NULL;
+    }
+
+    /** see if buf is big enough, or allocate buf if none specified */
+    space = X509_NAME_get_text_by_NID(osubj_name, which, NULL, 0);
+    if (-1 == space)
+        return NULL;
+    ++space; /* for NUL */
+    if (buf && *buf) {
+        if (*len < space)
+            return NULL;
+        buf_ptr = *buf;
+    }
+    else {
+        buf_ptr = calloc(1,space);
+        if (!buf_ptr)
+            return NULL;
+    }
+    space = X509_NAME_get_text_by_NID(osubj_name, which, buf_ptr, space);
+    if (len)
+        *len = space;
+
+    return buf_ptr;
+}
+
+/** netsnmp_openssl_cert_get_subjectName: get subject name field from cert
+ */
+char *
+netsnmp_openssl_cert_get_subjectName(X509 *ocert, char **buf, int *len)
+{
+    X509_NAME       *osubj_name;
+    int              space;
+    char            *buf_ptr;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    osubj_name = X509_get_subject_name(ocert);
+    if (NULL == osubj_name) {
+        DEBUGMSGT(("openssl:cert:name", "no subject name!\n"));
+        return NULL;
+    }
+
+    if (buf) {
+        buf_ptr = *buf;
+        space = *len;
+    }
+    else {
+        buf_ptr = NULL;
+        space = 0;
+    }
+    buf_ptr = X509_NAME_oneline(osubj_name, buf_ptr, space);
+    if (len)
+        *len = strlen(buf_ptr);
+
+    return buf_ptr;
+}
+
+/** netsnmp_openssl_cert_get_commonName: get commonName 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
+ * be responsbile for releasing.
+ */
+char *
+netsnmp_openssl_cert_get_commonName(X509 *ocert, char **buf, int *len)
+{
+    return _cert_get_name(ocert, NID_commonName, buf, len, 0);
+}
+
+/** netsnmp_openssl_cert_dump_name: dump subject names in cert
+ */
+void
+netsnmp_openssl_cert_dump_names(X509 *ocert)
+{
+    int              i, onid;
+    X509_NAME_ENTRY *oname_entry;
+    X509_NAME       *osubj_name;
+    const char      *prefix_short, *prefix_long;
+
+    if (NULL == ocert)
+        return;
+
+    osubj_name = X509_get_subject_name(ocert);
+    if (NULL == osubj_name) {
+        DEBUGMSGT(("9:cert:dump:names", "no subject name!\n"));
+        return;
+    }
+
+    for (i = 0; i < X509_NAME_entry_count(osubj_name); i++) {
+        oname_entry = X509_NAME_get_entry(osubj_name, i);
+        netsnmp_assert(NULL != oname_entry);
+
+        if (oname_entry->value->type != V_ASN1_PRINTABLESTRING)
+            continue;
+
+        /** get NID */
+        onid = OBJ_obj2nid(oname_entry->object);
+        if (onid == NID_undef) {
+            prefix_long = prefix_short = "UNKNOWN";
+        }
+        else {
+            prefix_long = OBJ_nid2ln(onid);
+            prefix_short = OBJ_nid2sn(onid);
+        }
+
+        DEBUGMSGT(("9:cert:dump:names",
+                   "[%02d] NID type %d, ASN type %d\n", i, onid,
+                   oname_entry->value->type));
+        DEBUGMSGT(("9:cert:dump:names", "%s/%s: '%s'\n", prefix_long,
+                   prefix_short, ASN1_STRING_data(oname_entry->value)));
+    }
+}
+
+static char *
+_cert_get_extension(X509_EXTENSION  *oext, char **buf, int *len, int flags)
+{
+    int              space;
+    char            *buf_ptr = NULL;
+    u_char          *data;
+    BIO             *bio;
+    
+    if ((NULL == oext) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    bio = BIO_new(BIO_s_mem());
+    if (NULL == bio) {
+        snmp_log(LOG_ERR, "could not get bio for extension\n");
+        return NULL;
+    }
+    if (X509V3_EXT_print(bio, oext, 0, 0) != 1) {
+        snmp_log(LOG_ERR, "could not print extension!\n");
+        BIO_vfree(bio);
+        return NULL;
+    }
+
+    space = BIO_get_mem_data(bio, &data);
+    if (buf && *buf) {
+        if (*len < space) 
+            buf_ptr = NULL;
+        else
+            buf_ptr = *buf;
+    }
+    else
+        buf_ptr = calloc(1,space + 1);
+    
+    if (!buf_ptr) {
+        snmp_log(LOG_ERR,
+                 "not enough space or error in allocation for extenstion\n");
+        BIO_vfree(bio);
+        return NULL;
+    }
+    memcpy(buf_ptr, data, space);
+    buf_ptr[space] = 0;
+    if (len)
+        *len = space;
+
+    BIO_vfree(bio);
+
+    return buf_ptr;
+}
+
+/** netsnmp_openssl_cert_get_extension: get extension field from cert
+ * @internal
+ */
+/** instead of exposing this function, make helper functions for each
+ * field, like netsnmp_openssl_cert_get_subjectAltName, below */
+X509_EXTENSION  *
+_cert_get_extension_at(X509 *ocert, int pos, char **buf, int *len, int flags)
+{
+    X509_EXTENSION  *oext;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    oext = X509_get_ext(ocert,pos);
+    if (NULL == oext) {
+        snmp_log(LOG_ERR, "extension number %d not found!\n", pos);
+        netsnmp_openssl_cert_dump_extensions(ocert);
+        return NULL;
+    }
+
+    return oext;
+}
+
+/** netsnmp_openssl_cert_get_extension: get extension field from cert
+ * @internal
+ */
+/** instead of exposing this function, make helper functions for each
+ * field, like netsnmp_openssl_cert_get_subjectAltName, below */
+static char *
+_cert_get_extension_str_at(X509 *ocert, int pos, char **buf, int *len,
+                           int flags)
+{
+    X509_EXTENSION  *oext;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    oext = X509_get_ext(ocert,pos);
+    if (NULL == oext) {
+        snmp_log(LOG_ERR, "extension number %d not found!\n", pos);
+        netsnmp_openssl_cert_dump_extensions(ocert);
+        return NULL;
+    }
+
+    return _cert_get_extension(oext, buf, len, flags);
+}
+
+/** _cert_get_extension_id: get extension field from cert
+ * @internal
+ */
+/** instead of exposing this function, make helper functions for each
+ * field, like netsnmp_openssl_cert_get_subjectAltName, below */
+X509_EXTENSION *
+_cert_get_extension_id(X509 *ocert, int which, char **buf, int *len, int flags)
+{
+    int pos;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    pos = X509_get_ext_by_NID(ocert,which,-1);
+    if (pos < 0) {
+        DEBUGMSGT(("openssl:cert:name", "no extension %d\n", which));
+        return NULL;
+    }
+
+    return _cert_get_extension_at(ocert, pos, buf, len, flags);
+}
+
+/** _cert_get_extension_id_str: get extension field from cert
+ * @internal
+ */
+/** instead of exposing this function, make helper functions for each
+ * field, like netsnmp_openssl_cert_get_subjectAltName, below */
+static char *
+_cert_get_extension_id_str(X509 *ocert, int which, char **buf, int *len,
+                           int flags)
+{
+    int pos;
+
+    if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
+        return NULL;
+
+    pos = X509_get_ext_by_NID(ocert,which,-1);
+    if (pos < 0) {
+        DEBUGMSGT(("openssl:cert:name", "no extension %d\n", which));
+        return NULL;
+    }
+
+    return _cert_get_extension_str_at(ocert, pos, buf, len, flags);
+}
+
+static char *
+_extract_oname(const GENERAL_NAME *oname)
+{
+    char  ipbuf[60], *buf = NULL, *rtn = NULL;
+
+    if (NULL == oname)
+        return NULL;
+
+    switch ( oname->type ) {
+        case GEN_EMAIL:
+        case GEN_DNS:
+            /*case GEN_URI:*/
+            ASN1_STRING_to_UTF8((unsigned char**)&buf, oname->d.ia5);
+            if (buf)
+                rtn = strdup(buf);
+            break;
+
+        case GEN_IPADD:
+            if (oname->d.iPAddress->length == 4) {
+                sprintf(ipbuf, "%d.%d.%d.%d", oname->d.iPAddress->data[0],
+                        oname->d.iPAddress->data[1],
+                        oname->d.iPAddress->data[2],
+                        oname->d.iPAddress->data[3]);
+                rtn = strdup(ipbuf);
+            }
+            else if ((oname->d.iPAddress->length == 16) ||
+                     (oname->d.iPAddress->length == 20)) {
+                char *pos = ipbuf;
+                int   j;
+                for(j = 0; j < oname->d.iPAddress->length; ++j) {
+                    *pos++ = VAL2HEX(oname->d.iPAddress->data[j]);
+                    *pos++ = ':';
+                }
+                *pos = '\0';
+                rtn = strdup(ipbuf);
+            }
+            else
+                NETSNMP_LOGONCE((LOG_WARNING, "unexpected ip addr length %d\n",
+                       oname->d.iPAddress->length));
+
+            break;
+        default:
+            DEBUGMSGT(("openssl:cert:san", "unknown/unsupported type %d\n",
+                       oname->type));
+            break;
+    }
+    DEBUGMSGT(("9:openssl:cert:san", "san=%s\n", buf));
+    if (buf)
+        OPENSSL_free(buf);
+
+    return rtn;
+}
+
+/**
+ */
+/** 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
+ * be responsbile for releasing.
+ */
+char *
+netsnmp_openssl_cert_get_subjectAltNames(X509 *ocert, char **buf, int *len)
+{
+    return _cert_get_extension_id_str(ocert, NID_subject_alt_name, buf, len, 0);
+}
+
+void
+netsnmp_openssl_cert_dump_extensions(X509 *ocert)
+{
+    X509_EXTENSION  *extension;
+    const char      *extension_name;
+    char             buf[SNMP_MAXBUF_SMALL], *buf_ptr = buf, *str, *lf;
+    int              i, num_extensions, buf_len, nid;
+
+    if (NULL == ocert)
+        return;
+
+    DEBUGIF("9:cert:dump") 
+        ;
+    else
+        return; /* bail if debug not enabled */
+
+    num_extensions = X509_get_ext_count(ocert);
+    if (0 == num_extensions)
+        DEBUGMSGT(("9:cert:dump", "    0 extensions\n"));
+    for(i = 0; i < num_extensions; i++) {
+        extension = X509_get_ext(ocert, i);
+        nid = OBJ_obj2nid(X509_EXTENSION_get_object(extension));
+        extension_name = OBJ_nid2sn(nid);
+        buf_len = sizeof(buf);
+        str = _cert_get_extension_str_at(ocert, i, &buf_ptr, &buf_len, 0);
+        lf = strchr(str, '\n'); /* look for multiline strings */
+        if (NULL != lf)
+            *lf = '\0'; /* only log first line of multiline here */
+        DEBUGMSGT(("9:cert:dump", "    %2d: %s = %s\n", i,
+                   extension_name, str));
+        while(lf) { /* log remaining parts of multiline string */
+            str = ++lf;
+            if (*str == '\0')
+               break;
+            lf = strchr(str, '\n');
+            if (NULL == lf) 
+                break;
+            *lf = '\0';
+            DEBUGMSGT(("9:cert:dump", "        %s\n", str));
+        }
+    }
+}
+
+static int _htmap[NS_HASH_MAX + 1] = {
+    0, NID_md5WithRSAEncryption, NID_sha1WithRSAEncryption,
+    NID_sha224WithRSAEncryption, NID_sha256WithRSAEncryption,
+    NID_sha384WithRSAEncryption, NID_sha512WithRSAEncryption };
+
+int
+_nid2ht(int nid)
+{
+    int i;
+    for (i=1; i<= NS_HASH_MAX; ++i) {
+        if (nid == _htmap[i])
+            return i;
+    }
+    return 0;
+}
+
+int
+_ht2nid(int ht)
+{
+    if ((ht < 0) || (ht > NS_HASH_MAX))
+        return 0;
+    return _htmap[ht];
+}
+
+/**
+ * returns allocated pointer caller must free.
+ */
+int
+netsnmp_openssl_cert_get_hash_type(X509 *ocert)
+{
+    if (NULL == ocert)
+        return 0;
+
+    return _nid2ht(OBJ_obj2nid(ocert->sig_alg->algorithm));
+}
+
+/**
+ * returns allocated pointer caller must free.
+ */
+char *
+netsnmp_openssl_cert_get_fingerprint(X509 *ocert, int alg)
+{
+    u_char           fingerprint[EVP_MAX_MD_SIZE];
+    u_int            fingerprint_len, nid;
+    const EVP_MD    *digest;
+    char            *result = NULL;
+
+    if (NULL == ocert)
+        return NULL;
+
+    nid = OBJ_obj2nid(ocert->sig_alg->algorithm);
+    DEBUGMSGT(("9:openssl:fingerprint", "alg %d, cert nid %d (%d)\n", alg, nid,
+               _nid2ht(nid)));
+        
+    if ((-1 == alg) && nid)
+        alg = _nid2ht(nid);
+
+    switch (alg) {
+        case NS_HASH_MD5:
+            snmp_log(LOG_ERR, "hash type md5 not yet supported\n");
+            return NULL;
+            break;
+        
+        case NS_HASH_NONE:
+            snmp_log(LOG_ERR, "hash type none not supported. using SHA1\n");
+            /** fall through */
+
+        case NS_HASH_SHA1:
+            digest = EVP_sha1();
+            break;
+
+#ifndef OPENSSL_NO_SHA256
+        case NS_HASH_SHA224:
+            digest = EVP_sha224();
+            break;
+
+        case NS_HASH_SHA256:
+            digest = EVP_sha256();
+            break;
+
+#endif
+#ifndef OPENSSL_NO_SHA512
+        case NS_HASH_SHA384:
+            digest = EVP_sha384();
+            break;
+
+        case NS_HASH_SHA512:
+            digest = EVP_sha512();
+            break;
+#endif
+
+        default:
+            snmp_log(LOG_ERR, "unknown hash algorithm %d\n", alg);
+            return NULL;
+    }
+
+    if (_nid2ht(nid) != alg) {
+        DEBUGMSGT(("openssl:fingerprint",
+                   "WARNING: alg %d does not match cert alg %d\n",
+                   alg, _nid2ht(nid)));
+    }
+    if (X509_digest(ocert,digest,fingerprint,&fingerprint_len)) {
+        binary_to_hex(fingerprint, fingerprint_len, &result);
+        if (NULL == result)
+            snmp_log(LOG_ERR, "failed to hexify fingerprint\n");
+        else
+            DEBUGMSGT(("9:openssl:fingerprint", "fingerprint %s\n", result));
+    }
+    else
+        snmp_log(LOG_ERR,"failed to compute fingerprint\n");
+
+    return result;
+}
+
+/**
+ * get container of netsnmp_cert_map structures from an ssl connection
+ * certificate chain.
+ */
+netsnmp_container *
+netsnmp_openssl_get_cert_chain(SSL *ssl)
+{
+    X509                  *ocert, *ocert_tmp;
+    STACK_OF(X509)        *ochain;
+    char                  *fingerprint;
+    netsnmp_container     *chain_map;
+    netsnmp_cert_map      *cert_map;
+    int                    i;
+
+    netsnmp_assert_or_return(ssl != NULL, NULL);
+    
+    if (NULL == (ocert = SSL_get_peer_certificate(ssl))) {
+        /** no peer cert */
+        snmp_log(LOG_ERR, "SSL peer has no certificate\n");
+        return NULL;
+    }
+    DEBUGIF("9:cert:dump") {
+        netsnmp_openssl_cert_dump_extensions(ocert);
+    }
+
+    /*
+     * get fingerprint and save it
+     */
+    fingerprint = netsnmp_openssl_cert_get_fingerprint(ocert, -1);
+    if (NULL == fingerprint)
+        return NULL;
+
+    /*
+     * allocate cert map. Don't pass in fingerprint, since it would strdup
+     * it and we've already got a copy.
+     */
+    cert_map = netsnmp_cert_map_alloc(NULL, ocert);
+    if (NULL == cert_map) {
+        free(fingerprint);
+        return NULL;
+    }
+    cert_map->fingerprint = fingerprint;
+    cert_map->hashType = netsnmp_openssl_cert_get_hash_type(ocert);
+
+    chain_map = netsnmp_cert_map_container_create(0); /* no fp subcontainer */
+    if (NULL == chain_map) {
+        netsnmp_cert_map_free(cert_map);
+        return NULL;
+    }
+    
+    CONTAINER_INSERT(chain_map, cert_map);
+
+    /** check for a chain to a CA */
+    ochain = SSL_get_peer_cert_chain(ssl);
+    if ((NULL == ochain) || (0 == sk_num((const void *)ochain))) {
+        DEBUGMSGT(("ssl:cert:chain", "peer has no cert chain\n"));
+    }
+    else {
+        /*
+         * loop over chain, adding fingerprint / cert for each
+         */
+        DEBUGMSGT(("ssl:cert:chain", "examining cert chain\n"));
+        for(i = 0; i < sk_num((const void *)ochain); ++i) {
+            ocert_tmp = (X509*)sk_value((const void *)ochain,i);
+            fingerprint = netsnmp_openssl_cert_get_fingerprint(ocert_tmp,
+                                                               NS_HASH_SHA1);
+            if (NULL == fingerprint)
+                break;
+            cert_map = netsnmp_cert_map_alloc(NULL, ocert);
+            if (NULL == cert_map) {
+                free(fingerprint);
+                break;
+            }
+            cert_map->fingerprint = fingerprint;
+            cert_map->hashType = netsnmp_openssl_cert_get_hash_type(ocert_tmp);
+
+            CONTAINER_INSERT(chain_map, cert_map);
+        } /* chain loop */
+        /*
+         * if we broke out of loop before finishing, clean up
+         */
+        if (i < sk_num((const void *)ochain)) 
+            CONTAINER_FREE_ALL(chain_map, NULL);
+    } /* got peer chain */
+
+    DEBUGMSGT(("ssl:cert:chain", "found %" NETSNMP_PRIz "u certs in chain\n",
+               CONTAINER_SIZE(chain_map)));
+    if (CONTAINER_SIZE(chain_map) == 0) {
+        CONTAINER_FREE(chain_map);
+        chain_map = NULL;
+    }
+
+    return chain_map;
+}
+
+/*
+tlstmCertSANRFC822Name "Maps a subjectAltName's rfc822Name to a
+                  tmSecurityName.  The local part of the rfc822Name is
+                  passed unaltered but the host-part of the name must
+                  be passed in lower case.
+                  Example rfc822Name Field:  FooBar@Example.COM
+                  is mapped to tmSecurityName: FooBar@example.com"
+
+tlstmCertSANDNSName "Maps a subjectAltName's dNSName to a
+                  tmSecurityName after first converting it to all
+                  lower case."
+
+tlstmCertSANIpAddress "Maps a subjectAltName's iPAddress to a
+                  tmSecurityName by transforming the binary encoded
+                  address as follows:
+                  1) for IPv4 the value is converted into a decimal
+                     dotted quad address (e.g. '192.0.2.1')
+                  2) for IPv6 addresses the value is converted into a
+                     32-character all lowercase hexadecimal string
+                     without any colon separators.
+
+                     Note that the resulting length is the maximum
+                     length supported by the View-Based Access Control
+                     Model (VACM).  Note that using both the Transport
+                     Security Model's support for transport prefixes
+                     (see the SNMP-TSM-MIB's
+                     snmpTsmConfigurationUsePrefix object for details)
+                     will result in securityName lengths that exceed
+                     what VACM can handle."
+
+tlstmCertSANAny "Maps any of the following fields using the
+                  corresponding mapping algorithms:
+                  | rfc822Name | tlstmCertSANRFC822Name |
+                  | dNSName    | tlstmCertSANDNSName    |
+                  | iPAddress  | tlstmCertSANIpAddress  |
+                  The first matching subjectAltName value found in the
+                  certificate of the above types MUST be used when
+                  deriving the tmSecurityName."
+*/
+char *
+_cert_get_san_type(X509 *ocert, int mapType)
+{
+    GENERAL_NAMES      *onames;
+    const GENERAL_NAME *oname = NULL;
+    char               *buf = NULL, *lower = NULL;
+    int                 count, i;
+ 
+    onames = (GENERAL_NAMES *)X509_get_ext_d2i(ocert, NID_subject_alt_name,
+                                               NULL, NULL );
+    if (NULL == onames)
+        return NULL;
+
+    count = sk_GENERAL_NAME_num(onames);
+
+    for (i=0 ; i <count; ++i)  {
+        oname = sk_GENERAL_NAME_value(onames, i);
+
+        if (GEN_DNS == oname->type) {
+            if ((TSNM_tlstmCertSANDNSName == mapType) ||
+                (TSNM_tlstmCertSANAny == mapType)) {
+                lower = buf = _extract_oname( oname );;
+                break;
+            }
+        }
+        else if (GEN_IPADD == oname->type) {
+            if ((TSNM_tlstmCertSANIpAddress == mapType) ||
+                (TSNM_tlstmCertSANAny == mapType))
+                buf = _extract_oname(oname);
+                break;
+        }
+        else if (GEN_EMAIL == oname->type) {
+            if ((TSNM_tlstmCertSANRFC822Name == mapType) ||
+                (TSNM_tlstmCertSANAny == mapType)) {
+                buf = _extract_oname(oname);
+                lower = strchr(buf, '@');
+                if (NULL == lower) {
+                    DEBUGMSGT(("openssl:secname:extract",
+                               "email %s has no '@'!\n", buf));
+                }
+                else {
+                    ++lower;
+                    break;
+                }
+            }
+            
+        }
+    } /* for loop */
+
+    if (lower)
+        for ( ; *lower; ++lower )
+            if (isascii(*lower))
+                *lower = tolower(0xFF & *lower);
+    DEBUGMSGT(("openssl:cert:extension:san", "#%d type %d: %s\n", i,
+               oname ? oname->type : -1, buf ? buf : "NULL"));
+
+    return buf;
+}
+
+char *
+netsnmp_openssl_extract_secname(netsnmp_cert_map *cert_map,
+                                netsnmp_cert_map *peer_cert)
+{
+    char       *rtn = NULL;
+
+    if (NULL == cert_map)
+        return NULL;
+
+    DEBUGMSGT(("openssl:secname:extract",
+               "checking priority %d, san of type %d for %s\n",
+               cert_map->priority, cert_map->mapType, peer_cert->fingerprint));
+
+    switch(cert_map->mapType) {
+        case TSNM_tlstmCertSpecified:
+            rtn = strdup(cert_map->data);
+            break;
+
+        case TSNM_tlstmCertSANRFC822Name:
+        case TSNM_tlstmCertSANDNSName:
+        case TSNM_tlstmCertSANIpAddress:
+        case TSNM_tlstmCertSANAny:
+            if (NULL == peer_cert) {
+                DEBUGMSGT(("openssl:secname:extract", "no peer cert for %s\n",
+                           cert_map->fingerprint));
+                break;
+            }
+            rtn = _cert_get_san_type(peer_cert->ocert, cert_map->mapType);
+            if (NULL == rtn) {
+                DEBUGMSGT(("openssl:secname:extract", "no san for %s\n",
+                           peer_cert->fingerprint));
+            }
+            break;
+
+        case TSNM_tlstmCertCommonName:
+            rtn = netsnmp_openssl_cert_get_commonName(cert_map->ocert, NULL,
+                                                       NULL);
+            break;
+        default:
+            snmp_log(LOG_ERR, "cant extract secname for unknown map type %d\n",
+                     cert_map->mapType);
+            break;
+    } /* switch mapType */
+
+    if (rtn) {
+        DEBUGMSGT(("openssl:secname:extract",
+                   "found map %d, type %d for %s: %s\n", cert_map->priority,
+                   cert_map->mapType, peer_cert->fingerprint, rtn));
+        if (strlen(rtn) >32) {
+            DEBUGMSGT(("openssl:secname:extract",
+                       "secName longer than 32 chars! dropping...\n"));
+            SNMP_FREE(rtn);
+        }
+    }
+    else
+        DEBUGMSGT(("openssl:secname:extract",
+                   "no map of type %d for %s\n",
+                   cert_map->mapType, peer_cert->fingerprint));
+    return rtn;
+}
+
+int
+netsnmp_openssl_cert_issued_by(X509 *issuer, X509 *cert)
+{
+    return (X509_check_issued(issuer, cert) == X509_V_OK);
+}
+
+
+void
+netsnmp_openssl_err_log(const char *prefix)
+{
+    unsigned long err;
+    for (err = ERR_get_error(); err; err = ERR_get_error()) {
+        snmp_log(LOG_ERR,"%s: %ld\n", prefix ? prefix: "openssl error", err);
+        snmp_log(LOG_ERR, "library=%d, function=%d, reason=%d\n",
+                 ERR_GET_LIB(err), ERR_GET_FUNC(err), ERR_GET_REASON(err));
+    }
+}
+
+void
+netsnmp_openssl_null_checks(SSL *ssl, int *null_auth, int *null_cipher)
+{
+    const SSL_CIPHER *cipher;
+    char           tmp_buf[128], *cipher_alg, *auth_alg;
+
+    if (null_auth)
+        *null_auth = -1; /* unknown */
+    if (null_cipher)
+        *null_cipher = -1; /* unknown */
+    if (NULL == ssl)
+        return;
+
+    cipher = SSL_get_current_cipher(ssl);
+    if (NULL == cipher) {
+        DEBUGMSGTL(("ssl:cipher", "no cipher yet\n"));
+        return;
+    }
+    SSL_CIPHER_description(NETSNMP_REMOVE_CONST(SSL_CIPHER *, cipher), tmp_buf, sizeof(tmp_buf));
+    /** no \n since tmp_buf already has one */
+    DEBUGMSGTL(("ssl:cipher", "current cipher: %s", tmp_buf));
+
+    /*
+     * run "openssl ciphers -v eNULL" and "openssl ciphers -v aNULL"
+     * to see NULL encryption/authentication algorithms. e.g.
+     *
+     * EXP-ADH-RC4-MD5 SSLv3 Kx=DH(512) Au=None Enc=RC4(40) Mac=MD5  export
+     * NULL-SHA        SSLv3 Kx=RSA     Au=RSA  Enc=None    Mac=SHA1
+     */
+    if (null_cipher) {
+        cipher_alg = strstr(tmp_buf, "Enc=");
+        if (cipher_alg) {
+            cipher_alg += 4;
+            if (strncmp(cipher_alg,"None", 4) == 0)
+                *null_cipher = 1;
+            else
+                *null_cipher = 0;
+        }
+    }
+    if (null_auth) {
+        auth_alg = strstr(tmp_buf, "Au=");
+        if (auth_alg) {
+            auth_alg += 3;
+            if (strncmp(auth_alg,"None", 4) == 0)
+                *null_auth = 1;
+            else
+                *null_auth = 0;
+        }
+    }
+}
+
 #endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL */
diff --git a/snmplib/snmp_parse_args.c b/snmplib/snmp_parse_args.c
index c1e316b..947a78a 100644
--- a/snmplib/snmp_parse_args.c
+++ b/snmplib/snmp_parse_args.c
@@ -36,11 +36,7 @@
 #include <netinet/in.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -52,9 +48,6 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
@@ -62,6 +55,7 @@
 #include <arpa/inet.h>
 #endif
 
+#include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/config_api.h>
@@ -130,8 +124,10 @@
             "  -t TIMEOUT\t\tset the request timeout (in seconds)\n");
     fprintf(outf, "Debugging\n");
     fprintf(outf, "  -d\t\t\tdump input/output packets in hexadecimal\n");
+#ifndef NETSNMP_DISABLE_DEBUGGING
     fprintf(outf,
             "  -D[TOKEN[,...]]\tturn on debugging output for the specified TOKENs\n\t\t\t   (ALL gives extremely verbose debugging output)\n");
+#endif
     fprintf(outf, "General options\n");
     fprintf(outf,
             "  -m MIB[" ENV_SEPARATOR "...]\t\tload given list of MIBs (ALL loads everything)\n");
@@ -139,6 +135,8 @@
             "  -M DIR[" ENV_SEPARATOR "...]\t\tlook in given list of directories for MIBs\n");
 #ifndef NETSNMP_DISABLE_MIB_LOADING
     fprintf(outf,
+            "    (default: %s)\n", netsnmp_get_mib_directory());
+    fprintf(outf,
             "  -P MIBOPTS\t\tToggle various defaults controlling MIB parsing:\n");
     snmp_mib_toggle_options_usage("\t\t\t  ", outf);
 #endif
@@ -192,25 +190,21 @@
                                char **Apsz, char **Xpsz, int argc,
                                char *const *argv);
 
-/*
- * This method does the real work for snmp_parse_args.  It takes an
- * extra argument, proxy, and uses this to decide how to handle the lack of
- * of a community string.
- */
 int
-snmp_parse_args(int argc,
-                char **argv,
-                netsnmp_session * session, const char *localOpts,
-                void (*proc) (int, char *const *, int))
+netsnmp_parse_args(int argc,
+                   char **argv,
+                   netsnmp_session * session, const char *localOpts,
+                   void (*proc) (int, char *const *, int),
+                   int flags)
 {
     static char	   *sensitive[4] = { NULL, NULL, NULL, NULL };
-    int             arg, sp = 0, zero_sensitive = 1, testcase = 0;
+    int             arg, sp = 0, testcase = 0;
     char           *cp;
     char           *Apsz = NULL;
     char           *Xpsz = NULL;
     char           *Cpsz = NULL;
     char            Opts[BUF_SIZE];
-    int             logopt = 0;
+    int             zero_sensitive = !( flags & NETSNMP_PARSE_ARGS_NOZERO );
 
     /*
      * initialize session to default values 
@@ -225,14 +219,6 @@
         strcat(Opts, localOpts);
     }
 
-    if (strcmp(argv[0], "snmpd-trapsess") == 0 ||
-	strcmp(argv[0], "snmpd-proxy")    == 0) {
-	/*  Don't worry about zeroing sensitive parameters as they are not
-	    on the command line anyway (called from internal config-line
-	    handler).  */
-	zero_sensitive = 0;
-    }
-
     /*
      * get the options 
      */
@@ -247,11 +233,11 @@
         switch (arg) {
         case '-':
             if (strcasecmp(optarg, "help") == 0) {
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             if (strcasecmp(optarg, "version") == 0) {
                 fprintf(stderr,"NET-SNMP version: %s\n",netsnmp_get_version());
-                return (-2);
+                return (NETSNMP_PARSE_ARGS_SUCCESS_EXIT);
             }
 
             handle_long_opt(optarg);
@@ -259,17 +245,17 @@
 
         case 'V':
             fprintf(stderr, "NET-SNMP version: %s\n", netsnmp_get_version());
-            return (-2);
+            return (NETSNMP_PARSE_ARGS_SUCCESS_EXIT);
 
         case 'h':
-            return (-1);
+            return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             break;
 
         case 'H':
             init_snmp("snmpapp");
             fprintf(stderr, "Configuration directives understood:\n");
             read_config_print_usage("  ");
-            return (-2);
+            return (NETSNMP_PARSE_ARGS_SUCCESS_EXIT);
 
         case 'Y':
             netsnmp_config_remember(optarg);
@@ -291,7 +277,7 @@
             if (cp != NULL) {
                 fprintf(stderr, "Unknown output option passed to -O: %c.\n", 
 			*cp);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -300,7 +286,7 @@
             if (cp != NULL) {
                 fprintf(stderr, "Unknown input option passed to -I: %c.\n",
 			*cp);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -310,14 +296,19 @@
             if (cp != NULL) {
                 fprintf(stderr,
                         "Unknown parsing option passed to -P: %c.\n", *cp);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
 
         case 'D':
+#ifdef NETSNMP_NO_DEBUGGING
+            fprintf(stderr, "Debug not configured in\n");
+            return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
+#else
             debug_register_tokens(optarg);
             snmp_set_do_debugging(1);
+#endif
             break;
 
         case 'd':
@@ -344,35 +335,70 @@
                 fprintf(stderr,
                         "Invalid version specified after -v flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
         case 'p':
             fprintf(stderr, "Warning: -p option is no longer used - ");
             fprintf(stderr, "specify the remote host as HOST:PORT\n");
-            return (-1);
+            return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             break;
 
         case 'T':
-            fprintf(stderr, "Warning: -T option is no longer used - ");
-            fprintf(stderr, "specify the remote host as TRANSPORT:HOST\n");
-            return (-1);
-            break;
+        {
+            char leftside[SNMP_MAXBUF_MEDIUM], rightside[SNMP_MAXBUF_MEDIUM];
+            char *tmpcp, *tmpopt;
+            
+            /* ensure we have a proper argument */
+            tmpopt = strdup(optarg);
+            tmpcp = strchr(tmpopt, '=');
+            if (!tmpcp) {
+                fprintf(stderr, "-T expects a NAME=VALUE pair.\n");
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
+            }
+            *tmpcp++ = '\0';
 
+            /* create the transport config container if this is the first */
+            if (!session->transport_configuration) {
+                netsnmp_container_init_list();
+                session->transport_configuration =
+                    netsnmp_container_find("transport_configuration:fifo");
+                if (!session->transport_configuration) {
+                    fprintf(stderr, "failed to initialize the transport configuration container\n");
+                    free(tmpopt);
+                    return (NETSNMP_PARSE_ARGS_ERROR);
+                }
+
+                session->transport_configuration->compare =
+                    (netsnmp_container_compare*)
+                    netsnmp_transport_config_compare;
+            }
+
+            /* set the config */
+            strlcpy(leftside, tmpopt, sizeof(leftside));
+            strlcpy(rightside, tmpcp, sizeof(rightside));
+
+            CONTAINER_INSERT(session->transport_configuration,
+                             netsnmp_transport_create_config(leftside,
+                                                             rightside));
+            free(tmpopt);
+        }
+        break;
+            
         case 't':
             session->timeout = (long)(atof(optarg) * 1000000L);
             if (session->timeout <= 0) {
                 fprintf(stderr, "Invalid timeout in seconds after -t flag.\n");
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
         case 'r':
             session->retries = atoi(optarg);
-            if (session->retries < 0 || !isdigit(optarg[0])) {
+            if (session->retries < 0 || !isdigit((unsigned char)(optarg[0]))) {
                 fprintf(stderr, "Invalid number of retries after -r flag.\n");
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -384,7 +410,7 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -c flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		Cpsz = optarg;
@@ -394,15 +420,14 @@
         case '3':
 	    /*  TODO: This needs to zero things too.  */
             if (snmpv3_options(optarg, session, &Apsz, &Xpsz, argc, argv) < 0){
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
         case 'L':
             if (snmp_log_options(optarg, argc, argv) < 0) {
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
-	    logopt = 1;
             break;
 
 #define SNMPV3_CMD_OPTIONS
@@ -412,7 +437,7 @@
             session->engineBoots = strtoul(optarg, &cp, 10);
             if (errno || cp == optarg) {
                 fprintf(stderr, "Need engine boots value after -Z flag.\n");
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             if (*cp == ',') {
                 char *endptr;
@@ -420,7 +445,7 @@
                 session->engineTime = strtoul(cp, &endptr, 10);
                 if (errno || cp == endptr) {
                     fprintf(stderr, "Need engine time after \"-Z engineBoot,\".\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
             }
             /*
@@ -430,11 +455,11 @@
                 session->engineTime = strtoul(argv[optind], &cp, 10);
                 if (errno || cp == argv[optind]) {
                     fprintf(stderr, "Need engine time after \"-Z engineBoot\".\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
             } else {
                 fprintf(stderr, "Need engine time after \"-Z engineBoot\".\n");
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -444,18 +469,18 @@
 
                 if (ebuf == NULL) {
                     fprintf(stderr, "malloc failure processing -e flag.\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR);
                 }
                 if (!snmp_hex_to_binary
                     (&ebuf, &ebuf_len, &eout_len, 1, optarg)) {
                     fprintf(stderr, "Bad engine ID value after -e flag.\n");
                     free(ebuf);
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
                 if ((eout_len < 5) || (eout_len > 32)) {
                     fprintf(stderr, "Invalid engine ID value after -e flag.\n");
                     free(ebuf);
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
                 session->securityEngineID = ebuf;
                 session->securityEngineIDLen = eout_len;
@@ -468,18 +493,18 @@
 
                 if (ebuf == NULL) {
                     fprintf(stderr, "malloc failure processing -E flag.\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR);
                 }
                 if (!snmp_hex_to_binary(&ebuf, &ebuf_len,
 					&eout_len, 1, optarg)) {
                     fprintf(stderr, "Bad engine ID value after -E flag.\n");
                     free(ebuf);
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
                 if ((eout_len < 5) || (eout_len > 32)) {
                     fprintf(stderr, "Invalid engine ID value after -E flag.\n");
                     free(ebuf);
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
                 session->contextEngineID = ebuf;
                 session->contextEngineIDLen = eout_len;
@@ -500,7 +525,7 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -u flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		session->securityName = optarg;
@@ -527,7 +552,7 @@
                 fprintf(stderr,
                         "Invalid security level specified after -l flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
 
             break;
@@ -546,7 +571,7 @@
                 fprintf(stderr,
                         "Invalid authentication protocol specified after -a flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -571,7 +596,7 @@
                 fprintf(stderr,
                       "Invalid privacy protocol specified after -x flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -583,7 +608,7 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -A flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		Apsz = optarg;
@@ -598,7 +623,7 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -X flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		Xpsz = optarg;
@@ -607,7 +632,7 @@
 #endif                          /* SNMPV3_CMD_OPTIONS */
 
         case '?':
-            return (-1);
+            return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             break;
 
         default:
@@ -617,9 +642,6 @@
     }
     DEBUGMSGTL(("snmp_parse_args", "finished: %d/%d\n", optind, argc));
     
-    if (!logopt)
-	snmp_enable_stderrlog();
-
     /*
      * read in MIB database and initialize the snmp library
      */
@@ -658,7 +680,7 @@
 
             default:
                 snmp_log(LOG_ERR, "Can't determine a valid SNMP version for the session\n");
-                return(-2);
+                return(NETSNMP_PARSE_ARGS_ERROR);
             }
         } else {
 #ifndef NETSNMP_DISABLE_SNMPV1
@@ -706,7 +728,7 @@
             snmp_perror(argv[0]);
             fprintf(stderr,
                     "Error generating a key (Ku) from the supplied authentication pass phrase. \n");
-            return (-2);
+            return (NETSNMP_PARSE_ARGS_ERROR);
         }
     }
     if (Xpsz) {
@@ -745,7 +767,7 @@
             snmp_perror(argv[0]);
             fprintf(stderr,
                     "Error generating a key (Ku) from the supplied privacy pass phrase. \n");
-            return (-2);
+            return (NETSNMP_PARSE_ARGS_ERROR);
         }
     }
     /*
@@ -753,7 +775,7 @@
      */
     if (optind == argc) {
         fprintf(stderr, "No hostname specified.\n");
-        return (-1);
+        return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
     }
     session->peername = argv[optind++]; /* hostname */
 
@@ -787,7 +809,7 @@
                     session->community_len = 0;
                 } else {
                     fprintf(stderr, "No community name specified.\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
 	    }
 	} else {
@@ -799,3 +821,12 @@
 
     return optind;
 }
+
+int
+snmp_parse_args(int argc,
+                char **argv,
+                netsnmp_session * session, const char *localOpts,
+                void (*proc) (int, char *const *, int))
+{
+    return netsnmp_parse_args(argc, argv, session, localOpts, proc, 0);
+}
diff --git a/snmplib/snmp_secmod.c b/snmplib/snmp_secmod.c
index aefe8f6..a8cf928 100644
--- a/snmplib/snmp_secmod.c
+++ b/snmplib/snmp_secmod.c
@@ -30,7 +30,7 @@
 #include <net-snmp/library/snmp_enum.h>
 #include <net-snmp/library/callback.h>
 #include <net-snmp/library/snmp_secmod.h>
-#include <net-snmp/library/snmpusm.h>
+#include <net-snmp/library/snmpv3-security-includes.h>
 
 static struct snmp_secmod_list *registered_services = NULL;
 
diff --git a/snmplib/snmp_service.c b/snmplib/snmp_service.c
index 8865cda..54cb4ac 100644
--- a/snmplib/snmp_service.c
+++ b/snmplib/snmp_service.c
@@ -11,7 +11,7 @@
 {
     char* item;
     char** res;
-    cptr = copy_nword(NETSNMP_REMOVE_CONST(char *, cptr), tmp, tmplen);
+    cptr = copy_nword_const(cptr, tmp, tmplen);
     item = strdup(tmp);
     if (cptr)
         res = create_word_array_helper(cptr, idx + 1, tmp, tmplen);
diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c
index dfea3c6..4df9602 100644
--- a/snmplib/snmp_transport.c
+++ b/snmplib/snmp_transport.c
@@ -1,5 +1,8 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_transport.h>
+
 #include <stdio.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -12,6 +15,8 @@
 #include <stdlib.h>
 #endif
 
+#include <ctype.h>
+
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -22,10 +27,14 @@
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
 
-#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/default_store.h>
+
 #include <net-snmp/library/snmpUDPDomain.h>
-#ifdef NETSNMP_TRANSPORT_TLS_DOMAIN
-#include <net-snmp/library/snmpTLSDomain.h>
+#ifdef NETSNMP_TRANSPORT_TLSBASE_DOMAIN
+#include <net-snmp/library/snmpTLSBaseDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+#include <net-snmp/library/snmpTLSTCPDomain.h>
 #endif
 #ifdef NETSNMP_TRANSPORT_STD_DOMAIN
 #include <net-snmp/library/snmpSTDDomain.h>
@@ -59,6 +68,7 @@
 #endif
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_service.h>
+#include <net-snmp/library/read_config.h>
 
 
 /*
@@ -93,6 +103,15 @@
  * Make a deep copy of an netsnmp_transport.  
  */
 
+void
+init_snmp_transport(void)
+{
+    netsnmp_ds_register_config(ASN_BOOLEAN,
+                               "snmp", "dontLoadHostConfig",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES);
+}
+
 netsnmp_transport *
 netsnmp_transport_copy(netsnmp_transport *t)
 {
@@ -156,10 +175,16 @@
     n->f_recv = t->f_recv;
     n->f_send = t->f_send;
     n->f_close = t->f_close;
+    n->f_copy = t->f_copy;
+    n->f_config = t->f_config;
     n->f_fmtaddr = t->f_fmtaddr;
     n->sock = t->sock;
     n->flags = t->flags;
 
+    /* give the transport a chance to do "special things" */
+    if (t->f_copy)
+        t->f_copy(t, n);
+                
     return n;
 }
 
@@ -183,6 +208,95 @@
     SNMP_FREE(t);
 }
 
+/*
+ * netsnmp_transport_peer_string
+ *
+ * returns string representation of peer address.
+ *
+ * caller is responsible for freeing the allocated string.
+ */
+char *
+netsnmp_transport_peer_string(netsnmp_transport *t, void *data, int len)
+{
+    char           *str;
+
+    if (NULL == t)
+        return NULL;
+
+    if (t->f_fmtaddr != NULL)
+        str = t->f_fmtaddr(t, data, len);
+    else
+        str = strdup("<UNKNOWN>");
+
+    return str;
+}
+    
+int
+netsnmp_transport_send(netsnmp_transport *t, void *packet, int length,
+                       void **opaque, int *olength)
+{
+    int dumpPacket, debugLength;
+
+    if ((NULL == t) || (NULL == t->f_send)) {
+        DEBUGMSGTL(("transport:pkt:send", "NULL transport or send function\n"));
+        return SNMPERR_GENERR;
+    }
+
+    dumpPacket = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                        NETSNMP_DS_LIB_DUMP_PACKET);
+    debugLength = (SNMPERR_SUCCESS ==
+                   debug_is_token_registered("transport:send"));
+
+    if (dumpPacket | debugLength) {
+        char *str = netsnmp_transport_peer_string(t,
+                                                  opaque ? *opaque : NULL,
+                                                  olength ? *olength : 0);
+        if (debugLength)
+            DEBUGMSGT_NC(("transport:send","%lu bytes to %s\n",
+                          (unsigned long)length, str));
+        if (dumpPacket)
+            snmp_log(LOG_DEBUG, "\nSending %lu bytes to %s\n", 
+                     (unsigned long)length, str);
+        SNMP_FREE(str);
+    }
+    if (dumpPacket)
+        xdump(packet, length, "");
+
+    return t->f_send(t, packet, length, opaque, olength);
+}
+
+int
+netsnmp_transport_recv(netsnmp_transport *t, void *packet, int length,
+                       void **opaque, int *olength)
+{
+    int debugLength;
+
+    if ((NULL == t) || (NULL == t->f_recv)) {
+        DEBUGMSGTL(("transport:recv", "NULL transport or recv function\n"));
+        return SNMPERR_GENERR;
+    }
+
+    length = t->f_recv(t, packet, length, opaque, olength);
+
+    if (length <=0)
+        return length; /* don't log timeouts/socket closed */
+
+    debugLength = (SNMPERR_SUCCESS ==
+                   debug_is_token_registered("transport:recv"));
+
+    if (debugLength) {
+        char *str = netsnmp_transport_peer_string(t,
+                                                  opaque ? *opaque : NULL,
+                                                  olength ? *olength : 0);
+        if (debugLength)
+            DEBUGMSGT_NC(("transport:recv","%d bytes from %s\n",
+                          length, str));
+        SNMP_FREE(str);
+    }
+
+    return length;
+}
+
 
 
 int
@@ -210,37 +324,10 @@
 netsnmp_tdomain_init(void)
 {
     DEBUGMSGTL(("tdomain", "netsnmp_tdomain_init() called\n"));
-    netsnmp_udp_ctor();
-#ifdef NETSNMP_TRANSPORT_STD_DOMAIN
-    netsnmp_std_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
-    netsnmp_tcp_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_ALIAS_DOMAIN
-    netsnmp_alias_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_IPX_DOMAIN
-    netsnmp_ipx_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
-    netsnmp_unix_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_AAL5PVC_DOMAIN
-    netsnmp_aal5pvc_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
-    netsnmp_udp6_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
-    netsnmp_tcp6_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
-    netsnmp_dtlsudp_ctor();
-#endif
-#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
-    netsnmp_ssh_ctor();
-#endif
+
+/* include the configure generated list of constructor calls */
+#include "transports/snmp_transport_inits.h"
+
     netsnmp_tdomain_dump();
 }
 
@@ -348,6 +435,22 @@
     return NULL;
 }
 
+static int
+netsnmp_is_fqdn(const char *thename)
+{
+    if (!thename)
+        return 0;
+    while(*thename) {
+        if (*thename != '.' && !isupper((unsigned char)*thename) &&
+            !islower((unsigned char)*thename) &&
+            !isdigit((unsigned char)*thename) && *thename != '-') {
+            return 0;
+        }
+        thename++;
+    }
+    return 1;
+}
+
 /*
  * Locate the appropriate transport domain and call the create function for
  * it.
@@ -362,8 +465,11 @@
     const char         *addr = NULL;
     const char * const *spec = NULL;
     int                 any_found = 0;
-    extern char *curfilename;		/* from read_config.c */
-    char         *prev_curfilename;
+    char buf[SNMP_MAXPATH];
+    extern const char *curfilename;		/* from read_config.c */
+    const char        *prev_curfilename;
+
+    prev_curfilename = curfilename;
 
     DEBUGMSGTL(("tdomain",
                 "tdomain_transport_full(\"%s\", \"%s\", %d, \"%s\", \"%s\")\n",
@@ -371,12 +477,61 @@
                 default_domain ? default_domain : "[NIL]",
                 default_target ? default_target : "[NIL]"));
 
-    prev_curfilename = curfilename;
+    /* see if we can load a host-name specific set of conf files */
+    if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES) &&
+        netsnmp_is_fqdn(str)) {
+        static int have_added_handler = 0;
+        char *newhost;
+        struct config_line *config_handlers;
+        struct config_files file_names;
+        char *prev_hostname;
+
+        /* register a "transport" specifier */
+        if (!have_added_handler) {
+            have_added_handler = 1;
+            netsnmp_ds_register_config(ASN_OCTET_STR,
+                                       "snmp", "transport",
+                                       NETSNMP_DS_LIBRARY_ID,
+                                       NETSNMP_DS_LIB_HOSTNAME);
+        }
+
+        /* we save on specific setting that we don't allow to change
+           from one transport creation to the next; ie, we don't want
+           the "transport" specifier to be a default.  It should be a
+           single invocation use only */
+        prev_hostname = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                              NETSNMP_DS_LIB_HOSTNAME);
+        if (prev_hostname)
+            prev_hostname = strdup(prev_hostname);
+
+        /* read in the hosts/STRING.conf files */
+        config_handlers = read_config_get_handlers("snmp");
+        snprintf(buf, sizeof(buf)-1, "hosts/%s", str);
+        file_names.fileHeader = buf;
+        file_names.start = config_handlers;
+        file_names.next = NULL;
+        DEBUGMSGTL(("tdomain", "checking for host specific config %s\n",
+                    buf));
+        read_config_files_of_type(EITHER_CONFIG, &file_names);
+
+        if (NULL !=
+            (newhost = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                             NETSNMP_DS_LIB_HOSTNAME))) {
+            strlcpy(buf, newhost, sizeof(buf));
+            str = buf;
+        }
+
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_HOSTNAME,
+                              prev_hostname);
+        SNMP_FREE(prev_hostname);
+    }
 
     /* First try - assume that there is a domain in str (domain:target) */
 
     if (str != NULL) {
-        char *cp;
+        const char *cp;
         if ((cp = strchr(str, ':')) != NULL) {
             char* mystring = (char*)malloc(cp + 1 - str);
             memcpy(mystring, str, cp - str);
@@ -564,3 +719,18 @@
 
     return 0;
 }
+
+int
+netsnmp_transport_config_compare(netsnmp_transport_config *left,
+                                 netsnmp_transport_config *right) {
+    return strcmp(left->key, right->key);
+}
+
+netsnmp_transport_config *
+netsnmp_transport_create_config(char *key, char *value) {
+    netsnmp_transport_config *entry =
+        SNMP_MALLOC_TYPEDEF(netsnmp_transport_config);
+    entry->key = strdup(key);
+    entry->value = strdup(value);
+    return entry;
+}
diff --git a/snmplib/snmpksm.c b/snmplib/snmpksm.c
index b376e83..4b64003 100644
--- a/snmplib/snmpksm.c
+++ b/snmplib/snmpksm.c
@@ -9,19 +9,12 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #include <stdio.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -257,7 +250,7 @@
     def->pdu_free = ksm_free_pdu;
     def->pdu_clone = ksm_clone_pdu;
 
-    register_sec_mod(NETSNMP_KSM_SECURITY_MODEL, "ksm", def);
+    register_sec_mod(NETSNMP_SEC_MODEL_KSM, "ksm", def);
 }
 
 /*
diff --git a/snmplib/snmptsm.c b/snmplib/snmptsm.c
index 47d338f..a38c632 100644
--- a/snmplib/snmptsm.c
+++ b/snmplib/snmptsm.c
@@ -1,8 +1,10 @@
 /*
- * snmptsmsm.c
+ * snmptsmsm.c -- Implements RFC #5591
  *
  * This code implements a security model that assumes the local user
- * that executed the agent is the user who's attributes called
+ * that executed the agent is the user who's attributes are passed up
+ * by the transport underneath.  The RFC describing this security
+ * model is RFC5591.
  */
 
 #include <net-snmp/net-snmp-config.h>
@@ -11,12 +13,25 @@
 
 #include <net-snmp/library/snmptsm.h>
 
+#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
+#include <net-snmp/library/snmpSSHDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+#include <net-snmp/library/snmpTLSTCPDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_DTLSSCTP_DOMAIN
+#include <net-snmp/library/snmpDTLSSCTPDomain.h>
+#endif
+
 #include <unistd.h>
 
 static int      tsm_session_init(netsnmp_session *);
 static void     tsm_free_state_ref(void *);
 static int      tsm_clone_pdu(netsnmp_pdu *, netsnmp_pdu *);
-static void     tsm_free_pdu(netsnmp_pdu *pdu);
+static int      tsm_free_pdu(netsnmp_pdu *pdu);
 
 u_int next_sess_id = 1;
 
@@ -44,7 +59,7 @@
     def->probe_engineid = snmpv3_probe_contextEngineID_rfc5343;
 
     DEBUGMSGTL(("tsm","registering ourselves\n"));
-    ret = register_sec_mod(NETSNMP_TSM_SECURITY_MODEL, "tsm", def);
+    ret = register_sec_mod(SNMP_SEC_MODEL_TSM, "tsm", def);
     DEBUGMSGTL(("tsm"," returned %d\n", ret));
 
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "tsmUseTransportPrefix",
@@ -91,7 +106,7 @@
     /* SNMP_FREE(tsmRef);  ? */
 }
 
-static void
+static int
 tsm_free_pdu(netsnmp_pdu *pdu)
 {
     /* free the security reference */
@@ -99,6 +114,7 @@
         tsm_free_state_ref(pdu->securityStateRef);
         pdu->securityStateRef = NULL;
     }
+    return 0;
 }
 
 /** This is called when a PDU is cloned (to increase reference counts) */
@@ -112,8 +128,8 @@
         return SNMPERR_SUCCESS;
 
     newref = SNMP_MALLOC_TYPEDEF(netsnmp_tsmSecurityReference);
-    fprintf(stderr, "cloned as pdu=%p, ref=%p (oldref=%p)\n",
-            pdu2, newref, pdu2->securityStateRef);
+    DEBUGMSGTL(("tsm", "cloned as pdu=%p, ref=%p (oldref=%p)\n",
+            pdu2, newref, pdu2->securityStateRef));
     if (!newref)
         return SNMPERR_GENERR;
     
@@ -171,90 +187,120 @@
     
     DEBUGMSGTL(("tsm", "Starting TSM processing\n"));
 
-    /* if we have this, this message is in response to something that
-       came in earlier */
+    /* if we have this, then this message to be sent is in response to
+       something that came in earlier and the tsmSecRef was created by
+       the tsm_process_in_msg. */
     tsmSecRef = parms->secStateRef;
     
     if (tsmSecRef) {
-        /* section 4.2, step 1 */
-        if (tsmSecRef->tmStateRef)
-            tmStateRef = tsmSecRef->tmStateRef;
-        else
-            tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
-        if (NULL == tmStateRef) {
-            snmp_log(LOG_ERR, "failed to allocate a tmStateReference\n");
-            return SNMPERR_GENERR;
-        }
-        tmStateRef->sameSecurity = NETSNMP_TM_USE_SAME_SECURITY;
-        tmStateRef->requestedSecurityLevel = tsmSecRef->securityLevel;
+        /* 4.2, step 1: If there is a securityStateReference (Response
+           or Report message), then this Security Model uses the
+           cached information rather than the information provided by
+           the ASI. */
 
-        /* XXX: this may be freed automatically later by the library? */
+        /* 4.2, step 1: Extract the tmStateReference from the
+           securityStateReference cache. */
+        netsnmp_assert_or_return(NULL != tsmSecRef->tmStateRef, SNMPERR_GENERR);
+        tmStateRef = tsmSecRef->tmStateRef;
+
+        /* 4.2 step 1: Set the tmRequestedSecurityLevel to the value
+           of the extracted tmTransportSecurityLevel. */
+        tmStateRef->requestedSecurityLevel = tmStateRef->transportSecurityLevel;
+
+        /* 4.2 step 1: Set the tmSameSecurity parameter in the
+           tmStateReference cache to true. */
+        tmStateRef->sameSecurity = NETSNMP_TM_USE_SAME_SECURITY;
+
+        /* 4.2 step 1: The cachedSecurityData for this message can
+           now be discarded. */
         SNMP_FREE(parms->secStateRef);
     } else {
-        /* section 4.2, step 2 */
+        /* 4.2, step 2: If there is no securityStateReference (e.g., a
+           Request-type or Notification message), then create a
+           tmStateReference cache. */
         tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
-        if (tmStateRef == NULL) {
-            return SNMPERR_GENERR;
-        }
+        netsnmp_assert_or_return(NULL != tmStateRef, SNMPERR_GENERR);
         tmStateRefLocal = 1;
-        
+
+        /* XXX: we don't actually use this really in our implementation */
+        /* 4.2, step 2: Set tmTransportDomain to the value of
+           transportDomain, tmTransportAddress to the value of
+           transportAddress */
+
+        /* 4.2, step 2: and tmRequestedSecurityLevel to the value of
+           securityLevel. */
         tmStateRef->requestedSecurityLevel = parms->secLevel;
+
+        /* 4.2, step 2: Set the transaction-specific tmSameSecurity
+           parameter to false. */
         tmStateRef->sameSecurity = NETSNMP_TM_SAME_SECURITY_NOT_REQUIRED;
 
-        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                    NETSNMP_DS_LIB_TSM_USE_PREFIX)) {
             /* XXX: probably shouldn't be a hard-coded list of
                supported transports */
+            /* 4.2, step 2: If the snmpTsmConfigurationUsePrefix
+               object is set to true, then use the transportDomain to
+               look up the corresponding prefix. */
             const char *prefix;
             if (strncmp("ssh:",parms->session->peername,4) == 0)
                 prefix = "ssh:";
-            else if (strncmp("dtls:",parms->session->peername,4) == 0)
+            else if (strncmp("dtls:",parms->session->peername,5) == 0)
                 prefix = "dtls:";
+            else if (strncmp("tls:",parms->session->peername,4) == 0)
+                prefix = "tls:";
             else {
+                /* 4.2, step 2: If the prefix lookup fails for any
+                   reason, then the snmpTsmUnknownPrefixes counter is
+                   incremented, an error indication is returned to the
+                   calling module, and message processing stops. */
+                snmp_increment_statistic(STAT_TSM_SNMPTSMUNKNOWNPREFIXES);
                 SNMP_FREE(tmStateRef);
                 return SNMPERR_GENERR;
             }
 
-            /* a: - lookup the prefix */
-            /*    - if DNE, snmpTsmUnknownPrefixes++ and bail */
-            if (!prefix) {
-                /* snmpTsmUnknownPrefixes++ */
-                SNMP_FREE(tmStateRef);
-                return SNMPERR_GENERR;
-            }
-
-            /*    - If secName doesn't have the prefix (or any):
-                  snmpTsmInvalidPrefixes++ and bail */
+            /* 4.2, step 2: If the lookup succeeds, but there is no
+               prefix in the securityName, or the prefix returned does
+               not match the prefix in the securityName, or the length
+               of the prefix is less than 1 or greater than 4 US-ASCII
+               alpha-numeric characters, then the
+               snmpTsmInvalidPrefixes counter is incremented, an error
+               indication is returned to the calling module, and
+               message processing stops. */
             if (strchr(parms->secName, ':') == 0 ||
                 strlen(prefix)+1 >= parms->secNameLen ||
                 strncmp(parms->secName, prefix, strlen(prefix)) != 0 ||
                 parms->secName[strlen(prefix)] != ':') {
-
+                /* Note: since we're assiging the prefixes above the
+                   prefix lengths always meet the 1-4 criteria */
+                snmp_increment_statistic(STAT_TSM_SNMPTSMINVALIDPREFIXES);
                 SNMP_FREE(tmStateRef);
-                /* snmpTsmInvalidPrefixes++ */
                 return SNMPERR_GENERR;
             }
 
-            /*    - Strip the prefix and trailing : */
-            /* set tmSecurityName to securityName minus stripped part */
+            /* 4.2, step 2: Strip the transport-specific prefix and
+               trailing ':' character (US-ASCII 0x3a) from the
+               securityName.  Set tmSecurityName to the value of
+               securityName. */
             memcpy(tmStateRef->securityName,
                    parms->secName + strlen(prefix) + 1,
                    parms->secNameLen - strlen(prefix) - 1);
             tmStateRef->securityNameLen = parms->secNameLen - strlen(prefix) -1;
         } else {
-            /* set tmSecurityName to securityName */
+            /* 4.2, step 2: If the snmpTsmConfigurationUsePrefix object is
+               set to false, then set tmSecurityName to the value
+               of securityName. */
             memcpy(tmStateRef->securityName, parms->secName,
                    parms->secNameLen);
             tmStateRef->securityNameLen = parms->secNameLen;
         }
     }
+
+    /* truncate the security name with a '\0' for safety */
     tmStateRef->securityName[tmStateRef->securityNameLen] = '\0';
 
-    /* Section 4.2, Step 3:
-     * - Set securityParameters to a zero-length OCTET STRING ('0400')
-     * 
-     * We define here what the security message section will look like:
-     * 04 00 -- null string
+    /* 4.2, step 3: Set securityParameters to a zero-length OCTET
+     *  STRING ('0400').
      */
     DEBUGDUMPHEADER("send", "tsm security parameters");
     rc = asn_realloc_rbuild_header(wholeMsg, wholeMsgLen, offset, 1,
@@ -268,12 +314,8 @@
         return SNMPERR_TOO_LONG;
     }
     
-    /* Section 4.2, Step 4:
-     * Combine the message parts into a wholeMsg and calculate wholeMsgLen
-     */
-
-    /*
-     * Copy in the msgGlobalData and msgVersion.  
+    /* 4.2, step 4: Combine the message parts into a wholeMsg and
+       calculate wholeMsgLength.
      */
     while ((*wholeMsgLen - *offset) < parms->globalDataLen) {
         if (!asn_realloc(wholeMsg, wholeMsgLen)) {
@@ -288,6 +330,13 @@
     memcpy(*wholeMsg + *wholeMsgLen - *offset,
            parms->globalData, parms->globalDataLen);
 
+    /* 4.2, step 5: The wholeMsg, wholeMsgLength, securityParameters,
+       and tmStateReference are returned to the calling Message
+       Processing Model with the statusInformation set to success. */
+
+    /* For the Net-SNMP implemantion that actually means we start
+       encoding the full packet sequence from here before returning it */
+
     /*
      * Total packet sequence.  
      */
@@ -301,8 +350,6 @@
         return SNMPERR_TOO_LONG;
     }
 
-    /* Section 4.2 Step 5:  return everything */
-
     if (parms->pdu->transport_data &&
         parms->pdu->transport_data != tmStateRef) {
         snmp_log(LOG_ERR, "tsm: needed to free transport data\n");
@@ -349,14 +396,22 @@
     u_char          ourEngineID[SNMP_MAX_ENG_SIZE];
     static size_t   ourEngineID_len = sizeof(ourEngineID);
     
-    /* Section 5.2, step 1 */
+    /* Section 5.2, step 1: Set the securityEngineID to the local
+       snmpEngineID. */
     ourEngineID_len =
-        snmpv3_get_engineID((u_char*)ourEngineID, ourEngineID_len);
-    if (ourEngineID_len == 0 || ourEngineID_len > *parms->secEngineIDLen)
-        return SNMPERR_GENERR;
+        snmpv3_get_engineID((u_char*) ourEngineID, ourEngineID_len);
+    netsnmp_assert_or_return(ourEngineID_len != 0 &&
+                             ourEngineID_len <= *parms->secEngineIDLen,
+                             SNMPERR_GENERR);
     memcpy(parms->secEngineID, ourEngineID, *parms->secEngineIDLen);
 
-    /* Section 5.2, step 2 */
+    /* Section 5.2, step 2: If tmStateReference does not refer to a
+       cache containing values for tmTransportDomain,
+       tmTransportAddress, tmSecurityName, and
+       tmTransportSecurityLevel, then the snmpTsmInvalidCaches counter
+       is incremented, an error indication is returned to the calling
+       module, and Security Model processing stops for this
+       message. */
     if (!parms->pdu->transport_data ||
         sizeof(netsnmp_tmStateReference) !=
         parms->pdu->transport_data_length) {
@@ -371,53 +426,138 @@
         /* not needed: tmStateRef->transportDomain == NULL || */
         /* not needed: tmStateRef->transportAddress == NULL || */
         tmStateRef->securityName[0] == '\0'
-        /* || seclevel is not valid */
         ) {
-        /* XXX: snmpTsmInvalidCaches++ */
+        snmp_increment_statistic(STAT_TSM_SNMPTSMINVALIDCACHES);
         return SNMPERR_GENERR;
     }
 
-    /* Section 5.2, step 3 */
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+    /* Section 5.2, step 3: Copy the tmSecurityName to securityName. */
+    if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_TSM_USE_PREFIX)) {
-        /* Section 5.2, step 3a */
-        const char *prefix;
-        prefix = "ssh:"; /* XXX */
-
-        if (prefix == NULL) {
-            /* XXX: snmpTsmUnknownPrefixes++ */
+        /* Section 5.2, step 3:
+          If the snmpTsmConfigurationUsePrefix object is set to true, then
+          use the tmTransportDomain to look up the corresponding prefix.
+        */
+        const char *prefix = NULL;
+        /*
+          possibilities:
+           |--------------------+-------|
+           | snmpTLSTCPDomain   | tls:  |
+           | snmpDTLSUDPDomain  | dtls: |
+           | snmpSSHDomain      | ssh:  |
+           |--------------------+-------|
+        */
+        
+        if (tmStateRef->transportDomain == NULL) {
+            /* XXX: snmpTsmInvalidCaches++ ??? */
             return SNMPERR_GENERR;
         }
 
+        /* XXX: cache in session! */
+#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
+        if (netsnmp_oid_equals(netsnmp_snmpSSHDomain,
+                               netsnmp_snmpSSHDomain_len,
+                               tmStateRef->transportDomain,
+                               tmStateRef->transportDomainLen) == 0) {
+            prefix = "ssh";
+        }
+#endif /*  NETSNMP_TRANSPORT_SSH_DOMAIN */
+
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+        if (netsnmp_oid_equals(netsnmpDTLSUDPDomain,
+                               netsnmpDTLSUDPDomain_len,
+                               tmStateRef->transportDomain,
+                               tmStateRef->transportDomainLen) == 0) {
+            
+            prefix = "dtls";
+        }
+#endif /* NETSNMP_TRANSPORT_DTLSUDP_DOMAIN */
+
+#ifdef NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+        if (netsnmp_oid_equals(netsnmpTLSTCPDomain,
+                               netsnmpTLSTCPDomain_len,
+                               tmStateRef->transportDomain,
+                               tmStateRef->transportDomainLen) == 0) {
+            
+            prefix = "tls";
+        }
+#endif /* NETSNMP_TRANSPORT_TLSTCP_DOMAIN */
+
+        /* Section 5.2, step 3:
+          If the prefix lookup fails for any reason, then the
+          snmpTsmUnknownPrefixes counter is incremented, an error
+          indication is returned to the calling module, and message
+          processing stops.
+        */
+        if (prefix == NULL) {
+            snmp_increment_statistic(STAT_TSM_SNMPTSMUNKNOWNPREFIXES);
+            return SNMPERR_GENERR;
+        }
+
+        /* Section 5.2, step 3:
+          If the lookup succeeds but the prefix length is less than 1 or
+          greater than 4 octets, then the snmpTsmInvalidPrefixes counter
+          is incremented, an error indication is returned to the calling
+          module, and message processing stops.
+        */
+#ifdef NOT_USING_HARDCODED_PREFIXES
+        /* the above code actually ensures this will never happen as
+           we don't support a dynamic prefix database where this might
+           happen. */
         if (strlen(prefix) < 1 || strlen(prefix) > 4) {
             /* XXX: snmpTsmInvalidPrefixes++ */
             return SNMPERR_GENERR;
         }
+#endif
         
+        /* Section 5.2, step 3:
+          Set the securityName to be the concatenation of the prefix, a
+          ':' character (US-ASCII 0x3a), and the tmSecurityName.
+        */
         snprintf(parms->secName, *parms->secNameLen,
                  "%s:%s", prefix, tmStateRef->securityName);
     } else {
+        /* if the use prefix flag wasn't set, do a straight copy */
         strncpy(parms->secName, tmStateRef->securityName, *parms->secNameLen);
     }
-    *parms->secNameLen = strlen(parms->secName);
-    DEBUGMSGTL(("tsm", "user: %s/%d\n", parms->secName, *parms->secNameLen));
 
-    /* Section 5.2 Step 4 */
+    /* set the length of the security name */
+    *parms->secNameLen = strlen(parms->secName);
+    DEBUGMSGTL(("tsm", "user: %s/%d\n", parms->secName, (int)*parms->secNameLen));
+
+    /* Section 5.2 Step 4:
+       Compare the value of tmTransportSecurityLevel in the
+       tmStateReference cache to the value of the securityLevel
+       parameter passed in the processIncomingMsg ASI.  If securityLevel
+       specifies privacy (Priv) and tmTransportSecurityLevel specifies
+       no privacy (noPriv), or if securityLevel specifies authentication
+       (auth) and tmTransportSecurityLevel specifies no authentication
+       (noAuth) was provided by the Transport Model, then the
+       snmpTsmInadequateSecurityLevels counter is incremented, an error
+       indication (unsupportedSecurityLevel) together with the OID and
+       value of the incremented counter is returned to the calling
+       module, and Transport Security Model processing stops for this
+       message.*/
     if (parms->secLevel > tmStateRef->transportSecurityLevel) {
-        /* XXX: snmpTsmInadequateSecurityLevels++ */
+        snmp_increment_statistic(STAT_TSM_SNMPTSMINADEQUATESECURITYLEVELS);
+        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;
     }
 
-    /* Section 5.2 Step 5 */
-
+    /* Section 5.2 Step 5
+       The tmStateReference is cached as cachedSecurityData so that a
+       possible response to this message will use the same security
+       parameters.  Then securityStateReference is set for subsequent
+       references to this cached data.
+    */
     if (NULL == *parms->secStateRef) {
         tsmSecRef = SNMP_MALLOC_TYPEDEF(netsnmp_tsmSecurityReference);
     } else {
         tsmSecRef = *parms->secStateRef;
     }
 
-    if (!tsmSecRef)
-        return SNMPERR_GENERR;
+    netsnmp_assert_or_return(NULL != tsmSecRef, SNMPERR_GENERR);
 
     *parms->secStateRef = tsmSecRef;
     tsmSecRef->tmStateRef = tmStateRef;
@@ -440,7 +580,8 @@
         DEBUGMSGTL(("tsm","  tunneled\n"));
     }
 
-    /* Section 5.2, Step 6 */
+    /* Section 5.2, Step 6:
+       The scopedPDU component is extracted from the wholeMsg. */
     /*
      * Eat the first octet header.
      */
@@ -449,20 +590,26 @@
                                         &type_value,
                                         (ASN_UNIVERSAL | ASN_PRIMITIVE |
                                          ASN_OCTET_STR),
-                                        "usm first octet")) == NULL) {
+                                        "tsm first octet")) == NULL) {
         /*
          * RETURN parse error 
          */
-        return SNMPERR_GENERR;
+        return SNMPERR_ASN_PARSE_ERR;
     }
     
     *parms->scopedPdu = data_ptr;
     *parms->scopedPduLen = parms->wholeMsgLen - (data_ptr - parms->wholeMsg);
 
-    /* Section 5.2, Step 7 */
+    /* Section 5.2, Step 7:
+       The maxSizeResponseScopedPDU is calculated.  This is the maximum
+       size allowed for a scopedPDU for a possible Response message.
+     */
     *parms->maxSizeResponse = parms->maxMsgSize; /* XXX */
 
-    tsmSecRef->securityLevel = parms->secLevel;
-
+    /* Section 5.2, Step 8:
+       The statusInformation is set to success and a return is made to
+       the calling module passing back the OUT parameters as specified
+       in the processIncomingMsg ASI.
+    */
     return SNMPERR_SUCCESS;
 }
diff --git a/snmplib/snmpusm.c b/snmplib/snmpusm.c
index 00699fb..8780596 100644
--- a/snmplib/snmpusm.c
+++ b/snmplib/snmpusm.c
@@ -24,19 +24,12 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #include <stdio.h>
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -502,7 +495,7 @@
                     engBtlen,   /*   for fields within                     */
                     engTmlen,   /*   msgSecurityParameters portion of      */
                     namelen,    /*   SNMPv3Message.                        */
-                    authlen, privlen;
+                    authlen, privlen, ret;
 
     /*
      * If doing authentication, msgAuthParmLen = 12 else msgAuthParmLen = 0.
@@ -552,15 +545,17 @@
     *seq_len =
         engIDlen + engBtlen + engTmlen + namelen + authlen + privlen;
 
-    if ((*otstlen = asn_predict_length(ASN_SEQUENCE,
-                                       NULL, *seq_len)) == -1) {
+    if ((ret = asn_predict_length(ASN_SEQUENCE,
+                                      NULL, *seq_len)) == -1) {
         return -1;
     }
+    *otstlen = (size_t)ret;
 
-    if ((*msgSecParmLen = asn_predict_length(ASN_OCTET_STR,
-                                             NULL, *otstlen)) == -1) {
+    if ((ret = asn_predict_length(ASN_OCTET_STR,
+                                      NULL, *otstlen)) == -1) {
         return -1;
     }
+    *msgSecParmLen = (size_t)ret;
 
     *authParamsOffset = globalDataLen + +(*msgSecParmLen - *seq_len)
         + engIDlen + engBtlen + engTmlen + namelen
@@ -585,10 +580,10 @@
     if (secLevel == SNMP_SEC_LEVEL_AUTHPRIV) {
         scopedPduLen = ROUNDUP8(scopedPduLen);
 
-        if ((*datalen =
-             asn_predict_length(ASN_OCTET_STR, NULL, scopedPduLen)) == -1) {
+        if ((ret = asn_predict_length(ASN_OCTET_STR, NULL, scopedPduLen)) == -1) {
             return -1;
         }
+        *datalen = (size_t)ret;
     } else {
         *datalen = scopedPduLen;
     }
@@ -1994,7 +1989,7 @@
     /*
      * FIX -- doesn't this also indicate a buffer overrun?
      */
-    if ((int) origNameLen < *secNameLen + 1) {
+    if (origNameLen < *secNameLen + 1) {
         /*
          * RETURN parse error, but it's really a parameter error 
          */
@@ -2140,7 +2135,7 @@
     /*
      * This is a local reference.
      */
-    if ((int) secEngineIDLen == myIDLength
+    if (secEngineIDLen == myIDLength
         && memcmp(secEngineID, myID, myIDLength) == 0) {
         u_int           time_difference = myTime > time_uint ?
             myTime - time_uint : time_uint - myTime;
@@ -2703,8 +2698,7 @@
      *
      * FIX  Correct? 
      */
-    *maxSizeResponse = maxMsgSize - (int)
-        ((u_long) end_of_overhead - (u_long) wholeMsg);
+    *maxSizeResponse = maxMsgSize - (end_of_overhead - wholeMsg);
 
 
     DEBUGMSGTL(("usm", "USM processing completed.\n"));
@@ -2766,13 +2760,110 @@
     }       
 }
 
+/* sets up initial default session parameters */
+int
+usm_session_init(netsnmp_session *in_session, netsnmp_session *session)
+{
+    char *cp;
+    size_t i;
+    
+    if (in_session->securityAuthProtoLen > 0) {
+        session->securityAuthProto =
+            snmp_duplicate_objid(in_session->securityAuthProto,
+                                 in_session->securityAuthProtoLen);
+        if (session->securityAuthProto == NULL) {
+            in_session->s_snmp_errno = SNMPERR_MALLOC;
+            return SNMPERR_MALLOC;
+        }
+    } else if (get_default_authtype(&i) != NULL) {
+        session->securityAuthProto =
+            snmp_duplicate_objid(get_default_authtype(NULL), i);
+        session->securityAuthProtoLen = i;
+    }
+
+    if (in_session->securityPrivProtoLen > 0) {
+        session->securityPrivProto =
+            snmp_duplicate_objid(in_session->securityPrivProto,
+                                 in_session->securityPrivProtoLen);
+        if (session->securityPrivProto == NULL) {
+            in_session->s_snmp_errno = SNMPERR_MALLOC;
+            return SNMPERR_MALLOC;
+        }
+    } else if (get_default_privtype(&i) != NULL) {
+        session->securityPrivProto =
+            snmp_duplicate_objid(get_default_privtype(NULL), i);
+        session->securityPrivProtoLen = i;
+    }
+
+    if ((in_session->securityAuthKeyLen <= 0) &&
+        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+				     NETSNMP_DS_LIB_AUTHMASTERKEY)))) {
+        size_t buflen = sizeof(session->securityAuthKey);
+        u_char *tmpp = session->securityAuthKey;
+        session->securityAuthKeyLen = 0;
+        /* it will be a hex string */
+        if (!snmp_hex_to_binary(&tmpp, &buflen,
+                                &session->securityAuthKeyLen, 0, cp)) {
+            snmp_set_detail("error parsing authentication master key");
+            return SNMP_ERR_GENERR;
+        }
+    } else if ((in_session->securityAuthKeyLen <= 0) &&
+               ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                            NETSNMP_DS_LIB_AUTHPASSPHRASE)) ||
+                (cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                            NETSNMP_DS_LIB_PASSPHRASE)))) {
+        session->securityAuthKeyLen = USM_AUTH_KU_LEN;
+        if (generate_Ku(session->securityAuthProto,
+                        session->securityAuthProtoLen,
+                        (u_char *) cp, strlen(cp),
+                        session->securityAuthKey,
+                        &session->securityAuthKeyLen) != SNMPERR_SUCCESS) {
+            snmp_set_detail
+                ("Error generating a key (Ku) from the supplied authentication pass phrase.");
+            return SNMP_ERR_GENERR;
+        }
+    }
+
+    
+    if ((in_session->securityPrivKeyLen <= 0) &&
+        ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+				     NETSNMP_DS_LIB_PRIVMASTERKEY)))) {
+        size_t buflen = sizeof(session->securityPrivKey);
+        u_char *tmpp = session->securityPrivKey;
+        session->securityPrivKeyLen = 0;
+        /* it will be a hex string */
+        if (!snmp_hex_to_binary(&tmpp, &buflen,
+                                &session->securityPrivKeyLen, 0, cp)) {
+            snmp_set_detail("error parsing encryption master key");
+            return SNMP_ERR_GENERR;
+        }
+    } else if ((in_session->securityPrivKeyLen <= 0) &&
+               ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                            NETSNMP_DS_LIB_PRIVPASSPHRASE)) ||
+                (cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                            NETSNMP_DS_LIB_PASSPHRASE)))) {
+        session->securityPrivKeyLen = USM_PRIV_KU_LEN;
+        if (generate_Ku(session->securityAuthProto,
+                        session->securityAuthProtoLen,
+                        (u_char *) cp, strlen(cp),
+                        session->securityPrivKey,
+                        &session->securityPrivKeyLen) != SNMPERR_SUCCESS) {
+            snmp_set_detail
+                ("Error generating a key (Ku) from the supplied privacy pass phrase.");
+            return SNMP_ERR_GENERR;
+        }
+    }
+
+    return SNMPERR_SUCCESS;
+}
+
 void
 init_usm(void)
 {
     struct snmp_secmod_def *def;
 
-    DEBUGMSGTL(("init_usm", "unit_usm: %lu %lu\n", usmNoPrivProtocol[0],
-                usmNoPrivProtocol[1]));
+    DEBUGMSGTL(("init_usm", "unit_usm: %" NETSNMP_PRIo "u %" NETSNMP_PRIo "u\n",
+                usmNoPrivProtocol[0], usmNoPrivProtocol[1]));
 
     sc_init();                  /* initalize scapi code */
 
@@ -2789,6 +2880,7 @@
     def->encode_forward = usm_secmod_generate_out_msg;
     def->decode = usm_secmod_process_in_msg;
     def->pdu_free_state_ref = usm_free_usmStateReference;
+    def->session_setup = usm_session_init;
     def->handle_report = usm_handle_report;
     register_sec_mod(USM_SEC_MODEL_NUMBER, "usm", def);
 
@@ -2932,8 +3024,8 @@
     if (user->userStatus != RS_ACTIVE)
         return -1;
 
-    DEBUGMSGTL(("comparex", "Comparing: %lu %lu ", usmNoPrivProtocol[0],
-                usmNoPrivProtocol[1]));
+    DEBUGMSGTL(("comparex", "Comparing: %" NETSNMP_PRIo "u %" NETSNMP_PRIo "u ",
+                usmNoPrivProtocol[0], usmNoPrivProtocol[1]));
     DEBUGMSGOID(("comparex", usmNoPrivProtocol,
                  sizeof(usmNoPrivProtocol) / sizeof(oid)));
     DEBUGMSG(("comparex", "\n"));
@@ -3547,11 +3639,11 @@
     *cptr++ = ' ';
     cptr = read_config_save_octet_string(cptr, (u_char *) user->name,
                                          (user->name == NULL) ? 0 :
-                                         strlen(user->name) + 1);
+                                         strlen(user->name));
     *cptr++ = ' ';
     cptr = read_config_save_octet_string(cptr, (u_char *) user->secName,
                                          (user->secName == NULL) ? 0 :
-                                         strlen(user->secName) + 1);
+                                         strlen(user->secName));
     *cptr++ = ' ';
     cptr =
         read_config_save_objid(cptr, user->cloneFrom, user->cloneFromLen);
@@ -3581,7 +3673,7 @@
  * and returns a pointer to a newly created struct usmUser. 
  */
 struct usmUser *
-usm_read_user(char *line)
+usm_read_user(const char *line)
 {
     struct usmUser *user;
     size_t          len;
@@ -3592,11 +3684,11 @@
         return NULL;
 
     user->userStatus = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     user->userStorageType = atoi(line);
-    line = skip_token(line);
-    line = read_config_read_octet_string(line, &user->engineID,
-                                         &user->engineIDLen);
+    line = skip_token_const(line);
+    line = read_config_read_octet_string_const(line, &user->engineID,
+                                               &user->engineIDLen);
 
     /*
      * set the lcd entry for this engineID to the minimum boots/time
@@ -3613,22 +3705,21 @@
     SNMP_FREE(user->cloneFrom);
     user->cloneFromLen = 0;
 
-    line =
-        read_config_read_objid(line, &user->cloneFrom,
-                               &user->cloneFromLen);
+    line = read_config_read_objid_const(line, &user->cloneFrom,
+                                        &user->cloneFromLen);
 
     SNMP_FREE(user->authProtocol);
     user->authProtocolLen = 0;
 
-    line = read_config_read_objid(line, &user->authProtocol,
-                                  &user->authProtocolLen);
-    line = read_config_read_octet_string(line, &user->authKey,
-                                         &user->authKeyLen);
+    line = read_config_read_objid_const(line, &user->authProtocol,
+                                        &user->authProtocolLen);
+    line = read_config_read_octet_string_const(line, &user->authKey,
+                                               &user->authKeyLen);
     SNMP_FREE(user->privProtocol);
     user->privProtocolLen = 0;
 
-    line = read_config_read_objid(line, &user->privProtocol,
-                                  &user->privProtocolLen);
+    line = read_config_read_objid_const(line, &user->privProtocol,
+                                        &user->privProtocolLen);
     line = read_config_read_octet_string(line, &user->privKey,
                                          &user->privKeyLen);
 #ifndef NETSNMP_DISABLE_DES
diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
index e451f31..8b49362 100644
--- a/snmplib/snmpv3.c
+++ b/snmplib/snmpv3.c
@@ -11,11 +11,7 @@
 #include <sys/types.h>
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -39,9 +35,6 @@
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -230,6 +223,9 @@
 }
 
 
+NETSNMP_IMPORT int
+snmpv3_options(char *optarg, netsnmp_session * session, char **Apsz,
+               char **Xpsz, int argc, char *const *argv);
 int
 snmpv3_options(char *optarg, netsnmp_session * session, char **Apsz,
                char **Xpsz, int argc, char *const *argv)
@@ -246,7 +242,7 @@
     /*
      * and '.... "-3x value" ....'  (*with* the quotes)
      */
-    while (*optarg && isspace(*optarg)) {
+    while (*optarg && isspace((unsigned char)(*optarg))) {
         optarg++;
     }
     /*
@@ -1404,7 +1400,7 @@
     /*
      * if our engineID has changed at all, the boots record must be set to 1 
      */
-    if (engineIDLen != (int) oldEngineIDLength ||
+    if (engineIDLen != oldEngineIDLength ||
         oldEngineID == NULL || c_engineID == NULL ||
         memcmp(oldEngineID, c_engineID, engineIDLen) != 0) {
         engineBoots = 1;
diff --git a/snmplib/snprintf.c b/snmplib/snprintf.c
index e235e19..726c4f4 100644
--- a/snmplib/snprintf.c
+++ b/snmplib/snprintf.c
@@ -803,4 +803,6 @@
 }
 #endif                          /* SNPRINTF_TEST */
 
+#else
+int snprintf_unused;	/* Suppress "empty translation unit" warning */
 #endif                          /* !HAVE_SNPRINTF */
diff --git a/snmplib/strlcpy.c b/snmplib/strlcpy.c
index ce57f40..0235a30 100644
--- a/snmplib/strlcpy.c
+++ b/snmplib/strlcpy.c
@@ -5,8 +5,6 @@
  */
 #include <net-snmp/net-snmp-config.h>
 
-#if !HAVE_STRLCPY
-
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -15,6 +13,8 @@
 
 #include <sys/types.h>
 
+#include <net-snmp/library/system.h>
+
 /* 
  * Copies src to the dest buffer. The copy will never overflow the dest buffer
  * and dest will always be null terminated, len is the size of the dest buffer.
@@ -41,5 +41,3 @@
 	dest[new_len] = '\0'; 
 	return (src_len); 
 }
-
-#endif                    /* !HAVE_STRLCPY */
diff --git a/snmplib/strtok_r.c b/snmplib/strtok_r.c
index bfe5a9b..21d47d6 100644
--- a/snmplib/strtok_r.c
+++ b/snmplib/strtok_r.c
@@ -31,16 +31,16 @@
  */
 #include <net-snmp/net-snmp-config.h>
 
-#if !HAVE_STRTOK_R
-
 #ifndef WIN32
 #include <sys/cdefs.h>
 #endif
 
 #include <string.h>
 
+#include <net-snmp/library/system.h>
+
 /*
- * thread-save version of strtok
+ * thread-safe version of strtok
  */
 char *
 strtok_r(char *s, const char *delim, char **lasts)
@@ -50,8 +50,8 @@
 	char *tok;
 
 	/* s may be NULL */
-	/*assert(delim != NULL);*/
-	/*assert(lasts != NULL);*/
+	/*netsnmp_assert(delim != NULL);*/
+	/*netsnmp_assert(lasts != NULL);*/
 
 	if (s == NULL && (s = *lasts) == NULL)
 		return (NULL);
@@ -92,4 +92,3 @@
 	}
 	/* NOTREACHED */
 }
-#endif                          /* !HAVE_STRTOK_R */
diff --git a/snmplib/strtol.c b/snmplib/strtol.c
index 989a163..c71f8ba 100644
--- a/snmplib/strtol.c
+++ b/snmplib/strtol.c
@@ -33,8 +33,6 @@
 static char     sccsid[] = "@(#)strtol.c    5.4 (Berkeley) 2/23/91";
 #endif                          /* LIBC_SCCS and not lint */
 
-#if !HAVE_STRTOL
-
 #if HAVE_LIMITS_H
 #include <limits.h>
 #endif
@@ -125,5 +123,3 @@
         *endptr = any ? s - 1 : (char *) nptr;
     return (acc);
 }
-
-#endif                          /* !HAVE_STRTOL */
diff --git a/snmplib/strtoul.c b/snmplib/strtoul.c
index 8012920..7aea330 100644
--- a/snmplib/strtoul.c
+++ b/snmplib/strtoul.c
@@ -29,8 +29,6 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#if !HAVE_STRTOUL
-
 #if defined(LIBC_SCCS) && !defined(lint)
 static char     sccsid[] = "@(#)strtoul.c   8.1 (Berkeley) 6/4/93";
 #endif                          /* LIBC_SCCS and not lint */
@@ -107,5 +105,3 @@
         *endptr = (char *) (any ? s - 1 : nptr);
     return (acc);
 }
-
-#endif                          /* !HAVE_STRTOUL */
diff --git a/snmplib/strtoull.c b/snmplib/strtoull.c
index ea538ba..6c98fc4 100644
--- a/snmplib/strtoull.c
+++ b/snmplib/strtoull.c
@@ -20,8 +20,6 @@
 
 #include <net-snmp/net-snmp-config.h>
 
-#if !HAVE_STRTOULL || defined(STRTOULL_UNIT_TEST)
-
 #include <errno.h>
 #include <ctype.h>
 #include <limits.h>
@@ -29,6 +27,9 @@
 #include <inttypes.h>
 #endif
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/system.h>
+
 /*
  * UINT64_C: C99 macro for the suffix for uint64_t constants. 
  */
@@ -48,13 +49,8 @@
 #define ULLONG_MAX UINT64_C(0xffffffffffffffff)
 #endif
 
-#ifdef STRTOULL_UNIT_TEST
-uint64_t
-my_strtoull(const char *nptr, char **endptr, int base)
-#else
 uint64_t
 strtoull(const char *nptr, char **endptr, int base)
-#endif
 {
     uint64_t        result = 0;
     const char     *p;
@@ -160,125 +156,3 @@
         *endptr = (char *) nptr;
     return 0;
 }
-
-#if defined(STRTOULL_UNIT_TEST)
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifndef PRIu64
-#ifdef _MSC_VER
-#define PRIu64 "I64u"
-#else
-#define PRIu64 "llu"
-#endif
-#endif
-
-struct strtoull_testcase {
-    /*
-     * inputs 
-     */
-    const char     *nptr;
-    int             base;
-    /*
-     * expected outputs 
-     */
-    int             expected_errno;
-    int             expected_end;
-    uint64_t        expected_result;
-};
-
-static const struct strtoull_testcase test_input[] = {
-    {"0x0", 0, 0, 3, 0},
-    {"1", 0, 0, 1, 1},
-    {"0x1", 0, 0, 3, 1},
-    {"  -0666", 0, 0, 7, -0666},
-    {"  -0x666", 0, 0, 8, -0x666},
-    {"18446744073709551614", 0, 0, 20, UINT64_C(0xfffffffffffffffe)},
-    {"0xfffffffffffffffe", 0, 0, 18, UINT64_C(0xfffffffffffffffe)},
-    {"18446744073709551615", 0, 0, 20, UINT64_C(0xffffffffffffffff)},
-    {"0xffffffffffffffff", 0, 0, 18, UINT64_C(0xffffffffffffffff)},
-    {"18446744073709551616", 0, ERANGE, 20, UINT64_C(0xffffffffffffffff)},
-    {"0x10000000000000000", 0, ERANGE, 19, UINT64_C(0xffffffffffffffff)},
-    {"ff", 16, 0, 2, 255},
-    {"0xff", 16, 0, 4, 255},
-    {" ", 0, 0, 0, 0},
-    {"0x", 0, 0, 1, 0},
-    {"0x", 8, 0, 1, 0},
-    {"0x", 16, 0, 1, 0},
-    {"zyyy", 0, 0, 0, 0},
-    {"0xfffffffffffffffff", 0, ERANGE, 19, ULLONG_MAX},
-    {"0xfffffffffffffffffz", 0, ERANGE, 19, ULLONG_MAX}
-};
-
-int
-main(void)
-{
-    int             failure_count = 0;
-    unsigned int    i;
-
-    for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
-        const struct strtoull_testcase *const p = &test_input[i];
-        char           *endptr;
-        uint64_t        result;
-
-        errno = 0;
-        result = my_strtoull(p->nptr, &endptr, p->base);
-        if (errno != p->expected_errno) {
-            failure_count++;
-            printf("test %d failed (input \"%s\"): expected errno %d"
-                   ", got errno %d\n",
-                   i, p->nptr, p->expected_errno, errno);
-        }
-        if (result != p->expected_result) {
-            failure_count++;
-            printf("test %d failed (input \"%s\"): expected result %" PRIu64
-                   ", got result %" PRIu64 "\n",
-                   i, p->nptr, p->expected_result, result);
-        }
-        if (endptr - p->nptr != p->expected_end) {
-            failure_count++;
-            printf("test %d failed (input \"%s\"): expected end %d,"
-                   " got end %d\n",
-                   i, p->nptr, p->expected_end, (int) (endptr - p->nptr));
-        }
-
-#if HAVE_STRTOULL
-        errno = 0;
-        result = strtoull(p->nptr, &endptr, p->base);
-        if (errno != p->expected_errno) {
-            failure_count++;
-            printf("test %d (input \"%s\"): expected errno %d"
-                   ", libc strtoull() returned errno %d\n",
-                   i, p->nptr, p->expected_errno, errno);
-        }
-        if (result != p->expected_result) {
-            failure_count++;
-            printf("test %d (input \"%s\"): expected result %" PRIu64
-                   ", libc strtoull() returned result %" PRIu64 "\n",
-                   i, p->nptr, p->expected_result, result);
-        }
-        if (endptr - p->nptr != p->expected_end) {
-            failure_count++;
-            printf("test %d (input \"%s\"): expected end %d,"
-                   " libc strtoull() returned end %d\n",
-                   i, p->nptr, p->expected_end, (int) (endptr - p->nptr));
-        }
-#endif
-    }
-    if (failure_count == 0)
-        printf("All %d tests passed.\n", i);
-    return 0;
-}
-
-#endif /* defined(STRTOULL_UNIT_TEST) */
-
-#endif /* !HAVE_STRTOULL || defined(STRTOULL_UNIT_TEST) */
-
-/*
- * Local variables:
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * compile-command: "gcc -Wall -Werror -DSTRTOULL_UNIT_TEST=1 -I../include -g -o strtoull-unit-test strtoull.c && ./strtoull-unit-test"
- * End:
- */
diff --git a/snmplib/system.c b/snmplib/system.c
index bb47b7c..42522c6 100644
--- a/snmplib/system.c
+++ b/snmplib/system.c
@@ -60,11 +60,7 @@
 #endif
 
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -80,9 +76,6 @@
 #include <netinet/in.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -326,204 +319,6 @@
  * ********************************************* 
  */
 #ifdef							WIN32
-#	define WIN32_LEAN_AND_MEAN
-#	define WIN32IO_IS_STDIO
-#	define PATHLEN	1024
-
-#	include <tchar.h>
-#	include <windows.h>
-
-/*
- * MinGW defines WIN32, but has working dirent stuff.
- */
-#ifndef HAVE_DIRENT_H 
-
-/*
- * The idea here is to read all the directory names into a string table
- * * (separated by nulls) and when one of the other dir functions is called
- * * return the pointer to the current file name.
- */
-DIR            *
-opendir(const char *filename)
-{
-    DIR            *p;
-    long            len;
-    long            idx;
-    char            scannamespc[PATHLEN];
-    char           *scanname = scannamespc;
-    struct stat     sbuf;
-    WIN32_FIND_DATA FindData;
-    HANDLE          fh;
-
-    /*
-     * check to see if filename is a directory 
-     */
-    if ((stat(filename, &sbuf) < 0) || ((sbuf.st_mode & S_IFDIR) == 0)) {
-        return NULL;
-    }
-
-    /*
-     * get the file system characteristics 
-     */
-    /*
-     * if(GetFullPathName(filename, SNMP_MAXPATH, root, &dummy)) {
-     * *    if(dummy = strchr(root, '\\'))
-     * *        *++dummy = '\0';
-     * *    if(GetVolumeInformation(root, volname, SNMP_MAXPATH, &serial,
-     * *                            &maxname, &flags, 0, 0)) {
-     * *        downcase = !(flags & FS_CASE_IS_PRESERVED);
-     * *    }
-     * *  }
-     * *  else {
-     * *    downcase = TRUE;
-     * *  }
-     */
-
-    /*
-     * Create the search pattern 
-     */
-    strcpy(scanname, filename);
-
-    if (strchr("/\\", *(scanname + strlen(scanname) - 1)) == NULL)
-        strcat(scanname, "/*");
-    else
-        strcat(scanname, "*");
-
-    /*
-     * do the FindFirstFile call 
-     */
-    fh = FindFirstFile(scanname, &FindData);
-    if (fh == INVALID_HANDLE_VALUE) {
-        return NULL;
-    }
-
-    /*
-     * Get us a DIR structure 
-     */
-    p = (DIR *) malloc(sizeof(DIR));
-    /*
-     * Newz(1303, p, 1, DIR); 
-     */
-    if (p == NULL)
-        return NULL;
-
-    /*
-     * now allocate the first part of the string table for
-     * * the filenames that we find.
-     */
-    idx = strlen(FindData.cFileName) + 1;
-    p->start = (char *) malloc(idx);
-    /*
-     * New(1304, p->start, idx, char);
-     */
-    if (p->start == NULL) {
-        free(p);
-        return NULL;
-    }
-    strcpy(p->start, FindData.cFileName);
-    /*
-     * if(downcase)
-     * *    strlwr(p->start);
-     */
-    p->nfiles = 0;
-
-    /*
-     * loop finding all the files that match the wildcard
-     * * (which should be all of them in this directory!).
-     * * the variable idx should point one past the null terminator
-     * * of the previous string found.
-     */
-    while (FindNextFile(fh, &FindData)) {
-        len = strlen(FindData.cFileName);
-        /*
-         * bump the string table size by enough for the
-         * * new name and it's null terminator
-         */
-        p->start = (char *) realloc((void *) p->start, idx + len + 1);
-        /*
-         * Renew(p->start, idx+len+1, char);
-         */
-        if (p->start == NULL) {
-            free(p);
-            return NULL;
-        }
-        strcpy(&p->start[idx], FindData.cFileName);
-        /*
-         * if (downcase) 
-         * *        strlwr(&p->start[idx]);
-         */
-        p->nfiles++;
-        idx += len + 1;
-    }
-    FindClose(fh);
-    p->size = idx;
-    p->curr = p->start;
-    return p;
-}
-
-
-/*
- * Readdir just returns the current string pointer and bumps the
- * * string pointer to the nDllExport entry.
- */
-struct direct  *
-readdir(DIR * dirp)
-{
-    int             len;
-    static int      dummy = 0;
-
-    if (dirp->curr) {
-        /*
-         * first set up the structure to return 
-         */
-        len = strlen(dirp->curr);
-        strcpy(dirp->dirstr.d_name, dirp->curr);
-        dirp->dirstr.d_namlen = len;
-
-        /*
-         * Fake an inode 
-         */
-        dirp->dirstr.d_ino = dummy++;
-
-        /*
-         * Now set up for the nDllExport call to readdir 
-         */
-        dirp->curr += len + 1;
-        if (dirp->curr >= (dirp->start + dirp->size)) {
-            dirp->curr = NULL;
-        }
-
-        return &(dirp->dirstr);
-    } else
-        return NULL;
-}
-
-/*
- * free the memory allocated by opendir 
- */
-int
-closedir(DIR * dirp)
-{
-    free(dirp->start);
-    free(dirp);
-    return 1;
-}
-#endif /* HAVE_DIRENT_H */
-
-#ifndef HAVE_GETTIMEOFDAY
-
-int
-gettimeofday(struct timeval *tv, struct timezone *tz)
-{
-    struct _timeb   timebuffer;
-
-    _ftime(&timebuffer);
-    tv->tv_usec = timebuffer.millitm * 1000;
-    tv->tv_sec = timebuffer.time;
-    return (0);
-}
-#endif                          /* !HAVE_GETTIMEOFDAY */
-
 in_addr_t
 get_myaddr(void)
 {
@@ -816,26 +611,20 @@
 }
 #endif
 
-/*
- * Returns uptime in centiseconds(!).
+/**
+ * Returns the system uptime in centiseconds.
+ *
+ * @note The value returned by this function is not identical to sysUpTime
+ *   defined in RFC 1213. get_uptime() returns the system uptime while
+ *   sysUpTime represents the time that has elapsed since the most recent
+ *   restart of the network manager (snmpd).
+ *
+ * @see See also netsnmp_get_agent_uptime().
  */
 long
 get_uptime(void)
 {
-#if !defined(solaris2) && !defined(linux) && !defined(cygwin) && !defined(aix4) && !defined(aix5) && !defined(aix6)
-    struct timeval  now;
-    long            boottime_csecs, nowtime_csecs;
-
-    boottime_csecs = get_boottime();
-    if (boottime_csecs == 0)
-        return 0;
-    gettimeofday(&now, (struct timezone *) 0);
-    nowtime_csecs = (now.tv_sec * 100) + (now.tv_usec / 10000);
-
-    return (nowtime_csecs - boottime_csecs);
-#endif
-
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     struct nlist nl;
     int kmem;
     time_t lbolt;
@@ -847,9 +636,7 @@
     read(kmem, &lbolt, sizeof(lbolt));
     close(kmem);
     return(lbolt);
-#endif
-
-#ifdef solaris2
+#elif defined(solaris2)
     kstat_ctl_t    *ksc = kstat_open();
     kstat_t        *ks;
     kid_t           kid;
@@ -874,9 +661,7 @@
         kstat_close(ksc);
     }
     return lbolt;
-#endif                          /* solaris2 */
-
-#ifdef linux
+#elif defined(linux) || defined(cygwin)
     FILE           *in = fopen("/proc/uptime", "r");
     long            uptim = 0, a, b;
     if (in) {
@@ -885,10 +670,17 @@
         fclose(in);
     }
     return uptim;
-#endif                          /* linux */
+#else
+    struct timeval  now;
+    long            boottime_csecs, nowtime_csecs;
 
-#ifdef cygwin
-    return (0);                 /* not implemented */
+    boottime_csecs = get_boottime();
+    if (boottime_csecs == 0)
+        return 0;
+    gettimeofday(&now, (struct timezone *) 0);
+    nowtime_csecs = (now.tv_sec * 100) + (now.tv_usec / 10000);
+
+    return (nowtime_csecs - boottime_csecs);
 #endif
 }
 
@@ -1065,7 +857,7 @@
 
 /* returns centiseconds */
 int
-calculate_time_diff(struct timeval *now, struct timeval *then)
+calculate_time_diff(const struct timeval *now, const struct timeval *then)
 {
     struct timeval  tmp, diff;
     memcpy(&tmp, now, sizeof(struct timeval));
@@ -1082,7 +874,7 @@
 
 /* returns diff in rounded seconds */
 u_int
-calculate_sectime_diff(struct timeval *now, struct timeval *then)
+calculate_sectime_diff(const struct timeval *now, const struct timeval *then)
 {
     struct timeval  tmp, diff;
     memcpy(&tmp, now, sizeof(struct timeval));
@@ -1090,7 +882,7 @@
     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) {
+    if (diff.tv_usec >= 1000000L) {
         diff.tv_usec -= 1000000L;
         diff.tv_sec++;
     }
@@ -1343,7 +1135,7 @@
   } else {
     return -1;
   }
-#elif defined(aix4) || defined(aix5) || defined(aix6)
+#elif defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
   return (__KERNEL_32() ? 32 : (__KERNEL_64() ? 64 : -1));
 #elif defined(osf4) || defined(osf5) || defined(__alpha)
   return 64; /* Alpha is always 64bit */
diff --git a/snmplib/text_utils.c b/snmplib/text_utils.c
index 9079709..7148dcc 100644
--- a/snmplib/text_utils.c
+++ b/snmplib/text_utils.c
@@ -465,13 +465,13 @@
 
         case PMLP_TYPE_UNSIGNED:
             tvi->value.ul = strtoul(ptr, NULL, 0);
-            if ((errno == ERANGE) &&(ULONG_MAX == tvi->value.sl))
+            if ((errno == ERANGE) && (ULONG_MAX == tvi->value.ul))
                 snmp_log(LOG_WARNING,"value overflow\n");
             break;
 
 
         case PMLP_TYPE_INTEGER:
-            tvi->value.ul = strtol(ptr, NULL, 0);
+            tvi->value.sl = strtol(ptr, NULL, 0);
             if ((errno == ERANGE) &&
                 ((LONG_MAX == tvi->value.sl) ||
                  (LONG_MIN == tvi->value.sl)))
@@ -483,7 +483,7 @@
             break;
 
         case PMLP_TYPE_BOOLEAN:
-            if (isdigit(*ptr))
+            if (isdigit((unsigned char)(*ptr)))
                 tvi->value.ul = strtoul(ptr, NULL, 0);
             else if (strcasecmp(ptr,"true") == 0)
                 tvi->value.ul = 1;
diff --git a/snmplib/tools.c b/snmplib/tools.c
index 61a3644..f9951b9 100644
--- a/snmplib/tools.c
+++ b/snmplib/tools.c
@@ -4,17 +4,22 @@
 
 #define NETSNMP_TOOLS_C 1 /* dont re-define malloc wrappers here */
 
+#ifdef HAVE_CRTDBG_H
+/*
+ * Define _CRTDBG_MAP_ALLOC such that in debug builds (when _DEBUG has been
+ * defined) e.g. malloc() is rerouted to _malloc_dbg().
+ */
+#define _CRTDBG_MAP_ALLOC 1
+#include <crtdbg.h>
+#endif
+
 #include <net-snmp/net-snmp-config.h>
 
 #include <ctype.h>
 #include <stdio.h>
 #include <sys/types.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -26,8 +31,8 @@
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
 #endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -43,14 +48,6 @@
 #ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
 #endif
-#ifdef HAVE_CRTDBG_H
-/*
- * Define _CRTDBG_MAP_ALLOC such that in debug builds (when _DEBUG has been
- * defined) e.g. malloc() is rerouted to _malloc_dbg().
- */
-#define _CRTDBG_MAP_ALLOC 1
-#include <crtdbg.h>
-#endif
 #ifdef cygwin
 #include <windows.h>
 #endif
@@ -280,6 +277,58 @@
 
 /** converts binary to hexidecimal
  *
+ *     @param *input            Binary data.
+ *     @param len               Length of binary data.
+ *     @param **dest            NULL terminated string equivalent in hex.
+ *     @param *dest_len         size of destination buffer
+ *     @param allow_realloc     flag indicating if buffer can be realloc'd
+ *      
+ * @return olen	Length of output string not including NULL terminator.
+ */
+u_int
+netsnmp_binary_to_hex(u_char ** dest, size_t *dest_len, int allow_realloc, 
+                      const u_char * input, size_t len)
+{
+    u_int           olen = (len * 2) + 1;
+    u_char         *s, *op;
+    const u_char   *ip = input;
+
+    if (dest == NULL || dest_len == NULL || input == NULL)
+        return 0;
+
+    if (NULL == *dest) {
+        s = (unsigned char *) calloc(1, olen);
+        *dest_len = olen;
+    }
+    else
+        s = *dest;
+
+    if (*dest_len < olen) {
+        if (!allow_realloc)
+            return 0;
+        *dest_len = olen;
+        if (snmp_realloc(dest, dest_len))
+            return 0;
+    }
+
+    op = s;
+    while (ip - input < (int) len) {
+        *op++ = VAL2HEX((*ip >> 4) & 0xf);
+        *op++ = VAL2HEX(*ip & 0xf);
+        ip++;
+    }
+    *op = '\0';
+
+    if (s != *dest)
+        *dest = s;
+    *dest_len = olen;
+
+    return olen;
+
+}                               /* end netsnmp_binary_to_hex() */
+
+/** converts binary to hexidecimal
+ *
  *	@param *input		Binary data.
  *	@param len		Length of binary data.
  *	@param **output	NULL terminated string equivalent in hex.
@@ -293,21 +342,11 @@
 u_int
 binary_to_hex(const u_char * input, size_t len, char **output)
 {
-    u_int           olen = (len * 2) + 1;
-    char           *s = (char *) calloc(1, olen), *op = s;
-    const u_char   *ip = input;
+    size_t out_len = 0;
 
+    *output = NULL; /* will alloc new buffer */
 
-    while (ip - input < (int) len) {
-        *op++ = VAL2HEX((*ip >> 4) & 0xf);
-        *op++ = VAL2HEX(*ip & 0xf);
-        ip++;
-    }
-    *op = '\0';
-
-    *output = s;
-    return olen;
-
+    return netsnmp_binary_to_hex((u_char**)output, &out_len, 1, input, len);
 }                               /* end binary_to_hex() */
 
 
@@ -432,7 +471,7 @@
 netsnmp_hex_to_binary(u_char ** buf, size_t * buf_len, size_t * offset,
                       int allow_realloc, const char *hex, const char *delim)
 {
-    int             subid = 0;
+    unsigned int    subid = 0;
     const char     *cp = hex;
 
     if (buf == NULL || buf_len == NULL || offset == NULL || hex == NULL) {
@@ -795,15 +834,11 @@
  * Returns the difference (in msec) between the two markers
  */
 long
-atime_diff(marker_t first, marker_t second)
+atime_diff(const_marker_t first, const_marker_t second)
 {
-    struct timeval *tv1, *tv2, diff;
+    struct timeval diff;
 
-    tv1 = (struct timeval *) first;
-    tv2 = (struct timeval *) second;
-
-    diff.tv_sec = tv2->tv_sec - tv1->tv_sec - 1;
-    diff.tv_usec = tv2->tv_usec - tv1->tv_usec + 1000000;
+    NETSNMP_TIMERSUB((const struct timeval *) second, (const struct timeval *) first, &diff);
 
     return (diff.tv_sec * 1000 + diff.tv_usec / 1000);
 }
@@ -812,15 +847,11 @@
  * Returns the difference (in u_long msec) between the two markers
  */
 u_long
-uatime_diff(marker_t first, marker_t second)
+uatime_diff(const_marker_t first, const_marker_t second)
 {
-    struct timeval *tv1, *tv2, diff;
+    struct timeval diff;
 
-    tv1 = (struct timeval *) first;
-    tv2 = (struct timeval *) second;
-
-    diff.tv_sec = tv2->tv_sec - tv1->tv_sec - 1;
-    diff.tv_usec = tv2->tv_usec - tv1->tv_usec + 1000000;
+    NETSNMP_TIMERSUB((const struct timeval *) second, (const struct timeval *) first, &diff);
 
     return (((u_long) diff.tv_sec) * 1000 + diff.tv_usec / 1000);
 }
@@ -830,27 +861,20 @@
  * (functionally this is what sysUpTime needs)
  */
 u_long
-uatime_hdiff(marker_t first, marker_t second)
+uatime_hdiff(const_marker_t first, const_marker_t second)
 {
-    struct timeval *tv1, *tv2, diff;
-    u_long          res;
+    struct timeval diff;
 
-    tv1 = (struct timeval *) first;
-    tv2 = (struct timeval *) second;
-
-    diff.tv_sec = tv2->tv_sec - tv1->tv_sec - 1;
-    diff.tv_usec = tv2->tv_usec - tv1->tv_usec + 1000000;
-
-    res = ((u_long) diff.tv_sec) * 100 + diff.tv_usec / 10000;
-    return res;
+    NETSNMP_TIMERSUB((const struct timeval *) second, (const struct timeval *) first, &diff);
+    return ((u_long) diff.tv_sec) * 100 + diff.tv_usec / 10000;
 }
 
 /**
- * Test: Has (marked time plus delta) exceeded current time (in msec) ?
+ * Test: Has (marked time plus delta) exceeded current time ?
  * Returns 0 if test fails or cannot be tested (no marker).
  */
 int
-atime_ready(marker_t pm, int deltaT)
+atime_ready(const_marker_t pm, int delta_ms)
 {
     marker_t        now;
     long            diff;
@@ -861,18 +885,18 @@
 
     diff = atime_diff(pm, now);
     free(now);
-    if (diff < deltaT)
+    if (diff < delta_ms)
         return 0;
 
     return 1;
 }
 
 /**
- * Test: Has (marked time plus delta) exceeded current time (in msec) ?
+ * Test: Has (marked time plus delta) exceeded current time ?
  * Returns 0 if test fails or cannot be tested (no marker).
  */
 int
-uatime_ready(marker_t pm, unsigned int deltaT)
+uatime_ready(const_marker_t pm, unsigned int delta_ms)
 {
     marker_t        now;
     u_long          diff;
@@ -883,7 +907,7 @@
 
     diff = uatime_diff(pm, now);
     free(now);
-    if (diff < deltaT)
+    if (diff < delta_ms)
         return 0;
 
     return 1;
@@ -898,7 +922,7 @@
  * Return the number of timeTicks since the given marker 
  */
 int
-marker_tticks(marker_t pm)
+marker_tticks(const_marker_t pm)
 {
     int             res;
     marker_t        now = atime_newMarker();
@@ -909,9 +933,9 @@
 }
 
 int
-timeval_tticks(struct timeval *tv)
+timeval_tticks(const struct timeval *tv)
 {
-    return marker_tticks((marker_t) tv);
+    return marker_tticks((const_marker_t) tv);
 }
 
 /**
diff --git a/snmplib/snmpAAL5PVCDomain.c b/snmplib/transports/snmpAAL5PVCDomain.c
similarity index 90%
rename from snmplib/snmpAAL5PVCDomain.c
rename to snmplib/transports/snmpAAL5PVCDomain.c
index b79fbbe..2b28cb3 100644
--- a/snmplib/snmpAAL5PVCDomain.c
+++ b/snmplib/transports/snmpAAL5PVCDomain.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/library/snmpAAL5PVCDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <ctype.h>
@@ -30,7 +32,6 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpAAL5PVCDomain.h>
 
 
 oid netsnmp_AAL5PVCDomain[10] = { NETSNMP_ENTERPRISE_MIB, 3, 3, 3 };
@@ -86,11 +87,13 @@
 	}
 
         if (rc >= 0) {
-            char *str = netsnmp_aal5pvc_fmtaddr(t, NULL, 0);
-            DEBUGMSGTL(("netsnmp_aal5pvc",
-			"recv on fd %d got %d bytes (from %s)\n", t->sock,
-                        rc, str));
-            free(str);
+            DEBUGIF("netsnmp_aal5pvc") {
+                char *str = netsnmp_aal5pvc_fmtaddr(t, NULL, 0);
+                DEBUGMSGTL(("netsnmp_aal5pvc",
+                            "recv on fd %d got %d bytes (from %s)\n", t->sock,
+                            rc, str));
+                free(str);
+            }
         } else {
             DEBUGMSGTL(("netsnmp_aal5pvc", "recv on fd %d err %d (\"%s\")\n", 
 			t->sock, errno, strerror(errno)));
@@ -119,11 +122,14 @@
     }
 
     if (to != NULL && t != NULL && t->sock >= 0) {
-        char *str = netsnmp_aal5pvc_fmtaddr(NULL, (void *)to,
-					    sizeof(struct sockaddr_atmpvc));
-        DEBUGMSGTL(("netsnmp_aal5pvc","send %d bytes from %p to %s on fd %d\n",
-		    size, buf, str, t->sock));
-        free(str);
+        DEBUGIF("netsnmp_aal5pvc") {
+            char *str = netsnmp_aal5pvc_fmtaddr(NULL, (void *)to,
+                                                sizeof(struct sockaddr_atmpvc));
+            DEBUGMSGTL(("netsnmp_aal5pvc",
+                        "send %d bytes from %p to %s on fd %d\n",
+                        size, buf, str, t->sock));
+            free(str);
+        }
 	while (rc < 0) {
 	    rc = sendto(t->sock, buf, size, 0, NULL, 0);
 	    if (rc < 0 && errno != EINTR) {
@@ -164,7 +170,6 @@
 netsnmp_transport *
 netsnmp_aal5pvc_transport(struct sockaddr_atmpvc *addr, int local)
 {
-    char           *str = NULL;
     netsnmp_transport *t = NULL;
 
     if (addr == NULL || addr->sap_family != AF_ATMPVC) {
@@ -176,11 +181,13 @@
         return NULL;
     }
 
-    str = netsnmp_aal5pvc_fmtaddr(NULL, (void *) addr,
-                                  sizeof(struct sockaddr_atmpvc));
-    DEBUGMSGTL(("netsnmp_aal5pvc", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
+    DEBUGIF("netsnmp_aal5pvc") {
+        char *str = netsnmp_aal5pvc_fmtaddr(NULL, (void *) addr,
+                                            sizeof(struct sockaddr_atmpvc));
+        DEBUGMSGTL(("netsnmp_aal5pvc", "open %s %s\n",
+                    local ? "local" : "remote", str));
+        free(str);
+    }
 
     memset(t, 0, sizeof(netsnmp_transport));
 
diff --git a/snmplib/snmpAliasDomain.c b/snmplib/transports/snmpAliasDomain.c
similarity index 89%
rename from snmplib/snmpAliasDomain.c
rename to snmplib/transports/snmpAliasDomain.c
index 38c1620..eb50cad 100644
--- a/snmplib/snmpAliasDomain.c
+++ b/snmplib/transports/snmpAliasDomain.c
@@ -1,5 +1,8 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpAliasDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -20,19 +23,27 @@
 #include <dmalloc.h>
 #endif
 
+#include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
 #include <net-snmp/config_api.h>
 
-#include <net-snmp/library/snmp_transport.h>
-
 oid netsnmp_snmpALIASDomain[] = { 1,3,6,1,4,1,8072,3,3,7 };
 static netsnmp_tdomain aliasDomain;
 
 /* simple storage mechanism */
 static netsnmp_data_list *alias_memory = NULL;
 
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
+{
+    free(p);
+}
+#else
+#define free_wrapper free
+#endif
+
 /* An alias parser */
 void
 parse_alias_config(const char *token, char *line) {
@@ -47,7 +58,7 @@
     netsnmp_data_list_add_node(&alias_memory,
                                netsnmp_create_data_list(aliasname,
                                                         strdup(transportdef),
-                                                        &free));
+                                                        &free_wrapper));
 }
 
 void
diff --git a/snmplib/snmpCallbackDomain.c b/snmplib/transports/snmpCallbackDomain.c
similarity index 99%
rename from snmplib/snmpCallbackDomain.c
rename to snmplib/transports/snmpCallbackDomain.c
index efc2cbc..175c228 100644
--- a/snmplib/snmpCallbackDomain.c
+++ b/snmplib/transports/snmpCallbackDomain.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/library/snmpCallbackDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <ctype.h>
@@ -42,10 +44,8 @@
 #include <net-snmp/utilities.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUnixDomain.h>
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_client.h>
-#include <net-snmp/library/snmpCallbackDomain.h>
 
 #ifndef NETSNMP_STREAM_QUEUE_LEN
 #define NETSNMP_STREAM_QUEUE_LEN  5
diff --git a/snmplib/transports/snmpDTLSUDPDomain.c b/snmplib/transports/snmpDTLSUDPDomain.c
new file mode 100644
index 0000000..a50918b
--- /dev/null
+++ b/snmplib/transports/snmpDTLSUDPDomain.c
@@ -0,0 +1,1613 @@
+/* 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 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.
+ */
+/* 
+ * See the following web pages for useful documentation on this transport:
+ * http://www.net-snmp.org/wiki/index.php/TUT:Using_TLS
+ * http://www.net-snmp.org/wiki/index.php/Using_DTLS
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#ifdef HAVE_LIBSSL_DTLS
+
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/config_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/callback.h>
+
+#include "openssl/bio.h"
+#include "openssl/ssl.h"
+#include "openssl/err.h"
+#include "openssl/rand.h"
+
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTLSBaseDomain.h>
+#include <net-snmp/library/snmpUDPDomain.h>
+#include <net-snmp/library/cert_util.h>
+#include <net-snmp/library/snmp_openssl.h>
+
+#ifndef INADDR_NONE
+#define INADDR_NONE	-1
+#endif
+
+#ifndef MSG_DONTWAIT
+#define MSG_DONTWAIT 0
+#endif
+
+#define WE_ARE_SERVER 0
+#define WE_ARE_CLIENT 1
+
+oid             netsnmpDTLSUDPDomain[] = { TRANSPORT_DOMAIN_DTLS_UDP_IP };
+size_t          netsnmpDTLSUDPDomain_len = OID_LENGTH(netsnmpDTLSUDPDomain);
+
+static netsnmp_tdomain dtlsudpDomain;
+
+/* this stores openssl credentials for each connection since openssl
+   can't do it for us at the moment; hopefully future versions will
+   change */
+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;
+   u_int flags;
+   struct bio_cache_s *next;
+   int msgnum;
+   char *write_cache;
+   size_t write_cache_len;
+   _netsnmpTLSBaseData *tlsdata;
+} bio_cache;
+
+/** bio_cache flags */
+#define NETSNMP_BIO_HAVE_COOKIE        0x0001 /* verified cookie */
+#define NETSNMP_BIO_CONNECTED          0x0002 /* recieved decoded data */
+#define NETSNMP_BIO_DISCONNECTED       0x0004 /* peer shutdown */
+
+static bio_cache *biocache = NULL;
+
+static int openssl_addr_index = 0;
+
+static int netsnmp_dtls_verify_cookie(SSL *ssl, unsigned char *cookie,
+                                      unsigned int cookie_len);
+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) {
+    bio_cache *cachep = NULL;
+    cachep = biocache;
+    while(cachep) {
+
+        if (cachep->ipv4addr == from_addr->sin_addr.s_addr &&
+            cachep->portnum == from_addr->sin_port) {
+            /* found an existing connection */
+            break;
+        }
+            
+        cachep = cachep->next;
+    }
+    return cachep;
+}
+
+/* removes a single cache entry and returns SUCCESS on finding and
+   removing it. */
+static int remove_bio_cache(bio_cache *thiscache) {
+    bio_cache *cachep = NULL, *prevcache = NULL;
+    cachep = biocache;
+    while(cachep) {
+        if (cachep == thiscache) {
+
+            /* remove it from the list */
+            if (NULL == prevcache) {
+                /* at the first cache in the list */
+                biocache = thiscache->next;
+            } else {
+                prevcache->next = thiscache->next;
+            }
+
+            return SNMPERR_SUCCESS;
+        }
+        prevcache = cachep;
+        cachep = cachep->next;
+    }
+    return SNMPERR_GENERR;
+}
+
+/* frees the contents of a bio_cache */
+static void free_bio_cache(bio_cache *cachep) {
+/* These are freed by the SSL_free() call */
+/*
+        BIO_free(cachep->read_bio);
+        BIO_free(cachep->write_bio);
+*/
+    DEBUGMSGTL(("9:dtlsudp:bio_cache", "releasing %p\n", cachep));
+        SNMP_FREE(cachep->write_cache);
+        netsnmp_tlsbase_free_tlsdata(cachep->tlsdata);
+}
+
+static void remove_and_free_bio_cache(bio_cache *cachep) {
+    /** no debug, remove_bio_cache does it */
+    remove_bio_cache(cachep);
+    free_bio_cache(cachep);
+}
+
+
+/* XXX: lots of malloc/state cleanup needed */
+#define DIEHERE(msg) do { snmp_log(LOG_ERR, "%s\n", msg); return NULL; } while(0)
+
+static bio_cache *
+start_new_cached_connection(netsnmp_transport *t,
+                            struct sockaddr_in *remote_addr,
+                            int we_are_client) {
+    bio_cache *cachep = NULL;
+    _netsnmpTLSBaseData *tlsdata;
+
+    DEBUGTRACETOK("9:dtlsudp");
+
+    /* RFC5953: section 5.3.1, step 1:
+       1)  The snmpTlstmSessionOpens counter is incremented.
+    */
+    if (we_are_client)
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENS);
+
+    if (!t->sock)
+        DIEHERE("no socket passed in to start_new_cached_connection\n");
+    if (!remote_addr)
+        DIEHERE("no remote_addr passed in to start_new_cached_connection\n");
+        
+    cachep = SNMP_MALLOC_TYPEDEF(bio_cache);
+    if (!cachep)
+        return NULL;
+    
+    /* allocate our TLS specific data */
+    if (NULL == (tlsdata = netsnmp_tlsbase_allocate_tlsdata(t, !we_are_client))) {
+        SNMP_FREE(cachep);
+        return NULL;
+    }
+    cachep->tlsdata = tlsdata;
+
+    /* RFC5953: section 5.3.1, step 1:
+       2)  The client selects the appropriate certificate and cipher_suites
+           for the key agreement based on the tmSecurityName and the
+           tmRequestedSecurityLevel for the session.  For sessions being
+           established as a result of a SNMP-TARGET-MIB based operation, the
+           certificate will potentially have been identified via the
+           snmpTlstmParamsTable mapping and the cipher_suites will have to
+           be taken from system-wide or implementation-specific
+           configuration.  If no row in the snmpTlstmParamsTable exists then
+           implementations MAY choose to establish the connection using a
+           default client certificate available to the application.
+           Otherwise, the certificate and appropriate cipher_suites will
+           need to be passed to the openSession() ASI as supplemental
+           information or configured through an implementation-dependent
+           mechanism.  It is also implementation-dependent and possibly
+           policy-dependent how tmRequestedSecurityLevel will be used to
+           influence the security capabilities provided by the (D)TLS
+           connection.  However this is done, the security capabilities
+           provided by (D)TLS MUST be at least as high as the level of
+           security indicated by the tmRequestedSecurityLevel parameter.
+           The actual security level of the session is reported in the
+           tmStateReference cache as tmSecurityLevel.  For (D)TLS to provide
+           strong authentication, each principal acting as a command
+           generator SHOULD have its own certificate.
+    */
+    /* Implementation notes:
+       + This Information is passed in via the transport and default
+         paremeters
+    */
+    /* see if we have base configuration to copy in to this new one */
+    if (NULL != t->data && t->data_length == sizeof(_netsnmpTLSBaseData)) {
+        _netsnmpTLSBaseData *parentdata = t->data;
+        if (parentdata->our_identity)
+            tlsdata->our_identity = strdup(parentdata->our_identity);
+        if (parentdata->their_identity)
+            tlsdata->their_identity = strdup(parentdata->their_identity);
+        if (parentdata->their_fingerprint)
+            tlsdata->their_fingerprint = strdup(parentdata->their_fingerprint);
+        if (parentdata->trust_cert)
+            tlsdata->trust_cert = strdup(parentdata->trust_cert);
+        if (parentdata->their_hostname)
+            tlsdata->their_hostname = strdup(parentdata->their_hostname);
+    }
+    
+    DEBUGMSGTL(("dtlsudp", "starting a new connection\n"));
+    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));
+
+    /* create caching memory bios for OpenSSL to read and write to */
+
+    cachep->read_bio = BIO_new(BIO_s_mem()); /* openssl reads from */
+    if (!cachep->read_bio)
+        DIEHERE("failed to create the openssl read_bio");
+
+    cachep->write_bio = BIO_new(BIO_s_mem()); /* openssl writes to */
+    if (!cachep->write_bio) {
+        BIO_free(cachep->read_bio);
+        cachep->read_bio = NULL;
+        DIEHERE("failed to create the openssl write_bio");
+    }
+
+    BIO_set_mem_eof_return(cachep->read_bio, -1);
+    BIO_set_mem_eof_return(cachep->write_bio, -1);
+
+    if (we_are_client) {
+        /* we're the client */
+        DEBUGMSGTL(("dtlsudp",
+                    "starting a new connection as a client to sock: %d\n",
+                    t->sock));
+        tlsdata->ssl = SSL_new(sslctx_client_setup(DTLSv1_method(), tlsdata));
+
+        /* XXX: session setting 735 */
+    } else {
+        /* we're the server */
+        SSL_CTX *ctx = sslctx_server_setup(DTLSv1_method());
+        if (!ctx) {
+            BIO_free(cachep->read_bio);
+            BIO_free(cachep->write_bio);
+            cachep->read_bio = NULL;
+            cachep->write_bio = NULL;
+            DIEHERE("failed to create the SSL Context");
+        }
+
+        /* turn on cookie exchange */
+        /* Set DTLS cookie generation and verification callbacks */
+        SSL_CTX_set_cookie_generate_cb(ctx, netsnmp_dtls_gen_cookie);
+        SSL_CTX_set_cookie_verify_cb(ctx, netsnmp_dtls_verify_cookie);
+
+        tlsdata->ssl = SSL_new(ctx);
+    }
+
+    if (!tlsdata->ssl) {
+        BIO_free(cachep->read_bio);
+        BIO_free(cachep->write_bio);
+        cachep->read_bio = NULL;
+        cachep->write_bio = NULL;
+        DIEHERE("failed to create the SSL session structure");
+    }
+        
+    SSL_set_mode(tlsdata->ssl, SSL_MODE_AUTO_RETRY);
+
+    /* set the bios that openssl should read from and write to */
+    /* (and we'll do the opposite) */
+    SSL_set_bio(tlsdata->ssl, cachep->read_bio, cachep->write_bio);
+
+    /* RFC5953: section 5.3.1, step 1:
+       3)  Using the destTransportDomain and destTransportAddress values,
+           the client will initiate the (D)TLS handshake protocol to
+           establish session keys for message integrity and encryption.
+
+           If the attempt to establish a session is unsuccessful, then
+           snmpTlstmSessionOpenErrors is incremented, an error indication is
+           returned, and processing stops.  If the session failed to open
+           because the presented server certificate was unknown or invalid
+           then the snmpTlstmSessionUnknownServerCertificate or
+           snmpTlstmSessionInvalidServerCertificates MUST be incremented and
+           a snmpTlstmServerCertificateUnknown or
+           snmpTlstmServerInvalidCertificate notification SHOULD be sent as
+           appropriate.  Reasons for server certificate invalidation
+           includes, but is not limited to, cryptographic validation
+           failures and an unexpected presented certificate identity.
+    */
+    /* Implementation notes:
+       + Because we're working asyncronously the real "end" point of
+         opening a connection doesn't occur here as certificate
+         verification and other things needs to happen first in the
+         verify callback, etc.  See the netsnmp_dtlsudp_recv()
+         function for the final processing.
+    */
+    /* set the SSL notion of we_are_client/server */
+    if (we_are_client)
+        SSL_set_connect_state(tlsdata->ssl);
+    else {
+        /* XXX: we need to only create cache entries when cookies succeed */
+
+        SSL_set_options(tlsdata->ssl, SSL_OP_COOKIE_EXCHANGE);
+
+        SSL_set_ex_data(tlsdata->ssl, openssl_addr_index, cachep);
+
+        SSL_set_accept_state(tlsdata->ssl);
+    }
+
+    /* RFC5953: section 5.3.1, step 1:
+       6)  The TLSTM-specific session identifier (tlstmSessionID) is set in
+           the tmSessionID of the tmStateReference passed to the TLS
+           Transport Model to indicate that the session has been established
+           successfully and to point to a specific (D)TLS connection for
+           future use.  The tlstmSessionID is also stored in the LCD for
+           later lookup during processing of incoming messages
+           (Section 5.1.2).
+    */
+    /* Implementation notes:
+       + our sessionID is stored as the transport's data pointer member
+    */
+    DEBUGMSGT(("9:dtlsudp:bio_cache:created", "%p\n", cachep));
+
+    return cachep;
+}
+
+static bio_cache *
+find_or_create_bio_cache(netsnmp_transport *t, struct sockaddr_in *from_addr,
+                         int we_are_client) {
+    bio_cache *cachep = find_bio_cache(from_addr);
+    if (NULL == cachep) {
+        /* none found; need to start a new context */
+        cachep = start_new_cached_connection(t, from_addr, we_are_client);
+        if (NULL == cachep) {
+            snmp_log(LOG_ERR, "failed to open a new dtls connection\n");
+        }
+    } else {
+        DEBUGMSGT(("9:dtlsudp:bio_cache:found", "%p\n", cachep));
+    }
+    return cachep;
+}
+
+/*
+ * Reads data from our internal openssl outgoing BIO and sends any
+ * queued packets out the UDP port
+ */
+static int
+_netsnmp_send_queued_dtls_pkts(netsnmp_transport *t, bio_cache *cachep) {
+    int outsize, rc2;
+    u_char outbuf[65535];
+    
+    DEBUGTRACETOK("9:dtlsudp");
+
+    /* for memory bios, we now read from openssl's write
+       buffer (ie, the packet to go out) and send it out
+       the udp port manually */
+
+    outsize = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
+    if (outsize > 0) {
+        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 */
+
+        if (rc2 == -1) {
+            snmp_log(LOG_ERR, "failed to send a DTLS specific packet\n");
+        }
+    } else
+        DEBUGMSGTL(("9:dtlsudp", "have 0 bytes to send\n"));
+
+    return outsize;
+}
+
+/*
+ * If we have any outgoing SNMP data queued that OpenSSL/DTLS couldn't send
+ * (likely due to DTLS control packets needing to go out first)
+ * then this function attempts to send them.
+ */
+/* returns SNMPERR_SUCCESS if we succeeded in getting the data out */
+/* returns SNMPERR_GENERR if we still need more time */
+static int
+_netsnmp_bio_try_and_write_buffered(netsnmp_transport *t, bio_cache *cachep) {
+    int rc;
+    _netsnmpTLSBaseData *tlsdata;
+    
+    DEBUGTRACETOK("9:dtlsudp");
+
+    tlsdata = cachep->tlsdata;
+
+    /* make sure we have something to write */
+    if (!cachep->write_cache || cachep->write_cache_len == 0)
+        return SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("dtlsudp", "Trying to write %" NETSNMP_PRIz "d of buffered data\n",
+                cachep->write_cache_len));
+
+    /* try and write out the cached data */
+    rc = SSL_write(tlsdata->ssl, cachep->write_cache, cachep->write_cache_len);
+
+    while (rc == -1) {
+        int errnum = SSL_get_error(tlsdata->ssl, rc);
+        int bytesout;
+
+        /* don't treat want_read/write errors as real errors */
+        if (errnum != SSL_ERROR_WANT_READ &&
+            errnum != SSL_ERROR_WANT_WRITE) {
+            DEBUGMSGTL(("dtlsudp", "ssl_write error (of buffered data)\n")); 
+            _openssl_log_error(rc, tlsdata->ssl, "SSL_write");
+            return SNMPERR_GENERR;
+        }
+
+        /* check to see if we have outgoing DTLS packets to send */
+        /* (SSL_write could have created DTLS control packets) */ 
+        bytesout = _netsnmp_send_queued_dtls_pkts(t, cachep);
+
+        /* If want_read/write but failed to actually send anything
+           then we need to wait for the other side, so quit */
+        if ((errnum == SSL_ERROR_WANT_READ ||
+             errnum == SSL_ERROR_WANT_WRITE) &&
+            bytesout <= 0) {
+            /* we've failed; must need to wait longer */
+            return SNMPERR_GENERR;
+        }
+
+        /* retry writing */
+        DEBUGMSGTL(("9:dtlsudp", "recalling ssl_write\n")); 
+        rc = SSL_write(tlsdata->ssl, cachep->write_cache,
+                       cachep->write_cache_len);
+    }
+
+    if (rc > 0)
+        cachep->msgnum++;
+    
+    if (_netsnmp_send_queued_dtls_pkts(t, cachep) > 0) {
+        SNMP_FREE(cachep->write_cache);
+        cachep->write_cache_len = 0;
+        DEBUGMSGTL(("dtlsudp", "  Write was successful\n"));
+        return SNMPERR_SUCCESS;
+    }
+    DEBUGMSGTL(("dtlsudp", "  failed to send over UDP socket\n"));
+    return SNMPERR_GENERR;
+}
+
+static int
+_netsnmp_add_buffered_data(bio_cache *cachep, char *buf, size_t size) {
+    if (cachep->write_cache && cachep->write_cache_len > 0) {
+        size_t newsize = cachep->write_cache_len + size;
+
+        char *newbuf = realloc(cachep->write_cache, newsize);
+        if (NULL == newbuf) {
+            /* ack! malloc failure */
+            /* XXX: free and close */
+            return SNMPERR_GENERR;
+        }
+        cachep->write_cache = newbuf;
+
+        /* write the new packet to the end */
+        memcpy(cachep->write_cache + cachep->write_cache_len,
+               buf, size);
+        cachep->write_cache_len = newsize;
+    } else {
+        cachep->write_cache = netsnmp_memdup(buf, size);
+        if (!cachep->write_cache) {
+            /* ack! malloc failure */
+            /* XXX: free and close */
+            return SNMPERR_GENERR;
+        }
+        cachep->write_cache_len = size;
+    }
+    return SNMPERR_SUCCESS;
+}
+
+static int
+netsnmp_dtlsudp_recv(netsnmp_transport *t, void *buf, int size,
+                     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;
+    _netsnmpTLSBaseData *tlsdata;
+    bio_cache *cachep;
+
+    DEBUGTRACETOK("9:dtlsudp");
+
+    if (NULL == t || t->sock == 0)
+        return -1;
+
+    /* create a tmStateRef cache for slow fill-in */
+    tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+
+    if (tmStateRef == NULL) {
+        *opaque = NULL;
+        *olength = 0;
+        return -1;
+    }
+
+    /* Set the transportDomain */
+    memcpy(tmStateRef->transportDomain,
+           netsnmpDTLSUDPDomain, sizeof(netsnmpDTLSUDPDomain[0]) *
+           netsnmpDTLSUDPDomain_len);
+    tmStateRef->transportDomainLen = netsnmpDTLSUDPDomain_len;
+
+    addr_pair = &tmStateRef->addresses;
+    tmStateRef->have_addresses = 1;
+    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 */
+        if (rc < 0 && errno != EINTR) {
+            break;
+        }
+    }
+
+    DEBUGMSGTL(("dtlsudp", "received %d raw bytes on way to dtls\n", rc));
+    if (rc < 0) {
+        DEBUGMSGTL(("dtlsudp", "recvfrom fd %d err %d (\"%s\")\n",
+                    t->sock, errno, strerror(errno)));
+        SNMP_FREE(tmStateRef);
+        return -1;
+    }
+
+    /* now that we have the from address filled in, we can look up
+       the openssl context and have openssl read and process
+       appropriately */
+
+    /* RFC5953: section 5.1, step 1:
+    1)  Determine the tlstmSessionID for the incoming message.  The
+        tlstmSessionID MUST be a unique session identifier for this
+        (D)TLS connection.  The contents and format of this identifier
+        are implementation-dependent as long as it is unique to the
+        session.  A session identifier MUST NOT be reused until all
+        references to it are no longer in use.  The tmSessionID is equal
+        to the tlstmSessionID discussed in Section 5.1.1. tmSessionID
+        refers to the session identifier when stored in the
+        tmStateReference and tlstmSessionID refers to the session
+        identifier when stored in the LCD.  They MUST always be equal
+        when processing a given session's traffic.
+
+        If this is the first message received through this session and
+        the session does not have an assigned tlstmSessionID yet then the
+        snmpTlstmSessionAccepts counter is incremented and a
+        tlstmSessionID for the session is created.  This will only happen
+        on the server side of a connection because a client would have
+        already assigned a tlstmSessionID during the openSession()
+        invocation.  Implementations may have performed the procedures
+        described in Section 5.3.2 prior to this point or they may
+        perform them now, but the procedures described in Section 5.3.2
+        MUST be performed before continuing beyond this point.
+    */
+
+    /* RFC5953: section 5.1, step 2:
+       2)  Create a tmStateReference cache for the subsequent reference and
+           assign the following values within it:
+
+           tmTransportDomain  = snmpTLSTCPDomain or snmpDTLSUDPDomain as
+              appropriate.
+
+           tmTransportAddress  = The address the message originated from.
+
+           tmSecurityLevel  = The derived tmSecurityLevel for the session,
+              as discussed in Section 3.1.2 and Section 5.3.
+
+           tmSecurityName  = The derived tmSecurityName for the session as
+              discussed in Section 5.3.  This value MUST be constant during
+              the lifetime of the session.
+
+           tmSessionID  = The tlstmSessionID described in step 1 above.
+    */
+
+    /* if we don't have a cachep for this connection then
+       we're receiving something new and are the server
+       side */
+    cachep =
+        find_or_create_bio_cache(t, &addr_pair->remote_addr, WE_ARE_SERVER);
+    if (NULL == cachep) {
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONACCEPTS);
+        SNMP_FREE(tmStateRef);
+        return -1;
+    }
+    tlsdata = cachep->tlsdata;
+    if (NULL == tlsdata->ssl) {
+        /*
+         * this happens when the server starts but doesn't have an
+         * identity and a client connects...
+         */
+        snmp_log(LOG_ERR,
+                 "DTLSUDP: missing tlsdata!\n");
+        /*snmp_increment_statistic( XXX-rks ??? );*/
+        SNMP_FREE(tmStateRef);
+        return -1;
+    }
+
+    /* Implementation notes:
+       - we use the t->data memory pointer as the session ID
+       - the transport domain is already the correct type if we got here
+       - if we don't have a session yet (eg, no tmSessionID from the
+         specs) then we create one automatically here.
+    */
+
+    /* write the received buffer to the memory-based input bio */
+    BIO_write(cachep->read_bio, buf, rc);
+
+    /* RFC5953: section 5.1, step 3:
+       3)  The incomingMessage and incomingMessageLength are assigned values
+           from the (D)TLS processing.
+     */
+    /* Implementation notes:
+       + rc = incomingMessageLength
+       + buf = IncomingMessage
+    */
+
+    /* XXX: in Wes' other example we do a SSL_pending() call
+       too to ensure we're ready to read...  it's possible
+       that buffered stuff in openssl won't be caught by the
+       net-snmp select loop because it's already been pulled
+       out; need to deal with this) */
+    rc = SSL_read(tlsdata->ssl, buf, size);
+
+    /*
+     * moved netsnmp_openssl_null_checks to netsnmp_tlsbase_wrapup_recv.
+     * currently netsnmp_tlsbase_wrapup_recv is where we check for
+     * algorithm compliance, but we (sometimes) know the algorithms
+     * at this point, so we could bail earlier (here)...
+     */
+
+    while (rc == -1) {
+        int errnum = SSL_get_error(tlsdata->ssl, rc);
+        int bytesout;
+
+        /* don't treat want_read/write errors as real errors */
+        if (errnum != SSL_ERROR_WANT_READ &&
+            errnum != SSL_ERROR_WANT_WRITE) {
+            _openssl_log_error(rc, tlsdata->ssl, "SSL_read");
+            break;
+        }
+
+        /* check to see if we have outgoing DTLS packets to send */
+        /* (SSL_read could have created DTLS control packets) */ 
+        bytesout = _netsnmp_send_queued_dtls_pkts(t, cachep);
+
+        /* If want_read/write but failed to actually send
+           anything then we need to wait for the other side,
+           so quit */
+        if ((errnum == SSL_ERROR_WANT_READ ||
+             errnum == SSL_ERROR_WANT_WRITE) &&
+            bytesout <= 0)
+            break;
+
+        /* retry reading */
+        DEBUGMSGTL(("9:dtlsudp", "recalling ssl_read\n")); 
+        rc = SSL_read(tlsdata->ssl, buf, size);
+    }
+
+    if (rc == -1) {
+        SNMP_FREE(tmStateRef);
+
+        DEBUGMSGTL(("9:dtlsudp", "no decoded data from dtls\n"));
+
+        if (SSL_get_error(tlsdata->ssl, rc) == SSL_ERROR_WANT_READ) {
+            DEBUGMSGTL(("9dtlsudp","here: want read!\n"));
+
+            /* see if we have buffered write date to send out first */
+            if (cachep->write_cache) {
+                _netsnmp_bio_try_and_write_buffered(t, cachep);
+                /* XXX: check error or not here? */
+                /* (what would we do differently?) */
+            }
+
+            rc = -1; /* XXX: it's ok, but what's the right return? */
+        }
+        else
+            _openssl_log_error(rc, tlsdata->ssl, "SSL_read");
+
+#if 0 /* to dump cache if we don't have a cookie, this is where to do it */
+        if (!(cachep->flags & NETSNMP_BIO_HAVE_COOKIE))
+            remove_and_free_bio_cache(cachep);
+#endif
+        return rc;
+    }
+
+    DEBUGMSGTL(("dtlsudp", "received %d decoded bytes from dtls\n", rc));
+
+    if ((0 == rc) && (SSL_get_shutdown(tlsdata->ssl) & SSL_RECEIVED_SHUTDOWN)) {
+        DEBUGMSGTL(("dtlsudp", "peer disconnected\n"));
+        cachep->flags |= NETSNMP_BIO_DISCONNECTED;
+        remove_and_free_bio_cache(cachep);
+        SNMP_FREE(tmStateRef);
+        return rc;
+    }
+    cachep->flags |= NETSNMP_BIO_CONNECTED;
+
+    /* Until we've locally assured ourselves that all is well in
+       certificate-verification-land we need to be prepared to stop
+       here and ensure all our required checks have been done. */ 
+    if (0 == (tlsdata->flags & NETSNMP_TLSBASE_CERT_FP_VERIFIED)) {
+        int verifyresult;
+
+        if (tlsdata->flags & NETSNMP_TLSBASE_IS_CLIENT) {
+
+            /* verify that the server's certificate is the correct one */
+
+    	    /* RFC5953: section 5.3.1, step 1:
+    	       3)  Using the destTransportDomain and
+    	           destTransportAddress values, the client will
+    	           initiate the (D)TLS handshake protocol to establish
+    	           session keys for message integrity and encryption.
+
+    	           If the attempt to establish a session is
+    	           unsuccessful, then snmpTlstmSessionOpenErrors is
+    	           incremented, an error indication is returned, and
+    	           processing stops.  If the session failed to open
+    	           because the presented server certificate was
+    	           unknown or invalid then the
+    	           snmpTlstmSessionUnknownServerCertificate or
+    	           snmpTlstmSessionInvalidServerCertificates MUST be
+    	           incremented and a snmpTlstmServerCertificateUnknown
+    	           or snmpTlstmServerInvalidCertificate notification
+    	           SHOULD be sent as appropriate.  Reasons for server
+    	           certificate invalidation includes, but is not
+    	           limited to, cryptographic validation failures and
+    	           an unexpected presented certificate identity.
+    	    */
+    	    /* RFC5953: section 5.3.1, step 1:
+    	       4)  The (D)TLS client MUST then verify that the (D)TLS
+    	           server's presented certificate is the expected
+    	           certificate.  The (D)TLS client MUST NOT transmit
+    	           SNMP messages until the server certificate has been
+    	           authenticated, the client certificate has been
+    	           transmitted and the TLS connection has been fully
+    	           established.
+
+    	           If the connection is being established from
+    	           configuration based on SNMP-TARGET-MIB
+    	           configuration, then the snmpTlstmAddrTable
+    	           DESCRIPTION clause describes how the verification
+    	           is done (using either a certificate fingerprint, or
+    	           an identity authenticated via certification path
+    	           validation).
+
+    	           If the connection is being established for reasons
+    	           other than configuration found in the
+    	           SNMP-TARGET-MIB then configuration and procedures
+    	           outside the scope of this document should be
+    	           followed.  Configuration mechanisms SHOULD be
+    	           similar in nature to those defined in the
+    	           snmpTlstmAddrTable to ensure consistency across
+    	           management configuration systems.  For example, a
+    	           command-line tool for generating SNMP GETs might
+    	           support specifying either the server's certificate
+    	           fingerprint or the expected host name as a command
+    	           line argument.
+    	    */
+    	    /* RFC5953: section 5.3.1, step 1:
+    	       5)  (D)TLS provides assurance that the authenticated
+    	           identity has been signed by a trusted configured
+    	           certification authority.  If verification of the
+    	           server's certificate fails in any way (for example
+    	           because of failures in cryptographic verification
+    	           or the presented identity did not match the
+    	           expected named entity) then the session
+    	           establishment MUST fail, the
+    	           snmpTlstmSessionInvalidServerCertificates object is
+    	           incremented.  If the session can not be opened for
+    	           any reason at all, including cryptographic
+    	           verification failures and snmpTlstmCertToTSNTable
+    	           lookup failures, then the
+    	           snmpTlstmSessionOpenErrors counter is incremented
+    	           and processing stops.
+    	    */
+
+	    /* Implementation notes:
+	       + in the following function the server's certificate and
+	         presented commonname or subjectAltName is checked
+	         according to the rules in the snmpTlstmAddrTable.
+	    */ 
+            if ((verifyresult = netsnmp_tlsbase_verify_server_cert(tlsdata->ssl, tlsdata))
+                != SNMPERR_SUCCESS) {
+                if (verifyresult == SNMPERR_TLS_NO_CERTIFICATE) {
+                    /* assume we simply haven't received it yet and there
+                       is more data to wait-for or send */
+                    /* XXX: probably need to check for whether we should
+                       send stuff from our end to continue the transaction
+                    */
+                    SNMP_FREE(tmStateRef);
+                    return -1;
+                } else {
+                    /* XXX: free needed memory */
+                    snmp_log(LOG_ERR,
+                             "DTLSUDP: failed to verify ssl certificate (of the server)\n");
+		    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONUNKNOWNSERVERCERTIFICATE);
+		    /* Step 5 says these are always incremented */
+		    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDSERVERCERTIFICATES);
+		    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
+                    SNMP_FREE(tmStateRef);
+                    return -1;
+                }
+            }
+            tlsdata->flags |= NETSNMP_TLSBASE_CERT_FP_VERIFIED;
+            DEBUGMSGTL(("dtlsudp", "Verified the server's certificate\n"));
+        } else {
+            /* verify that the client's certificate is the correct one */
+        
+            if ((verifyresult = netsnmp_tlsbase_verify_client_cert(tlsdata->ssl, tlsdata))
+                != SNMPERR_SUCCESS) {
+                if (verifyresult == SNMPERR_TLS_NO_CERTIFICATE) {
+                    /* assume we simply haven't received it yet and there
+                       is more data to wait-for or send */
+                    /* XXX: probably need to check for whether we should
+                       send stuff from our end to continue the transaction
+                    */
+                    SNMP_FREE(tmStateRef);
+                    return -1;
+                } else {
+                    /* XXX: free needed memory */
+                    snmp_log(LOG_ERR,
+                             "DTLSUDP: failed to verify ssl certificate (of the client)\n");
+                    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCLIENTCERTIFICATES);
+                    SNMP_FREE(tmStateRef);
+                    return -1;
+                }
+            }
+            tlsdata->flags |= NETSNMP_TLSBASE_CERT_FP_VERIFIED;
+            DEBUGMSGTL(("dtlsudp", "Verified the client's certificate\n"));
+        }
+    }
+
+    if (rc > 0)
+        cachep->msgnum++;
+
+    if (BIO_ctrl_pending(cachep->write_bio) > 0) {
+        _netsnmp_send_queued_dtls_pkts(t, cachep);
+    }
+
+    DEBUGIF ("9:dtlsudp") {
+        char *str = netsnmp_udp_fmtaddr(NULL, addr_pair, sizeof(netsnmp_indexed_addr_pair));
+        DEBUGMSGTL(("9:dtlsudp",
+                    "recvfrom fd %d got %d bytes (from %s)\n",
+                    t->sock, rc, str));
+        free(str);
+    }
+
+    /* see if we have buffered write date to send out first */
+    if (cachep->write_cache) {
+        if (SNMPERR_GENERR ==
+            _netsnmp_bio_try_and_write_buffered(t, cachep)) {
+            /* we still have data that can't get out in the buffer */
+            /* XXX: nothing to do here? */
+        }
+    }
+
+    if (netsnmp_tlsbase_wrapup_recv(tmStateRef, tlsdata, opaque, olength) !=
+        SNMPERR_SUCCESS)
+        return SNMPERR_GENERR;
+
+    /* RFC5953: section 5.1, step 4:
+       4)  The TLS Transport Model passes the transportDomain,
+           transportAddress, incomingMessage, and incomingMessageLength to
+           the Dispatcher using the receiveMessage ASI:
+
+          statusInformation =
+          receiveMessage(
+          IN   transportDomain     -- snmpTLSTCPDomain or snmpDTLSUDPDomain,
+          IN   transportAddress    -- address for the received message
+          IN   incomingMessage        -- the whole SNMP message from (D)TLS
+          IN   incomingMessageLength  -- the length of the SNMP message
+          IN   tmStateReference    -- transport info
+           )
+    */
+    /* Implementation notes: those pamateres are all passed outward
+       using the functions arguments and the return code below (the length) */
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_dtlsudp_send(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    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;
+    
+    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 == addr_pair) {
+      /* RFC5953: section 5.2, step 1:
+       1)  If tmStateReference does not refer to a cache containing values
+           for tmTransportDomain, tmTransportAddress, tmSecurityName,
+           tmRequestedSecurityLevel, and tmSameSecurity, then increment the
+           snmpTlstmSessionInvalidCaches counter, discard the message, and
+           return the error indication in the statusInformation.  Processing
+           of this message stops.
+      */
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES);
+        snmp_log(LOG_ERR, "dtlsudp_send: can't get address to send to\n");
+        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
+           values from the tmStateReference.  Note: The tmSessionID value
+           may be undefined if no session exists yet over which the message
+           can be sent.
+    */
+    /* Implementation notes:
+       - we use the t->data memory pointer as the session ID
+       - the transport domain is already the correct type if we got here
+       - if we don't have a session yet (eg, no tmSessionID from the
+         specs) then we create one automatically here.
+    */
+
+
+    /* RFC5953: section 5.2, step 3:
+       3)  If tmSameSecurity is true and either tmSessionID is undefined or
+           refers to a session that is no longer open then increment the
+           snmpTlstmSessionNoSessions counter, discard the message and
+           return the error indication in the statusInformation.  Processing
+           of this message stops.
+    */
+    /* RFC5953: section 5.2, step 4:
+       4)  If tmSameSecurity is false and tmSessionID refers to a session
+           that is no longer available then an implementation SHOULD open a
+           new session using the openSession() ASI (described in greater
+           detail in step 5b).  Instead of opening a new session an
+           implementation MAY return a snmpTlstmSessionNoSessions error to
+           the calling module and stop processing of the message.
+    */
+    /* Implementation Notes:
+       - We would never get here if the sessionID was different.  We
+         tie packets directly to the transport object and it could
+         never be sent back over a different transport, which is what
+         the above text is trying to prevent.
+       - Auto-connections are handled higher in the Net-SNMP library stack
+     */
+
+    /* RFC5953: section 5.2, step 5:
+       5)  If tmSessionID is undefined, then use tmTransportDomain,
+           tmTransportAddress, tmSecurityName and tmRequestedSecurityLevel
+           to see if there is a corresponding entry in the LCD suitable to
+           send the message over.
+
+           5a)  If there is a corresponding LCD entry, then this session
+                will be used to send the message.
+
+           5b)  If there is no corresponding LCD entry, then open a session
+                using the openSession() ASI (discussed further in
+                Section 5.3.1).  Implementations MAY wish to offer message
+                buffering to prevent redundant openSession() calls for the
+                same cache entry.  If an error is returned from
+                openSession(), then discard the message, discard the
+                tmStateReference, increment the snmpTlstmSessionOpenErrors,
+                return an error indication to the calling module and stop
+                processing of the message.
+    */
+
+    /* we're always a client if we're sending to something unknown yet */
+    if (NULL ==
+        (cachep = find_or_create_bio_cache(t, &addr_pair->remote_addr,
+                                           WE_ARE_CLIENT))) {
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
+        return -1;
+    }
+
+    tlsdata = cachep->tlsdata;
+    if (NULL == tlsdata || NULL == tlsdata->ssl) {
+        /** xxx mem lean? free created bio cache? */
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONNOSESSIONS);
+        snmp_log(LOG_ERR, "bad tls data or ssl ptr in netsnmp_dtlsudp_send\n");
+        return -1;
+    }
+        
+    if (!tlsdata->securityName && tmStateRef &&
+	tmStateRef->securityNameLen > 0) {
+        tlsdata->securityName = strdup(tmStateRef->securityName);
+    }
+
+    /* see if we have previous outgoing data to send */
+    if (cachep->write_cache) {
+        if (SNMPERR_GENERR == _netsnmp_bio_try_and_write_buffered(t, cachep)) {
+            /* we still have data that can't get out in the buffer */
+
+            /* add the new data to the end of the existing cache */
+            if (_netsnmp_add_buffered_data(cachep, buf, size) !=
+                SNMPERR_SUCCESS) {
+                /* XXX: free and close */
+            }
+            return -1;
+        }
+    }
+
+    DEBUGIF ("9:dtlsudp") {
+        char *str = netsnmp_udp_fmtaddr(NULL, (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));
+        free(str);
+    }
+
+    /* RFC5953: section 5.2, step 6:
+       6)  Using either the session indicated by the tmSessionID if there
+           was one or the session resulting from a previous step (4 or 5),
+           pass the outgoingMessage to (D)TLS for encapsulation and
+           transmission.
+    */
+    rc = SSL_write(tlsdata->ssl, buf, size);
+
+    while (rc == -1) {
+        int bytesout;
+        int errnum = SSL_get_error(tlsdata->ssl, rc);
+
+        /* don't treat want_read/write errors as real errors */
+        if (errnum != SSL_ERROR_WANT_READ &&
+            errnum != SSL_ERROR_WANT_WRITE) {
+            DEBUGMSGTL(("dtlsudp", "ssl_write error\n")); 
+            _openssl_log_error(rc, tlsdata->ssl, "SSL_write");
+            break;
+        }
+
+        /* check to see if we have outgoing DTLS packets to send */
+        /* (SSL_read could have created DTLS control packets) */ 
+        bytesout = _netsnmp_send_queued_dtls_pkts(t, cachep);
+
+        /* If want_read/write but failed to actually send
+           anything then we need to wait for the other side,
+           so quit */
+        if ((errnum == SSL_ERROR_WANT_READ ||
+             errnum == SSL_ERROR_WANT_WRITE) &&
+            bytesout <= 0) {
+            /* We need more data written to or read from the socket
+               but we're failing to do so and need to wait till the
+               socket is ready again; unfortunately this means we need
+               to buffer the SNMP data temporarily in the mean time */
+
+            /* remember the packet */
+            if (_netsnmp_add_buffered_data(cachep, buf, size) !=
+                SNMPERR_SUCCESS) {
+
+                /* XXX: free and close */
+                return -1;
+            }
+
+            /* exit out of the loop until we get caled again from
+               socket data */ 
+            break;
+        }
+        DEBUGMSGTL(("9:dtlsudp", "recalling ssl_write\n")); 
+        rc = SSL_write(tlsdata->ssl, buf, size);
+    }
+
+    if (rc > 0)
+        cachep->msgnum++;
+
+    /* for memory bios, we now read from openssl's write buffer (ie,
+       the packet to go out) and send it out the udp port manually */
+    rc = BIO_read(cachep->write_bio, outbuf, sizeof(outbuf));
+    if (rc <= 0) {
+        /* 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 */
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_dtlsudp_close(netsnmp_transport *t)
+{
+    /* XXX: issue a proper dtls closure notification(s) */
+
+    bio_cache *cachep = NULL;
+    _netsnmpTLSBaseData *tlsbase = NULL;
+
+    DEBUGTRACETOK("9:dtlsudp");
+
+    DEBUGMSGTL(("dtlsudp:close", "closing dtlsudp transport %p\n", t));
+
+    /* RFC5953: section 5.4, step 1:
+        1)  Increment either the snmpTlstmSessionClientCloses or the
+            snmpTlstmSessionServerCloses counter as appropriate.
+    */
+    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONCLIENTCLOSES);
+    
+    /* RFC5953: section 5.4, step 2:
+        2)  Look up the session using the tmSessionID.
+    */
+    /* Implementation notes:
+       + Our session id is stored as the t->data pointer
+    */
+    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);
+    }
+
+    /* RFC5953: section 5.4, step 3:
+        3)  If there is no open session associated with the tmSessionID, then
+            closeSession processing is completed.
+    */
+    if (NULL == cachep)
+        return netsnmp_socketbase_close(t);
+
+    /* if we have any remaining packtes to send, try to send them */
+    if (cachep->write_cache_len > 0) {
+        int i = 0;
+        char buf[8192];
+        int rc;
+        void *opaque = NULL;
+        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.
+         */
+        if (cachep->flags & NETSNMP_BIO_CONNECTED) {
+            /* make configurable:
+               - do this at all?
+               - retries
+               - timeout
+            */
+            for (i = 0; i < 6 && cachep->write_cache_len != 0; ++i) {
+
+                /* first see if we can send out what we have */
+                _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);
+                tv.tv_sec = 0;
+                tv.tv_usec = 50000;
+                rc = select(t->sock+1, &readfs, NULL, NULL, &tv);
+                if (rc > 0) {
+                    /* junk recv for catching negotations still in play */
+                    opaque_len = 0;
+                    netsnmp_dtlsudp_recv(t, buf, sizeof(buf),
+                                         &opaque, &opaque_len);
+                    SNMP_FREE(opaque);
+                }
+            } /* for loop */
+        }
+
+        /** dump anything that wasn't sent */
+        if (cachep->write_cache_len > 0) {
+            DEBUGMSGTL(("dtlsudp:close",
+			"dumping %" NETSNMP_PRIz "d bytes from write_cache\n",
+                        cachep->write_cache_len));
+            SNMP_FREE(cachep->write_cache);
+            cachep->write_cache_len = 0;
+        }
+    }
+
+    /* RFC5953: section 5.4, step 4:
+        4)  Have (D)TLS close the specified connection.  This MUST include
+            sending a close_notify TLS Alert to inform the other side that
+            session cleanup may be performed.
+    */
+    if (NULL != cachep->tlsdata && NULL != cachep->tlsdata->ssl) {
+
+        DEBUGMSGTL(("dtlsudp:close", "closing SSL socket\n"));
+        SSL_shutdown(cachep->tlsdata->ssl);
+
+        /* send the close_notify we maybe generated in step 4 */
+        if (BIO_ctrl_pending(cachep->write_bio) > 0)
+            _netsnmp_send_queued_dtls_pkts(t, cachep);
+    }
+
+    remove_and_free_bio_cache(cachep);
+
+    return netsnmp_socketbase_close(t);
+}
+
+char *
+netsnmp_dtlsudp_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    return netsnmp_ipv4_fmtaddr("DTLSUDP", 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_dtlsudp_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+    DEBUGTRACETOK("9:dtlsudp");
+
+    t = netsnmp_udpipv4base_transport(addr, local);
+    if (NULL == t)
+        return NULL;
+
+    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;
+        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;
+    t->f_config        = netsnmp_tlsbase_config;
+    t->f_setup_session = netsnmp_tlsbase_session_init;
+    t->f_accept        = NULL;
+    t->f_fmtaddr       = netsnmp_dtlsudp_fmtaddr;
+
+    t->flags = NETSNMP_TRANSPORT_FLAG_TUNNELED;
+
+    return t;
+}
+
+
+void
+netsnmp_dtlsudp_agent_config_tokens_register(void)
+{
+}
+
+
+
+
+netsnmp_transport *
+netsnmp_dtlsudp_create_tstring(const char *str, int isserver,
+                               const char *default_target)
+{
+    struct sockaddr_in addr;
+    netsnmp_transport *t;
+    _netsnmpTLSBaseData *tlsdata;
+    char buf[SPRINT_MAX_LEN], *cp;
+
+    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
+        t = netsnmp_dtlsudp_transport(&addr, isserver);
+    } else {
+        return NULL;
+    }
+
+    /* see if we can extract the remote hostname */
+    if (!isserver && t && t->data && str) {
+        tlsdata = (_netsnmpTLSBaseData *) t->data;
+        /* search for a : */
+        if (NULL != (cp = strrchr(str, ':'))) {
+            sprintf(buf, "%.*s", (int) SNMP_MIN(cp - str, sizeof(buf) - 1),
+                    str);
+        } else {
+            /* else the entire spec is a host name only */
+            strlcpy(buf, str, sizeof(buf));
+        }
+        tlsdata->their_hostname = strdup(buf);
+    }
+    return t;
+}
+
+
+netsnmp_transport *
+netsnmp_dtlsudp_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_in addr;
+
+    if (o_len == 6) {
+        unsigned short porttmp = (o[4] << 8) + o[5];
+        addr.sin_family = AF_INET;
+        memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4);
+        addr.sin_port = htons(porttmp);
+        return netsnmp_dtlsudp_transport(&addr, local);
+    }
+    return NULL;
+}
+
+void
+netsnmp_dtlsudp_ctor(void)
+{
+    char indexname[] = "_netsnmp_addr_info";
+
+    DEBUGMSGTL(("dtlsudp", "registering DTLS constructor\n"));
+
+    /* config settings */
+
+    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.f_create_from_tstring     = NULL;
+    dtlsudpDomain.f_create_from_tstring_new = netsnmp_dtlsudp_create_tstring;
+    dtlsudpDomain.f_create_from_ostring     = netsnmp_dtlsudp_create_ostring;
+
+    if (!openssl_addr_index)
+        openssl_addr_index =
+            SSL_get_ex_new_index(0, indexname, NULL, NULL, NULL);
+
+    netsnmp_tdomain_register(&dtlsudpDomain);
+}
+
+/*
+ * Much of the code below was taken from the OpenSSL example code
+ * and is subject to the OpenSSL copyright.
+ */
+#define	NETSNMP_COOKIE_SECRET_LENGTH	16
+int cookie_initialized=0;
+unsigned char cookie_secret[NETSNMP_COOKIE_SECRET_LENGTH];
+
+typedef union {
+       struct sockaddr sa;
+       struct sockaddr_in s4;
+} _peer_union;
+
+int netsnmp_dtls_gen_cookie(SSL *ssl, unsigned char *cookie,
+                            unsigned int *cookie_len)
+{
+    unsigned char *buffer, result[EVP_MAX_MD_SIZE];
+    unsigned int length, resultlength;
+    bio_cache *cachep = NULL;
+    _peer_union *peer;
+
+    /* Initialize a random secret */
+    if (!cookie_initialized) {
+        if (!RAND_bytes(cookie_secret, NETSNMP_COOKIE_SECRET_LENGTH)) {
+            snmp_log(LOG_ERR, "dtls: error setting random cookie secret\n");
+            return 0;
+        }
+        cookie_initialized = 1;
+    }
+
+    DEBUGMSGT(("dtlsudp:cookie", "generating cookie...\n"));
+
+    /* Read peer information */
+    cachep = SSL_get_ex_data(ssl, openssl_addr_index);
+    if (!cachep) {
+        snmp_log(LOG_ERR, "dtls: failed to get the peer address\n");
+        return 0;
+    }
+    peer = (_peer_union *)&cachep->sockaddr;
+
+    /* Create buffer with peer's address and port */
+    length = 0;
+    switch (peer->sa.sa_family) {
+    case AF_INET:
+        length += sizeof(struct in_addr);
+        length += sizeof(peer->s4.sin_port);
+        break;
+    default:
+        snmp_log(LOG_ERR, "dtls generating cookie: unknown family: %d\n",
+                 peer->sa.sa_family);
+        return 0;
+    }
+    buffer = malloc(length);
+    if (buffer == NULL) {
+        snmp_log(LOG_ERR,"dtls: out of memory\n");
+        return 0;
+    }
+
+    switch (peer->sa.sa_family) {
+    case AF_INET:
+        memcpy(buffer,
+               &peer->s4.sin_port,
+               sizeof(peer->s4.sin_port));
+        memcpy(buffer + sizeof(peer->s4.sin_port),
+               &peer->s4.sin_addr,
+               sizeof(struct in_addr));
+        break;
+    default:
+        snmp_log(LOG_ERR, "dtls: unknown address family generating a cookie\n");
+        return 0;
+    }
+
+    /* Calculate HMAC of buffer using the secret */
+    HMAC(EVP_sha1(), cookie_secret, NETSNMP_COOKIE_SECRET_LENGTH,
+         buffer, length, result, &resultlength);
+    OPENSSL_free(buffer);
+
+    memcpy(cookie, result, resultlength);
+    *cookie_len = resultlength;
+
+    DEBUGMSGT(("9:dtlsudp:cookie", "generated %d byte cookie\n", *cookie_len));
+
+    return 1;
+}
+
+int netsnmp_dtls_verify_cookie(SSL *ssl, unsigned char *cookie,
+                               unsigned int cookie_len)
+{
+    unsigned char *buffer, result[EVP_MAX_MD_SIZE];
+    unsigned int length, resultlength, rc;
+    bio_cache *cachep = NULL;
+    _peer_union *peer;
+
+    /* If secret isn't initialized yet, the cookie can't be valid */
+    if (!cookie_initialized)
+        return 0;
+
+    DEBUGMSGT(("9:dtlsudp:cookie", "verifying %d byte cookie\n", cookie_len));
+
+    cachep = SSL_get_ex_data(ssl, openssl_addr_index);
+    if (!cachep) {
+        snmp_log(LOG_ERR, "dtls: failed to get the peer address\n");
+        return 0;
+    }
+    peer = (_peer_union *)&cachep->sockaddr;
+
+    /* Create buffer with peer's address and port */
+    length = 0;
+    switch (peer->sa.sa_family) {
+    case AF_INET:
+        length += sizeof(struct in_addr);
+        length += sizeof(peer->s4.sin_port);
+        break;
+    default:
+        snmp_log(LOG_ERR,
+                 "dtls: unknown address family %d generating a cookie\n",
+                 peer->sa.sa_family);
+        return 0;
+    }
+    buffer = malloc(length);
+    if (buffer == NULL) {
+        snmp_log(LOG_ERR, "dtls: unknown address family generating a cookie\n");
+        return 0;
+    }
+
+    switch (peer->sa.sa_family) {
+    case AF_INET:
+        memcpy(buffer,
+               &peer->s4.sin_port,
+               sizeof(peer->s4.sin_port));
+        memcpy(buffer + sizeof(peer->s4.sin_port),
+               &peer->s4.sin_addr,
+               sizeof(struct in_addr));
+        break;
+    default:
+        snmp_log(LOG_ERR,
+                 "dtls: unknown address family %d generating a cookie\n",
+                 peer->sa.sa_family);
+        return 0;
+    }
+
+    /* Calculate HMAC of buffer using the secret */
+    HMAC(EVP_sha1(), cookie_secret, NETSNMP_COOKIE_SECRET_LENGTH,
+         buffer, length, result, &resultlength);
+    OPENSSL_free(buffer);
+
+    if (cookie_len != resultlength || memcmp(result, cookie, resultlength) != 0)
+        rc = 0;
+    else {
+        rc = 1;
+        cachep->flags |= NETSNMP_BIO_HAVE_COOKIE;
+    }
+
+    DEBUGMSGT(("dtlsudp:cookie", "verify cookie: %d\n", rc));
+
+    return rc;
+}
+
+#endif /* HAVE_LIBSSL_DTLS */
diff --git a/snmplib/snmpIPXDomain.c b/snmplib/transports/snmpIPXDomain.c
similarity index 92%
rename from snmplib/snmpIPXDomain.c
rename to snmplib/transports/snmpIPXDomain.c
index ecafd5c..fdc8071 100644
--- a/snmplib/snmpIPXDomain.c
+++ b/snmplib/transports/snmpIPXDomain.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/library/snmpIPXDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <ctype.h>
@@ -32,7 +34,6 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpIPXDomain.h>
 
 #define SNMP_IPX_DEFAULT_PORT	36879   /*  Specified in RFC 1420.  */
 static netsnmp_tdomain ipxDomain;
@@ -98,10 +99,13 @@
 	}
 
         if (rc >= 0) {
-            char *str = netsnmp_ipx_fmtaddr(NULL, from, fromlen);
-            DEBUGMSGTL(("netsnmp_ipx","recvfrom fd %d got %d bytes(from %s)\n",
-			t->sock, rc, str));
-            free(str);
+            DEBUGIF("netsnmp_ipx") {
+                char *str = netsnmp_ipx_fmtaddr(NULL, from, fromlen);
+                DEBUGMSGTL(("netsnmp_ipx",
+                            "recvfrom fd %d got %d bytes(from %s)\n",
+                            t->sock, rc, str));
+                free(str);
+            }
         } else {
             DEBUGMSGTL(("netsnmp_ipx", "recvfrom fd %d err %d (\"%s\")\n",
                         t->sock, errno, strerror(errno)));
@@ -130,11 +134,13 @@
     }
 
     if (to != NULL && t != NULL && t->sock >= 0) {
-        char *str = netsnmp_ipx_fmtaddr(NULL, (void *)to,
-					sizeof(struct sockaddr_ipx));
-        DEBUGMSGTL(("netsnmp_ipx", "send %d bytes from %p to %s on fd %d\n",
-                    size, buf, str, t->sock));
-        free(str);
+        DEBUGIF("netsnmp_ipx") {
+            char *str = netsnmp_ipx_fmtaddr(NULL, (void *)to,
+                                            sizeof(struct sockaddr_ipx));
+            DEBUGMSGTL(("netsnmp_ipx", "send %d bytes from %p to %s on fd %d\n",
+                        size, buf, str, t->sock));
+            free(str);
+        }
 	while (rc < 0) {
 	    rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
 	    if (rc < 0 && errno != EINTR) {
@@ -175,7 +181,6 @@
 {
     netsnmp_transport *t = NULL;
     int             rc = 0;
-    char           *str = NULL;
 
     if (addr == NULL || addr->sipx_family != AF_IPX) {
         return NULL;
@@ -186,11 +191,13 @@
         return NULL;
     }
 
-    str = netsnmp_ipx_fmtaddr(NULL, (void *)addr, 
-				 sizeof(struct sockaddr_ipx));
-    DEBUGMSGTL(("netsnmp_ipx", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
+    DEBUGIF("netsnmp_ipx") {
+        char *str = netsnmp_ipx_fmtaddr(NULL, (void *)addr,
+                                  sizeof(struct sockaddr_ipx));
+        DEBUGMSGTL(("netsnmp_ipx", "open %s %s\n", local ? "local" : "remote",
+                    str));
+        free(str);
+    }
 
     memset(t, 0, sizeof(netsnmp_transport));
 
@@ -299,7 +306,7 @@
     addr->sipx_type = 4;        /*  Specified in RFC 1420.  */
 
     network = input = strdup(peername ? peername : "");
-    tmp = strchr(network, ':');
+    tmp = strchr(input, ':');
     if (tmp != NULL) {
         DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Node identified\n"));
         *tmp++ = '\0';
@@ -307,7 +314,7 @@
         tmp = strchr(tmp, '/');
     } else {
         node = NULL;
-        tmp = strchr(network, '/');
+        tmp = strchr(input, '/');
     }
     if (tmp != NULL) {
         DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Port identified\n"));
diff --git a/snmplib/transports/snmpIPv4BaseDomain.c b/snmplib/transports/snmpIPv4BaseDomain.c
new file mode 100644
index 0000000..9f4b6a9
--- /dev/null
+++ b/snmplib/transports/snmpIPv4BaseDomain.c
@@ -0,0 +1,223 @@
+/* IPV4 base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#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
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/default_store.h>
+#include <net-snmp/library/system.h>
+
+
+#ifndef INADDR_NONE
+#define INADDR_NONE     -1
+#endif
+
+int
+netsnmp_sockaddr_in(struct sockaddr_in *addr,
+                    const char *inpeername, int remote_port)
+{
+    char buf[sizeof(int) * 3 + 2];
+    sprintf(buf, ":%u", remote_port);
+    return netsnmp_sockaddr_in2(addr, inpeername, remote_port ? buf : NULL);
+}
+
+int
+netsnmp_sockaddr_in2(struct sockaddr_in *addr,
+                     const char *inpeername, const char *default_target)
+{
+    int ret;
+
+    if (addr == NULL) {
+        return 0;
+    }
+
+    DEBUGMSGTL(("netsnmp_sockaddr_in",
+                "addr %p, inpeername \"%s\", default_target \"%s\"\n",
+                addr, inpeername ? inpeername : "[NIL]",
+                default_target ? default_target : "[NIL]"));
+
+    memset(addr, 0, sizeof(struct sockaddr_in));
+    addr->sin_addr.s_addr = htonl(INADDR_ANY);
+    addr->sin_family = AF_INET;
+    addr->sin_port = htons((u_short)SNMP_PORT);
+
+    {
+	int port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+				      NETSNMP_DS_LIB_DEFAULT_PORT);
+
+	if (port != 0) {
+	    addr->sin_port = htons((u_short)port);
+	} else if (default_target != NULL)
+	    netsnmp_sockaddr_in2(addr, default_target, NULL);
+    }
+
+    if (inpeername != NULL && *inpeername != '\0') {
+	const char     *host, *port;
+	char           *peername = NULL;
+        char           *cp;
+        /*
+         * Duplicate the peername because we might want to mank around with
+         * it.
+         */
+
+        peername = strdup(inpeername);
+        if (peername == NULL) {
+            return 0;
+        }
+
+        /*
+         * Try and extract an appended port number.
+         */
+        cp = strchr(peername, ':');
+        if (cp != NULL) {
+            *cp = '\0';
+            port = cp + 1;
+            host = peername;
+        } else {
+            host = NULL;
+            port = peername;
+        }
+
+        /*
+         * Try to convert the user port specifier
+         */
+        if (port && *port == '\0')
+            port = NULL;
+
+        if (port != NULL) {
+            long int l;
+            char* ep;
+
+            DEBUGMSGTL(("netsnmp_sockaddr_in", "check user service %s\n",
+                        port));
+
+            l = strtol(port, &ep, 10);
+            if (ep != port && *ep == '\0' && 0 <= l && l <= 0x0ffff)
+                addr->sin_port = htons((u_short)l);
+            else {
+                if (host == NULL) {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in",
+                                "servname not numeric, "
+				"check if it really is a destination)\n"));
+                    host = port;
+                    port = NULL;
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in",
+                                "servname not numeric\n"));
+                    free(peername);
+                    return 0;
+                }
+            }
+        }
+
+        /*
+         * Try to convert the user host specifier
+         */
+        if (host && *host == '\0')
+            host = NULL;
+
+        if (host != NULL) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in",
+                        "check destination %s\n", host));
+
+
+            if (strcmp(peername, "255.255.255.255") == 0 ) {
+                /*
+                 * The explicit broadcast address hack
+                 */
+                DEBUGMSGTL(("netsnmp_sockaddr_in", "Explicit UDP broadcast\n"));
+                addr->sin_addr.s_addr = INADDR_NONE;
+            } else {
+                ret =
+                    netsnmp_gethostbyname_v4(peername, &addr->sin_addr.s_addr);
+                if (ret < 0) {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in",
+                                "couldn't resolve hostname\n"));
+                    free(peername);
+                    return 0;
+                }
+                DEBUGMSGTL(("netsnmp_sockaddr_in",
+                            "hostname (resolved okay)\n"));
+            }
+        }
+	free(peername);
+    }
+
+    /*
+     * Finished
+     */
+
+    DEBUGMSGTL(("netsnmp_sockaddr_in", "return { AF_INET, %s:%hu }\n",
+                inet_ntoa(addr->sin_addr), ntohs(addr->sin_port)));
+    return 1;
+}
+
+char *
+netsnmp_ipv4_fmtaddr(const char *prefix, netsnmp_transport *t,
+                     void *data, int len)
+{
+    netsnmp_indexed_addr_pair *addr_pair = NULL;
+    struct hostent *host;
+    char tmp[64];
+
+    if (data != NULL && len == sizeof(netsnmp_indexed_addr_pair)) {
+	addr_pair = (netsnmp_indexed_addr_pair *) data;
+    } else if (t != NULL && t->data != NULL) {
+	addr_pair = (netsnmp_indexed_addr_pair *) t->data;
+    }
+
+    if (addr_pair == NULL) {
+        snprintf(tmp, sizeof(tmp), "%s: unknown", prefix);
+    } else {
+        struct sockaddr_in *to = NULL;
+        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));
+        } 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);
+            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));
+        }
+    }
+    tmp[sizeof(tmp)-1] = '\0';
+    return strdup(tmp);
+}
+
diff --git a/snmplib/transports/snmpIPv6BaseDomain.c b/snmplib/transports/snmpIPv6BaseDomain.c
new file mode 100644
index 0000000..01f81b9
--- /dev/null
+++ b/snmplib/transports/snmpIPv6BaseDomain.c
@@ -0,0 +1,425 @@
+/* IPV6 base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpIPv6BaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#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
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/default_store.h>
+#include <net-snmp/library/snmp_logging.h>
+
+#include "inet_ntop.h"
+#include "inet_pton.h"
+
+
+#if defined(WIN32) && !defined(IF_NAMESIZE)
+#define IF_NAMESIZE 12
+#endif
+
+
+#if defined(HAVE_WINSOCK_H) && !defined(mingw32)
+static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+#endif
+
+
+static unsigned
+netsnmp_if_nametoindex(const char *ifname)
+{
+#if defined(WIN32)
+    return atoi(ifname);
+#elif defined(HAVE_IF_NAMETOINDEX)
+    return if_nametoindex(ifname);
+#else
+    return 0;
+#endif
+}
+
+static char *
+netsnmp_if_indextoname(unsigned ifindex, char *ifname)
+{
+#if defined(WIN32)
+    snprintf(ifname, IF_NAMESIZE, "%u", ifindex);
+    return ifname;
+#elif defined(HAVE_IF_NAMETOINDEX)
+    return if_indextoname(ifindex, ifname);
+#else
+    return NULL;
+#endif
+}
+
+char *
+netsnmp_ipv6_fmtaddr(const char *prefix, netsnmp_transport *t,
+                     void *data, int len)
+{
+    struct sockaddr_in6 *to = NULL;
+    char addr[INET6_ADDRSTRLEN];
+    char tmp[INET6_ADDRSTRLEN + 18];
+
+    DEBUGMSGTL(("netsnmp_udp6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
+                data, len));
+    if (data != NULL && len == sizeof(struct sockaddr_in6)) {
+        to = (struct sockaddr_in6 *) data;
+    } else if (t != NULL && t->data != NULL) {
+        to = (struct sockaddr_in6 *) t->data;
+    }
+    if (to == NULL) {
+        snprintf(tmp, sizeof(tmp), "%s: unknown", prefix);
+    } else {
+        char scope_id[IF_NAMESIZE + 1] = "";
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+	if (to->sin6_scope_id
+            && netsnmp_if_indextoname(to->sin6_scope_id, &scope_id[1])) {
+            scope_id[0] = '%';
+        }
+#endif
+        snprintf(tmp, sizeof(tmp), "%s: [%s%s]:%hu", prefix,
+                 inet_ntop(AF_INET6, (void *) &(to->sin6_addr), addr,
+                           INET6_ADDRSTRLEN), scope_id, ntohs(to->sin6_port));
+    }
+    tmp[sizeof(tmp)-1] = '\0';
+    return strdup(tmp);
+}
+
+int
+netsnmp_sockaddr_in6_2(struct sockaddr_in6 *addr,
+                       const char *inpeername, const char *default_target)
+{
+    char           *cp = NULL, *peername = NULL;
+    char            debug_addr[INET6_ADDRSTRLEN];
+#if HAVE_GETADDRINFO
+    struct addrinfo *addrs = NULL;
+    int             err;
+#elif HAVE_GETIPNODEBYNAME
+    struct hostent *hp = NULL;
+    int             err;
+#elif HAVE_GETHOSTBYNAME
+    struct hostent *hp = NULL;
+#endif
+    int             portno;
+
+    if (addr == NULL) {
+        return 0;
+    }
+
+    DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+		"addr %p, peername \"%s\", default_target \"%s\"\n",
+                addr, inpeername ? inpeername : "[NIL]",
+		default_target ? default_target : "[NIL]"));
+
+    memset(addr, 0, sizeof(struct sockaddr_in6));
+    addr->sin6_family = AF_INET6;
+    addr->sin6_addr = in6addr_any;
+    addr->sin6_port = htons((u_short)SNMP_PORT);
+
+    {
+        int port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                      NETSNMP_DS_LIB_DEFAULT_PORT);
+        if (port != 0)
+            addr->sin6_port = htons((u_short)port);
+        else if (default_target != NULL)
+            netsnmp_sockaddr_in6_2(addr, default_target, NULL);
+    }
+
+    if (inpeername != NULL) {
+        /*
+         * Duplicate the peername because we might want to mank around with
+         * it.  
+         */
+
+        peername = strdup(inpeername);
+        if (peername == NULL) {
+            return 0;
+        }
+
+        cp = peername;
+        if (*cp == ':') cp++;
+        portno = atoi(cp);
+        while (*cp && isdigit((unsigned char) *cp)) cp++;
+        if (!*cp &&  portno != 0) {
+            /*
+             * Okay, it looks like JUST a port number.  
+             */
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "totally numeric: %d\n",
+                        portno));
+            addr->sin6_port = htons((u_short)portno);
+            goto resolved;
+        }
+
+        /*
+         * See if it is an IPv6 address covered with square brackets. Also check
+         * for an appended :port.  
+         */
+        if (*peername == '[') {
+            cp = strchr(peername, ']');
+            if (cp != NULL) {
+	      /*
+	       * See if it is an IPv6 link-local address with interface
+	       * name as <zone_id>, like fe80::1234%eth0.
+	       * Please refer to the internet draft, IPv6 Scoped Address Architecture
+	       * http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-scoping-arch-04.txt
+	       *
+	       */
+	        char *scope_id;
+	        unsigned int if_index = 0;
+                *cp = '\0';
+		scope_id = strchr(peername + 1, '%');
+		if (scope_id != NULL) {
+		    *scope_id = '\0';
+		    if_index = netsnmp_if_nametoindex(scope_id + 1);
+		}
+                if (*(cp + 1) == ':') {
+                    portno = atoi(cp+2);
+                    if (portno != 0 &&
+                        inet_pton(AF_INET6, peername + 1,
+                                  (void *) &(addr->sin6_addr))) {
+                        DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                                    "IPv6 address with port suffix :%d\n",
+                                    portno));
+                        if (portno > 0 && portno <= 0xffff) {
+                            addr->sin6_port = htons((u_short)portno);
+                        } else {
+                            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                            return 0;
+                        }
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                        addr->sin6_scope_id = if_index;
+#endif
+                        goto resolved;
+                    }
+                } else {
+                    if (inet_pton
+                        (AF_INET6, peername + 1,
+                         (void *) &(addr->sin6_addr))) {
+                        DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                                    "IPv6 address with square brackets\n"));
+                        portno = ntohs(addr->sin6_port);
+                        if (portno == 0)
+                            portno = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                                                    NETSNMP_DS_LIB_DEFAULT_PORT);
+                        if (portno <= 0)
+                            portno = SNMP_PORT;
+                        addr->sin6_port = htons((u_short)portno);
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                        addr->sin6_scope_id = if_index;
+#endif
+                        goto resolved;
+                    }
+                }
+		if (scope_id != NULL) {
+		  *scope_id = '%';
+		}
+		*cp = ']';
+            }
+        }
+
+        cp = strrchr(peername, ':');
+        if (cp != NULL) {
+	    char *scope_id;
+	    unsigned int if_index = 0;
+	    *cp = '\0';
+	    scope_id = strchr(peername + 1, '%');
+	    if (scope_id != NULL) {
+	        *scope_id = '\0';
+	        if_index = netsnmp_if_nametoindex(scope_id + 1);
+	    }
+            portno = atoi(cp + 1);
+            if (portno != 0 &&
+                inet_pton(AF_INET6, peername,
+                          (void *) &(addr->sin6_addr))) {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "IPv6 address with port suffix :%d\n",
+                            atoi(cp + 1)));
+                if (portno > 0 && portno <= 0xffff) {
+                    addr->sin6_port = htons((u_short)portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                    return 0;
+                }
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                addr->sin6_scope_id = if_index;
+#endif
+                goto resolved;
+            }
+	    if (scope_id != NULL) {
+	      *scope_id = '%';
+	    }
+            *cp = ':';
+        }
+
+        /*
+         * See if it is JUST an IPv6 address.  
+         */
+        if (inet_pton(AF_INET6, peername, (void *) &(addr->sin6_addr))) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "just IPv6 address\n"));
+            goto resolved;
+        }
+
+        /*
+         * Well, it must be a hostname then, possibly with an appended :port.
+         * Sort that out first.  
+         */
+
+        cp = strrchr(peername, ':');
+        if (cp != NULL) {
+            *cp = '\0';
+            portno = atoi(cp + 1);
+            if (portno != 0) {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname(?) with port suffix :%d\n",
+                            portno));
+                if (portno > 0 && portno <= 0xffff) {
+                    addr->sin6_port = htons((u_short)portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                    return 0;
+                }
+
+            } else {
+                /*
+                 * No idea, looks bogus but we might as well pass the full thing to
+                 * the name resolver below.  
+                 */
+                *cp = ':';
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname(?) with embedded ':'?\n"));
+            }
+            /*
+             * Fall through.  
+             */
+        }
+
+        if (peername[0] == '\0') {
+          DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "empty hostname\n"));
+          free(peername);
+          return 0;
+        }
+
+#if HAVE_GETADDRINFO
+        {
+            struct addrinfo hint = { 0 };
+            hint.ai_flags = 0;
+            hint.ai_family = PF_INET6;
+            hint.ai_socktype = SOCK_DGRAM;
+            hint.ai_protocol = 0;
+
+            err = 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;
+        }
+        if (addrs != NULL) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "hostname (resolved okay)\n"));
+            memcpy(&addr->sin6_addr,
+                   &((struct sockaddr_in6 *) addrs->ai_addr)->sin6_addr,
+                   sizeof(struct in6_addr));
+            freeaddrinfo(addrs);
+        }
+        else {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "Failed to resolve IPv6 hostname\n"));
+        }
+#elif HAVE_GETIPNODEBYNAME
+        hp = getipnodebyname(peername, AF_INET6, 0, &err);
+        if (hp == NULL) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                        "hostname (couldn't resolve = %d)\n", err));
+            free(peername);
+            return 0;
+        }
+        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);
+        if (hp == NULL) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                        "hostname (couldn't resolve)\n"));
+            free(peername);
+            return 0;
+        } else {
+            if (hp->h_addrtype != AF_INET6) {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname (not AF_INET6!)\n"));
+                free(peername);
+                return 0;
+            } else {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname (resolved okay)\n"));
+                memcpy(&(addr->sin6_addr), hp->h_addr, hp->h_length);
+            }
+        }
+#else                           /*HAVE_GETHOSTBYNAME */
+        /*
+         * There is no name resolving function available.  
+         */
+        snmp_log(LOG_ERR,
+                 "no getaddrinfo()/getipnodebyname()/gethostbyname()\n");
+        free(peername);
+        return 0;
+#endif                          /*HAVE_GETHOSTBYNAME */
+    } else {
+        DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "NULL peername"));
+        return 0;
+    }
+
+  resolved:
+    DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "return { AF_INET6, [%s]:%hu }\n",
+                inet_ntop(AF_INET6, &addr->sin6_addr, debug_addr,
+                          sizeof(debug_addr)), ntohs(addr->sin6_port)));
+    free(peername);
+    return 1;
+}
+
+
+int
+netsnmp_sockaddr_in6(struct sockaddr_in6 *addr,
+                     const char *inpeername, int remote_port)
+{
+    char buf[sizeof(remote_port) * 3 + 2];
+    sprintf(buf, ":%u", remote_port);
+    return netsnmp_sockaddr_in6_2(addr, inpeername, remote_port ? buf : NULL);
+}
diff --git a/snmplib/snmpSSHDomain.c b/snmplib/transports/snmpSSHDomain.c
similarity index 98%
rename from snmplib/snmpSSHDomain.c
rename to snmplib/transports/snmpSSHDomain.c
index f58c2a3..7f51f86 100644
--- a/snmplib/snmpSSHDomain.c
+++ b/snmplib/transports/snmpSSHDomain.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/library/snmpSSHDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -37,11 +39,6 @@
 #include <fcntl.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-
 #if HAVE_DMALLOC_H
 #include <dmalloc.h>
 #endif
@@ -59,9 +56,8 @@
 #include <net-snmp/library/default_store.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpTCPDomain.h>
-#include <net-snmp/library/snmpSSHDomain.h>
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/read_config.h>
 
 #define MAX_NAME_LENGTH 127
@@ -81,7 +77,7 @@
     char socket_path[MAXPATHLEN];
 } netsnmp_ssh_addr_pair;
 
-oid netsnmp_snmpSSHDomain[] = { TRANSPORT_DOMAIN_SSH_IP };
+const oid netsnmp_snmpSSHDomain[] = { TRANSPORT_DOMAIN_SSH_IP };
 static netsnmp_tdomain sshDomain;
 
 const char *keyfile1="/home/hardaker/.ssh/id_rsa.pub";
@@ -599,9 +595,7 @@
     memset(t, 0, sizeof(netsnmp_transport));
 
     t->domain = netsnmp_snmpSSHDomain;
-    t->domain_length =
-        sizeof(netsnmp_snmpSSHDomain) / sizeof(netsnmp_snmpSSHDomain[0]);
-
+    t->domain_length = netsnmp_snmpSSHDomain_len;
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM | NETSNMP_TRANSPORT_FLAG_TUNNELED;
 
     addr_pair = SNMP_MALLOC_TYPEDEF(netsnmp_ssh_addr_pair);
@@ -944,7 +938,7 @@
 netsnmp_ssh_ctor(void)    
 {
     sshDomain.name = netsnmp_snmpSSHDomain;
-    sshDomain.name_length = sizeof(netsnmp_snmpSSHDomain) / sizeof(oid);
+    sshDomain.name_length = netsnmp_snmpSSHDomain_len;
     sshDomain.prefix = (const char **)calloc(2, sizeof(char *));
     sshDomain.prefix[0] = "ssh";
 
diff --git a/snmplib/snmpSTDDomain.c b/snmplib/transports/snmpSTDDomain.c
similarity index 99%
rename from snmplib/snmpSTDDomain.c
rename to snmplib/transports/snmpSTDDomain.c
index 600a683..21e0d79 100644
--- a/snmplib/snmpSTDDomain.c
+++ b/snmplib/transports/snmpSTDDomain.c
@@ -1,5 +1,7 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/library/snmpSTDDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <signal.h>
@@ -25,7 +27,6 @@
 #include <net-snmp/output_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpSTDDomain.h>
 #include <net-snmp/library/tools.h>
 
 oid netsnmp_snmpSTDDomain[] = { TRANSPORT_DOMAIN_STD_IP };
diff --git a/snmplib/transports/snmpSocketBaseDomain.c b/snmplib/transports/snmpSocketBaseDomain.c
new file mode 100644
index 0000000..3fb6632
--- /dev/null
+++ b/snmplib/transports/snmpSocketBaseDomain.c
@@ -0,0 +1,362 @@
+/**
+ * @file  snmpSocketBaseDomain.c
+ *
+ * @brief Socket support functions.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <errno.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/default_store.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/snmp_assert.h>
+
+/* all sockets pretty much close the same way */
+int netsnmp_socketbase_close(netsnmp_transport *t) {
+    int rc = -1;
+    if (t->sock >= 0) {
+#ifndef HAVE_CLOSESOCKET
+        rc = close(t->sock);
+#else
+        rc = closesocket(t->sock);
+#endif
+        t->sock = -1;
+    }
+    return rc;
+}
+
+/*
+ * find largest possible buffer between current size and specified size.
+ *
+ * Try to maximize the current buffer of type "optname"
+ * to the maximum allowable size by the OS (as close to
+ * size as possible)
+ */
+static int
+_sock_buffer_maximize(int s, int optname, const char *buftype, int size)
+{
+    int            curbuf = 0;
+    socklen_t      curbuflen = sizeof(int);
+    int            lo, mid, hi;
+
+    /*
+     * First we need to determine our current buffer
+     */
+    if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
+                    &curbuflen) == 0) 
+            && (curbuflen == sizeof(int))) {
+
+        DEBUGMSGTL(("verbose:socket:buffer:max", "Current %s is %d\n",
+                    buftype, curbuf));
+
+        /*
+         * Let's not be stupid ... if we were asked for less than what we
+         * already have, then forget about it
+         */
+        if (size <= curbuf) {
+            DEBUGMSGTL(("verbose:socket:buffer:max",
+                        "Requested %s <= current buffer\n", buftype));
+            return curbuf;
+        }
+
+        /*
+         * Do a binary search the optimal buffer within 1k of the point of
+         * failure. This is rather bruteforce, but simple
+         */
+        hi = size;
+        lo = curbuf;
+
+        while (hi - lo > 1024) {
+            mid = (lo + hi) / 2;
+            if (setsockopt(s, SOL_SOCKET, optname, (void *) &mid,
+                        sizeof(int)) == 0) {
+                lo = mid; /* Success: search between mid and hi */
+            } else {
+                hi = mid; /* Failed: search between lo and mid */
+            }
+        }
+
+        /*
+         * Now print if this optimization helped or not
+         */
+        if (getsockopt(s,SOL_SOCKET, optname, (void *) &curbuf,
+                    &curbuflen) == 0) {
+            DEBUGMSGTL(("socket:buffer:max", 
+                        "Maximized %s: %d\n",buftype, curbuf));
+        } 
+    } else {
+        /*
+         * There is really not a lot we can do anymore.
+         * If the OS doesn't give us the current buffer, then what's the 
+         * point in trying to make it better
+         */
+        DEBUGMSGTL(("socket:buffer:max", "Get %s failed ... giving up!\n",
+                    buftype));
+        curbuf = -1;
+    }
+
+    return curbuf;
+}
+
+
+static const char *
+_sock_buf_type_get(int optname, int local)
+{
+    if (optname == SO_SNDBUF) {
+        if (local)
+            return "server send buffer";
+        else
+            return "client send buffer";
+    } else if (optname == SO_RCVBUF) {
+        if (local)
+            return "server receive buffer";
+        else
+            return "client receive buffer";
+    }
+
+    return "unknown buffer";
+}
+
+/*
+ *
+ * Get the requested buffersize, based on
+ * - sockettype : client (local = 0) or server (local = 1) 
+ * - buffertype : send (optname = SO_SNDBUF) or recv (SO_RCVBUF)
+ *
+ * In case a compile time buffer was specified, then use that one
+ * if there was no runtime configuration override
+ */
+static int
+_sock_buffer_size_get(int optname, int local, const char **buftype)
+{
+    int size;
+
+    if (NULL != buftype)
+        *buftype = _sock_buf_type_get(optname, local);
+
+    if (optname == SO_SNDBUF) {
+        if (local) {
+            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                    NETSNMP_DS_LIB_SERVERSENDBUF);
+#ifdef NETSNMP_DEFAULT_SERVER_SEND_BUF
+            if (size <= 0)
+               size = NETSNMP_DEFAULT_SERVER_SEND_BUF;
+#endif
+        } else {
+            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                    NETSNMP_DS_LIB_CLIENTSENDBUF);
+#ifdef NETSNMP_DEFAULT_CLIENT_SEND_BUF
+            if (size <= 0)
+               size = NETSNMP_DEFAULT_CLIENT_SEND_BUF;
+#endif
+        }
+    } else if (optname == SO_RCVBUF) {
+        if (local) {
+            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                    NETSNMP_DS_LIB_SERVERRECVBUF);
+#ifdef NETSNMP_DEFAULT_SERVER_RECV_BUF
+            if (size <= 0)
+               size = NETSNMP_DEFAULT_SERVER_RECV_BUF;
+#endif
+        } else {
+            size = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                    NETSNMP_DS_LIB_CLIENTRECVBUF);
+#ifdef NETSNMP_DEFAULT_CLIENT_RECV_BUF
+            if (size <= 0)
+               size = NETSNMP_DEFAULT_CLIENT_RECV_BUF;
+#endif
+        }
+    } else {
+        size = 0;
+    }
+
+    DEBUGMSGTL(("socket:buffer", "Requested %s is %d\n",
+                (buftype) ? *buftype : "unknown buffer", size));
+
+    return(size);
+}
+
+/*
+ * set socket buffer size
+ *
+ * @param ss     : socket
+ * @param optname: SO_SNDBUF or SO_RCVBUF
+ * @param local  : 1 for server, 0 for client
+ * @param reqbuf : requested size, or 0 for default
+ *
+ * @retval    -1 : error
+ * @retval    >0 : new buffer size
+ */
+int
+netsnmp_sock_buffer_set(int s, int optname, int local, int size)
+{
+#if ! defined(SO_SNDBUF) && ! defined(SO_RCVBUF)
+    DEBUGMSGTL(("socket:buffer", "Changing socket buffer is not supported\n"));
+    return -1;
+#else
+    const char     *buftype;
+    int            curbuf = 0;
+    socklen_t      curbuflen = sizeof(int);
+
+#   ifndef  SO_SNDBUF
+    if (SO_SNDBUF == optname) {
+        DEBUGMSGTL(("socket:buffer",
+                    "Changing socket send buffer is not supported\n"));
+        return -1;
+    }
+#   endif                          /*SO_SNDBUF */
+#   ifndef  SO_RCVBUF
+    if (SO_RCVBUF == optname) {
+        DEBUGMSGTL(("socket:buffer",
+                    "Changing socket receive buffer is not supported\n"));
+        return -1;
+    }
+#   endif                          /*SO_RCVBUF */
+
+    /*
+     * What is the requested buffer size ?
+     */
+    if (0 == size)
+        size = _sock_buffer_size_get(optname, local, &buftype);
+    else {
+        buftype = _sock_buf_type_get(optname, local);
+        DEBUGMSGT(("verbose:socket:buffer", "Requested %s is %d\n",
+                   buftype, size));
+    }
+
+    if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
+                    &curbuflen) == 0) 
+        && (curbuflen == sizeof(int))) {
+        
+        DEBUGMSGT(("verbose:socket:buffer", "Original %s is %d\n",
+                   buftype, curbuf));
+        if (curbuf >= size) {
+            DEBUGMSGT(("verbose:socket:buffer",
+                      "New %s size is smaller than original!\n", buftype));
+        }
+    }
+
+    /*
+     * If the buffersize was not specified or it was a negative value
+     * then don't change the OS buffers at all
+     */
+    if (size <= 0) {
+       DEBUGMSGT(("socket:buffer",
+                    "%s not valid or not specified; using OS default(%d)\n",
+                    buftype,curbuf));
+       return curbuf;
+    }
+
+    /*
+     * Try to set the requested send buffer
+     */
+    if (setsockopt(s, SOL_SOCKET, optname, (void *) &size, sizeof(int)) == 0) {
+        /*
+         * Because some platforms lie about the actual buffer that has been 
+         * set (Linux will always say it worked ...), we print some 
+         * diagnostic output for debugging
+         */
+        DEBUGIF("socket:buffer") {
+            DEBUGMSGT(("socket:buffer", "Set %s to %d\n",
+                       buftype, size));
+            if ((getsockopt(s, SOL_SOCKET, optname, (void *) &curbuf,
+                            &curbuflen) == 0) 
+                    && (curbuflen == sizeof(int))) {
+
+                DEBUGMSGT(("verbose:socket:buffer",
+                           "Now %s is %d\n", buftype, curbuf));
+            }
+        }
+        /*
+         * If the new buffer is smaller than the size we requested, we will
+         * try to increment the new buffer with 1k increments 
+         * (this will sometime allow us to reach a more optimal buffer.)
+         *   For example : On Solaris, if the max OS buffer is 100k and you
+         *   request 110k, you end up with the default 8k :-(
+         */
+        if (curbuf < size) {
+            curbuf = _sock_buffer_maximize(s, optname, buftype, size);
+            if(-1 != curbuf)
+                size = curbuf;
+        }
+
+    } else {
+        /*
+         * Obviously changing the buffer failed, most like like because we 
+         * requested a buffer greater than the OS limit.
+         * Therefore we need to search for an optimal buffer that is close
+         * enough to the point of failure.
+         * This will allow us to reach a more optimal buffer.
+         *   For example : On Solaris, if the max OS buffer is 100k and you 
+         *   request 110k, you end up with the default 8k :-(
+         *   After this quick seach we would get 1k close to 100k (the max)
+         */
+        DEBUGMSGTL(("socket:buffer", "couldn't set %s to %d\n",
+                    buftype, size));
+
+        curbuf = _sock_buffer_maximize(s, optname, buftype, size);
+        if(-1 != curbuf)
+            size = curbuf;
+    }
+
+    return size;
+#endif
+}
+
+
+/**
+ * Sets the mode of a socket for all subsequent I/O operations.
+ *
+ * @param[in] sock Socket descriptor (Unix) or socket handle (Windows).
+ * @param[in] non_blocking_mode I/O mode: non-zero selects non-blocking mode;
+ *   zero selects blocking mode.
+ *
+ * @return zero upon success and a negative value upon error.
+ */
+int
+netsnmp_set_non_blocking_mode(int sock, int non_blocking_mode)
+{
+#ifdef WIN32
+    u_long          arg;
+
+    arg = non_blocking_mode;
+    return ioctlsocket(sock, FIONBIO, &arg);
+#else
+    int             sockflags;
+
+    if ((sockflags = fcntl(sock, F_GETFL, 0)) >= 0) {
+        return fcntl(sock, F_SETFL,
+                     non_blocking_mode ? sockflags | O_NONBLOCK
+                     : sockflags & ~O_NONBLOCK);
+    } else
+        return -1;
+#endif
+}
diff --git a/snmplib/transports/snmpTCPBaseDomain.c b/snmplib/transports/snmpTCPBaseDomain.c
new file mode 100644
index 0000000..fc70dba
--- /dev/null
+++ b/snmplib/transports/snmpTCPBaseDomain.c
@@ -0,0 +1,99 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpTCPBaseDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+
+/*
+ * You can write something into opaque that will subsequently get passed back 
+ * to your send function if you like.  For instance, you might want to
+ * remember where a PDU came from, so that you can send a reply there...  
+ */
+
+int netsnmp_tcpbase_recv(netsnmp_transport *t, void *buf, int size,
+                         void **opaque, int *olength)
+{
+    int rc = -1;
+
+    if (t != NULL && t->sock >= 0) {
+	while (rc < 0) {
+	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
+	    if (rc < 0 && errno != EINTR) {
+		DEBUGMSGTL(("netsnmp_tcpbase", "recv fd %d err %d (\"%s\")\n",
+			    t->sock, errno, strerror(errno)));
+		break;
+	    }
+	    DEBUGMSGTL(("netsnmp_tcpbase", "recv fd %d got %d bytes\n",
+			t->sock, rc));
+	}
+    } else {
+        return -1;
+    }
+
+    if (opaque != NULL && olength != NULL) {
+        if (t->data_length > 0) {
+            if ((*opaque = malloc(t->data_length)) != NULL) {
+                memcpy(*opaque, t->data, t->data_length);
+                *olength = t->data_length;
+            } else {
+                *olength = 0;
+            }
+        } else {
+            *opaque = NULL;
+            *olength = 0;
+        }
+    }
+
+    return rc;
+}
+
+int netsnmp_tcpbase_send(netsnmp_transport *t, void *buf, int size,
+                         void **opaque, int *olength) {
+    int rc = -1;
+
+    if (t != NULL && t->sock >= 0) {
+	while (rc < 0) {
+	    rc = sendto(t->sock, buf, size, 0, NULL, 0);
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+    }
+    return rc;
+}
diff --git a/snmplib/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c
similarity index 66%
rename from snmplib/snmpTCPDomain.c
rename to snmplib/transports/snmpTCPDomain.c
index d221fd3..a103f06 100644
--- a/snmplib/snmpTCPDomain.c
+++ b/snmplib/transports/snmpTCPDomain.c
@@ -1,5 +1,8 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpTCPDomain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -28,11 +31,6 @@
 #include <fcntl.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-
 #if HAVE_DMALLOC_H
 #include <dmalloc.h>
 #endif
@@ -40,15 +38,15 @@
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 
-#include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpTCPDomain.h>
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTCPBaseDomain.h>
 
-/* Copied from snmpUDPDomain.c */
-typedef struct netsnmp_udp_addr_pair_s {
-    struct sockaddr_in remote_addr;
-    struct in_addr local_addr;
-} netsnmp_udp_addr_pair;
+/*
+ * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
+ * and perl/agent/agent.xs
+ */
+typedef netsnmp_indexed_addr_pair netsnmp_udp_addr_pair;
 
 oid netsnmp_snmpTCPDomain[] = { TRANSPORT_DOMAIN_TCP_IP };
 static netsnmp_tdomain tcpDomain;
@@ -69,128 +67,16 @@
 static char *
 netsnmp_tcp_fmtaddr(netsnmp_transport *t, void *data, int len)
 {
-    netsnmp_udp_addr_pair *addr_pair = NULL;
-
-    if (data != NULL && len == sizeof(netsnmp_udp_addr_pair)) {
-	addr_pair = (netsnmp_udp_addr_pair *) data;
-    } else if (t != NULL && t->data != NULL) {
-	addr_pair = (netsnmp_udp_addr_pair *) t->data;
-    }
-
-    if (addr_pair == NULL) {
-        return strdup("TCP: unknown");
-    } else {
-        struct sockaddr_in *to = NULL;
-	char tmp[64];
-        to = (struct sockaddr_in *) &(addr_pair->remote_addr);
-        if (to == NULL) {
-            return strdup("TCP: unknown");
-        }
-
-        sprintf(tmp, "TCP: [%s]:%hu",
-                inet_ntoa(to->sin_addr), ntohs(to->sin_port));
-        return strdup(tmp);
-    }
+    return netsnmp_ipv4_fmtaddr("TCP", t, data, len);
 }
 
-
-
-/*
- * You can write something into opaque that will subsequently get passed back 
- * to your send function if you like.  For instance, you might want to
- * remember where a PDU came from, so that you can send a reply there...  
- */
-
-static int
-netsnmp_tcp_recv(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-
-    if (t != NULL && t->sock >= 0) {
-	while (rc < 0) {
-	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
-	    if (rc < 0 && errno != EINTR) {
-		DEBUGMSGTL(("netsnmp_tcp", "recv fd %d err %d (\"%s\")\n",
-			    t->sock, errno, strerror(errno)));
-		break;
-	    }
-	    DEBUGMSGTL(("netsnmp_tcp", "recv fd %d got %d bytes\n",
-			t->sock, rc));
-	}
-    } else {
-        return -1;
-    }
-
-    if (opaque != NULL && olength != NULL) {
-        if (t->data_length > 0) {
-            if ((*opaque = malloc(t->data_length)) != NULL) {
-                memcpy(*opaque, t->data, t->data_length);
-                *olength = t->data_length;
-            } else {
-                *olength = 0;
-            }
-        } else {
-            *opaque = NULL;
-            *olength = 0;
-        }
-    }
-
-    return rc;
-}
-
-
-
-static int
-netsnmp_tcp_send(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-
-    if (t != NULL && t->sock >= 0) {
-	while (rc < 0) {
-	    rc = sendto(t->sock, buf, size, 0, NULL, 0);
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_tcp_close(netsnmp_transport *t)
-{
-    int rc = -1;
-    if (t != NULL && t->sock >= 0) {
-        DEBUGMSGTL(("netsnmp_tcp", "close fd %d\n", t->sock));
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-    }
-    return rc;
-}
-
-
-
 static int
 netsnmp_tcp_accept(netsnmp_transport *t)
 {
     struct sockaddr *farend = NULL;
     netsnmp_udp_addr_pair *addr_pair = NULL;
     int             newsock = -1;
-#ifdef WIN32
-    u_long          ioctlsocket_opt;
-#else
-    int             sockflags;
-#endif
     socklen_t       farendlen = sizeof(struct sockaddr_in);
-    char           *str = NULL;
 
     addr_pair = (netsnmp_udp_addr_pair *)malloc(sizeof(netsnmp_udp_addr_pair));
 
@@ -201,6 +87,7 @@
         DEBUGMSGTL(("netsnmp_tcp", "accept: malloc failed\n"));
         return -1;
     }
+    memset(addr_pair, 0, sizeof *addr_pair);
     farend = (struct sockaddr *) &(addr_pair->remote_addr);
 
     if (t != NULL && t->sock >= 0) {
@@ -219,24 +106,19 @@
 
         t->data = addr_pair;
         t->data_length = sizeof(netsnmp_udp_addr_pair);
-        str = netsnmp_tcp_fmtaddr(NULL, farend, farendlen);
-        DEBUGMSGTL(("netsnmp_tcp", "accept succeeded (from %s)\n", str));
-        free(str);
+        DEBUGIF("netsnmp_tcp") {
+            char *str = netsnmp_tcp_fmtaddr(NULL, farend, farendlen);
+            DEBUGMSGTL(("netsnmp_tcp", "accept succeeded (from %s)\n", str));
+            free(str);
+        }
 
         /*
          * Try to make the new socket blocking.  
          */
 
-#ifdef WIN32
-        ioctlsocket_opt = 0;
-        ioctlsocket(newsock, FIONBIO, &ioctlsocket_opt);
-#else
-        if ((sockflags = fcntl(newsock, F_GETFL, 0)) >= 0) {
-            fcntl(newsock, F_SETFL, (sockflags & ~O_NONBLOCK));
-        } else {
-            DEBUGMSGTL(("netsnmp_tcp", "couldn't f_getfl of fd %d\n",newsock));
-        }
-#endif
+        if (netsnmp_set_non_blocking_mode(newsock, FALSE) < 0)
+            DEBUGMSGTL(("netsnmp_tcp", "couldn't f_getfl of fd %d\n",
+                        newsock));
 
         /*
          * Allow user to override the send and receive buffers. Default is
@@ -284,6 +166,7 @@
         netsnmp_transport_free(t);
         return NULL;
     }
+    memset(addr_pair, 0, sizeof *addr_pair);
     t->data = addr_pair;
     t->data_length = sizeof(netsnmp_udp_addr_pair);
     memcpy(&(addr_pair->remote_addr), addr, sizeof(struct sockaddr_in));
@@ -301,11 +184,6 @@
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
 
     if (local) {
-#ifdef WIN32
-        u_long ioctlsocket_opt = 1;
-#else
-        int sockflags = 0;
-#endif
         int opt = 1;
 
         /*
@@ -317,13 +195,13 @@
         t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
         t->local = (u_char *)malloc(6);
         if (t->local == NULL) {
-            netsnmp_tcp_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
         memcpy(t->local, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->local[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->local[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
+        t->local[4] = (ntohs(addr->sin_port) & 0xff00) >> 8;
+        t->local[5] = (ntohs(addr->sin_port) & 0x00ff) >> 0;
         t->local_length = 6;
 
         /*
@@ -335,26 +213,20 @@
 
         rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
         if (rc != 0) {
-            netsnmp_tcp_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
 
         /*
          * Since we are going to be letting select() tell us when connections
-         * are ready to be accept()ed, we need to make the socket n0n-blocking
+         * are ready to be accept()ed, we need to make the socket non-blocking
          * to avoid the race condition described in W. R. Stevens, ``Unix
          * Network Programming Volume I Second Edition'', pp. 422--4, which
          * could otherwise wedge the agent.
          */
 
-#ifdef WIN32
-        ioctlsocket_opt = 1;
-        ioctlsocket(t->sock, FIONBIO, &ioctlsocket_opt);
-#else
-        sockflags = fcntl(t->sock, F_GETFL, 0);
-        fcntl(t->sock, F_SETFL, sockflags | O_NONBLOCK);
-#endif
+        netsnmp_set_non_blocking_mode(t->sock, TRUE);
 
         /*
          * Now sit here and wait for connections to arrive.  
@@ -362,7 +234,7 @@
 
         rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
         if (rc != 0) {
-            netsnmp_tcp_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
@@ -374,13 +246,13 @@
     } else {
       t->remote = (u_char *)malloc(6);
         if (t->remote == NULL) {
-            netsnmp_tcp_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
         memcpy(t->remote, (u_char *) & (addr->sin_addr.s_addr), 4);
-        t->remote[4] = (htons(addr->sin_port) & 0xff00) >> 8;
-        t->remote[5] = (htons(addr->sin_port) & 0x00ff) >> 0;
+        t->remote[4] = (ntohs(addr->sin_port) & 0xff00) >> 8;
+        t->remote[5] = (ntohs(addr->sin_port) & 0x00ff) >> 0;
         t->remote_length = 6;
 
         /*
@@ -394,7 +266,7 @@
 		     sizeof(struct sockaddr));
 
         if (rc < 0) {
-            netsnmp_tcp_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
@@ -414,9 +286,9 @@
      */
 
     t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_tcp_recv;
-    t->f_send     = netsnmp_tcp_send;
-    t->f_close    = netsnmp_tcp_close;
+    t->f_recv     = netsnmp_tcpbase_recv;
+    t->f_send     = netsnmp_tcpbase_send;
+    t->f_close    = netsnmp_socketbase_close;
     t->f_accept   = netsnmp_tcp_accept;
     t->f_fmtaddr  = netsnmp_tcp_fmtaddr;
 
diff --git a/snmplib/snmpTCPIPv6Domain.c b/snmplib/transports/snmpTCPIPv6Domain.c
similarity index 64%
rename from snmplib/snmpTCPIPv6Domain.c
rename to snmplib/transports/snmpTCPIPv6Domain.c
index 83243c7..2a59eea 100644
--- a/snmplib/snmpTCPIPv6Domain.c
+++ b/snmplib/transports/snmpTCPIPv6Domain.c
@@ -2,6 +2,9 @@
 
 #ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
 
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpTCPIPv6Domain.h>
+
 #include <stdio.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -20,20 +23,6 @@
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-
-#if defined(HAVE_WINSOCK_H)
-    /*
-     * Windows IPv6 support is part of WinSock2 only
-     */
-#include <winsock2.h>
-#include <ws2tcpip.h>
-
-#ifndef HAVE_INET_NTOP
-extern const char *inet_ntop(int, const void*, char*, size_t);
-#endif
-
-#endif
-
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -56,9 +45,10 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpUDPIPv6Domain.h>
-#include <net-snmp/library/snmpTCPIPv6Domain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTCPBaseDomain.h>
+
+#include "inet_ntop.h"
 
 oid netsnmp_TCPIPv6Domain[] = { TRANSPORT_DOMAIN_TCP_IPV6 };
 static netsnmp_tdomain tcp6Domain;
@@ -71,102 +61,7 @@
 static char *
 netsnmp_tcp6_fmtaddr(netsnmp_transport *t, void *data, int len)
 {
-    struct sockaddr_in6 *to = NULL;
-
-    DEBUGMSGTL(("netsnmp_tcp6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
-                data, len));
-    if (data != NULL && len == sizeof(struct sockaddr_in6)) {
-        to = (struct sockaddr_in6 *) data;
-    } else if (t != NULL && t->data != NULL) {
-        to = (struct sockaddr_in6 *) t->data;
-    }
-    if (to == NULL) {
-        return strdup("TCP/IPv6: unknown");
-    } else {
-        char addr[INET6_ADDRSTRLEN];
-        char tmp[INET6_ADDRSTRLEN + 18];
-
-        sprintf(tmp, "TCP/IPv6: [%s]:%hu",
-                inet_ntop(AF_INET6, (void *) &(to->sin6_addr), addr,
-                          INET6_ADDRSTRLEN), ntohs(to->sin6_port));
-        return strdup(tmp);
-    }
-}
-
-/*
- * You can write something into opaque that will subsequently get passed back 
- * to your send function if you like.  For instance, you might want to
- * remember where a PDU came from, so that you can send a reply there...  
- */
-
-static int
-netsnmp_tcp6_recv(netsnmp_transport *t, void *buf, int size,
-		  void **opaque, int *olength)
-{
-    int rc = -1;
-
-    if (t != NULL && t->sock >= 0) {
-	while (rc < 0) {
-	    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
-	    if (rc < 0 && errno != EINTR) {
-		DEBUGMSGTL(("netsnmp_tcp6", "recv fd %d err %d (\"%s\")\n",
-			    t->sock, errno, strerror(errno)));
-		return -1;
-	    }
-	}
-        DEBUGMSGTL(("netsnmp_tcp6", "recv fd %d got %d bytes\n", t->sock, rc));
-    } else {
-        return -1;
-    }
-
-    if (opaque != NULL && olength != NULL) {
-        if (t->data_length > 0) {
-            if ((*opaque = malloc(t->data_length)) != NULL) {
-                memcpy(*opaque, t->data, t->data_length);
-                *olength = t->data_length;
-            } else {
-                *olength = 0;
-            }
-        } else {
-            *opaque = NULL;
-            *olength = 0;
-        }
-    }
-
-    return rc;
-}
-
-static int
-netsnmp_tcp6_send(netsnmp_transport *t, void *buf, int size,
-		  void **opaque, int *olength)
-{
-    int rc = -1;
-
-    if (t != NULL && t->sock >= 0) {
-	while (rc < 0) {
-	    rc = sendto(t->sock, buf, size, 0, NULL, 0);
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-static int
-netsnmp_tcp6_close(netsnmp_transport *t)
-{
-    int rc = -1;
-    if (t != NULL && t->sock >= 0) {
-        DEBUGMSGTL(("netsnmp_tcp6", "close fd %d\n", t->sock));
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-    }
-    return rc;
+    return netsnmp_ipv6_fmtaddr("TCP/IPv6", t, data, len);
 }
 
 static int
@@ -174,13 +69,7 @@
 {
     struct sockaddr_in6 *farend = NULL;
     int             newsock = -1;
-#ifdef WIN32
-    u_long          ioctlsocket_opt;
-#else
-    int             sockflags;
-#endif
     socklen_t       farendlen = sizeof(struct sockaddr_in6);
-    char           *str = NULL;
 
     farend = (struct sockaddr_in6 *) malloc(sizeof(struct sockaddr_in6));
 
@@ -208,25 +97,19 @@
 
         t->data = farend;
         t->data_length = farendlen;
-        str = netsnmp_tcp6_fmtaddr(NULL, farend, farendlen);
-        DEBUGMSGTL(("netsnmp_tcp6", "accept succeeded (from %s)\n", str));
-        free(str);
+        DEBUGIF("netsnmp_tcp6") {
+            char *str = netsnmp_tcp6_fmtaddr(NULL, farend, farendlen);
+            DEBUGMSGTL(("netsnmp_tcp6", "accept succeeded (from %s)\n", str));
+            free(str);
+        }
 
         /*
          * Try to make the new socket blocking.  
          */
 
-#ifdef WIN32
-        ioctlsocket_opt = 0;
-        ioctlsocket(newsock, FIONBIO, &ioctlsocket_opt);
-#else
-        if ((sockflags = fcntl(newsock, F_GETFL, 0)) >= 0) {
-            fcntl(newsock, F_SETFL, (sockflags & ~O_NONBLOCK));
-        } else {
-            DEBUGMSGTL(("netsnmp_tcp6", "accept: couldn't f_getfl of fd %d\n",
-                        newsock));
-        }
-#endif
+        if (netsnmp_set_non_blocking_mode(newsock, FALSE) < 0)
+            DEBUGMSGTL(("netsnmp_tcp6",
+                        "accept: couldn't f_getfl of fd %d\n", newsock));
 
         /*
          * Allow user to override the send and receive buffers. Default is
@@ -256,7 +139,6 @@
 {
     netsnmp_transport *t = NULL;
     int             rc = 0;
-    char           *str = NULL;
 
     if (addr == NULL || addr->sin6_family != AF_INET6) {
         return NULL;
@@ -268,11 +150,13 @@
     }
     memset(t, 0, sizeof(netsnmp_transport));
 
-    str = netsnmp_tcp6_fmtaddr(NULL, (void *)addr,
-				  sizeof(struct sockaddr_in6));
-    DEBUGMSGTL(("netsnmp_tcp6", "open %s %s\n", local ? "local" : "remote",
-                str));
-    free(str);
+    DEBUGIF("netsnmp_tcp6") {
+        char *str = netsnmp_tcp6_fmtaddr(NULL, (void *)addr,
+                                   sizeof(struct sockaddr_in6));
+        DEBUGMSGTL(("netsnmp_tcp6", "open %s %s\n", local ? "local" : "remote",
+                    str));
+        free(str);
+    }
 
     memset(t, 0, sizeof(netsnmp_transport));
 
@@ -296,11 +180,6 @@
     t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
 
     if (local) {
-#ifdef WIN32
-        u_long ioctlsocket_opt;
-#else
-        int sockflags = 0;
-#endif
         int opt = 1;
 
         /*
@@ -314,7 +193,7 @@
         {
 	  int one=1;
 	  if (setsockopt(t->sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) != 0) {
-	    DEBUGMSGTL(("netsnmp_udp6", "couldn't set IPV6_V6ONLY to %d bytes: %s\n", one, strerror(errno)));
+	    DEBUGMSGTL(("netsnmp_tcp6", "couldn't set IPV6_V6ONLY to %d bytes: %s\n", one, strerror(errno)));
 	  } 
 	}
 #endif
@@ -322,13 +201,13 @@
         t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
         t->local = (unsigned char*)malloc(18);
         if (t->local == NULL) {
-            netsnmp_tcp6_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
         memcpy(t->local, addr->sin6_addr.s6_addr, 16);
-        t->local[16] = (addr->sin6_port & 0xff00) >> 8;
-        t->local[17] = (addr->sin6_port & 0x00ff) >> 0;
+        t->local[16] = (ntohs(addr->sin6_port) & 0xff00) >> 8;
+        t->local[17] = (ntohs(addr->sin6_port) & 0x00ff) >> 0;
         t->local_length = 18;
 
         /*
@@ -340,7 +219,7 @@
         rc = bind(t->sock, (struct sockaddr *) addr,
 		  sizeof(struct sockaddr_in6));
         if (rc != 0) {
-            netsnmp_tcp6_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
@@ -353,13 +232,7 @@
          * could otherwise wedge the agent.
          */
 
-#ifdef WIN32
-        ioctlsocket_opt = 1;
-        ioctlsocket(t->sock, FIONBIO, &ioctlsocket_opt);
-#else
-        sockflags = fcntl(t->sock, F_GETFL, 0);
-        fcntl(t->sock, F_SETFL, sockflags | O_NONBLOCK);
-#endif
+        netsnmp_set_non_blocking_mode(t->sock, TRUE);
 
         /*
          * Now sit here and wait for connections to arrive.  
@@ -367,7 +240,7 @@
 
         rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
         if (rc != 0) {
-            netsnmp_tcp6_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
@@ -379,13 +252,13 @@
     } else {
         t->remote = (unsigned char*)malloc(18);
         if (t->remote == NULL) {
-            netsnmp_tcp6_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
         memcpy(t->remote, addr->sin6_addr.s6_addr, 16);
-        t->remote[16] = (addr->sin6_port & 0xff00) >> 8;
-        t->remote[17] = (addr->sin6_port & 0x00ff) >> 0;
+        t->remote[16] = (ntohs(addr->sin6_port) & 0xff00) >> 8;
+        t->remote[17] = (ntohs(addr->sin6_port) & 0x00ff) >> 0;
         t->remote_length = 18;
 
         /*
@@ -401,7 +274,7 @@
         DEBUGMSGTL(("netsnmp_tcp6", "connect returns %d\n", rc));
 
         if (rc < 0) {
-            netsnmp_tcp6_close(t);
+            netsnmp_socketbase_close(t);
             netsnmp_transport_free(t);
             return NULL;
         }
@@ -421,9 +294,9 @@
      */
 
     t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_tcp6_recv;
-    t->f_send     = netsnmp_tcp6_send;
-    t->f_close    = netsnmp_tcp6_close;
+    t->f_recv     = netsnmp_tcpbase_recv;
+    t->f_send     = netsnmp_tcpbase_send;
+    t->f_close    = netsnmp_socketbase_close;
     t->f_accept   = netsnmp_tcp6_accept;
     t->f_fmtaddr  = netsnmp_tcp6_fmtaddr;
 
@@ -468,7 +341,7 @@
         memset((u_char *) & addr, 0, sizeof(struct sockaddr_in6));
         addr.sin6_family = AF_INET6;
         memcpy((u_char *) & (addr.sin6_addr.s6_addr), o, 16);
-        addr.sin6_port = (o[16] << 8) + o[17];
+        addr.sin6_port = htons((o[16] << 8) + o[17]);
         return netsnmp_tcp6_transport(&addr, local);
     }
     return NULL;
@@ -476,7 +349,7 @@
 
 
 void
-netsnmp_tcp6_ctor(void)
+netsnmp_tcpipv6_ctor(void)
 {
     tcp6Domain.name = netsnmp_TCPIPv6Domain;
     tcp6Domain.name_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
diff --git a/snmplib/transports/snmpTLSBaseDomain.c b/snmplib/transports/snmpTLSBaseDomain.c
new file mode 100644
index 0000000..b1e9465
--- /dev/null
+++ b/snmplib/transports/snmpTLSBaseDomain.c
@@ -0,0 +1,1146 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpTLSBaseDomain.h>
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#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
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#include <errno.h>
+#include <ctype.h>
+
+/* OpenSSL Includes */
+#include <openssl/bio.h>
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#include <openssl/x509.h>
+#include <openssl/x509_vfy.h>
+#include <openssl/x509v3.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/cert_util.h>
+#include <net-snmp/library/snmp_openssl.h>
+#include <net-snmp/library/default_store.h>
+#include <net-snmp/library/callback.h>
+#include <net-snmp/library/snmp_logging.h>
+#include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/snmp_debug.h>
+#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/system.h>
+
+#define LOGANDDIE(msg) do { snmp_log(LOG_ERR, "%s\n", msg); return 0; } while(0)
+
+int openssl_local_index;
+
+/* this is called during negotiationn */
+int verify_callback(int ok, X509_STORE_CTX *ctx) {
+    int err, depth;
+    char buf[1024], *fingerprint;
+    X509 *thecert;
+    netsnmp_cert *cert;
+    _netsnmp_verify_info *verify_info;
+    SSL *ssl;
+
+    thecert = X509_STORE_CTX_get_current_cert(ctx);
+    err = X509_STORE_CTX_get_error(ctx);
+    depth = X509_STORE_CTX_get_error_depth(ctx);
+    
+    /* things to do: */
+
+    X509_NAME_oneline(X509_get_subject_name(thecert), buf, sizeof(buf));
+    fingerprint = netsnmp_openssl_cert_get_fingerprint(thecert, -1);
+    DEBUGMSGTL(("tls_x509:verify", "Cert: %s\n", buf));
+    DEBUGMSGTL(("tls_x509:verify", "  fp: %s\n", fingerprint ?
+                fingerprint : "unknown"));
+
+    ssl = X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx());
+    verify_info = SSL_get_ex_data(ssl, openssl_local_index);
+
+    if (verify_info && ok && depth > 0) {
+        /* remember that a parent certificate has been marked as trusted */
+        verify_info->flags |= VRFY_PARENT_WAS_OK;
+    }
+
+    /* this ensures for self-signed certificates we have a valid
+       locally known fingerprint and then accept it */
+    if (!ok &&
+        (X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT == err ||
+         X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY == err ||
+         X509_V_ERR_CERT_UNTRUSTED == err ||
+         X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE == err ||
+         X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN == err)) {
+
+        cert = netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_FINGERPRINT,
+                                 (void*)fingerprint);
+        if (cert)
+            DEBUGMSGTL(("tls_x509:verify", " Found locally: %s/%s\n",
+                        cert->info.dir, cert->info.filename));
+
+
+        if (cert) {
+            DEBUGMSGTL(("tls_x509:verify", "verify_callback called with: ok=%d ctx=%p depth=%d err=%i:%s\n", ok, ctx, depth, err, X509_verify_cert_error_string(err)));
+            DEBUGMSGTL(("tls_x509:verify", "  accepting matching fp of self-signed certificate found in: %s\n",
+                        cert->info.filename));
+            SNMP_FREE(fingerprint);
+            return 1;
+        } else {
+            DEBUGMSGTL(("tls_x509:verify", "  no matching fp found\n"));
+            /* log where we are and why called */
+            snmp_log(LOG_ERR, "tls verification failure: ok=%d ctx=%p depth=%d err=%i:%s\n", ok, ctx, depth, err, X509_verify_cert_error_string(err));
+            SNMP_FREE(fingerprint);
+            return 0;
+        }
+
+        if (0 == depth && verify_info &&
+            (verify_info->flags & VRFY_PARENT_WAS_OK)) {
+            DEBUGMSGTL(("tls_x509:verify", "verify_callback called with: ok=%d ctx=%p depth=%d err=%i:%s\n", ok, ctx, depth, err, X509_verify_cert_error_string(err)));
+            DEBUGMSGTL(("tls_x509:verify", "  a parent was ok, so returning ok for this child certificate\n"));
+            SNMP_FREE(fingerprint);
+            return 1; /* we'll check the hostname later at this level */
+        }
+    }
+
+    if (0 == ok)
+        snmp_log(LOG_ERR, "tls verification failure: ok=%d ctx=%p depth=%d err=%i:%s\n", ok, ctx, depth, err, X509_verify_cert_error_string(err));
+    else
+        DEBUGMSGTL(("tls_x509:verify", "verify_callback called with: ok=%d ctx=%p depth=%d err=%i:%s\n", ok, ctx, depth, err, X509_verify_cert_error_string(err)));
+    DEBUGMSGTL(("tls_x509:verify", "  returning the passed in value of %d\n",
+                ok));
+    SNMP_FREE(fingerprint);
+    return(ok);
+}
+
+#define VERIFIED_FINGERPRINT      0
+#define NO_FINGERPRINT_AVAILABLE  1
+#define FAILED_FINGERPRINT_VERIFY 2
+
+static int
+_netsnmp_tlsbase_verify_remote_fingerprint(X509 *remote_cert,
+                                           _netsnmpTLSBaseData *tlsdata,
+                                           int try_default) {
+
+    char            *fingerprint;
+
+    fingerprint =
+        netsnmp_openssl_cert_get_fingerprint(remote_cert, -1);
+
+    if (!fingerprint) {
+        /* no peer cert */
+        snmp_log(LOG_ERR, "failed to get fingerprint of remote certificate\n");
+        return FAILED_FINGERPRINT_VERIFY;
+    }
+
+    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_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_MULTIPLE,
+                              tlsdata->their_identity);
+
+        if (their_cert)
+            tlsdata->their_fingerprint =
+                netsnmp_openssl_cert_get_fingerprint(their_cert->ocert, -1);
+    }
+
+    if (!tlsdata->their_fingerprint && try_default) {
+        /* try for the default instead */
+        netsnmp_cert *their_cert;
+        their_cert =
+            netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_DEFAULT,
+                              NULL);
+
+        if (their_cert)
+            tlsdata->their_fingerprint =
+                netsnmp_openssl_cert_get_fingerprint(their_cert->ocert, -1);
+    }
+    
+    if (tlsdata->their_fingerprint) {
+        netsnmp_fp_lowercase_and_strip_colon(tlsdata->their_fingerprint);
+        if (0 != strcmp(tlsdata->their_fingerprint, fingerprint)) {
+            snmp_log(LOG_ERR, "The fingerprint from the remote side's certificate didn't match the expected\n");
+            snmp_log(LOG_ERR, "  got %s, expected %s\n",
+                     fingerprint, tlsdata->their_fingerprint);
+            free(fingerprint);
+            return FAILED_FINGERPRINT_VERIFY;
+        }
+    } else {
+        DEBUGMSGTL(("tls_x509:verify", "No fingerprint for the remote entity available to verify\n"));
+        free(fingerprint);
+        return NO_FINGERPRINT_AVAILABLE;
+    }
+
+    free(fingerprint);
+    return VERIFIED_FINGERPRINT;
+}
+
+/* this is called after the connection on the client side by us to check
+   other aspects about the connection */
+int
+netsnmp_tlsbase_verify_server_cert(SSL *ssl, _netsnmpTLSBaseData *tlsdata) {
+    /* XXX */
+    X509            *remote_cert;
+    char            *check_name;
+    int              ret;
+    
+    netsnmp_assert_or_return(ssl != NULL, SNMPERR_GENERR);
+    netsnmp_assert_or_return(tlsdata != NULL, SNMPERR_GENERR);
+    
+    if (NULL == (remote_cert = SSL_get_peer_certificate(ssl))) {
+        /* no peer cert */
+        DEBUGMSGTL(("tls_x509:verify",
+                    "remote connection provided no certificate (yet)\n"));
+        return SNMPERR_TLS_NO_CERTIFICATE;
+    }
+
+    /* make sure that the fingerprint matches */
+    ret = _netsnmp_tlsbase_verify_remote_fingerprint(remote_cert, tlsdata, 1);
+    switch(ret) {
+    case VERIFIED_FINGERPRINT:
+        return SNMPERR_SUCCESS;
+
+    case FAILED_FINGERPRINT_VERIFY:
+        return SNMPERR_GENERR;
+
+    case NO_FINGERPRINT_AVAILABLE:
+        if (tlsdata->their_hostname && tlsdata->their_hostname[0] != '\0') {
+            GENERAL_NAMES      *onames;
+            const GENERAL_NAME *oname = NULL;
+            int                 i, j;
+            int                 count;
+            char                buf[SPRINT_MAX_LEN];
+            int                 is_wildcarded = 0;
+            char               *compare_to;
+
+            /* see if the requested hostname has a wildcard prefix */
+            if (strncmp(tlsdata->their_hostname, "*.", 2) == 0) {
+                is_wildcarded = 1;
+                compare_to = tlsdata->their_hostname + 2;
+            } else {
+                compare_to = tlsdata->their_hostname;
+            }
+
+            /* if the hostname we were expecting to talk to matches
+               the cert, then we can accept this connection. */
+
+            /* check against the DNS subjectAltName */
+            onames = (GENERAL_NAMES *)X509_get_ext_d2i(remote_cert,
+                                                       NID_subject_alt_name,
+                                                       NULL, NULL );
+            if (NULL != onames) {
+                count = sk_GENERAL_NAME_num(onames);
+
+                for (i=0 ; i <count; ++i)  {
+                    oname = sk_GENERAL_NAME_value(onames, i);
+                    if (GEN_DNS == oname->type) {
+
+                        /* get the value */
+                        ASN1_STRING_to_UTF8((unsigned char**)&check_name,
+                                            oname->d.ia5);
+
+                        /* convert to lowercase for comparisons */
+                        for (j = 0 ;
+                             *check_name && j < sizeof(buf)-1;
+                             ++check_name, ++j ) {
+                            if (isascii(*check_name))
+                                buf[j] = tolower(0xFF & *check_name);
+                        }
+                        if (j < sizeof(buf))
+                            buf[j] = '\0';
+                        check_name = buf;
+                        
+                        if (is_wildcarded) {
+                            /* we *only* allow passing till the first '.' */
+                            /* ie *.example.com can't match a.b.example.com */
+                            check_name = strchr(check_name, '.') + 1;
+                        }
+
+                        DEBUGMSGTL(("tls_x509:verify", "checking subjectAltname of dns:%s\n", check_name));
+                        if (strcmp(compare_to, check_name) == 0) {
+
+                            DEBUGMSGTL(("tls_x509:verify", "Successful match on a subjectAltname of dns:%s\n", check_name));
+                            return SNMPERR_SUCCESS;
+                        }
+                    }
+                }
+            }
+
+            /* check the common name for a match */
+            check_name =
+                netsnmp_openssl_cert_get_commonName(remote_cert, NULL, NULL);
+
+            if (is_wildcarded) {
+                /* we *only* allow passing till the first '.' */
+                /* ie *.example.com can't match a.b.example.com */
+                check_name = strchr(check_name, '.') + 1;
+            }
+
+            if (strcmp(compare_to, check_name) == 0) {
+                DEBUGMSGTL(("tls_x509:verify", "Successful match on a common name of %s\n", check_name));
+                return SNMPERR_SUCCESS;
+            }
+
+            snmp_log(LOG_ERR, "No matching names in the certificate to match the expected %s\n", tlsdata->their_hostname);
+            return SNMPERR_GENERR;
+
+        }
+        /* XXX: check for hostname match instead */
+        snmp_log(LOG_ERR, "Can not verify a remote server identity without configuration\n");
+        return SNMPERR_GENERR;
+    }
+    DEBUGMSGTL(("tls_x509:verify", "shouldn't get here\n"));
+    return SNMPERR_GENERR;
+}
+
+/* this is called after the connection on the server side by us to check
+   the validity of the client's certificate */
+int
+netsnmp_tlsbase_verify_client_cert(SSL *ssl, _netsnmpTLSBaseData *tlsdata) {
+    /* XXX */
+    X509            *remote_cert;
+    int ret;
+
+    /* RFC5953: section 5.3.2, paragraph 1:
+       A (D)TLS server should accept new session connections from any client
+       that it is able to verify the client's credentials for.  This is done
+       by authenticating the client's presented certificate through a
+       certificate path validation process (e.g.  [RFC5280]) or through
+       certificate fingerprint verification using fingerprints configured in
+       the snmpTlstmCertToTSNTable.  Afterward the server will determine the
+       identity of the remote entity using the following procedures.
+    */
+    /* Implementation notes:
+       + path validation is taken care of during the openssl verify
+         routines, our part of which is hanlded in verify_callback
+         above.
+       + fingerprint verification happens below.
+    */
+    if (NULL == (remote_cert = SSL_get_peer_certificate(ssl))) {
+        /* no peer cert */
+        DEBUGMSGTL(("tls_x509:verify",
+                    "remote connection provided no certificate (yet)\n"));
+        return SNMPERR_TLS_NO_CERTIFICATE;
+    }
+
+    /* we don't force a known remote fingerprint for a client since we
+       will accept any certificate we know about (and later derive the
+       securityName from it and apply access control) */
+    ret = _netsnmp_tlsbase_verify_remote_fingerprint(remote_cert, tlsdata, 0);
+    switch(ret) {
+    case FAILED_FINGERPRINT_VERIFY:
+        DEBUGMSGTL(("tls_x509:verify", "failed to verify a client fingerprint\n"));
+        return SNMPERR_GENERR;
+
+    case NO_FINGERPRINT_AVAILABLE:
+        DEBUGMSGTL(("tls_x509:verify", "no known fingerprint available (not a failure case)\n"));
+        return SNMPERR_SUCCESS;
+
+    case VERIFIED_FINGERPRINT:
+        DEBUGMSGTL(("tls_x509:verify", "Verified client fingerprint\n"));
+        tlsdata->flags |= NETSNMP_TLSBASE_CERT_FP_VERIFIED;
+        return SNMPERR_SUCCESS;
+    }
+
+    DEBUGMSGTL(("tls_x509:verify", "shouldn't get here\n"));
+    return SNMPERR_GENERR;
+}
+
+/* this is called after the connection on the server side by us to
+   check other aspects about the connection and obtain the
+   securityName from the remote certificate. */
+int
+netsnmp_tlsbase_extract_security_name(SSL *ssl, _netsnmpTLSBaseData *tlsdata) {
+    netsnmp_container  *chain_maps;
+    netsnmp_cert_map   *cert_map, *peer_cert;
+    netsnmp_iterator  *itr;
+    int                 rc;
+
+    netsnmp_assert_or_return(ssl != NULL, SNMPERR_GENERR);
+    netsnmp_assert_or_return(tlsdata != NULL, SNMPERR_GENERR);
+
+    if (NULL == (chain_maps = netsnmp_openssl_get_cert_chain(ssl)))
+        return SNMPERR_GENERR;
+    /*
+     * map fingerprints to mapping entries
+     */
+    rc = netsnmp_cert_get_secname_maps(chain_maps);
+    if ((-1 == rc) || (CONTAINER_SIZE(chain_maps) == 0)) {
+        netsnmp_cert_map_container_free(chain_maps);
+        return SNMPERR_GENERR;
+    }
+
+    /*
+     * change container to sorted (by clearing unsorted option), then
+     * iterate over it until we find a map that returns a secname.
+     */
+    CONTAINER_SET_OPTIONS(chain_maps, 0, rc);
+    itr = CONTAINER_ITERATOR(chain_maps);
+    if (NULL == itr) {
+        snmp_log(LOG_ERR, "could not get iterator for secname fingerprints\n");
+        netsnmp_cert_map_container_free(chain_maps);
+        return SNMPERR_GENERR;
+    }
+    peer_cert = cert_map = ITERATOR_FIRST(itr);
+    for( ; !tlsdata->securityName && cert_map; cert_map = ITERATOR_NEXT(itr))
+        tlsdata->securityName =
+            netsnmp_openssl_extract_secname(cert_map, peer_cert);
+    ITERATOR_RELEASE(itr);
+
+    netsnmp_cert_map_container_free(chain_maps);
+       
+    return (tlsdata->securityName ? SNMPERR_SUCCESS : SNMPERR_GENERR);
+}
+
+int
+_trust_this_cert(SSL_CTX *the_ctx, char *certspec) {
+    netsnmp_cert *trustcert;
+
+    DEBUGMSGTL(("sslctx_client", "Trying to load a trusted certificate: %s\n",
+                certspec));
+
+    /* load this identifier into the trust chain */
+    trustcert = netsnmp_cert_find(NS_CERT_CA,
+                                  NS_CERTKEY_MULTIPLE,
+                                  certspec);
+    if (!trustcert)
+        trustcert = netsnmp_cert_find(NS_CERT_REMOTE_PEER,
+                                      NS_CERTKEY_MULTIPLE,
+                                      certspec);
+    if (!trustcert)
+        LOGANDDIE("failed to find requested certificate to trust");
+        
+    /* Add the certificate to the context */
+    if (netsnmp_cert_trust_ca(the_ctx, trustcert) != SNMPERR_SUCCESS)
+        LOGANDDIE("failed to load trust certificate");
+
+    return 1;
+}
+
+void
+_load_trusted_certs(SSL_CTX *the_ctx) {
+    netsnmp_container *trusted_certs = NULL;
+    netsnmp_iterator  *trusted_cert_iterator = NULL;
+    char *fingerprint;
+
+    trusted_certs = netsnmp_cert_get_trustlist();
+    trusted_cert_iterator = CONTAINER_ITERATOR(trusted_certs);
+    if (trusted_cert_iterator) {
+        for (fingerprint = (char *) ITERATOR_FIRST(trusted_cert_iterator);
+             fingerprint; fingerprint = ITERATOR_NEXT(trusted_cert_iterator)) {
+            if (!_trust_this_cert(the_ctx, fingerprint))
+                snmp_log(LOG_ERR, "failed to load trust cert: %s\n",
+                         fingerprint);
+        }
+        ITERATOR_RELEASE(trusted_cert_iterator);
+    }
+}    
+
+SSL_CTX *
+_sslctx_common_setup(SSL_CTX *the_ctx, _netsnmpTLSBaseData *tlsbase) {
+    char         *crlFile;
+    char         *cipherList;
+    X509_LOOKUP  *lookup;
+    X509_STORE   *cert_store = NULL;
+
+    _load_trusted_certs(the_ctx);
+
+    /* add in the CRLs if available */
+
+    crlFile = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                    NETSNMP_DS_LIB_X509_CRL_FILE);
+    if (NULL != crlFile) {
+        cert_store = SSL_CTX_get_cert_store(the_ctx);
+        DEBUGMSGTL(("sslctx_client", "loading CRL: %s\n", crlFile));
+        if (!cert_store)
+            LOGANDDIE("failed to find certificate store");
+        if (!(lookup = X509_STORE_add_lookup(cert_store, X509_LOOKUP_file())))
+            LOGANDDIE("failed to create a lookup function for the CRL file");
+        if (X509_load_crl_file(lookup, crlFile, X509_FILETYPE_PEM) != 1)
+            LOGANDDIE("failed to load the CRL file");
+        /* tell openssl to check CRLs */
+        X509_STORE_set_flags(cert_store,
+                             X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL);
+    }
+
+    cipherList = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                       NETSNMP_DS_LIB_TLS_ALGORITMS);
+    if (NULL != cipherList) {
+        if (SSL_CTX_set_cipher_list(the_ctx, cipherList) != 1)
+            LOGANDDIE("failed to set the cipher list to the requested value");
+        else
+            snmp_log(LOG_INFO,"set SSL cipher list to '%s'\n", cipherList);
+    }
+    return the_ctx;
+}
+
+SSL_CTX *
+sslctx_client_setup(const SSL_METHOD *method, _netsnmpTLSBaseData *tlsbase) {
+    netsnmp_cert *id_cert, *peer_cert;
+    SSL_CTX      *the_ctx;
+
+    /***********************************************************************
+     * Set up the client context
+     */
+    the_ctx = SSL_CTX_new(NETSNMP_REMOVE_CONST(SSL_METHOD *, method));
+    if (!the_ctx) {
+        snmp_log(LOG_ERR, "ack: %p\n", the_ctx);
+        LOGANDDIE("can't create a new context");
+    }
+    SSL_CTX_set_read_ahead (the_ctx, 1); /* Required for DTLS */
+        
+    SSL_CTX_set_verify(the_ctx,
+                       SSL_VERIFY_PEER|
+                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
+                       SSL_VERIFY_CLIENT_ONCE,
+                       &verify_callback);
+
+    if (tlsbase->our_identity) {
+        DEBUGMSGTL(("sslctx_client", "looking for local id: %s\n", tlsbase->our_identity));
+        id_cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_MULTIPLE,
+                                    tlsbase->our_identity);
+    } else {
+        DEBUGMSGTL(("sslctx_client", "looking for default local id: %s\n", tlsbase->our_identity));
+        id_cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_DEFAULT, NULL);
+    }
+
+    if (!id_cert)
+        LOGANDDIE ("error finding client identity keys");
+
+    if (!id_cert->key || !id_cert->key->okey)
+        LOGANDDIE("failed to load private key");
+
+    DEBUGMSGTL(("sslctx_client", "using public key: %s\n",
+                id_cert->info.filename));
+    DEBUGMSGTL(("sslctx_client", "using private key: %s\n",
+                id_cert->key->info.filename));
+
+    if (SSL_CTX_use_certificate(the_ctx, id_cert->ocert) <= 0)
+        LOGANDDIE("failed to set the certificate to use");
+
+    if (SSL_CTX_use_PrivateKey(the_ctx, id_cert->key->okey) <= 0)
+        LOGANDDIE("failed to set the private key to use");
+
+    if (!SSL_CTX_check_private_key(the_ctx))
+        LOGANDDIE("public and private keys incompatible");
+
+    if (tlsbase->their_identity)
+        peer_cert = netsnmp_cert_find(NS_CERT_REMOTE_PEER,
+                                      NS_CERTKEY_MULTIPLE,
+                                      tlsbase->their_identity);
+    else
+        peer_cert = netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_DEFAULT,
+                                      NULL);
+    if (peer_cert) {
+        DEBUGMSGTL(("sslctx_client", "server's expected public key: %s\n",
+                    peer_cert ? peer_cert->info.filename : "none"));
+
+        /* Trust the expected certificate */
+        if (netsnmp_cert_trust_ca(the_ctx, peer_cert) != SNMPERR_SUCCESS)
+            LOGANDDIE ("failed to set verify paths");
+    }
+
+    /* trust a certificate (possibly a CA) aspecifically passed in */
+    if (tlsbase->trust_cert) {
+        if (!_trust_this_cert(the_ctx, tlsbase->trust_cert))
+            return 0;
+    }
+
+    return _sslctx_common_setup(the_ctx, tlsbase);
+}
+
+SSL_CTX *
+sslctx_server_setup(const SSL_METHOD *method) {
+    netsnmp_cert *id_cert;
+
+    /***********************************************************************
+     * Set up the server context
+     */
+    /* setting up for ssl */
+    SSL_CTX *the_ctx = SSL_CTX_new(NETSNMP_REMOVE_CONST(SSL_METHOD *, method));
+    if (!the_ctx) {
+        LOGANDDIE("can't create a new context");
+    }
+
+    id_cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_DEFAULT,
+                                (void*)1);
+    if (!id_cert)
+        LOGANDDIE ("error finding server identity keys");
+
+    if (!id_cert->key || !id_cert->key->okey)
+        LOGANDDIE("failed to load private key");
+
+    DEBUGMSGTL(("sslctx_server", "using public key: %s\n",
+                id_cert->info.filename));
+    DEBUGMSGTL(("sslctx_server", "using private key: %s\n",
+                id_cert->key->info.filename));
+
+    if (SSL_CTX_use_certificate(the_ctx, id_cert->ocert) <= 0)
+        LOGANDDIE("failed to set the certificate to use");
+
+    if (SSL_CTX_use_PrivateKey(the_ctx, id_cert->key->okey) <= 0)
+        LOGANDDIE("failed to set the private key to use");
+
+    if (!SSL_CTX_check_private_key(the_ctx))
+        LOGANDDIE("public and private keys incompatible");
+
+    SSL_CTX_set_read_ahead(the_ctx, 1); /* XXX: DTLS only? */
+
+    SSL_CTX_set_verify(the_ctx,
+                       SSL_VERIFY_PEER|
+                       SSL_VERIFY_FAIL_IF_NO_PEER_CERT|
+                       SSL_VERIFY_CLIENT_ONCE,
+                       &verify_callback);
+
+    return _sslctx_common_setup(the_ctx, NULL);
+}
+
+int
+netsnmp_tlsbase_config(struct netsnmp_transport_s *t, const char *token, const char *value) {
+    _netsnmpTLSBaseData *tlsdata;
+
+    netsnmp_assert_or_return(t != NULL, -1);
+    netsnmp_assert_or_return(t->data != NULL, -1);
+
+    tlsdata = t->data;
+
+    if (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) {
+        SNMP_FREE(tlsdata->their_identity);
+        tlsdata->their_identity = strdup(value);
+        DEBUGMSGT(("tls:config","their identity %s\n", value));
+    }
+
+    if (strcmp(token, "their_hostname") == 0) {
+        SNMP_FREE(tlsdata->their_hostname);
+        tlsdata->their_hostname = strdup(value);
+    }
+
+    if (strcmp(token, "trust_cert") == 0) {
+        SNMP_FREE(tlsdata->trust_cert);
+        tlsdata->trust_cert = strdup(value);
+    }
+    
+    return SNMPERR_SUCCESS;
+}
+
+int
+netsnmp_tlsbase_session_init(struct netsnmp_transport_s *transport,
+                             struct snmp_session *sess) {
+    /* the default security model here should be TSM; most other
+       things won't work with TLS because we'll throw out the packet
+       if it doesn't have a proper tmStateRef (and onyl TSM generates
+       this at the moment */
+    if (!(transport->flags & NETSNMP_TRANSPORT_FLAG_LISTEN)) {
+        if (sess->securityModel == SNMP_DEFAULT_SECMODEL) {
+            sess->securityModel = SNMP_SEC_MODEL_TSM;
+        } else if (sess->securityModel != SNMP_SEC_MODEL_TSM) {
+            sess->securityModel = SNMP_SEC_MODEL_TSM;
+            snmp_log(LOG_ERR, "A security model other than TSM is being used with (D)TLS; using TSM anyways\n");
+        }
+
+        if (NULL == sess->securityName) {
+            /* client side doesn't need a real securityName */
+            /* XXX: call-home issues require them to set one for VACM; but
+               we don't do callhome yet */
+            sess->securityName = strdup("__BOGUS__");
+            sess->securityNameLen = strlen(sess->securityName);
+        }
+
+        if (sess->version != SNMP_VERSION_3) {
+            sess->version = SNMP_VERSION_3;
+            snmp_log(LOG_ERR, "A SNMP version other than 3 was requested with (D)TLS; using 3 anyways\n");
+        }
+
+        if (sess->securityLevel <= 0) {
+            sess->securityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
+        }
+    }
+    return SNMPERR_SUCCESS;
+}
+
+static int have_done_bootstrap = 0;
+
+static int
+tls_bootstrap(int majorid, int minorid, void *serverarg, void *clientarg) {
+    char indexname[] = "_netsnmp_verify_info";
+
+    /* don't do this more than once */
+    if (have_done_bootstrap)
+        return 0;
+    have_done_bootstrap = 1;
+
+    netsnmp_certs_load();
+
+    openssl_local_index =
+        SSL_get_ex_new_index(0, indexname, NULL, NULL, NULL);
+
+    return 0;
+}
+
+int
+tls_get_verify_info_index() {
+    return openssl_local_index;
+}
+
+void
+netsnmp_tlsbase_ctor(void) {
+
+    /* bootstrap ssl since we'll need it */
+    netsnmp_init_openssl();
+
+    /* the private client cert to authenticate with */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "extraX509SubDir",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_CERT_EXTRA_SUBDIR);
+
+    /* Do we have a CRL list? */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "x509CRLFile",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_CRL_FILE);
+
+    /* What TLS algorithms should be use */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "tlsAlgorithms",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_TLS_ALGORITMS);
+
+    /*
+     * for the client
+     */
+
+    /* 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);
+
+    /*
+     * for the server
+     */
+
+    /* The X509 server key to use */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "serverCert",
+                               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_LIBRARY_ID,
+                               NETSNMP_DS_LIB_X509_SERVER_PUB);
+
+    /*
+     * register our boot-strapping needs
+     */
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+			   SNMP_CALLBACK_POST_PREMIB_READ_CONFIG,
+			   tls_bootstrap, NULL);
+
+}
+
+_netsnmpTLSBaseData *
+netsnmp_tlsbase_allocate_tlsdata(netsnmp_transport *t, int isserver) {
+
+    _netsnmpTLSBaseData *tlsdata;
+
+    if (NULL == t)
+        return NULL;
+
+    /* allocate our TLS specific data */
+    tlsdata = SNMP_MALLOC_TYPEDEF(_netsnmpTLSBaseData);
+    if (NULL == tlsdata) {
+        SNMP_FREE(t);
+        return NULL;
+    }
+
+    if (!isserver)
+        tlsdata->flags |= NETSNMP_TLSBASE_IS_CLIENT;
+
+    return tlsdata;
+}
+
+void netsnmp_tlsbase_free_tlsdata(_netsnmpTLSBaseData *tlsbase) {
+    if (!tlsbase)
+        return;
+
+    DEBUGMSGTL(("tlsbase","Freeing TLS Base data for a session\n"));
+
+    if (tlsbase->ssl)
+        SSL_free(tlsbase->ssl);
+
+    if (tlsbase->ssl_context)
+        SSL_CTX_free(tlsbase->ssl_context);
+   /* don't free the accept_bio since it's the parent bio */
+    /*
+    if (tlsbase->accept_bio)
+        BIO_free(tlsbase->accept_bio);
+    */
+    /* and this is freed by the SSL shutdown */
+    /* 
+    if (tlsbase->accepted_bio)
+      BIO_free(tlsbase->accept_bio);
+    */
+
+    /* free the config data */
+    SNMP_FREE(tlsbase->securityName);
+    SNMP_FREE(tlsbase->addr_string);
+    SNMP_FREE(tlsbase->our_identity);
+    SNMP_FREE(tlsbase->their_identity);
+    SNMP_FREE(tlsbase->their_fingerprint);
+    SNMP_FREE(tlsbase->their_hostname);
+    SNMP_FREE(tlsbase->trust_cert);
+
+    /* free the base itself */
+    SNMP_FREE(tlsbase);
+}
+
+int netsnmp_tlsbase_wrapup_recv(netsnmp_tmStateReference *tmStateRef,
+                                _netsnmpTLSBaseData *tlsdata,
+                                void **opaque, int *olength) {
+    int no_auth, no_priv;
+
+    if (NULL == tlsdata)
+        return SNMPERR_GENERR;
+
+    /* RFC5953 Section 5.1.2 step 2: tmSecurityLevel */
+    /*
+     * Don't accept null authentication. Null encryption ok.
+     *
+     * XXX: this should actually check for a configured list of encryption
+     *      algorithms to map to NOPRIV, but for the moment we'll
+     *      accept any encryption alogrithms that openssl is using.
+     */
+    netsnmp_openssl_null_checks(tlsdata->ssl, &no_auth, &no_priv);
+    if (no_auth == 1) { /* null/unknown authentication */
+        /* xxx-rks: snmp_increment_statistic(STAT_???); */
+        snmp_log(LOG_ERR, "tls connection with NULL authentication\n");
+        SNMP_FREE(tmStateRef);
+        return SNMPERR_GENERR;
+    }
+    else if (no_priv == 1) /* null/unknown encryption */
+        tmStateRef->transportSecurityLevel = SNMP_SEC_LEVEL_AUTHNOPRIV;
+    else
+        tmStateRef->transportSecurityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
+    DEBUGMSGTL(("tls:secLevel", "SecLevel %d\n",
+                tmStateRef->transportSecurityLevel));
+
+    /* use x509 cert to do lookup to secname if DNE in cachep yet */
+
+    /* RFC5953: section 5.3.2, paragraph 2:
+       The (D)TLS server identifies the authenticated identity from the
+       (D)TLS client's principal certificate using configuration information
+       from the snmpTlstmCertToTSNTable mapping table.  The (D)TLS server
+       MUST request and expect a certificate from the client and MUST NOT
+       accept SNMP messages over the (D)TLS connection until the client has
+       sent a certificate and it has been authenticated.  The resulting
+       derived tmSecurityName is recorded in the tmStateReference cache as
+       tmSecurityName.  The details of the lookup process are fully
+       described in the DESCRIPTION clause of the snmpTlstmCertToTSNTable
+       MIB object.  If any verification fails in any way (for example
+       because of failures in cryptographic verification or because of the
+       lack of an appropriate row in the snmpTlstmCertToTSNTable) then the
+       session establishment MUST fail, and the
+       snmpTlstmSessionInvalidClientCertificates object is incremented.  If
+       the session can not be opened for any reason at all, including
+       cryptographic verification failures, then the
+       snmpTlstmSessionOpenErrors counter is incremented and processing
+       stops.
+    */
+
+    if (!tlsdata->securityName) {
+        netsnmp_tlsbase_extract_security_name(tlsdata->ssl, tlsdata);
+        if (NULL != tlsdata->securityName) {
+            DEBUGMSGTL(("tls", "set SecName to: %s\n", tlsdata->securityName));
+        } else {
+	    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCLIENTCERTIFICATES);
+	    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
+            SNMP_FREE(tmStateRef);
+            return SNMPERR_GENERR;
+        }
+    }
+
+    /* RFC5953 Section 5.1.2 step 2: tmSecurityName */
+    /* XXX: detect and throw out overflow secname sizes rather
+       than truncating. */
+    strlcpy(tmStateRef->securityName, tlsdata->securityName,
+            sizeof(tmStateRef->securityName));
+    tmStateRef->securityNameLen = strlen(tmStateRef->securityName);
+
+    /* RFC5953 Section 5.1.2 step 2: tmSessionID */
+    /* use our TLSData pointer as the session ID */
+    memcpy(tmStateRef->sessionID, &tlsdata, sizeof(netsnmp_tmStateReference *));
+
+    /* save the tmStateRef in our special pointer */
+    *opaque = tmStateRef;
+    *olength = sizeof(netsnmp_tmStateReference);
+
+    return SNMPERR_SUCCESS;
+}
+
+const char * _x509_get_error(int x509failvalue, const char *location) {
+    static const char *reason = NULL;
+    
+    /* XXX: use this instead: X509_verify_cert_error_string(err) */
+
+    switch (x509failvalue) {
+    case X509_V_OK:
+        reason = "X509_V_OK";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
+        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_CRL:
+        reason = "X509_V_ERR_UNABLE_TO_GET_CRL";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
+        break;
+    case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
+        reason = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
+        break;
+    case X509_V_ERR_CERT_SIGNATURE_FAILURE:
+        reason = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
+        break;
+    case X509_V_ERR_CRL_SIGNATURE_FAILURE:
+        reason = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
+        break;
+    case X509_V_ERR_CERT_NOT_YET_VALID:
+        reason = "X509_V_ERR_CERT_NOT_YET_VALID";
+        break;
+    case X509_V_ERR_CERT_HAS_EXPIRED:
+        reason = "X509_V_ERR_CERT_HAS_EXPIRED";
+        break;
+    case X509_V_ERR_CRL_NOT_YET_VALID:
+        reason = "X509_V_ERR_CRL_NOT_YET_VALID";
+        break;
+    case X509_V_ERR_CRL_HAS_EXPIRED:
+        reason = "X509_V_ERR_CRL_HAS_EXPIRED";
+        break;
+    case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
+        break;
+    case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
+        reason = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
+        break;
+    case X509_V_ERR_OUT_OF_MEM:
+        reason = "X509_V_ERR_OUT_OF_MEM";
+        break;
+    case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+        reason = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
+        break;
+    case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
+        reason = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
+        reason = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
+        break;
+    case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
+        reason = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
+        break;
+    case X509_V_ERR_CERT_CHAIN_TOO_LONG:
+        reason = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
+        break;
+    case X509_V_ERR_CERT_REVOKED:
+        reason = "X509_V_ERR_CERT_REVOKED";
+        break;
+    case X509_V_ERR_INVALID_CA:
+        reason = "X509_V_ERR_INVALID_CA";
+        break;
+    case X509_V_ERR_PATH_LENGTH_EXCEEDED:
+        reason = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
+        break;
+    case X509_V_ERR_INVALID_PURPOSE:
+        reason = "X509_V_ERR_INVALID_PURPOSE";
+        break;
+    case X509_V_ERR_CERT_UNTRUSTED:
+        reason = "X509_V_ERR_CERT_UNTRUSTED";
+        break;
+    case X509_V_ERR_CERT_REJECTED:
+        reason = "X509_V_ERR_CERT_REJECTED";
+        break;
+    case X509_V_ERR_SUBJECT_ISSUER_MISMATCH:
+        reason = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
+        break;
+    case X509_V_ERR_AKID_SKID_MISMATCH:
+        reason = "X509_V_ERR_AKID_SKID_MISMATCH";
+        break;
+    case X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH:
+        reason = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_CERTSIGN:
+        reason = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
+        break;
+    case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
+        reason = "X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER";
+        break;
+    case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
+        reason = "X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_CRL_SIGN:
+        reason = "X509_V_ERR_KEYUSAGE_NO_CRL_SIGN";
+        break;
+    case X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION:
+        reason = "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION";
+        break;
+    case X509_V_ERR_INVALID_NON_CA:
+        reason = "X509_V_ERR_INVALID_NON_CA";
+        break;
+    case X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED:
+        reason = "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED";
+        break;
+    case X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE:
+        reason = "X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE";
+        break;
+    case X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED:
+        reason = "X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED";
+        break;
+#ifdef X509_V_ERR_INVALID_EXTENSION /* not avail on darwin */
+    case X509_V_ERR_INVALID_EXTENSION:
+        reason = "X509_V_ERR_INVALID_EXTENSION";
+        break;
+#endif
+#ifdef X509_V_ERR_INVALID_POLICY_EXTENSION /* not avail on darwin */
+    case X509_V_ERR_INVALID_POLICY_EXTENSION:
+        reason = "X509_V_ERR_INVALID_POLICY_EXTENSION";
+        break;
+#endif
+#ifdef X509_V_ERR_NO_EXPLICIT_POLICY /* not avail on darwin */
+    case X509_V_ERR_NO_EXPLICIT_POLICY:
+        reason = "X509_V_ERR_NO_EXPLICIT_POLICY";
+        break;
+#endif
+#ifdef X509_V_ERR_UNNESTED_RESOURCE /* not avail on darwin */
+    case X509_V_ERR_UNNESTED_RESOURCE:
+        reason = "X509_V_ERR_UNNESTED_RESOURCE";
+        break;
+#endif
+    case X509_V_ERR_APPLICATION_VERIFICATION:
+        reason = "X509_V_ERR_APPLICATION_VERIFICATION";
+        break;
+    default:
+        reason = "unknown failure code";
+    }
+
+    return reason;
+}
+
+void _openssl_log_error(int rc, SSL *con, const char *location) {
+    const char     *reason, *file, *data;
+    unsigned long   numerical_reason;
+    int             flags, line;
+
+    snmp_log(LOG_ERR, "---- OpenSSL Related Errors: ----\n");
+
+    /* SSL specific errors */
+    if (con) {
+
+        int sslnum = SSL_get_error(con, rc);
+
+        switch(sslnum) {
+        case SSL_ERROR_NONE:
+            reason = "SSL_ERROR_NONE";
+            break;
+
+        case SSL_ERROR_SSL:
+            reason = "SSL_ERROR_SSL";
+            break;
+
+        case SSL_ERROR_WANT_READ:
+            reason = "SSL_ERROR_WANT_READ";
+            break;
+
+        case SSL_ERROR_WANT_WRITE:
+            reason = "SSL_ERROR_WANT_WRITE";
+            break;
+
+        case SSL_ERROR_WANT_X509_LOOKUP:
+            reason = "SSL_ERROR_WANT_X509_LOOKUP";
+            break;
+
+        case SSL_ERROR_SYSCALL:
+            reason = "SSL_ERROR_SYSCALL";
+            snmp_log(LOG_ERR, "TLS error: %s: rc=%d, sslerror = %d (%s): system_error=%d (%s)\n",
+                     location, rc, sslnum, reason, errno, strerror(errno));
+            snmp_log(LOG_ERR, "TLS Error: %s\n",
+                     ERR_reason_error_string(ERR_get_error()));
+            return;
+
+        case SSL_ERROR_ZERO_RETURN:
+            reason = "SSL_ERROR_ZERO_RETURN";
+            break;
+
+        case SSL_ERROR_WANT_CONNECT:
+            reason = "SSL_ERROR_WANT_CONNECT";
+            break;
+
+        case SSL_ERROR_WANT_ACCEPT:
+            reason = "SSL_ERROR_WANT_ACCEPT";
+            break;
+            
+        default:
+            reason = "unknown";
+        }
+
+        snmp_log(LOG_ERR, " TLS error: %s: rc=%d, sslerror = %d (%s)\n",
+                 location, rc, sslnum, reason);
+
+        snmp_log(LOG_ERR, " TLS Error: %s\n",
+                 ERR_reason_error_string(ERR_get_error()));
+
+    }
+
+    /* other errors */
+    while ((numerical_reason =
+            ERR_get_error_line_data(&file, &line, &data, &flags)) != 0) {
+        snmp_log(LOG_ERR, " error: #%lu (file %s, line %d)\n",
+                 numerical_reason, file, line);
+
+        /* if we have a text translation: */
+        if (data && (flags & ERR_TXT_STRING)) {
+            snmp_log(LOG_ERR, "  Textual Error: %s\n", data);
+            /*
+             * per openssl man page: If it has been allocated by
+             * OPENSSL_malloc(), *flags&ERR_TXT_MALLOCED is true.
+             *
+             * arggh... stupid openssl prototype for ERR_get_error_line_data
+             * wants a const char **, but returns something that we might
+             * need to free??
+             */
+            if (flags & ERR_TXT_MALLOCED)
+                OPENSSL_free(NETSNMP_REMOVE_CONST(void *, data));        }
+    }
+    
+    snmp_log(LOG_ERR, "---- End of OpenSSL Errors ----\n");
+}
diff --git a/snmplib/transports/snmpTLSTCPDomain.c b/snmplib/transports/snmpTLSTCPDomain.c
new file mode 100644
index 0000000..e380bd5
--- /dev/null
+++ b/snmplib/transports/snmpTLSTCPDomain.c
@@ -0,0 +1,1045 @@
+/* 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:
+ */
+/* 
+ * See the following web pages for useful documentation on this transport:
+ * http://www.net-snmp.org/wiki/index.php/TUT:Using_TLS
+ * http://www.net-snmp.org/wiki/index.php/Using_DTLS
+ */
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpTLSTCPDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/config_api.h>
+#include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTLSBaseDomain.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/cert_util.h>
+#include <net-snmp/library/snmp_openssl.h>
+#include <net-snmp/library/callback.h>
+
+#include "openssl/bio.h"
+#include "openssl/ssl.h"
+#include "openssl/err.h"
+
+#ifndef INADDR_NONE
+#define INADDR_NONE	-1
+#endif
+
+#define WE_ARE_SERVER 0
+#define WE_ARE_CLIENT 1
+
+oid             netsnmpTLSTCPDomain[] = { TRANSPORT_DOMAIN_TLS_TCP_IP };
+size_t          netsnmpTLSTCPDomain_len = OID_LENGTH(netsnmpTLSTCPDomain);
+
+static netsnmp_tdomain tlstcpDomain;
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_tlstcp_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    if (NULL == data || 0 == len || 0 == ((char *) data)[0])
+        return strdup("TLSTCP: unknown");
+    else if (len == sizeof(netsnmp_indexed_addr_pair) ||
+             len == sizeof(struct sockaddr_in))
+        return netsnmp_ipv4_fmtaddr("TLSTCP", t, data, len);
+    else {
+        /* an already ascii formatted string */
+        char buf[1024];
+        snprintf(buf, sizeof(buf)-1, "TLSTCP: %s", (char *) data);
+        return strdup(buf);
+    }
+}
+/*
+ * You can write something into opaque that will subsequently get passed back 
+ * to your send function if you like.  For instance, you might want to
+ * remember where a PDU came from, so that you can send a reply there...  
+ */
+
+static int
+netsnmp_tlstcp_copy(netsnmp_transport *oldt, netsnmp_transport *newt)
+{
+    _netsnmpTLSBaseData *oldtlsdata = (_netsnmpTLSBaseData *) oldt->data;
+    _netsnmpTLSBaseData *newtlsdata = (_netsnmpTLSBaseData *) newt->data;
+    oldtlsdata->accepted_bio = NULL;
+    oldtlsdata->ssl = NULL;
+    newtlsdata->ssl_context = NULL;
+    
+    if (oldtlsdata->addr_string)
+        newtlsdata->addr_string = strdup(oldtlsdata->addr_string);
+    if (oldtlsdata->securityName)
+        newtlsdata->securityName = strdup(oldtlsdata->securityName);
+    if (oldtlsdata->our_identity)
+        newtlsdata->our_identity = strdup(oldtlsdata->our_identity);
+    if (oldtlsdata->their_identity)
+        newtlsdata->their_identity = strdup(oldtlsdata->their_identity);
+    if (oldtlsdata->their_fingerprint)
+        newtlsdata->their_fingerprint = strdup(oldtlsdata->their_fingerprint);
+    if (oldtlsdata->their_hostname)
+        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));
+
+    return 0;
+}
+
+static int
+netsnmp_tlstcp_recv(netsnmp_transport *t, void *buf, int size,
+                    void **opaque, int *olength)
+{
+    int             rc = -1;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    _netsnmpTLSBaseData *tlsdata;
+
+    if (NULL == t || t->sock < 0 || NULL == t->data) {
+        snmp_log(LOG_ERR,
+                 "tlstcp received an invalid invocation with missing data\n");
+        DEBUGMSGTL(("tlstcp", "recvfrom fd %d err %d (\"%s\")\n",
+                    (t ? t->sock : -1), errno, strerror(errno)));
+        DEBUGMSGTL(("tlstcp", "  tdata = %p\n", t->data));
+        return -1;
+    }
+        
+    /* RFC5953 Section 5.1.2 step 1:
+    1) Determine the tlstmSessionID for the incoming message. The
+       tlstmSessionID MUST be a unique session identifier for this
+       (D)TLS connection.  The contents and format of this identifier
+       are implementation-dependent as long as it is unique to the
+       session.  A session identifier MUST NOT be reused until all
+       references to it are no longer in use.  The tmSessionID is
+       equal to the tlstmSessionID discussed in Section 5.1.1.
+       tmSessionID refers to the session identifier when stored in the
+       tmStateReference and tlstmSessionID refers to the session
+       identifier when stored in the LCD.  They MUST always be equal
+       when processing a given session's traffic.
+     */
+    /* For this implementation we use the t->data memory pointer as
+       the sessionID.  As it's a pointer to session specific data tied
+       with the transport object we know it'll never be realloated
+       (ie, duplicated) until release by this transport object and is
+       safe to use as a unique session identifier. */
+
+    tlsdata = t->data;
+    if (NULL == tlsdata->ssl) {
+        snmp_log(LOG_ERR,
+                 "tlstcp received an invalid invocation without ssl data\n");
+        return -1;
+    }
+
+    /* RFC5953 Section 5.1.2 step 1, part2:
+     * This part (incrementing the counter) is done in the
+       netsnmp_tlstcp_accept function.
+     */
+
+
+    /* RFC5953 Section 5.1.2 step 2:
+     * Create a tmStateReference cache for the subsequent reference and
+       assign the following values within it:
+
+       tmTransportDomain  = snmpTLSTCPDomain or snmpDTLSUDPDomain as
+                            appropriate.
+
+       tmTransportAddress = The address the message originated from.
+
+       tmSecurityLevel    = The derived tmSecurityLevel for the session,
+                            as discussed in Section 3.1.2 and Section 5.3.
+
+       tmSecurityName     = The fderived tmSecurityName for the session as
+                            discussed in Section 5.3.  This value MUST
+                            be constant during the lifetime of the
+                            session.
+
+       tmSessionID        = The tlstmSessionID described in step 1 above.
+     */
+
+    /* Implementation notes:
+     * - The tmTransportDomain is represented by the transport object
+     * - The tmpSessionID is represented by the tlsdata pointer (as
+         discussed above)
+     * - The following items are handled later in netsnmp_tlsbase_wrapup_recv:
+         - tmSecurityLevel
+         - tmSecurityName
+         - tmSessionID
+    */
+
+    /* create a tmStateRef cache for slow fill-in */
+    tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+
+    if (tmStateRef == NULL) {
+        *opaque = NULL;
+        *olength = 0;
+        return -1;
+    }
+
+    /* Set the transportDomain */
+    memcpy(tmStateRef->transportDomain,
+           netsnmpTLSTCPDomain, sizeof(netsnmpTLSTCPDomain[0]) *
+           netsnmpTLSTCPDomain_len);
+    tmStateRef->transportDomainLen = netsnmpTLSTCPDomain_len;
+
+    /* Set the tmTransportAddress */
+    tmStateRef->have_addresses = 1;
+
+    /* RFC5953 Section 5.1.2 step 1:
+     * 3)  The incomingMessage and incomingMessageLength are assigned values
+       from the (D)TLS processing.
+     */
+
+    /* Implementation notes:
+       - incomingMessage       = buf pointer
+       - incomingMessageLength = rc
+    */
+
+    /* read the packet from openssl */
+    do {
+        rc = SSL_read(tlsdata->ssl, buf, size);
+        if (rc == 0) {
+            /* XXX closed connection */
+            DEBUGMSGTL(("tlstcp", "remote side closed connection\n"));
+            /* XXX: openssl cleanup */
+            SNMP_FREE(tmStateRef);
+            return -1;
+        }
+        if (rc == -1) {
+            int err = SSL_get_error(tlsdata->ssl, rc);
+            if (err != SSL_ERROR_WANT_READ && err != SSL_ERROR_WANT_WRITE) {
+                /* error detected */
+                _openssl_log_error(rc, tlsdata->ssl, "SSL_read");
+                SNMP_FREE(tmStateRef);
+                return rc;
+            }
+        }
+        /* retry read for SSL_ERROR_WANT_READ || SSL_ERROR_WANT_WRITE */
+    } while (rc <= 0); 
+
+    DEBUGMSGTL(("tlstcp", "received %d decoded bytes from tls\n", rc));
+
+    /* log the packet */
+    DEBUGIF("tlstcp") {
+        char *str = netsnmp_tlstcp_fmtaddr(t, NULL, 0);
+        DEBUGMSGTL(("tlstcp",
+                    "recvfrom fd %d got %d bytes (from %s)\n",
+                    t->sock, rc, str));
+        free(str);
+    }
+
+    /* Other wrap-up things common to TLS and DTLS */
+    if (netsnmp_tlsbase_wrapup_recv(tmStateRef, tlsdata, opaque, olength) !=
+        SNMPERR_SUCCESS)
+        return SNMPERR_GENERR;
+
+    /* RFC5953 Section 5.1.2 step 1:
+     * 4)  The TLS Transport Model passes the transportDomain,
+       transportAddress, incomingMessage, and incomingMessageLength to
+       the Dispatcher using the receiveMessage ASI:
+    */
+
+    /* In our implementation, this is done simply by returning */
+    return rc;
+}
+
+
+
+static int
+netsnmp_tlstcp_send(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    _netsnmpTLSBaseData *tlsdata;
+    
+    DEBUGTRACETOK("tlstcp");
+
+    /* RFC5953 section 5.2: 
+      1)  If tmStateReference does not refer to a cache containing values
+      for tmTransportDomain, tmTransportAddress, tmSecurityName,
+      tmRequestedSecurityLevel, and tmSameSecurity, then increment the
+      snmpTlstmSessionInvalidCaches counter, discard the message, and
+      return the error indication in the statusInformation.  Processing
+      of this message stops.
+    */
+    /* Implementation Notes: the tmStateReference is stored in the opaque ptr */
+    if (opaque != NULL && *opaque != NULL &&
+        *olength == sizeof(netsnmp_tmStateReference)) {
+        tmStateRef = (netsnmp_tmStateReference *) *opaque;
+    } else {
+        snmp_log(LOG_ERR, "TLSTCP was called with an invalid state; possibly the wrong security model is in use.  It should be 'tsm'.\n");
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES);
+        return SNMPERR_GENERR;
+    }
+
+    /* RFC5953 section 5.2: 
+       2)  Extract the tmSessionID, tmTransportDomain, tmTransportAddress,
+       tmSecurityName, tmRequestedSecurityLevel, and tmSameSecurity
+       values from the tmStateReference.  Note: The tmSessionID value
+       may be undefined if no session exists yet over which the message
+       can be sent.
+    */
+    /* Implementation Notes:
+       - Our session will always exist by now as it's created when the
+         transport object is created. Auto-session creation is handled
+         higher in the stack.
+       - We don't "extract" per say since we just leave the data in
+         the structure.
+       - The sessionID is stored in the t->data memory pointer.
+    */
+
+    /* RFC5953 section 5.2: 
+       3)  If tmSameSecurity is true and either tmSessionID is undefined or
+           refers to a session that is no longer open then increment the
+           snmpTlstmSessionNoSessions counter, discard the message and
+           return the error indication in the statusInformation.  Processing
+           of this message stops.
+    */
+    /* Implementation Notes:
+       - We would never get here if the sessionID was either undefined
+         or different.  We tie packets directly to the transport
+         object and it could never be sent back over a different
+         transport, which is what the above text is trying to prevent.
+     */
+
+    /* RFC5953 section 5.2: 
+       4)  If tmSameSecurity is false and tmSessionID refers to a session
+           that is no longer available then an implementation SHOULD open a
+           new session using the openSession() ASI (described in greater
+           detail in step 5b).  Instead of opening a new session an
+           implementation MAY return a snmpTlstmSessionNoSessions error to
+           the calling module and stop processing of the message.
+    */
+    /* Implementation Notes:
+       - We would never get here if the sessionID was either undefined
+         or different.  We tie packets directly to the transport
+         object and it could never be sent back over a different
+         transport, which is what the above text is trying to prevent.
+       - Auto-connections are handled higher in the Net-SNMP library stack
+     */
+    
+    /* RFC5953 section 5.2: 
+       5)  If tmSessionID is undefined, then use tmTransportDomain,
+           tmTransportAddress, tmSecurityName and tmRequestedSecurityLevel
+           to see if there is a corresponding entry in the LCD suitable to
+           send the message over.
+
+           5a)  If there is a corresponding LCD entry, then this session
+                will be used to send the message.
+
+           5b)  If there is not a corresponding LCD entry, then open a
+                session using the openSession() ASI (discussed further in
+                Section 5.3.1).  Implementations MAY wish to offer message
+                buffering to prevent redundant openSession() calls for the
+                same cache entry.  If an error is returned from
+                openSession(), then discard the message, discard the
+                tmStateReference, increment the snmpTlstmSessionOpenErrors,
+                return an error indication to the calling module and stop
+                processing of the message.
+    */
+    /* Implementation Notes:
+       - We would never get here if the sessionID was either undefined
+         or different.  We tie packets directly to the transport
+         object and it could never be sent back over a different
+         transport, which is what the above text is trying to prevent.
+       - Auto-connections are handled higher in the Net-SNMP library stack
+     */
+
+    /* our session pointer is functionally t->data */
+    if (NULL == t->data) {
+        snmp_log(LOG_ERR, "netsnmp_tlstcp_send received no incoming data\n");
+        return -1;
+    }
+
+    tlsdata = t->data;
+    
+    if (tlsdata->ssl == NULL) {
+        snmp_log(LOG_ERR, "tlstcp_send was called without a SSL connection.\n");
+        return SNMPERR_GENERR;
+    }
+
+    /* If the first packet and we have no secname, then copy the
+       important securityName data into the longer-lived session
+       reference information. */
+    if ((tlsdata->flags & NETSNMP_TLSBASE_IS_CLIENT) &&
+        !tlsdata->securityName && tmStateRef && tmStateRef->securityNameLen > 0)
+        tlsdata->securityName = strdup(tmStateRef->securityName);
+        
+        
+    /* RFC5953 section 5.2: 
+       6)  Using either the session indicated by the tmSessionID if there
+           was one or the session resulting from a previous step (4 or 5),
+           pass the outgoingMessage to (D)TLS for encapsulation and
+           transmission.
+    */
+    rc = SSL_write(tlsdata->ssl, buf, size);
+    DEBUGMSGTL(("tlstcp", "wrote %d bytes\n", size));
+    if (rc < 0) {
+        _openssl_log_error(rc, tlsdata->ssl, "SSL_write");
+    }
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_tlstcp_close(netsnmp_transport *t)
+{
+    _netsnmpTLSBaseData *tlsdata;
+
+    if (NULL == t || NULL == t->data)
+        return -1;
+
+    /* RFC5953 Section 5.4.  Closing a Session
+
+       1)  Increment either the snmpTlstmSessionClientCloses or the
+           snmpTlstmSessionServerCloses counter as appropriate.
+    */
+    if (t->flags & NETSNMP_TLSBASE_IS_CLIENT)
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONCLIENTCLOSES);
+    else 
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONSERVERCLOSES);
+
+    /* RFC5953 Section 5.4.  Closing a Session
+       2)  Look up the session using the tmSessionID.
+    */
+    tlsdata = (_netsnmpTLSBaseData *) t->data;
+
+    /* RFC5953 Section 5.4.  Closing a Session
+       3)  If there is no open session associated with the tmSessionID, then
+           closeSession processing is completed.
+    */
+    /* Implementation notes: if we have a non-zero tlsdata then it's
+       always true */
+
+    /* RFC5953 Section 5.3.1: Establishing a Session as a Client
+       4)  Have (D)TLS close the specified connection.  This SHOULD include
+           sending a close_notify TLS Alert to inform the other side that
+           session cleanup may be performed.
+    */
+
+    DEBUGMSGTL(("tlstcp", "Shutting down SSL connection\n"));
+    if (tlsdata->ssl) {
+        SSL_shutdown(tlsdata->ssl);
+    }
+
+    netsnmp_tlsbase_free_tlsdata(tlsdata);
+
+    t->data = NULL;
+    return netsnmp_socketbase_close(t);
+}
+
+static int
+netsnmp_tlstcp_accept(netsnmp_transport *t)
+{
+    BIO            *accepted_bio;
+    int             rc;
+    SSL_CTX *ctx;
+    SSL     *ssl;
+    _netsnmpTLSBaseData *tlsdata = NULL;
+    
+    DEBUGMSGTL(("tlstcp", "netsnmp_tlstcp_accept called\n"));
+
+    tlsdata = (_netsnmpTLSBaseData *) t->data;
+
+    rc = BIO_do_accept(tlsdata->accept_bio);
+
+    if (rc <= 0) {
+        snmp_log(LOG_ERR, "BIO_do_accept failed\n");
+        _openssl_log_error(rc, NULL, "BIO_do_accept");
+        /* XXX: need to close the listening connection here? */
+        return -1;
+    }
+
+    tlsdata->accepted_bio = accepted_bio = BIO_pop(tlsdata->accept_bio);
+    if (!accepted_bio) {
+        snmp_log(LOG_ERR, "Failed to pop an accepted bio off the bio staack\n");
+        /* XXX: need to close the listening connection here? */
+        return -1;
+    }
+
+    /* create the OpenSSL TLS context */
+    ctx = tlsdata->ssl_context;
+
+    /* create the server's main SSL bio */
+    ssl = tlsdata->ssl = SSL_new(ctx);
+    if (!tlsdata->ssl) {
+        snmp_log(LOG_ERR, "TLSTCP: Failed to create a SSL BIO\n");
+        BIO_free(accepted_bio);
+        tlsdata->accepted_bio = NULL;
+        return -1;
+    }
+        
+    SSL_set_bio(ssl, accepted_bio, accepted_bio);
+        
+    if ((rc = SSL_accept(ssl)) <= 0) {
+        snmp_log(LOG_ERR, "TLSTCP: Failed SSL_accept\n");
+        _openssl_log_error(rc, ssl, "SSL_accept");
+        SSL_shutdown(tlsdata->ssl);
+        SSL_free(tlsdata->ssl);
+        tlsdata->accepted_bio = NULL; /* freed by SSL_free */
+        tlsdata->ssl = NULL;
+        return -1;
+    }   
+
+    /*
+     * currently netsnmp_tlsbase_wrapup_recv is where we check for
+     * algorithm compliance, but for tls we know the algorithms
+     * at this point, so we could bail earlier...
+     */
+#if 0 /* moved checks to netsnmp_tlsbase_wrapup_recv */
+    netsnmp_openssl_null_checks(tlsdata->ssl, &no_auth, NULL);
+    if (no_auth != 0) { /* null/unknown authentication */
+        /* xxx-rks: snmp_increment_statistic(STAT_???); */
+        snmp_log(LOG_ERR, "tlstcp: connection with NULL authentication\n");
+        SSL_shutdown(tlsdata->ssl);
+        SSL_free(tlsdata->ssl);
+        tlsdata->accepted_bio = NULL; /* freed by SSL_free */
+        tlsdata->ssl = NULL;
+        return -1;
+    }
+#endif
+
+    /* RFC5953 Section 5.3.2: Accepting a Session as a Server
+       A (D)TLS server should accept new session connections from any client
+       that it is able to verify the client's credentials for.  This is done
+       by authenticating the client's presented certificate through a
+       certificate path validation process (e.g.  [RFC5280]) or through
+       certificate fingerprint verification using fingerprints configured in
+       the snmpTlstmCertToTSNTable.  Afterward the server will determine the
+       identity of the remote entity using the following procedures.
+
+       The (D)TLS server identifies the authenticated identity from the
+       (D)TLS client's principal certificate using configuration information
+       from the snmpTlstmCertToTSNTable mapping table.  The (D)TLS server
+       MUST request and expect a certificate from the client and MUST NOT
+       accept SNMP messages over the (D)TLS connection until the client has
+       sent a certificate and it has been authenticated.  The resulting
+       derived tmSecurityName is recorded in the tmStateReference cache as
+       tmSecurityName.  The details of the lookup process are fully
+       described in the DESCRIPTION clause of the snmpTlstmCertToTSNTable
+       MIB object.  If any verification fails in any way (for example
+       because of failures in cryptographic verification or because of the
+       lack of an appropriate row in the snmpTlstmCertToTSNTable) then the
+       session establishment MUST fail, and the
+       snmpTlstmSessionInvalidClientCertificates object is incremented.  If
+       the session can not be opened for any reason at all, including
+       cryptographic verification failures, then the
+       snmpTlstmSessionOpenErrors counter is incremented and processing
+       stops.
+
+       Servers that wish to support multiple principals at a particular port
+       SHOULD make use of a (D)TLS extension that allows server-side
+       principal selection like the Server Name Indication extension defined
+       in Section 3.1 of [RFC4366].  Supporting this will allow, for
+       example, sending notifications to a specific principal at a given TCP
+       or UDP port.
+    */
+    /* Implementation notes:
+       - we expect fingerprints to be stored in the transport config
+       - we do not currently support mulitple principals and only offer one
+    */
+    if ((rc = netsnmp_tlsbase_verify_client_cert(ssl, tlsdata))
+        != SNMPERR_SUCCESS) {
+        /* XXX: free needed memory */
+        snmp_log(LOG_ERR, "TLSTCP: Falied checking client certificate\n");
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCLIENTCERTIFICATES);
+        SSL_shutdown(tlsdata->ssl);
+        SSL_free(tlsdata->ssl);
+        tlsdata->accepted_bio = NULL; /* freed by SSL_free */
+        tlsdata->ssl = NULL;
+        return -1;
+    }
+
+
+    /* XXX: check acceptance criteria here */
+
+    DEBUGMSGTL(("tlstcp", "accept succeeded on sock %d\n", t->sock));
+
+    /* RFC5953 Section 5.1.2 step 1, part2::
+     * If this is the first message received through this session and
+     the session does not have an assigned tlstmSessionID yet then the
+     snmpTlstmSessionAccepts counter is incremented and a
+     tlstmSessionID for the session is created.  This will only happen
+     on the server side of a connection because a client would have
+     already assigned a tlstmSessionID during the openSession()
+     invocation.  Implementations may have performed the procedures
+     described in Section 5.3.2 prior to this point or they may
+     perform them now, but the procedures described in Section 5.3.2
+     MUST be performed before continuing beyond this point.
+    */
+    /* We're taking option 2 and incrementing the session accepts here
+       rather than upon receiving the first packet */
+    snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONACCEPTS);
+
+    /* XXX: check that it returns something so we can free stuff? */
+    return BIO_get_fd(tlsdata->accepted_bio, NULL);
+}
+
+
+netsnmp_transport *
+netsnmp_tlstcp_open(netsnmp_transport *t)
+{
+    _netsnmpTLSBaseData *tlsdata;
+    BIO *bio;
+    SSL_CTX *ctx;
+    SSL *ssl;
+    int rc = 0;
+    _netsnmp_verify_info *verify_info;
+
+    netsnmp_assert_or_return(t != NULL, NULL);
+    netsnmp_assert_or_return(t->data != NULL, NULL);
+    netsnmp_assert_or_return(sizeof(_netsnmpTLSBaseData) == t->data_length,
+                             NULL);
+
+    tlsdata = t->data;
+    
+    if (tlsdata->flags & NETSNMP_TLSBASE_IS_CLIENT) {
+        /* Is the client */
+
+        /* RFC5953 Section 5.3.1:  Establishing a Session as a Client
+         *    1)  The snmpTlstmSessionOpens counter is incremented.
+         */
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENS);
+
+        /* RFC5953 Section 5.3.1:  Establishing a Session as a Client
+          2)  The client selects the appropriate certificate and cipher_suites
+              for the key agreement based on the tmSecurityName and the
+              tmRequestedSecurityLevel for the session.  For sessions being
+              established as a result of a SNMP-TARGET-MIB based operation, the
+              certificate will potentially have been identified via the
+              snmpTlstmParamsTable mapping and the cipher_suites will have to
+              be taken from system-wide or implementation-specific
+              configuration.  If no row in the snmpTlstmParamsTable exists then
+              implementations MAY choose to establish the connection using a
+              default client certificate available to the application.
+              Otherwise, the certificate and appropriate cipher_suites will
+              need to be passed to the openSession() ASI as supplemental
+              information or configured through an implementation-dependent
+              mechanism.  It is also implementation-dependent and possibly
+              policy-dependent how tmRequestedSecurityLevel will be used to
+              influence the security capabilities provided by the (D)TLS
+              connection.  However this is done, the security capabilities
+              provided by (D)TLS MUST be at least as high as the level of
+              security indicated by the tmRequestedSecurityLevel parameter.
+              The actual security level of the session is reported in the
+              tmStateReference cache as tmSecurityLevel.  For (D)TLS to provide
+              strong authentication, each principal acting as a command
+              generator SHOULD have its own certificate.
+        */
+        /*
+          Implementation notes: we do most of this in the
+          sslctx_client_setup The transport should have been
+          f_config()ed with the proper fingerprints to use (which is
+          stored in tlsdata), or we'll use the default identity
+          fingerprint if that can be found.
+        */
+
+        /* XXX: check securityLevel and ensure no NULL fingerprints are used */
+
+        /* set up the needed SSL context */
+        tlsdata->ssl_context = ctx =
+            sslctx_client_setup(TLSv1_method(), tlsdata);
+        if (!ctx) {
+            snmp_log(LOG_ERR, "failed to create TLS context\n");
+            return NULL;
+        }
+
+        /* RFC5953 Section 5.3.1:  Establishing a Session as a Client
+           3)  Using the destTransportDomain and destTransportAddress values,
+               the client will initiate the (D)TLS handshake protocol to
+               establish session keys for message integrity and encryption.
+        */
+        /* Implementation note:
+           The transport domain and address are pre-processed by this point
+        */
+
+        /* Create a BIO connection for it */
+        DEBUGMSGTL(("tlstcp", "connecting to tlstcp %s\n",
+		    tlsdata->addr_string));
+        t->remote = (void *) strdup(tlsdata->addr_string);
+        t->remote_length = strlen(tlsdata->addr_string) + 1;
+
+        bio = BIO_new_connect(tlsdata->addr_string);
+
+        /* RFC5953 Section 5.3.1:  Establishing a Session as a Client
+           3) continued:
+              If the attempt to establish a session is unsuccessful, then
+              snmpTlstmSessionOpenErrors is incremented, an error indication is
+              returned, and processing stops.
+        */
+
+        if (NULL == bio) {
+            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;
+        }
+            
+
+        /* Tell the BIO to actually do the connection */
+        if ((rc = BIO_do_connect(bio)) <= 0) {
+            snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
+            snmp_log(LOG_ERR, "tlstcp: failed to connect to %s\n",
+		     tlsdata->addr_string);
+            _openssl_log_error(rc, NULL, "BIO_do_connect");
+            BIO_free(bio);
+            SNMP_FREE(tlsdata);
+            SNMP_FREE(t);
+            return NULL;
+        }
+
+        /* Create the SSL layer on top of the socket bio */
+        ssl = tlsdata->ssl = SSL_new(ctx);
+        if (NULL == ssl) {
+            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;
+        }
+        
+        /* Bind the SSL layer to the BIO */ 
+        SSL_set_bio(ssl, bio, bio);
+        SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
+
+        verify_info = SNMP_MALLOC_TYPEDEF(_netsnmp_verify_info);
+        if (NULL == verify_info) {
+            snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONOPENERRORS);
+            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;
+        }
+
+        SSL_set_ex_data(ssl, tls_get_verify_info_index(), verify_info);
+
+        /* Then have SSL do it's connection over the BIO */
+        if ((rc = SSL_connect(ssl)) <= 0) {
+            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;
+        }
+
+        /* RFC5953 Section 5.3.1: Establishing a Session as a Client
+           3) continued:
+              If the session failed to open because the presented
+              server certificate was unknown or invalid then the
+              snmpTlstmSessionUnknownServerCertificate or
+              snmpTlstmSessionInvalidServerCertificates MUST be
+              incremented and a snmpTlstmServerCertificateUnknown or
+              snmpTlstmServerInvalidCertificate notification SHOULD be
+              sent as appropriate.  Reasons for server certificate
+              invalidation includes, but is not limited to,
+              cryptographic validation failures and an unexpected
+              presented certificate identity.
+        */
+
+        /* RFC5953 Section 5.3.1: Establishing a Session as a Client
+           4)  The (D)TLS client MUST then verify that the (D)TLS server's
+               presented certificate is the expected certificate.  The (D)TLS
+               client MUST NOT transmit SNMP messages until the server
+               certificate has been authenticated, the client certificate has
+               been transmitted and the TLS connection has been fully
+               established.
+
+               If the connection is being established from configuration based
+               on SNMP-TARGET-MIB configuration, then the snmpTlstmAddrTable
+               DESCRIPTION clause describes how the verification is done (using
+               either a certificate fingerprint, or an identity authenticated
+               via certification path validation).
+
+               If the connection is being established for reasons other than
+               configuration found in the SNMP-TARGET-MIB then configuration and
+               procedures outside the scope of this document should be followed.
+               Configuration mechanisms SHOULD be similar in nature to those
+               defined in the snmpTlstmAddrTable to ensure consistency across
+               management configuration systems.  For example, a command-line
+               tool for generating SNMP GETs might support specifying either the
+               server's certificate fingerprint or the expected host name as a
+               command line argument.
+        */
+
+        /* Implementation notes:
+           - All remote certificate fingerprints are expected to be
+             stored in the transport's config information.  This is
+             true both for CLI clients and TARGET-MIB sessions.
+           - netsnmp_tlsbase_verify_server_cert implements these checks
+        */
+        if (netsnmp_tlsbase_verify_server_cert(ssl, tlsdata) != SNMPERR_SUCCESS) {
+            /* XXX: unknown vs invalid; two counters */
+            snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONUNKNOWNSERVERCERTIFICATE);
+            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;
+        }
+
+        /* RFC5953 Section 5.3.1: Establishing a Session as a Client
+           5)  (D)TLS provides assurance that the authenticated identity has
+               been signed by a trusted configured certification authority.  If
+               verification of the server's certificate fails in any way (for
+               example because of failures in cryptographic verification or the
+               presented identity did not match the expected named entity) then
+               the session establishment MUST fail, the
+               snmpTlstmSessionInvalidServerCertificates object is incremented.
+               If the session can not be opened for any reason at all, including
+               cryptographic verification failures, then the
+               snmpTlstmSessionOpenErrors counter is incremented and processing
+               stops.
+
+        */
+        /* XXX: add snmpTlstmSessionInvalidServerCertificates on
+           crypto failure */
+
+        /* RFC5953 Section 5.3.1: Establishing a Session as a Client
+           6)  The TLSTM-specific session identifier (tlstmSessionID) is set in
+           the tmSessionID of the tmStateReference passed to the TLS
+           Transport Model to indicate that the session has been established
+           successfully and to point to a specific (D)TLS connection for
+           future use.  The tlstmSessionID is also stored in the LCD for
+           later lookup during processing of incoming messages
+           (Section 5.1.2).
+        */
+        /* Implementation notes:
+           - the tlsdata pointer is used as our session identifier, as
+             noted in the netsnmp_tlstcp_recv() function comments.
+        */
+
+        t->sock = BIO_get_fd(bio, NULL);
+
+    } else {
+        /* Is the server */
+        
+        /* Create the socket bio */
+        DEBUGMSGTL(("tlstcp", "listening on tlstcp port %s\n",
+		    tlsdata->addr_string));
+        tlsdata->accept_bio = BIO_new_accept(tlsdata->addr_string);
+        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;
+        }
+
+        /* 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;
+        }
+
+        /* create the OpenSSL TLS context */
+        tlsdata->ssl_context =
+            sslctx_server_setup(TLSv1_method());
+
+        t->sock = BIO_get_fd(tlsdata->accept_bio, NULL);
+        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+    }
+    return t;
+}
+
+/*
+ * Create a TLS-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_tlstcp_transport(const char *addr_string, int isserver)
+{
+    netsnmp_transport *t = NULL;
+    _netsnmpTLSBaseData *tlsdata;
+    char *cp;
+    char buf[SPRINT_MAX_LEN];
+    
+    /* 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)))
+        return NULL;
+
+    if (!isserver)
+        t->flags |= NETSNMP_TLSBASE_IS_CLIENT;
+
+    tlsdata->addr_string = strdup(addr_string);
+
+    /* see if we can extract the remote hostname */
+    if (!isserver && tlsdata && addr_string) {
+        /* search for a : */
+        if (NULL != (cp = strrchr(addr_string, ':'))) {
+            sprintf(buf, "%.*s",
+                    (int) SNMP_MIN(cp - addr_string, sizeof(buf) - 1),
+                    addr_string);
+        } else {
+            /* else the entire spec is a host name only */
+            strlcpy(buf, addr_string, sizeof(buf));
+        }
+        tlsdata->their_hostname = strdup(buf);
+    }
+
+    t->data = tlsdata;
+    t->data_length = sizeof(_netsnmpTLSBaseData);
+
+    /*
+     * Set Domain
+     */
+    t->domain = netsnmpTLSTCPDomain;                                     
+    t->domain_length = netsnmpTLSTCPDomain_len;     
+
+    /*
+     * 16-bit length field, 8 byte TLS header, 20 byte IPv4 header  
+     */
+
+    t->msgMaxSize      = 0xffff - 8 - 20;
+    t->f_recv          = netsnmp_tlstcp_recv;
+    t->f_send          = netsnmp_tlstcp_send;
+    t->f_open          = netsnmp_tlstcp_open;
+    t->f_close         = netsnmp_tlstcp_close;
+    t->f_accept        = netsnmp_tlstcp_accept;
+    t->f_copy          = netsnmp_tlstcp_copy;
+    t->f_config        = netsnmp_tlsbase_config;
+    t->f_setup_session = netsnmp_tlsbase_session_init;
+    t->f_fmtaddr       = netsnmp_tlstcp_fmtaddr;
+
+    t->flags |= NETSNMP_TRANSPORT_FLAG_TUNNELED | NETSNMP_TRANSPORT_FLAG_STREAM;
+
+    return t;
+}
+
+netsnmp_transport *
+netsnmp_tlstcp_create_tstring(const char *str, int local,
+                               const char *default_target)
+{
+    char buf[SPRINT_MAX_LEN];
+
+    if (str == NULL || *str == '\0')
+        str = default_target + 1; /* drop the leading : */
+    else if (!strchr(str, ':')) {
+        /* it's either :port or :address.  Try to guess which. */
+        const char *cp;
+        int isport = 1;
+        for(cp = str; *cp != '\0'; cp++) {
+            /* if ALL numbers, it must be just a port */
+            /* if it contains anything else, assume a host or ip address */
+            if (!isdigit(0xFF & *cp)) {
+                isport = 0;
+                break;
+            }
+        }
+        if (isport) {
+            /* Just :NNN can be passed to openssl */
+            snprintf(buf, sizeof(buf)-1, "0.0.0.0:%s", str);
+        } else {
+            /* add the default port */
+            snprintf(buf, sizeof(buf)-1, "%s%s", str, default_target);
+        }
+        str = buf;
+    }
+    return netsnmp_tlstcp_transport(str, local);
+}
+
+
+netsnmp_transport *
+netsnmp_tlstcp_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    char buf[SPRINT_MAX_LEN];
+
+    /* ensure buf is big enough */
+    if (o_len > SPRINT_MAX_LEN - 1)
+        return NULL;
+
+    memcpy(buf, o, o_len);
+    buf[o_len] = '\0';
+
+    return netsnmp_tlstcp_transport(buf, local);
+}
+
+void
+netsnmp_tlstcp_ctor(void)
+{
+    DEBUGMSGTL(("tlstcp", "registering TLS constructor\n"));
+
+    /* config settings */
+
+    tlstcpDomain.name = netsnmpTLSTCPDomain;
+    tlstcpDomain.name_length = netsnmpTLSTCPDomain_len;
+    tlstcpDomain.prefix = (const char**)calloc(3, sizeof(char *));
+    tlstcpDomain.prefix[0] = "tlstcp";
+    tlstcpDomain.prefix[1] = "tls";
+
+    tlstcpDomain.f_create_from_tstring     = NULL;
+    tlstcpDomain.f_create_from_tstring_new = netsnmp_tlstcp_create_tstring;
+    tlstcpDomain.f_create_from_ostring     = netsnmp_tlstcp_create_ostring;
+
+    netsnmp_tdomain_register(&tlstcpDomain);
+}
diff --git a/snmplib/transports/snmpUDPBaseDomain.c b/snmplib/transports/snmpUDPBaseDomain.c
new file mode 100644
index 0000000..5cb28d6
--- /dev/null
+++ b/snmplib/transports/snmpUDPBaseDomain.c
@@ -0,0 +1,519 @@
+/* UDP base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#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
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+#ifdef WIN32
+#include <mswsock.h>
+#endif
+#include <errno.h>
+
+#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>
+#include <net-snmp/library/default_store.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/snmp_assert.h>
+
+#ifndef  MSG_DONTWAIT
+#define MSG_DONTWAIT 0
+#endif
+
+#ifndef  MSG_NOSIGNAL
+#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)
+{
+#ifdef  SO_BSDCOMPAT
+    /*
+     * Patch for Linux.  Without this, UDP packets that fail get an ICMP
+     * response.  Linux turns the failed ICMP response into an error message
+     * and return value, unlike all other OS's.  
+     */
+    if (0 == netsnmp_os_prematch("Linux","2.4"))
+    {
+        int             one = 1;
+        DEBUGMSGTL(("socket:option", "setting socket option SO_BSDCOMPAT\n"));
+        setsockopt(fd, SOL_SOCKET, SO_BSDCOMPAT, (void *) &one,
+                   sizeof(one));
+    }
+#endif                          /*SO_BSDCOMPAT */
+    /*
+     * SO_REUSEADDR will allow multiple apps to open the same port at
+     * the same time. Only the last one to open the socket will get
+     * data. Obviously, for an agent, this is a bad thing. There should
+     * only be one listener.
+     */
+#ifdef ALLOW_PORT_HIJACKING
+#ifdef  SO_REUSEADDR
+    /*
+     * Allow the same port to be specified multiple times without failing.
+     *    (useful for a listener)
+     */
+    {
+        int             one = 1;
+        DEBUGMSGTL(("socket:option", "setting socket option SO_REUSEADDR\n"));
+        setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *) &one,
+                   sizeof(one));
+    }
+#endif                          /*SO_REUSEADDR */
+#endif
+
+    /*
+     * Try to set the send and receive buffers to a reasonably large value, so
+     * that we can send and receive big PDUs (defaults to 8192 bytes (!) on
+     * Solaris, for instance).  Don't worry too much about errors -- just
+     * plough on regardless.  
+     */
+    netsnmp_sock_buffer_set(fd, SO_SNDBUF, local, 0);
+    netsnmp_sock_buffer_set(fd, SO_RCVBUF, local, 0);
+}
+
+#if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
+# if defined(IP_RECVDSTADDR) && !defined(IP_SENDSRCADDR)
+#  define IP_SENDSRCADDR IP_RECVDSTADDR /* DragonFly BSD */
+# endif
+
+#define netsnmp_udpbase_recvfrom_sendto_defined
+
+enum {
+#if defined(HAVE_IP_PKTINFO)
+    cmsg_data_size = sizeof(struct in_pktinfo)
+#elif defined(HAVE_IP_RECVDSTADDR)
+    cmsg_data_size = sizeof(struct in_addr)
+#endif
+};
+
+#ifdef WIN32
+#ifndef WSAID_WSASENDMSG
+#define WSAID_WSASENDMSG \
+    {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}}
+typedef INT (WINAPI * LPFN_WSASENDMSG)(SOCKET, LPWSAMSG, DWORD, LPDWORD,
+                                       LPWSAOVERLAPPED,
+                                       LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+#endif
+
+static LPFN_WSARECVMSG pfWSARecvMsg;
+static LPFN_WSASENDMSG pfWSASendMsg;
+#endif
+
+int
+netsnmp_udpbase_recvfrom(int s, void *buf, int len, struct sockaddr *from,
+                         socklen_t *fromlen, struct sockaddr *dstip,
+                         socklen_t *dstlen, int *if_index)
+{
+    int r;
+#if !defined(WIN32)
+    struct iovec iov;
+    char cmsg[CMSG_SPACE(cmsg_data_size)];
+    struct cmsghdr *cm;
+    struct msghdr msg;
+
+    iov.iov_base = buf;
+    iov.iov_len = len;
+
+    memset(&msg, 0, sizeof msg);
+    msg.msg_name = from;
+    msg.msg_namelen = *fromlen;
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    msg.msg_control = &cmsg;
+    msg.msg_controllen = sizeof(cmsg);
+
+    r = recvmsg(s, &msg, MSG_DONTWAIT);
+#else /* !defined(WIN32) */
+    WSABUF wsabuf;
+    char cmsg[WSA_CMSG_SPACE(sizeof(struct in_pktinfo))];
+    WSACMSGHDR *cm;
+    WSAMSG msg;
+    DWORD bytes_received;
+
+    wsabuf.buf = buf;
+    wsabuf.len = len;
+
+    msg.name = from;
+    msg.namelen = *fromlen;
+    msg.lpBuffers = &wsabuf;
+    msg.dwBufferCount = 1;
+    msg.Control.len = sizeof(cmsg);
+    msg.Control.buf = cmsg;
+    msg.dwFlags = 0;
+
+    if (pfWSARecvMsg) {
+        r = pfWSARecvMsg(s, &msg, &bytes_received, NULL, NULL) == 0 ?
+            bytes_received : -1;
+        *fromlen = msg.namelen;
+    } else {
+        r = recvfrom(s, buf, len, MSG_DONTWAIT, from, fromlen);
+    }
+#endif /* !defined(WIN32) */
+
+    if (r == -1) {
+        return -1;
+    }
+
+    DEBUGMSGTL(("udpbase:recv", "got source addr: %s\n",
+                inet_ntoa(((struct sockaddr_in *)from)->sin_addr)));
+
+    {
+        /* Get the local port number for use in diagnostic messages */
+        int r2 = getsockname(s, dstip, dstlen);
+        netsnmp_assert(r2 == 0);
+    }
+
+#if !defined(WIN32)
+    for (cm = CMSG_FIRSTHDR(&msg); cm != NULL; cm = CMSG_NXTHDR(&msg, cm)) {
+#if defined(HAVE_IP_PKTINFO)
+        if (cm->cmsg_level == SOL_IP && cm->cmsg_type == IP_PKTINFO) {
+            struct in_pktinfo* src = (struct in_pktinfo *)CMSG_DATA(cm);
+            netsnmp_assert(dstip->sa_family == AF_INET);
+            ((struct sockaddr_in*)dstip)->sin_addr = src->ipi_addr;
+            *if_index = src->ipi_ifindex;
+            DEBUGMSGTL(("udpbase:recv",
+                        "got destination (local) addr %s, iface %d\n",
+                        inet_ntoa(src->ipi_addr), *if_index));
+        }
+#elif defined(HAVE_IP_RECVDSTADDR)
+        if (cm->cmsg_level == IPPROTO_IP && cm->cmsg_type == IP_RECVDSTADDR) {
+            struct in_addr* src = (struct in_addr *)CMSG_DATA(cm);
+            ((struct sockaddr_in*)dstip)->sin_addr = *src;
+            DEBUGMSGTL(("netsnmp_udp", "got destination (local) addr %s\n",
+                        inet_ntoa(*src)));
+        }
+#endif
+    }
+#else /* !defined(WIN32) */
+    for (cm = WSA_CMSG_FIRSTHDR(&msg); cm; cm = WSA_CMSG_NXTHDR(&msg, cm)) {
+        if (cm->cmsg_level == IPPROTO_IP && cm->cmsg_type == IP_PKTINFO) {
+            struct in_pktinfo* src = (struct in_pktinfo *)WSA_CMSG_DATA(cm);
+            netsnmp_assert(dstip->sa_family == AF_INET);
+            ((struct sockaddr_in*)dstip)->sin_addr = src->ipi_addr;
+            *if_index = src->ipi_ifindex;
+            DEBUGMSGTL(("udpbase:recv",
+                        "got destination (local) addr %s, iface %d\n",
+                        inet_ntoa(src->ipi_addr), *if_index));
+        }
+    }
+#endif /* !defined(WIN32) */
+    return r;
+}
+
+int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index,
+                           struct sockaddr *remote, void *data, int len)
+{
+#if !defined(WIN32)
+    struct iovec iov;
+    struct msghdr m = { 0 };
+    char          cmsg[CMSG_SPACE(cmsg_data_size)];
+    int           rc;
+
+    iov.iov_base = data;
+    iov.iov_len  = len;
+
+    m.msg_name		= remote;
+    m.msg_namelen	= sizeof(struct sockaddr_in);
+    m.msg_iov		= &iov;
+    m.msg_iovlen	= 1;
+    m.msg_flags		= 0;
+
+    if (srcip && srcip->s_addr != INADDR_ANY) {
+        struct cmsghdr *cm;
+
+        DEBUGMSGTL(("udpbase:sendto", "sending from %s\n", inet_ntoa(*srcip)));
+
+        memset(cmsg, 0, sizeof(cmsg));
+
+        m.msg_control    = &cmsg;
+        m.msg_controllen = sizeof(cmsg);
+
+        cm = CMSG_FIRSTHDR(&m);
+        cm->cmsg_len = CMSG_LEN(cmsg_data_size);
+
+#if defined(HAVE_IP_PKTINFO)
+        cm->cmsg_level = SOL_IP;
+        cm->cmsg_type = IP_PKTINFO;
+
+        {
+            struct in_pktinfo ipi;
+
+            memset(&ipi, 0, sizeof(ipi));
+            /*
+             * Except in the case of responding
+             * to a broadcast, setting the ifindex
+             * when responding results in incorrect
+             * behavior of changing the source address
+             * that the manager sees the response
+             * come from.
+             */
+            ipi.ipi_ifindex = 0;
+#if defined(cygwin)
+            ipi.ipi_addr.s_addr = srcip->s_addr;
+#else
+            ipi.ipi_spec_dst.s_addr = srcip->s_addr;
+#endif
+            memcpy(CMSG_DATA(cm), &ipi, sizeof(ipi));
+        }
+
+        rc = sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
+        if (rc >= 0 || errno != EINVAL)
+            return rc;
+
+        /*
+         * The error might be caused by broadcast srcip (i.e. we're responding
+         * to a broadcast request) - sendmsg does not like it. Try to resend it
+         * using the interface on which it was received
+         */
+
+        DEBUGMSGTL(("udpbase:sendto", "re-sending on iface %d\n", if_index));
+
+        {
+            struct in_pktinfo ipi;
+
+            memset(&ipi, 0, sizeof(ipi));
+            ipi.ipi_ifindex = if_index;
+#if defined(cygwin)
+            ipi.ipi_addr.s_addr = INADDR_ANY;
+#else
+            ipi.ipi_spec_dst.s_addr = INADDR_ANY;
+#endif
+            memcpy(CMSG_DATA(cm), &ipi, sizeof(ipi));
+        }
+#elif defined(IP_SENDSRCADDR)
+        cm->cmsg_level = IPPROTO_IP;
+        cm->cmsg_type = IP_SENDSRCADDR;
+        memcpy((struct in_addr *)CMSG_DATA(cm), srcip, sizeof(struct in_addr));
+#endif
+        rc = sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
+        if (rc >= 0 || errno != EINVAL)
+            return rc;
+
+        DEBUGMSGTL(("udpbase:sendto", "re-sending without source address\n"));
+        m.msg_control = NULL;
+        m.msg_controllen = 0;
+    }
+
+    return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
+#else /* !defined(WIN32) */
+    WSABUF        wsabuf;
+    WSAMSG        m;
+    char          cmsg[WSA_CMSG_SPACE(sizeof(struct in_pktinfo))];
+    DWORD         bytes_sent;
+    int           rc;
+
+    wsabuf.buf = data;
+    wsabuf.len = len;
+
+    memset(&m, 0, sizeof(m));
+    m.name          = remote;
+    m.namelen       = sizeof(struct sockaddr_in);
+    m.lpBuffers     = &wsabuf;
+    m.dwBufferCount = 1;
+
+    if (pfWSASendMsg && srcip && srcip->s_addr != INADDR_ANY) {
+        WSACMSGHDR *cm;
+
+        DEBUGMSGTL(("udpbase:sendto", "sending from [%d] %s\n", if_index,
+                    inet_ntoa(*srcip)));
+
+        memset(cmsg, 0, sizeof(cmsg));
+
+        m.Control.buf = cmsg;
+        m.Control.len = sizeof(cmsg);
+
+        cm = WSA_CMSG_FIRSTHDR(&m);
+        cm->cmsg_len = WSA_CMSG_LEN(cmsg_data_size);
+        cm->cmsg_level = IPPROTO_IP;
+        cm->cmsg_type = IP_PKTINFO;
+
+        {
+            struct in_pktinfo ipi = { 0 };
+            ipi.ipi_ifindex = if_index;
+            ipi.ipi_addr.s_addr = srcip->s_addr;
+            memcpy(WSA_CMSG_DATA(cm), &ipi, sizeof(ipi));
+        }
+
+        rc = pfWSASendMsg(fd, &m, 0, &bytes_sent, NULL, NULL);
+        if (rc == 0)
+            return bytes_sent;
+        DEBUGMSGTL(("udpbase:sendto", "sending from [%d] %s failed: %d\n",
+                    if_index, inet_ntoa(*srcip), WSAGetLastError()));
+    }
+    rc = sendto(fd, data, len, 0, remote, sizeof(struct sockaddr));
+    return rc;
+#endif /* !defined(WIN32) */
+}
+#endif /* HAVE_IP_PKTINFO || HAVE_IP_RECVDSTADDR */
+
+/*
+ * You can write something into opaque that will subsequently get passed back 
+ * to your send function if you like.  For instance, you might want to
+ * remember where a PDU came from, so that you can send a reply there...  
+ */
+
+int
+netsnmp_udpbase_recv(netsnmp_transport *t, void *buf, int size,
+                     void **opaque, int *olength)
+{
+    int             rc = -1;
+    socklen_t       fromlen = sizeof(struct sockaddr);
+    netsnmp_indexed_addr_pair *addr_pair = NULL;
+    struct sockaddr *from;
+
+    if (t != NULL && t->sock >= 0) {
+        addr_pair = (netsnmp_indexed_addr_pair *) malloc(sizeof(netsnmp_indexed_addr_pair));
+        if (addr_pair == NULL) {
+            *opaque = NULL;
+            *olength = 0;
+            return -1;
+        } else {
+            memset(addr_pair, 0, sizeof(netsnmp_indexed_addr_pair));
+            from = (struct sockaddr *) &(addr_pair->remote_addr);
+        }
+
+	while (rc < 0) {
+#ifdef netsnmp_udpbase_recvfrom_sendto_defined
+            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 /* netsnmp_udpbase_recvfrom_sendto_defined */
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+
+        if (rc >= 0) {
+            DEBUGIF("netsnmp_udp") {
+                char *str = netsnmp_udp_fmtaddr(
+                    NULL, addr_pair, sizeof(netsnmp_indexed_addr_pair));
+                DEBUGMSGTL(("netsnmp_udp",
+                            "recvfrom fd %d got %d bytes (from %s)\n",
+                            t->sock, rc, str));
+                free(str);
+            }
+        } else {
+            DEBUGMSGTL(("netsnmp_udp", "recvfrom fd %d err %d (\"%s\")\n",
+                        t->sock, errno, strerror(errno)));
+        }
+        *opaque = (void *)addr_pair;
+        *olength = sizeof(netsnmp_indexed_addr_pair);
+    }
+    return rc;
+}
+
+
+
+int
+netsnmp_udpbase_send(netsnmp_transport *t, void *buf, int size,
+                     void **opaque, int *olength)
+{
+    int rc = -1;
+    netsnmp_indexed_addr_pair *addr_pair = NULL;
+    struct sockaddr *to = NULL;
+
+    if (opaque != NULL && *opaque != NULL &&
+        *olength == sizeof(netsnmp_indexed_addr_pair)) {
+        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);
+
+    if (to != NULL && t != NULL && t->sock >= 0) {
+        DEBUGIF("netsnmp_udp") {
+            char *str = netsnmp_udp_fmtaddr(NULL, (void *) addr_pair,
+                                            sizeof(netsnmp_indexed_addr_pair));
+            DEBUGMSGTL(("netsnmp_udp", "send %d bytes from %p to %s on fd %d\n",
+                        size, buf, str, t->sock));
+            free(str);
+        }
+	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->if_index : 0, to, buf, size);
+#else
+            rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
+#endif /* netsnmp_udpbase_recvfrom_sendto_defined */
+	    if (rc < 0 && errno != EINTR) {
+                DEBUGMSGTL(("netsnmp_udp", "sendto error, rc %d (errno %d)\n",
+                            rc, errno));
+		break;
+	    }
+	}
+    }
+    return rc;
+}
+
+void
+netsnmp_udp_base_ctor(void)
+{
+#if defined(WIN32) && defined(HAVE_IP_PKTINFO)
+    SOCKET s = socket(AF_INET, SOCK_DGRAM, 0);
+    GUID WSARecvMsgGuid = WSAID_WSARECVMSG;
+    GUID WSASendMsgGuid = WSAID_WSASENDMSG;
+    DWORD nbytes;
+    int result;
+
+    netsnmp_assert(s != SOCKET_ERROR);
+    /* WSARecvMsg(): Windows XP / Windows Server 2003 and later */
+    result = WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER,
+                      &WSARecvMsgGuid, sizeof(WSARecvMsgGuid),
+                      &pfWSARecvMsg, sizeof(pfWSARecvMsg), &nbytes, NULL, NULL);
+    if (result == SOCKET_ERROR)
+        DEBUGMSGTL(("netsnmp_udp", "WSARecvMsg() not found (errno %ld)\n",
+                    WSAGetLastError()));
+
+    /* WSASendMsg(): Windows Vista / Windows Server 2008 and later */
+    result = WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER,
+                      &WSASendMsgGuid, sizeof(WSASendMsgGuid),
+                      &pfWSASendMsg, sizeof(pfWSASendMsg), &nbytes, NULL, NULL);
+    if (result == SOCKET_ERROR)
+        DEBUGMSGTL(("netsnmp_udp", "WSASendMsg() not found (errno %ld)\n",
+                    WSAGetLastError()));
+
+    closesocket(s);
+#endif
+}
diff --git a/snmplib/transports/snmpUDPDomain.c b/snmplib/transports/snmpUDPDomain.c
new file mode 100644
index 0000000..7fa2efd
--- /dev/null
+++ b/snmplib/transports/snmpUDPDomain.c
@@ -0,0 +1,521 @@
+/* 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 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.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#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>
+
+#include "inet_ntop.h"
+#include "inet_pton.h"
+
+#ifndef INADDR_NONE
+#define INADDR_NONE	-1
+#endif
+
+#ifndef INET_ADDRSTRLEN
+#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;
+
+/*
+ * needs to be in sync with the definitions in snmplib/snmpTCPDomain.c 
+ * and perl/agent/agent.xs 
+ */
+typedef netsnmp_indexed_addr_pair netsnmp_udp_addr_pair;
+
+/*
+ * not static, since snmpUDPIPv6Domain needs it, but not public, either.
+ * (ie don't put it in a public header.)
+ */
+void _netsnmp_udp_sockopt_set(int fd, int server);
+int
+netsnmp_sockaddr_in2(struct sockaddr_in *addr,
+                     const char *inpeername, const char *default_target);
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+char *
+netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    return netsnmp_ipv4_fmtaddr("UDP", t, data, len);
+}
+
+
+#if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
+
+int netsnmp_udp_recvfrom(int s, void *buf, int len, struct sockaddr *from, socklen_t *fromlen, struct sockaddr *dstip, socklen_t *dstlen, int *if_index)
+{
+    /** udpiv4 just calls udpbase. should we skip directly to there? */
+    return netsnmp_udpipv4_recvfrom(s, buf, len, from, fromlen, dstip, dstlen,
+                                    if_index);
+}
+
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, int if_index, struct sockaddr *remote,
+                void *data, int len)
+{
+    /** udpiv4 just calls udpbase. should we skip directly to there? */
+    return netsnmp_udpipv4_sendto(fd, srcip, if_index, remote, data, len);
+}
+#endif /* HAVE_IP_PKTINFO || HAVE_IP_RECVDSTADDR */
+
+/*
+ * Open a UDP-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_udp_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+    t = netsnmp_udpipv4base_transport(addr, local);
+    if (NULL == t) {
+        return NULL;
+    }
+
+    /*
+     * Set Domain
+     */
+
+    t->domain = netsnmpUDPDomain;
+    t->domain_length = netsnmpUDPDomain_len;
+
+    /*
+     * 16-bit length field, 8 byte UDP header, 20 byte IPv4 header  
+     */
+
+    t->msgMaxSize = 0xffff - 8 - 20;
+    t->f_recv     = netsnmp_udpbase_recv;
+    t->f_send     = netsnmp_udpbase_send;
+    t->f_close    = netsnmp_socketbase_close;
+    t->f_accept   = NULL;
+    t->f_fmtaddr  = netsnmp_udp_fmtaddr;
+
+    return t;
+}
+
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+/*
+ * The following functions provide the "com2sec" configuration token
+ * functionality for compatibility.
+ */
+
+#define EXAMPLE_NETWORK		"NETWORK"
+#define EXAMPLE_COMMUNITY	"COMMUNITY"
+
+typedef struct com2SecEntry_s {
+    const char *secName;
+    const char *contextName;
+    struct com2SecEntry_s *next;
+    in_addr_t   network;
+    in_addr_t   mask;
+    const char  community[1];
+} com2SecEntry;
+
+static com2SecEntry   *com2SecList = NULL, *com2SecListLast = NULL;
+
+void
+netsnmp_udp_parse_security(const char *token, char *param)
+{
+    char            secName[VACMSTRINGLEN + 1];
+    size_t          secNameLen;
+    char            contextName[VACMSTRINGLEN + 1];
+    size_t          contextNameLen;
+    char            community[COMMUNITY_MAX_LEN + 1];
+    size_t          communityLen;
+    char            source[270]; /* dns-name(253)+/(1)+mask(15)+\0(1) */
+    struct in_addr  network, mask;
+
+    /*
+     * Get security, source address/netmask and community strings.
+     */
+
+    param = copy_nword( param, secName, sizeof(secName));
+    if (strcmp(secName, "-Cn") == 0) {
+        if (!param) {
+            config_perror("missing CONTEXT_NAME parameter");
+            return;
+        }
+        param = copy_nword( param, contextName, sizeof(contextName));
+        contextNameLen = strlen(contextName) + 1;
+        if (contextNameLen > VACMSTRINGLEN) {
+            config_perror("context name too long");
+            return;
+        }
+        if (!param) {
+            config_perror("missing NAME parameter");
+            return;
+        }
+        param = copy_nword( param, secName, sizeof(secName));
+    } else {
+        contextNameLen = 0;
+    }
+
+    secNameLen = strlen(secName) + 1;
+    if (secNameLen == 1) {
+        config_perror("empty NAME parameter");
+        return;
+    } else if (secNameLen > VACMSTRINGLEN) {
+        config_perror("security name too long");
+        return;
+    }
+
+    if (!param) {
+        config_perror("missing SOURCE parameter");
+        return;
+    }
+    param = copy_nword( param, source, sizeof(source));
+    if (source[0] == '\0') {
+        config_perror("empty SOURCE parameter");
+        return;
+    }
+    if (strncmp(source, EXAMPLE_NETWORK, strlen(EXAMPLE_NETWORK)) == 0) {
+        config_perror("example config NETWORK not properly configured");
+        return;
+    }
+
+    if (!param) {
+        config_perror("missing COMMUNITY parameter");
+        return;
+    }
+    param = copy_nword( param, community, sizeof(community));
+    if (community[0] == '\0') {
+        config_perror("empty COMMUNITY parameter");
+        return;
+    }
+    communityLen = strlen(community) + 1;
+    if (communityLen >= COMMUNITY_MAX_LEN) {
+        config_perror("community name too long");
+        return;
+    }
+    if (communityLen == sizeof(EXAMPLE_COMMUNITY) &&
+        memcmp(community, EXAMPLE_COMMUNITY, sizeof(EXAMPLE_COMMUNITY)) == 0) {
+        config_perror("example config COMMUNITY not properly configured");
+        return;
+    }
+
+    /* Deal with the "default" case first. */
+    if (strcmp(source, "default") == 0) {
+        network.s_addr = 0;
+        mask.s_addr = 0;
+    } else {
+        /* Split the source/netmask parts */
+        char *strmask = strchr(source, '/');
+        if (strmask != NULL)
+            /* Mask given. */
+            *strmask++ = '\0';
+
+        /* Try interpreting as a dotted quad. */
+        if (inet_pton(AF_INET, source, &network) == 0) {
+            /* Nope, wasn't a dotted quad.  Must be a hostname. */
+            int ret = netsnmp_gethostbyname_v4(source, &network.s_addr);
+            if (ret < 0) {
+                config_perror("cannot resolve source hostname");
+                return;
+            }
+        }
+
+        /* Now work out the mask. */
+        if (strmask == NULL || *strmask == '\0') {
+            /* No mask was given. Assume /32 */
+            mask.s_addr = (in_addr_t)(~0UL);
+        } else {
+            /* Try to interpret mask as a "number of 1 bits". */
+            char* cp;
+            long maskLen = strtol(strmask, &cp, 10);
+            if (*cp == '\0') {
+                if (0 < maskLen && maskLen <= 32)
+                    mask.s_addr = htonl((in_addr_t)(~0UL << (32 - maskLen)));
+                else if (maskLen == 0)
+                    mask.s_addr = 0;
+                else {
+                    config_perror("bad mask length");
+                    return;
+                }
+            }
+            /* Try to interpret mask as a dotted quad. */
+            else if (inet_pton(AF_INET, strmask, &mask) == 0) {
+                config_perror("bad mask");
+                return;
+            }
+
+            /* Check that the network and mask are consistent. */
+            if (network.s_addr & ~mask.s_addr) {
+                config_perror("source/mask mismatch");
+                return;
+            }
+        }
+    }
+
+    {
+        void* v = malloc(offsetof(com2SecEntry, community) + communityLen +
+                         secNameLen + contextNameLen);
+
+        com2SecEntry* e = (com2SecEntry*)v;
+        char* last = ((char*)v) + offsetof(com2SecEntry, community);
+
+        if (v == NULL) {
+            config_perror("memory error");
+            return;
+        }
+
+        /*
+         * Everything is okay.  Copy the parameters to the structure allocated
+         * above and add it to END of the list.
+         */
+
+        {
+          char buf1[INET_ADDRSTRLEN];
+          char buf2[INET_ADDRSTRLEN];
+          DEBUGMSGTL(("netsnmp_udp_parse_security",
+                      "<\"%s\", %s/%s> => \"%s\"\n", community,
+                      inet_ntop(AF_INET, &network, buf1, sizeof(buf1)),
+                      inet_ntop(AF_INET, &mask, buf2, sizeof(buf2)),
+                      secName));
+        }
+
+        memcpy(last, community, communityLen);
+        last += communityLen;
+        memcpy(last, secName, secNameLen);
+        e->secName = last;
+        last += secNameLen;
+        if (contextNameLen) {
+            memcpy(last, contextName, contextNameLen);
+            e->contextName = last;
+        } else
+            e->contextName = last - 1;
+        e->network = network.s_addr;
+        e->mask = mask.s_addr;
+        e->next = NULL;
+
+        if (com2SecListLast != NULL) {
+            com2SecListLast->next = e;
+            com2SecListLast = e;
+        } else {
+            com2SecListLast = com2SecList = e;
+        }
+    }
+}
+
+void
+netsnmp_udp_com2SecList_free(void)
+{
+    com2SecEntry   *e = com2SecList;
+    while (e != NULL) {
+        com2SecEntry   *tmp = e;
+        e = e->next;
+        free(tmp);
+    }
+    com2SecList = com2SecListLast = NULL;
+}
+#endif /* support for community based SNMP */
+
+void
+netsnmp_udp_agent_config_tokens_register(void)
+{
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+    register_app_config_handler("com2sec", netsnmp_udp_parse_security,
+                                netsnmp_udp_com2SecList_free,
+                                "[-Cn CONTEXT] secName IPv4-network-address[/netmask] community");
+#endif /* support for community based SNMP */
+}
+
+
+
+/*
+ * Return 0 if there are no com2sec entries, or return 1 if there ARE com2sec
+ * entries.  On return, if a com2sec entry matched the passed parameters,
+ * then *secName points at the appropriate security name, or is NULL if the
+ * parameters did not match any com2sec entry.
+ */
+
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+int
+netsnmp_udp_getSecName(void *opaque, int olength,
+                       const char *community,
+                       size_t community_len, const char **secName,
+                       const char **contextName)
+{
+    const com2SecEntry *c;
+    netsnmp_udp_addr_pair *addr_pair = (netsnmp_udp_addr_pair *) opaque;
+    struct sockaddr_in *from = (struct sockaddr_in *) &(addr_pair->remote_addr);
+    char           *ztcommunity = NULL;
+
+    if (secName != NULL) {
+        *secName = NULL;  /* Haven't found anything yet */
+    }
+
+    /*
+     * Special case if there are NO entries (as opposed to no MATCHING
+     * entries).
+     */
+
+    if (com2SecList == NULL) {
+        DEBUGMSGTL(("netsnmp_udp_getSecName", "no com2sec entries\n"));
+        return 0;
+    }
+
+    /*
+     * If there is no IPv4 source address, then there can be no valid security
+     * name.
+     */
+
+   DEBUGMSGTL(("netsnmp_udp_getSecName", "opaque = %p (len = %d), sizeof = %d, family = %d (%d)\n",
+   opaque, olength, (int)sizeof(netsnmp_udp_addr_pair), from->sin_family, AF_INET));
+    if (opaque == NULL || olength != sizeof(netsnmp_udp_addr_pair) ||
+        from->sin_family != AF_INET) {
+        DEBUGMSGTL(("netsnmp_udp_getSecName",
+		    "no IPv4 source address in PDU?\n"));
+        return 1;
+    }
+
+    DEBUGIF("netsnmp_udp_getSecName") {
+	ztcommunity = (char *)malloc(community_len + 1);
+	if (ztcommunity != NULL) {
+	    memcpy(ztcommunity, community, community_len);
+	    ztcommunity[community_len] = '\0';
+	}
+
+	DEBUGMSGTL(("netsnmp_udp_getSecName", "resolve <\"%s\", 0x%08lx>\n",
+		    ztcommunity ? ztcommunity : "<malloc error>",
+		    (unsigned long)(from->sin_addr.s_addr)));
+    }
+
+    for (c = com2SecList; c != NULL; c = c->next) {
+        {
+            char buf1[INET_ADDRSTRLEN];
+            char buf2[INET_ADDRSTRLEN];
+            DEBUGMSGTL(("netsnmp_udp_getSecName","compare <\"%s\", %s/%s>",
+                        c->community,
+                        inet_ntop(AF_INET, &c->network, buf1, sizeof(buf1)),
+                        inet_ntop(AF_INET, &c->mask, buf2, sizeof(buf2))));
+        }
+        if ((community_len == strlen(c->community)) &&
+	    (memcmp(community, c->community, community_len) == 0) &&
+            ((from->sin_addr.s_addr & c->mask) == c->network)) {
+            DEBUGMSG(("netsnmp_udp_getSecName", "... SUCCESS\n"));
+            if (secName != NULL) {
+                *secName = c->secName;
+                *contextName = c->contextName;
+            }
+            break;
+        }
+        DEBUGMSG(("netsnmp_udp_getSecName", "... nope\n"));
+    }
+    if (ztcommunity != NULL) {
+        free(ztcommunity);
+    }
+    return 1;
+}
+#endif /* support for community based SNMP */
+
+
+netsnmp_transport *
+netsnmp_udp_create_tstring(const char *str, int local,
+			   const char *default_target)
+{
+    struct sockaddr_in addr;
+
+    if (netsnmp_sockaddr_in2(&addr, str, default_target)) {
+        return netsnmp_udp_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+netsnmp_transport *
+netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_in addr;
+
+    if (o_len == 6) {
+        unsigned short porttmp = (o[4] << 8) + o[5];
+        addr.sin_family = AF_INET;
+        memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4);
+        addr.sin_port = htons(porttmp);
+        return netsnmp_udp_transport(&addr, local);
+    }
+    return NULL;
+}
+
+
+void
+netsnmp_udp_ctor(void)
+{
+    udpDomain.name = netsnmpUDPDomain;
+    udpDomain.name_length = netsnmpUDPDomain_len;
+    udpDomain.prefix = (const char**)calloc(2, sizeof(char *));
+    udpDomain.prefix[0] = "udp";
+
+    udpDomain.f_create_from_tstring     = NULL;
+    udpDomain.f_create_from_tstring_new = netsnmp_udp_create_tstring;
+    udpDomain.f_create_from_ostring     = netsnmp_udp_create_ostring;
+
+    netsnmp_tdomain_register(&udpDomain);
+}
diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c
new file mode 100644
index 0000000..7809cae
--- /dev/null
+++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
@@ -0,0 +1,218 @@
+/* IPV4 base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#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
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#include <errno.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/snmp_assert.h>
+#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)
+{
+    return netsnmp_udpbase_recvfrom(s, buf, len, from, fromlen, dstip, dstlen,
+                                    if_index);
+}
+
+int netsnmp_udpipv4_sendto(int fd, struct in_addr *srcip, int if_index,
+                           struct sockaddr *remote, void *data, int len)
+{
+    return netsnmp_udpbase_sendto(fd, srcip, if_index, remote, data, len);
+}
+#endif /* HAVE_IP_PKTINFO || HAVE_IP_RECVDSTADDR */
+
+netsnmp_transport *
+netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    int             rc = 0, rc2;
+    char           *client_socket = NULL;
+    netsnmp_indexed_addr_pair addr_pair;
+    socklen_t       local_addr_len;
+
+    if (addr == NULL || addr->sin_family != AF_INET) {
+        return NULL;
+    }
+
+    memset(&addr_pair, 0, sizeof(netsnmp_indexed_addr_pair));
+    memcpy(&(addr_pair.remote_addr), addr, sizeof(struct sockaddr_in));
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    netsnmp_assert_or_return(t != NULL, NULL);
+
+    DEBUGIF("netsnmp_udpbase") {
+        char *str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
+                                        sizeof(netsnmp_indexed_addr_pair));
+        DEBUGMSGTL(("netsnmp_udpbase", "open %s %s\n",
+                    local ? "local" : "remote", str));
+        free(str);
+    }
+
+    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
+    DEBUGMSGTL(("UDPBase", "openned socket %d as local=%d\n", t->sock, local)); 
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    _netsnmp_udp_sockopt_set(t->sock, local);
+
+    if (local) {
+        /*
+         * 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);
+        if (t->local == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->local, (u_char *) & (addr->sin_addr.s_addr), 4);
+        t->local[4] = (ntohs(addr->sin_port) & 0xff00) >> 8;
+        t->local[5] = (ntohs(addr->sin_port) & 0x00ff) >> 0;
+        t->local_length = 6;
+
+#ifndef WIN32
+#if defined(HAVE_IP_PKTINFO)
+        { 
+            int sockopt = 1;
+            if (setsockopt(t->sock, SOL_IP, IP_PKTINFO, &sockopt, sizeof sockopt) == -1) {
+                DEBUGMSGTL(("netsnmp_udpbase", "couldn't set IP_PKTINFO: %s\n",
+                    strerror(errno)));
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            DEBUGMSGTL(("netsnmp_udpbase", "set IP_PKTINFO\n"));
+        }
+#elif defined(HAVE_IP_RECVDSTADDR)
+        {
+            int sockopt = 1;
+            if (setsockopt(t->sock, IPPROTO_IP, IP_RECVDSTADDR, &sockopt, sizeof sockopt) == -1) {
+                DEBUGMSGTL(("netsnmp_udp", "couldn't set IP_RECVDSTADDR: %s\n",
+                            strerror(errno)));
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            DEBUGMSGTL(("netsnmp_udp", "set IP_RECVDSTADDR\n"));
+        }
+#endif
+#else /* !defined(WIN32) */
+        { 
+            int sockopt = 1;
+            if (setsockopt(t->sock, IPPROTO_IP, IP_PKTINFO, (void *)&sockopt,
+			   sizeof(sockopt)) == -1) {
+                DEBUGMSGTL(("netsnmp_udpbase", "couldn't set IP_PKTINFO: %d\n",
+                            WSAGetLastError()));
+            } else {
+                DEBUGMSGTL(("netsnmp_udpbase", "set IP_PKTINFO\n"));
+            }
+        }
+#endif /* !defined(WIN32) */
+        rc = bind(t->sock, (struct sockaddr *) addr,
+                  sizeof(struct sockaddr));
+        if (rc != 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->data = NULL;
+        t->data_length = 0;
+    } else {
+        /*
+         * This is a client session.  If we've been given a
+         * client address to send from, then bind to that.
+         * Otherwise the send will use "something sensible".
+         */
+        client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                              NETSNMP_DS_LIB_CLIENT_ADDR);
+        if (client_socket) {
+            struct sockaddr_in client_addr;
+            netsnmp_sockaddr_in2(&client_addr, client_socket, NULL);
+            client_addr.sin_port = 0;
+            DEBUGMSGTL(("netsnmp_udpbase", "binding socket: %d\n", t->sock));
+            rc = bind(t->sock, (struct sockaddr *)&client_addr,
+                  sizeof(struct sockaddr));
+            if ( rc != 0 ) {
+                DEBUGMSGTL(("netsnmp_udpbase", "failed to bind for clientaddr: %d %s\n",
+                            errno, strerror(errno)));
+                netsnmp_socketbase_close(t);
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            local_addr_len = sizeof(addr_pair.local_addr);
+            rc2 = getsockname(t->sock, (struct sockaddr*)&addr_pair.local_addr,
+                              &local_addr_len);
+            netsnmp_assert(rc2 == 0);
+        }
+
+        DEBUGIF("netsnmp_udpbase") {
+            char *str = netsnmp_udp_fmtaddr(NULL, (void *)&addr_pair,
+                                            sizeof(netsnmp_indexed_addr_pair));
+            DEBUGMSGTL(("netsnmp_udpbase", "client open %s\n", str));
+            free(str);
+        }
+
+        /*
+         * Save the (remote) address in the
+         * transport-specific data pointer for later use by netsnmp_udp_send.
+         */
+
+        t->data = malloc(sizeof(netsnmp_indexed_addr_pair));
+        t->remote = (u_char *)malloc(6);
+        if (t->data == NULL || t->remote == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->remote, (u_char *) & (addr->sin_addr.s_addr), 4);
+        t->remote[4] = (ntohs(addr->sin_port) & 0xff00) >> 8;
+        t->remote[5] = (ntohs(addr->sin_port) & 0x00ff) >> 0;
+        t->remote_length = 6;
+        memcpy(t->data, &addr_pair, sizeof(netsnmp_indexed_addr_pair));
+        t->data_length = sizeof(netsnmp_indexed_addr_pair);
+    }
+
+    return t;
+}
diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c
new file mode 100644
index 0000000..55e3610
--- /dev/null
+++ b/snmplib/transports/snmpUDPIPv6Domain.c
@@ -0,0 +1,781 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpUDPIPv6Domain.h>
+
+#include <net-snmp/types.h>
+
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#include <stddef.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#if defined(HAVE_WINSOCK_H) && !defined(mingw32)
+static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+#endif
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+
+#if HAVE_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#if HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
+#define SS_FAMILY ss_family
+#elif HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
+#define SS_FAMILY __ss_family
+#endif
+
+#if defined(darwin)
+#include <stdint.h> /* for uint8_t */
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/config_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+
+#include "inet_ntop.h"
+#include "inet_pton.h"
+
+oid netsnmp_UDPIPv6Domain[] = { TRANSPORT_DOMAIN_UDP_IPV6 };
+static netsnmp_tdomain udp6Domain;
+
+/*
+ * from snmpUDPDomain. not static, but not public, either.
+ * (ie don't put it in a public header.)
+ */
+extern void _netsnmp_udp_sockopt_set(int fd, int server);
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_udp6_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    return netsnmp_ipv6_fmtaddr("UDP/IPv6", t, data, len);
+}
+
+
+
+/*
+ * You can write something into opaque that will subsequently get passed back 
+ * to your send function if you like.  For instance, you might want to
+ * remember where a PDU came from, so that you can send a reply there...  
+ */
+
+static int
+netsnmp_udp6_recv(netsnmp_transport *t, void *buf, int size,
+		  void **opaque, int *olength)
+{
+    int             rc = -1;
+    socklen_t       fromlen = sizeof(struct sockaddr_in6);
+    struct sockaddr *from;
+
+    if (t != NULL && t->sock >= 0) {
+        from = (struct sockaddr *) malloc(sizeof(struct sockaddr_in6));
+        if (from == NULL) {
+            *opaque = NULL;
+            *olength = 0;
+            return -1;
+        } else {
+            memset(from, 0, fromlen);
+        }
+
+	while (rc < 0) {
+	  rc = recvfrom(t->sock, buf, size, 0, from, &fromlen);
+	  if (rc < 0 && errno != EINTR) {
+	    break;
+	  }
+	}
+
+        if (rc >= 0) {
+            DEBUGIF("netsnmp_udp6") {
+                char *str = netsnmp_udp6_fmtaddr(NULL, from, fromlen);
+                DEBUGMSGTL(("netsnmp_udp6",
+                            "recvfrom fd %d got %d bytes (from %s)\n", t->sock,
+                            rc, str));
+                free(str);
+            }
+        } else {
+            DEBUGMSGTL(("netsnmp_udp6", "recvfrom fd %d err %d (\"%s\")\n",
+			t->sock, errno, strerror(errno)));
+        }
+        *opaque = (void *) from;
+        *olength = sizeof(struct sockaddr_in6);
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_udp6_send(netsnmp_transport *t, void *buf, int size,
+		  void **opaque, int *olength)
+{
+    int rc = -1;
+    struct sockaddr *to = NULL;
+
+    if (opaque != NULL && *opaque != NULL &&
+        *olength == sizeof(struct sockaddr_in6)) {
+        to = (struct sockaddr *) (*opaque);
+    } else if (t != NULL && t->data != NULL &&
+               t->data_length == sizeof(struct sockaddr_in6)) {
+        to = (struct sockaddr *) (t->data);
+    }
+
+    if (to != NULL && t != NULL && t->sock >= 0) {
+        DEBUGIF("netsnmp_udp6") {
+            char *str = netsnmp_udp6_fmtaddr(NULL, (void *)to,
+                                             sizeof(struct sockaddr_in6));
+            DEBUGMSGTL(("netsnmp_udp6",
+                        "send %d bytes from %p to %s on fd %d\n",
+                        size, buf, str, t->sock));
+            free(str);
+        }
+	while (rc < 0) {
+	    rc = sendto(t->sock, buf, size, 0, to,sizeof(struct sockaddr_in6));
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+    }
+    return rc;
+}
+
+
+/*
+ * Open a UDP/IPv6-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_udp6_transport(struct sockaddr_in6 *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    int             rc = 0;
+
+    if (addr == NULL || addr->sin6_family != AF_INET6) {
+        return NULL;
+    }
+
+    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    if (t == NULL) {
+        return NULL;
+    }
+
+    DEBUGIF("netsnmp_udp6") {
+        char *str = netsnmp_udp6_fmtaddr(NULL, (void *) addr,
+                                         sizeof(struct sockaddr_in6));
+        DEBUGMSGTL(("netsnmp_udp6", "open %s %s\n", local ? "local" : "remote",
+                    str));
+        free(str);
+    }
+
+    memset(t, 0, sizeof(netsnmp_transport));
+
+    t->domain = netsnmp_UDPIPv6Domain;
+    t->domain_length =
+        sizeof(netsnmp_UDPIPv6Domain) / sizeof(netsnmp_UDPIPv6Domain[0]);
+
+    t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    _netsnmp_udp_sockopt_set(t->sock, local);
+
+    if (local) {
+        /*
+         * 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.
+         */
+
+#ifdef IPV6_V6ONLY
+        /* Try to restrict PF_INET6 socket to IPv6 communications only. */
+        {
+            int one=1;
+            if (setsockopt(t->sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) != 0) {
+                DEBUGMSGTL(("netsnmp_udp6", "couldn't set IPV6_V6ONLY to %d bytes: %s\n", one, strerror(errno)));
+            } 
+        }
+#endif
+
+        rc = bind(t->sock, (struct sockaddr *) addr,
+		  sizeof(struct sockaddr_in6));
+        if (rc != 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->local = (unsigned char*)malloc(18);
+        if (t->local == NULL) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->local, addr->sin6_addr.s6_addr, 16);
+        t->local[16] = (ntohs(addr->sin6_port) & 0xff00) >> 8;
+        t->local[17] = (ntohs(addr->sin6_port) & 0x00ff) >> 0;
+        t->local_length = 18;
+        t->data = NULL;
+        t->data_length = 0;
+    } 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));
+        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->remote = (unsigned char*)malloc(18);
+        if (t->remote == NULL) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->remote, addr->sin6_addr.s6_addr, 16);
+        t->remote[16] = (ntohs(addr->sin6_port) & 0xff00) >> 8;
+        t->remote[17] = (ntohs(addr->sin6_port) & 0x00ff) >> 0;
+        t->remote_length = 18;
+    }
+
+    /*
+     * 16-bit length field, 8 byte UDP header, 40 byte IPv6 header.  
+     */
+
+    t->msgMaxSize = 0xffff - 8 - 40;
+    t->f_recv     = netsnmp_udp6_recv;
+    t->f_send     = netsnmp_udp6_send;
+    t->f_close    = netsnmp_socketbase_close;
+    t->f_accept   = NULL;
+    t->f_fmtaddr  = netsnmp_udp6_fmtaddr;
+
+    return t;
+}
+
+
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+/*
+ * The following functions provide the "com2sec6" configuration token
+ * functionality for compatibility.
+ */
+
+#define EXAMPLE_NETWORK       "NETWORK"
+#define EXAMPLE_COMMUNITY     "COMMUNITY"
+
+typedef struct com2Sec6Entry_s {
+    const char     *secName;
+    const char     *contextName;
+    struct com2Sec6Entry_s *next;
+    struct in6_addr network;
+    struct in6_addr mask;
+    const char      community[1];
+} com2Sec6Entry;
+
+static com2Sec6Entry  *com2Sec6List = NULL, *com2Sec6ListLast = NULL;
+
+
+NETSNMP_STATIC_INLINE int
+create_com2Sec6Entry(const struct addrinfo* const run,
+                     const struct in6_addr* const mask,
+                     const char* const secName,
+                     const size_t secNameLen,
+                     const char* const contextName,
+                     const size_t contextNameLen,
+                     const char* const community,
+                     const size_t communityLen,
+                     com2Sec6Entry** const begin,
+                     com2Sec6Entry** const end)
+{
+    const struct sockaddr_in6 * const run_addr =
+        (const struct sockaddr_in6*)run->ai_addr;
+    int i;
+
+    /* Check that the network and mask are consistent. */
+    for (i = 0; i < 16; ++i) {
+        if (run_addr->sin6_addr.s6_addr[i] & ~mask->s6_addr[i]) {
+            config_perror("source/mask mismatch");
+            return 1;
+        }
+    }
+
+    {
+        char buf1[INET6_ADDRSTRLEN];
+        char buf2[INET6_ADDRSTRLEN];
+        DEBUGMSGTL(("netsnmp_udp6_parse_security",
+                    "<\"%s\", %s/%s> => \"%s\"\n",
+                    community,
+                    inet_ntop(AF_INET6, &run_addr->sin6_addr,
+                              buf1, sizeof(buf1)),
+                    inet_ntop(AF_INET6, mask, buf2, sizeof(buf2)),
+                    secName));
+    }
+
+    {
+        /* Allocate all the needed chunks */
+        void * const v =
+            malloc(offsetof(com2Sec6Entry, community) + communityLen +
+                   secNameLen + contextNameLen);
+
+        com2Sec6Entry* const e = (com2Sec6Entry*)v;
+        char *last = ((char*)v) + offsetof(com2Sec6Entry, community);
+
+        if (v == NULL) {
+            config_perror("memory error");
+            return 1;
+        }
+
+        memcpy(last, community, communityLen);
+        last += communityLen;
+
+        memcpy(last, secName, secNameLen);
+        e->secName = last;
+        last += secNameLen;
+
+        if (contextNameLen) {
+            memcpy(last, contextName, contextNameLen);
+            e->contextName = last;
+        } else
+            e->contextName = last - 1;
+
+        memcpy(&e->network, &run_addr->sin6_addr, sizeof(struct in6_addr));
+        memcpy(&e->mask, mask, sizeof(struct in6_addr));
+
+        e->next = NULL;
+        if (*end != NULL) {
+            (*end)->next = e;
+            *end = e;
+        } else {
+            *end = *begin = e;
+        }
+    }
+    return 0;
+}
+
+void
+netsnmp_udp6_parse_security(const char *token, char *param)
+{
+    char            secName[VACMSTRINGLEN + 1];
+    size_t          secNameLen;
+    char            contextName[VACMSTRINGLEN + 1];
+    size_t          contextNameLen;
+    char            community[COMMUNITY_MAX_LEN + 1];
+    size_t          communityLen;
+    char            source[300]; /* dns-name(253)+/(1)+mask(45)+\0(1) */
+    struct in6_addr mask;
+
+    /*
+     * Get security, source address/netmask and community strings.
+     */
+
+    param = copy_nword( param, secName, sizeof(secName));
+    if (strcmp(secName, "-Cn") == 0) {
+        if (!param) {
+            config_perror("missing CONTEXT_NAME parameter");
+            return;
+        }
+        param = copy_nword( param, contextName, sizeof(contextName));
+        contextNameLen = strlen(contextName) + 1;
+        if (contextNameLen > VACMSTRINGLEN) {
+            config_perror("context name too long");
+            return;
+        }
+        if (!param) {
+            config_perror("missing NAME parameter");
+            return;
+        }
+        param = copy_nword( param, secName, sizeof(secName));
+    } else {
+        contextNameLen = 0;
+    }
+
+    secNameLen = strlen(secName) + 1;
+    if (secNameLen == 1) {
+        config_perror("empty NAME parameter");
+        return;
+    } else if (secNameLen > VACMSTRINGLEN) {
+        config_perror("security name too long");
+        return;
+    }
+
+    if (!param) {
+        config_perror("missing SOURCE parameter");
+        return;
+    }
+    param = copy_nword( param, source, sizeof(source));
+    if (source[0] == '\0') {
+        config_perror("empty SOURCE parameter");
+        return;
+    }
+    if (strncmp(source, EXAMPLE_NETWORK, strlen(EXAMPLE_NETWORK)) == 0) {
+        config_perror("example config NETWORK not properly configured");
+        return;
+    }
+
+    if (!param) {
+        config_perror("missing COMMUNITY parameter");
+        return;
+    }
+    param = copy_nword( param, community, sizeof(community));
+    if (community[0] == '\0') {
+        config_perror("empty COMMUNITY parameter");
+        return;
+    }
+    communityLen = strlen(community) + 1;
+    if (communityLen >= COMMUNITY_MAX_LEN) {
+        config_perror("community name too long");
+        return;
+    }
+    if (communityLen == sizeof(EXAMPLE_COMMUNITY) &&
+        memcmp(community, EXAMPLE_COMMUNITY, sizeof(EXAMPLE_COMMUNITY)) == 0) {
+        config_perror("example config COMMUNITY not properly configured");
+        return;
+    }
+
+    /* Possible mask cases
+     * "default" <=> 0::0/0
+     * <hostname>[/] <=> <hostname>/128
+     * <hostname>/number <=> <hostname>/number
+     * <hostname>/<mask> <=> <hostname>/<mask>
+     */
+    {
+        /* Deal with the "default" case first. */
+        const int isdefault = strcmp(source, "default") == 0;
+
+        if (isdefault) {
+            memset(mask.s6_addr, '\0', sizeof(mask.s6_addr));
+        } else {
+            /* Split the source/netmask parts */
+            char *strmask = strchr(source, '/');
+            if (strmask != NULL)
+                /* Mask given. */
+                *strmask++ = '\0';
+
+            /* Try to interpret the mask */
+            if (strmask == NULL || *strmask == '\0') {
+                /* No mask was given. Assume /128 */
+                memset(mask.s6_addr, '\xff', sizeof(mask.s6_addr));
+            } else {
+                /* Try to interpret mask as a "number of 1 bits". */
+                char* cp;
+                long masklength = strtol(strmask, &cp, 10);
+                if (*cp == '\0') {
+                    if (0 <= masklength && masklength <= 128) {
+                        const int j = masklength / 8;
+                        const int jj = masklength % 8;
+                        memset(mask.s6_addr, '\xff', j);
+                        if (j < 16) {
+                            mask.s6_addr[j] = ((uint8_t)~0U << (8 - jj));
+                            memset(mask.s6_addr + j + 1, '\0', 15 - j);
+                        }
+                    } else {
+                        config_perror("bad mask length");
+                        return;
+                    }
+                }
+                /* Try to interpret mask numerically. */
+                else if (inet_pton(AF_INET6, strmask, &mask) != 1) {
+                    config_perror("bad mask");
+                    return;
+                }
+            }
+        }
+
+        {
+            struct sockaddr_in6 pton_addr;
+            struct addrinfo hints, *res = NULL;
+            memset(&hints, '\0', sizeof(hints));
+
+            /* First check if default, otherwise try to parse as a numeric
+             * address, if that also fails try to lookup the address */
+            if (isdefault) {
+                memset(&pton_addr.sin6_addr.s6_addr, '\0',
+                       sizeof(struct in6_addr));
+            } else if (inet_pton(AF_INET6, source, &pton_addr.sin6_addr) != 1) {
+                /* Nope, wasn't a numeric address. Must be a hostname. */
+#if HAVE_GETADDRINFO
+                int             gai_error;
+
+                hints.ai_family = AF_INET6;
+                hints.ai_socktype = SOCK_DGRAM;
+                gai_error = getaddrinfo(source, NULL, &hints, &res);
+                if (gai_error != 0) {
+                    config_perror(gai_strerror(gai_error));
+                    return;
+                }
+#else
+                config_perror("getaddrinfo() not available");
+                return;
+#endif
+            }
+            if (res == NULL) {
+                hints.ai_addrlen = sizeof(pton_addr);
+                hints.ai_addr = (struct sockaddr*)&pton_addr;
+                hints.ai_next = NULL;
+                res = &hints;
+            }
+
+            {
+                struct addrinfo *run;
+                int    failed = 0;
+                com2Sec6Entry *begin = NULL, *end = NULL;
+
+                for (run = res; run && !failed; run = run->ai_next)
+                    failed =
+                        create_com2Sec6Entry(run, &mask,
+                                             secName, secNameLen,
+                                             contextName, contextNameLen,
+                                             community, communityLen,
+                                             &begin, &end);
+
+                if (failed) {
+                    /* Free eventually allocated chunks */
+                    while (begin) {
+                        end = begin;
+                        begin = begin->next;
+                        free(end);
+                    }
+                } else if (com2Sec6ListLast != NULL) {
+                    com2Sec6ListLast->next = begin;
+                    com2Sec6ListLast = end;
+                } else {
+                    com2Sec6List = begin;
+                    com2Sec6ListLast = end;
+                }
+            }
+#if HAVE_GETADDRINFO
+            if (res != &hints)
+                freeaddrinfo(res);
+#endif
+        }
+    }
+}
+
+void
+netsnmp_udp6_com2Sec6List_free(void)
+{
+    com2Sec6Entry  *e = com2Sec6List;
+    while (e != NULL) {
+        com2Sec6Entry  *tmp = e;
+        e = e->next;
+        free(tmp);
+    }
+    com2Sec6List = com2Sec6ListLast = NULL;
+}
+
+#endif /* support for community based SNMP */
+
+void
+netsnmp_udp6_agent_config_tokens_register(void)
+{
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+    register_app_config_handler("com2sec6", netsnmp_udp6_parse_security,
+                                netsnmp_udp6_com2Sec6List_free,
+                                "[-Cn CONTEXT] secName IPv6-network-address[/netmask] community");
+#endif /* support for community based SNMP */
+}
+
+
+
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+
+/*
+ * Return 0 if there are no com2sec entries, or return 1 if there ARE com2sec
+ * entries.  On return, if a com2sec entry matched the passed parameters,
+ * then *secName points at the appropriate security name, or is NULL if the
+ * parameters did not match any com2sec entry.
+ */
+
+int
+netsnmp_udp6_getSecName(void *opaque, int olength,
+                        const char *community,
+                        int community_len,
+                        const char **secName, const char **contextName)
+{
+    const com2Sec6Entry *c;
+    struct sockaddr_in6 *from = (struct sockaddr_in6 *) opaque;
+    char           *ztcommunity = NULL;
+    char            str6[INET6_ADDRSTRLEN];
+
+    if (secName != NULL) {
+        *secName = NULL;  /* Haven't found anything yet */
+    }
+
+    /*
+     * Special case if there are NO entries (as opposed to no MATCHING
+     * entries).
+     */
+
+    if (com2Sec6List == NULL) {
+        DEBUGMSGTL(("netsnmp_udp6_getSecName", "no com2sec entries\n"));
+        return 0;
+    }
+
+    /*
+     * If there is no IPv6 source address, then there can be no valid security
+     * name.
+     */
+
+    if (opaque == NULL || olength != sizeof(struct sockaddr_in6)
+        || from->sin6_family != PF_INET6) {
+        DEBUGMSGTL(("netsnmp_udp6_getSecName",
+                    "no IPv6 source address in PDU?\n"));
+        return 1;
+    }
+
+    ztcommunity = (char *) malloc(community_len + 1);
+    if (ztcommunity != NULL) {
+        memcpy(ztcommunity, community, community_len);
+        ztcommunity[community_len] = '\0';
+    }
+
+    inet_ntop(AF_INET6, &from->sin6_addr, str6, sizeof(str6));
+    DEBUGMSGTL(("netsnmp_udp6_getSecName", "resolve <\"%s\", %s>\n",
+                ztcommunity ? ztcommunity : "<malloc error>", str6));
+
+    for (c = com2Sec6List; c != NULL; c = c->next) {
+        {
+            char buf1[INET6_ADDRSTRLEN];
+            char buf2[INET6_ADDRSTRLEN];
+            DEBUGMSGTL(("netsnmp_udp6_getSecName",
+                        "compare <\"%s\", %s/%s>", c->community,
+                        inet_ntop(AF_INET6, &c->network, buf1, sizeof(buf1)),
+                        inet_ntop(AF_INET6, &c->mask, buf2, sizeof(buf2))));
+        }
+        if ((community_len == (int)strlen(c->community)) &&
+            (memcmp(community, c->community, community_len) == 0)) {
+            int i, ok = 1;
+            for (i = 0; ok && i < 16; ++i)
+                if ((from->sin6_addr.s6_addr[i] & c->mask.s6_addr[i]) !=
+                    c->network.s6_addr[i])
+                    ok = 0;
+            if (ok) {
+                DEBUGMSG(("netsnmp_udp6_getSecName", "... SUCCESS\n"));
+                if (secName != NULL) {
+                    *secName = c->secName;
+                    *contextName = c->contextName;
+                }
+                break;
+            }
+        }
+        else {
+            DEBUGMSG(("netsnmp_udp6_getSecName", "... nope\n"));
+        }
+    }
+
+    if (ztcommunity != NULL) {
+        free(ztcommunity);
+    }
+    return 1;
+}
+#endif /* support for community based SNMP */
+
+netsnmp_transport *
+netsnmp_udp6_create_tstring(const char *str, int local,
+			    const char *default_target)
+{
+    struct sockaddr_in6 addr;
+
+    if (netsnmp_sockaddr_in6_2(&addr, str, default_target)) {
+        return netsnmp_udp6_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+/*
+ * See:
+ * 
+ * http://www.ietf.org/internet-drafts/draft-ietf-ops-taddress-mib-01.txt
+ * 
+ * (or newer equivalent) for details of the TC which we are using for
+ * the mapping here.  
+ */
+
+netsnmp_transport *
+netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_in6 addr;
+
+    if (o_len == 18) {
+        memset((u_char *) & addr, 0, sizeof(struct sockaddr_in6));
+        addr.sin6_family = AF_INET6;
+        memcpy((u_char *) & (addr.sin6_addr.s6_addr), o, 16);
+        addr.sin6_port = htons((o[16] << 8) + o[17]);
+        return netsnmp_udp6_transport(&addr, local);
+    }
+    return NULL;
+}
+
+
+void
+netsnmp_udpipv6_ctor(void)
+{
+    udp6Domain.name = netsnmp_UDPIPv6Domain;
+    udp6Domain.name_length = sizeof(netsnmp_UDPIPv6Domain) / sizeof(oid);
+    udp6Domain.f_create_from_tstring     = NULL;
+    udp6Domain.f_create_from_tstring_new = netsnmp_udp6_create_tstring;
+    udp6Domain.f_create_from_ostring     = netsnmp_udp6_create_ostring;
+    udp6Domain.prefix = (const char**)calloc(5, sizeof(char *));
+    udp6Domain.prefix[0] = "udp6";
+    udp6Domain.prefix[1] = "ipv6";
+    udp6Domain.prefix[2] = "udpv6";
+    udp6Domain.prefix[3] = "udpipv6";
+
+    netsnmp_tdomain_register(&udp6Domain);
+}
+
+#else
+
+#ifdef NETSNMP_DLL
+/* need this hook for win32 MSVC++ DLL build */
+void
+netsnmp_udp6_agent_config_tokens_register(void)
+{ }
+#endif
+
+#endif /* NETSNMP_TRANSPORT_UDPIPV6_DOMAIN */
+
diff --git a/snmplib/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c
similarity index 81%
rename from snmplib/snmpUnixDomain.c
rename to snmplib/transports/snmpUnixDomain.c
index 428647c..1bd5ef6 100644
--- a/snmplib/snmpUnixDomain.c
+++ b/snmplib/transports/snmpUnixDomain.c
@@ -1,7 +1,10 @@
 #include <net-snmp/net-snmp-config.h>
 
-#include <stdio.h>
 #include <sys/types.h>
+#include <net-snmp/library/snmpUnixDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
 
@@ -19,9 +22,6 @@
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-#if HAVE_SYS_UN_H
-#include <sys/un.h>
-#endif
 
 #if HAVE_DMALLOC_H
 #include <dmalloc.h>
@@ -32,8 +32,7 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpUnixDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
 #include <net-snmp/library/system.h> /* mkdirhier */
 
 
@@ -290,7 +289,6 @@
     netsnmp_transport *t = NULL;
     sockaddr_un_pair *sup = NULL;
     int             rc = 0;
-    char           *string = NULL;
 
     if (addr == NULL || addr->sun_family != AF_UNIX) {
         return NULL;
@@ -301,11 +299,13 @@
         return NULL;
     }
 
-    string = netsnmp_unix_fmtaddr(NULL, (void *)addr,
-                                  sizeof(struct sockaddr_un));
-    DEBUGMSGTL(("netsnmp_unix", "open %s %s\n", local ? "local" : "remote",
-                string));
-    free(string);
+    DEBUGIF("netsnmp_unix") {
+        char *str = netsnmp_unix_fmtaddr(NULL, (void *)addr,
+                                         sizeof(struct sockaddr_un));
+        DEBUGMSGTL(("netsnmp_unix", "open %s %s\n", local ? "local" : "remote",
+                    str));
+        free(str);
+    }
 
     memset(t, 0, sizeof(netsnmp_transport));
 
@@ -503,25 +503,25 @@
 /* support for SNMPv1 and SNMPv2c on unix domain*/
 
 #define EXAMPLE_COMMUNITY "COMMUNITY"
-typedef struct _com2SecUnixEntry {
-    char            community[COMMUNITY_MAX_LEN];
-    char            sockpath[sizeof(struct sockaddr_un)];
-    unsigned long   pathlen;
-    char            secName[VACMSTRINGLEN];
-    char            contextName[VACMSTRINGLEN];
-    struct _com2SecUnixEntry *next;
+typedef struct com2SecUnixEntry_s {
+    const char*     sockpath;
+    const char*     secName;
+    const char*     contextName;
+    struct com2SecUnixEntry_s *next;
+    unsigned short  pathlen;
+    const char      community[1];
 } com2SecUnixEntry;
 
-com2SecUnixEntry   *com2SecUnixList = NULL, *com2SecUnixListLast = NULL;
+static com2SecUnixEntry   *com2SecUnixList = NULL, *com2SecUnixListLast = NULL;
 
 
 int
 netsnmp_unix_getSecName(void *opaque, int olength,
                         const char *community,
                         size_t community_len,
-                        char **secName, char **contextName)
+                        const char **secName, const char **contextName)
 {
-    com2SecUnixEntry   *c;
+    const com2SecUnixEntry   *c;
     struct sockaddr_un *to = (struct sockaddr_un *) opaque;
     char           *ztcommunity = NULL;
 
@@ -589,79 +589,131 @@
 void
 netsnmp_unix_parse_security(const char *token, char *param)
 {
-    char              secName[VACMSTRINGLEN + 1], community[COMMUNITY_MAX_LEN + 1];
-    char              contextName[VACMSTRINGLEN + 1];
-    char              sockpath[sizeof(struct sockaddr_un) + 1];
-    com2SecUnixEntry *e = NULL;
+    char   secName[VACMSTRINGLEN + 1];
+    size_t secNameLen;
+    char   contextName[VACMSTRINGLEN + 1];
+    size_t contextNameLen;
+    char   community[COMMUNITY_MAX_LEN + 1];
+    size_t communityLen;
+    char   sockpath[sizeof(((struct sockaddr_un*)0)->sun_path) + 1];
+    size_t sockpathLen;
 
-
-    param = copy_nword(param, secName, VACMSTRINGLEN);
+    param = copy_nword( param, secName, sizeof(secName));
     if (strcmp(secName, "-Cn") == 0) {
-        param = copy_nword( param, contextName, sizeof(contextName));
-        param = copy_nword( param, secName, sizeof(secName));
-        if (contextName[0] == '\0') {
+        if (!param) {
             config_perror("missing CONTEXT_NAME parameter");
             return;
         }
+        param = copy_nword( param, contextName, sizeof(contextName));
+        contextNameLen = strlen(contextName) + 1;
+        if (contextNameLen > VACMSTRINGLEN) {
+            config_perror("context name too long");
+            return;
+        }
+        if (!param) {
+            config_perror("missing NAME parameter");
+            return;
+        }
+        param = copy_nword( param, secName, sizeof(secName));
     } else {
-        contextName[0] = '\0';
+        contextNameLen = 0;
     }
-    if (secName[0] == '\0') {
-        config_perror("missing NAME parameter");
+
+    secNameLen = strlen(secName) + 1;
+    if (secNameLen == 1) {
+        config_perror("empty NAME parameter");
         return;
-    } else if (strlen(secName) > (VACMSTRINGLEN - 1)) {
+    } else if (secNameLen > VACMSTRINGLEN) {
         config_perror("security name too long");
         return;
     }
 
-        param = copy_nword(param, sockpath, sizeof(struct sockaddr_un) - 1);
-    if (sockpath[0] == '\0') {
+    if (!param) {
         config_perror("missing SOCKPATH parameter");
         return;
-    } else if (strlen(sockpath) > (sizeof(struct sockaddr_un) - 1)) {
+    }
+    param = copy_nword( param, sockpath, sizeof(sockpath));
+    if (sockpath[0] == '\0') {
+        config_perror("empty SOCKPATH parameter");
+        return;
+    }
+    sockpathLen = strlen(sockpath) + 1;
+    if (sockpathLen > sizeof(((struct sockaddr_un*)0)->sun_path)) {
         config_perror("sockpath too long");
         return;
     }
-    /* if sockpath == "default", set pathlen=0*/
-    if(strcmp(sockpath, "default") == 0){
-        sockpath[0] = 0;
-    }
 
-    param = copy_nword(param, community, COMMUNITY_MAX_LEN);
+    if (!param) {
+        config_perror("missing COMMUNITY parameter");
+        return;
+    }
+    param = copy_nword( param, community, sizeof(community));
     if (community[0] == '\0') {
-        config_perror("missing COMMUNITY parameter\n");
+        config_perror("empty COMMUNITY parameter");
         return;
-    } else if (strncmp
-               (community, EXAMPLE_COMMUNITY, strlen(EXAMPLE_COMMUNITY))
-               == 0) {
-        config_perror("example config COMMUNITY not properly configured");
-        return;
-    } else if (strlen(community) > (COMMUNITY_MAX_LEN - 1)) {
+    }
+    communityLen = strlen(community) + 1;
+    if (communityLen >= COMMUNITY_MAX_LEN) {
         config_perror("community name too long");
         return;
     }
-
-    e = (com2SecUnixEntry *) malloc(sizeof(com2SecUnixEntry));
-    if (e == NULL) {
-        config_perror("memory error");
+    if (communityLen == sizeof(EXAMPLE_COMMUNITY) &&
+        memcmp(community, EXAMPLE_COMMUNITY, sizeof(EXAMPLE_COMMUNITY)) == 0) {
+        config_perror("example config COMMUNITY not properly configured");
         return;
     }
 
-    DEBUGMSGTL(("netsnmp_unix_parse_security",
-                "<\"%s\"> => \"%s\"\n", community, secName));
+    /* Deal with the "default" case */
+    if(strcmp(sockpath, "default") == 0) {
+        sockpathLen = 0;
+    }
 
-    strcpy(e->secName, secName);
-    strcpy(e->contextName, contextName);
-    strcpy(e->community, community);
-    strcpy(e->sockpath, sockpath);
-    e->pathlen = strlen(sockpath);
-    e->next = NULL;
+    {
+        void* v = malloc(offsetof(com2SecUnixEntry, community) + communityLen +
+                         sockpathLen + secNameLen + contextNameLen);
+        com2SecUnixEntry* e = (com2SecUnixEntry*)v;
+        char* last = ((char*)v) + offsetof(com2SecUnixEntry, community);
+        if (e == NULL) {
+            config_perror("memory error");
+            return;
+        }
 
-    if (com2SecUnixListLast != NULL) {
-        com2SecUnixListLast->next = e;
-        com2SecUnixListLast = e;
-    } else {
-        com2SecUnixListLast = com2SecUnixList = e;
+        DEBUGMSGTL(("netsnmp_unix_parse_security",
+                    "<\"%s\", \"%.*s\"> => \"%s\"\n",
+                    community, (int)sockpathLen, sockpath, secName));
+
+        memcpy(last, community, communityLen);
+        last += communityLen;
+
+        if (sockpathLen) {
+            e->sockpath = last;
+            memcpy(last, sockpath, sockpathLen);
+            last += sockpathLen;
+            e->pathlen = sockpathLen - 1;
+        } else {
+            e->sockpath = last - 1;
+            e->pathlen = 0;
+        }
+
+        e->secName = last;
+        memcpy(last, secName, secNameLen);
+        last += secNameLen;
+
+        if (contextNameLen) {
+            e->contextName = last;
+            memcpy(last, contextName, contextNameLen);
+            last += contextNameLen;
+        } else
+            e->contextName = last - 1;
+
+        e->next = NULL;
+
+        if (com2SecUnixListLast != NULL) {
+            com2SecUnixListLast->next = e;
+            com2SecUnixListLast = e;
+        } else {
+            com2SecUnixListLast = com2SecUnixList = e;
+        }
     }
 }
 
diff --git a/snmplib/ucd_compat.c b/snmplib/ucd_compat.c
index 4f4234a..bf21be8 100644
--- a/snmplib/ucd_compat.c
+++ b/snmplib/ucd_compat.c
@@ -9,6 +9,7 @@
 #include <net-snmp/session_api.h>
 #include <net-snmp/config_api.h>
 #include <net-snmp/library/mib.h>	/* for OID O/P format enums */
+#include <net-snmp/library/ucd_compat.h>
 
 /*
  * use <netsnmp_session *)->s_snmp_errno instead 
@@ -22,10 +23,12 @@
 /*
  * synch_reset and synch_setup are no longer used. 
  */
+NETSNMP_IMPORT void snmp_synch_reset(netsnmp_session * notused);
 void
 snmp_synch_reset(netsnmp_session * notused)
 {
 }
+NETSNMP_IMPORT void snmp_synch_setup(netsnmp_session * notused);
 void
 snmp_synch_setup(netsnmp_session * notused)
 {
diff --git a/snmplib/vacm.c b/snmplib/vacm.c
index 3551c7f..2da1df9 100644
--- a/snmplib/vacm.c
+++ b/snmplib/vacm.c
@@ -31,11 +31,7 @@
 #include <sys/types.h>
 #include <stdio.h>
 #if TIME_WITH_SYS_TIME
-# ifdef WIN32
-#  include <sys/timeb.h>
-# else
-#  include <sys/time.h>
-# endif
+# include <sys/time.h>
 # include <time.h>
 #else
 # if HAVE_SYS_TIME_H
@@ -45,10 +41,6 @@
 # endif
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -62,6 +54,7 @@
 #include <net-snmp/config_api.h>
 
 #include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/tools.h>
 #include <net-snmp/library/vacm.h>
 
 static struct vacm_viewEntry *viewList = NULL, *viewScanPtr = NULL;
@@ -166,7 +159,7 @@
 }
 
 void
-vacm_parse_config_view(const char *token, char *line)
+vacm_parse_config_view(const char *token, const char *line)
 {
     struct vacm_viewEntry view;
     struct vacm_viewEntry *vptr;
@@ -176,17 +169,17 @@
     size_t          len;
 
     view.viewStatus = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     view.viewStorageType = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     view.viewType = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     len = sizeof(view.viewName);
     line =
         read_config_read_octet_string(line, (u_char **) & viewName, &len);
     view.viewSubtreeLen = MAX_OID_LEN;
     line =
-        read_config_read_objid(line, (oid **) & viewSubtree,
+        read_config_read_objid_const(line, (oid **) & viewSubtree,
                                &view.viewSubtreeLen);
 
     vptr =
@@ -284,7 +277,8 @@
 }
 
 char *
-_vacm_parse_config_access_common(struct vacm_accessEntry **aptr, char *line)
+_vacm_parse_config_access_common(struct vacm_accessEntry **aptr,
+                                 const char *line)
 {
     struct vacm_accessEntry access;
     char           *cPrefix = (char *) &access.contextPrefix;
@@ -292,15 +286,15 @@
     size_t          len;
 
     access.status = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     access.storageType = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     access.securityModel = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     access.securityLevel = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     access.contextMatch = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     len  = sizeof(access.groupName);
     line = read_config_read_octet_string(line, (u_char **) &gName,   &len);
     len  = sizeof(access.contextPrefix);
@@ -323,11 +317,11 @@
     (*aptr)->securityModel = access.securityModel;
     (*aptr)->securityLevel = access.securityLevel;
     (*aptr)->contextMatch  = access.contextMatch;
-    return line;
+    return NETSNMP_REMOVE_CONST(char *, line);
 }
 
 void
-vacm_parse_config_access(const char *token, char *line)
+vacm_parse_config_access(const char *token, const char *line)
 {
     struct vacm_accessEntry *aptr;
     char           *readView, *writeView, *notifyView;
@@ -353,7 +347,7 @@
 }
 
 void
-vacm_parse_config_auth_access(const char *token, char *line)
+vacm_parse_config_auth_access(const char *token, const char *line)
 {
     struct vacm_accessEntry *aptr;
     int             authtype;
@@ -365,7 +359,7 @@
         return;
 
     authtype = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
 
     view = (char *) aptr->views[authtype];
     len  = sizeof(aptr->views[authtype]);
@@ -401,7 +395,7 @@
 }
 
 void
-vacm_parse_config_group(const char *token, char *line)
+vacm_parse_config_group(const char *token, const char *line)
 {
     struct vacm_groupEntry group;
     struct vacm_groupEntry *gptr;
@@ -410,11 +404,11 @@
     size_t          len;
 
     group.status = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     group.storageType = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     group.securityModel = atoi(line);
-    line = skip_token(line);
+    line = skip_token_const(line);
     len = sizeof(group.securityName);
     line =
         read_config_read_octet_string(line, (u_char **) & securityName,
@@ -449,12 +443,12 @@
     for (vp = head; vp; vp = vp->next) {
         if (!memcmp(view, vp->viewName, glen + 1)
             && viewSubtreeLen >= (vp->viewSubtreeLen - 1)) {
-            int             mask = 0x80, maskpos = 0;
-            int             oidpos;
+            int             mask = 0x80;
+            unsigned int    oidpos, maskpos = 0;
             found = 1;
 
             for (oidpos = 0;
-                 found && oidpos < (int) vp->viewSubtreeLen - 1;
+                 found && oidpos < vp->viewSubtreeLen - 1;
                  oidpos++) {
                 if (mode==VACM_MODE_IGNORE_MASK || (VIEW_MASK(vp, maskpos, mask) != 0)) {
                     if (viewSubtree[oidpos] !=
@@ -538,15 +532,15 @@
              * subtree we are comparing against.
              */
             if (viewSubtreeLen >= (vp->viewSubtreeLen - 1)) {
-                int             mask = 0x80, maskpos = 0;
-                int             oidpos;
+                int             mask = 0x80;
+                unsigned int    oidpos, maskpos = 0;
                 found = 1;
 
                 /*
                  * check the mask
                  */
                 for (oidpos = 0;
-                     found && oidpos < (int) vp->viewSubtreeLen - 1;
+                     found && oidpos < vp->viewSubtreeLen - 1;
                      oidpos++) {
                     if (VIEW_MASK(vp, maskpos, mask) != 0) {
                         if (viewSubtree[oidpos] !=
@@ -586,15 +580,15 @@
              * response.
              */
             else {
-                int             mask = 0x80, maskpos = 0;
-                int             oidpos;
+                int             mask = 0x80;
+                unsigned int    oidpos, maskpos = 0;
                 found = 1;
 
                 /*
                  * check the mask up to the length of the provided subtree
                  */
                 for (oidpos = 0;
-                     found && oidpos < (int) viewSubtreeLen;
+                     found && oidpos < viewSubtreeLen;
                      oidpos++) {
                     if (VIEW_MASK(vp, maskpos, mask) != 0) {
                         if (viewSubtree[oidpos] !=
diff --git a/snmplib/winpipe.c b/snmplib/winpipe.c
index 6f134b1..bbe37f1 100644
--- a/snmplib/winpipe.c
+++ b/snmplib/winpipe.c
@@ -33,9 +33,10 @@
 #ifdef WIN32
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
 #include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/library/winpipe.h>
 #include <io.h>
-#include <winsock.h>
 
 static int InitUPDSocket(SOCKET *sock, struct sockaddr_in *socketaddress)
 {
diff --git a/snmplib/winservice.c b/snmplib/winservice.c
index 050f4e5..bc27f8c 100644
--- a/snmplib/winservice.c
+++ b/snmplib/winservice.c
@@ -39,6 +39,8 @@
 
 #if defined(WIN32) && defined(HAVE_WIN32_PLATFORM_SDK) && !defined(mingw32)
 #pragma comment(lib, "iphlpapi.lib")
+#endif
+#if defined(WIN32) && !defined(mingw32)
 #ifdef USING_WINEXTDLL_MODULE
 #pragma comment(lib, "snmpapi.lib")
 #pragma comment(lib, "mgmtapi.lib")
@@ -101,6 +103,18 @@
      */
 static VOID (*StopFunction) (VOID) = 0L;
 
+
+    /*
+     * To update windows service status to SCM 
+     */
+static BOOL UpdateServiceStatus (DWORD dwStatus, DWORD dwErrorCode,
+				 DWORD dwWaitHint);
+
+    /*
+     * To Report current service status to SCM 
+     */
+static BOOL ReportCurrentServiceStatus (VOID);
+
 VOID
 ProcessError (WORD eventLogType, LPCTSTR pszMessage, int useGetLastError, int quiet);
 
@@ -560,7 +574,7 @@
   
   hEventSource = RegisterEventSource (NULL, app_name_long);
   if (hEventSource != NULL) {
-    LPCSTR LogStr[1];
+    LPCTSTR LogStr[1];
     LogStr[0] = pszMessageFull;
     
     if (ReportEvent (hEventSource, 
diff --git a/testing/Makefile.in b/testing/Makefile.in
index 7b8a005..2a64137 100644
--- a/testing/Makefile.in
+++ b/testing/Makefile.in
@@ -10,8 +10,6 @@
 # fallback to regular VPATH for non-gnu...
 @NON_GNU_VPATH@ $(srcdir)
 
-#TARG		= etest ktest misctest stest
-
 USELIBS		= ../snmplib/libsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
 LIBS		= -L../snmplib $(CC_RUNTIME_ARG) -lsnmp @LIBS@
 
@@ -20,10 +18,43 @@
 CPPFLAGS	= $(SNMPLIB_INCLUDES) @CPPFLAGS@
 CC		= @CC@ $(CPPFLAGS)
 
-all: $(TARG)
+all:
+	@echo "Select one of the following targets to run:"
+	@echo ""
+	@echo "  make test        -- default test suites"
+	@echo "  make testall     -- Run all available tests"
+	@echo "  make testfailed  -- Run only the tests that failed last time."
+	@echo "  make testsimple  -- Run tests directly with simple_run"
+	@echo ""
+	@echo "Set additional test parameters with TESTOPTS=args"
+	@echo ""
+	@echo "Also see the RUNFULLTESTS script for details"
 
 test:
-	$(srcdir)/RUNTESTS -a -D `pwd`/.. $(TESTOPTS)
+	@if test "x$(PERL)" = "x" \
+	         -o "x@PERL_SYSTEM_INVOKES_POSIX_SHELL@" != xyes \
+		 || { ! $(PERL) -e 'require TAP::Harness;' >/dev/null 2>&1 \
+		    && ! $(PERL) -e 'require Test::Harness; die if $$Test::Harness::VERSION < 1.21;' >/dev/null 2>&1; };\
+	then \
+		echo $(srcdir)/RUNTESTS ; \
+		$(srcdir)/RUNTESTS ; \
+	else \
+		echo $(srcdir)/RUNFULLTESTS $(TESTOPTS) ; \
+		$(PERL) $(srcdir)/RUNFULLTESTS $(TESTOPTS) ; \
+	fi
+
+testsimple:
+	@(export srcdir=$(top_srcdir) ; \
+		export builddir=$(top_builddir) ; \
+		$(srcdir)/fulltests/support/simple_run $(TESTOPTS) \
+	)
+
+testall:
+	$(srcdir)/RUNFULLTESTS -g all $(TESTOPTS)
+
+testfailed:
+	$(srcdir)/RUNFULLTESTS -f $(TESTOPTS)
+
 
 test-mibs:
 	cd $(srcdir)/rfc1213 ; ./run
diff --git a/testing/README b/testing/README
index 99cb3a0..faccc3e 100644
--- a/testing/README
+++ b/testing/README
@@ -1,21 +1,16 @@
-The RUNTESTS script is the wrapper around all the tests.  To run the
-tests, simply run "./RUNTESTS".  The important arguments for RUNTESTS
-accepts (from ./RUNTESTS -h):
+The RUNFULLTESTS script is a wrapper around the tests.  All the
+tests are required to produce TAP output (hopefully soon to be
+standardized itself).
 
-Usage: RUNTESTS [-a] [-S SLEEPTIME] [-h] [-i] [-v] [-V] [-s]
-       [-T TESTNUMS] [-D bindir] [-S seconds] [-P <udp|tcp|udp6|tcp6|unix>]"
+By default RUNFULLTESTS only executes the tests in fulltests/default.
+Use the -g flag to test other subdirectories, or use '-g all' to test
+everything it can find.
 
-  -a        run all tests.
-  -T NUMS   run particular tests (command separated list of numbers)
-  -i        run interactively
-  -v        be verbose
-  -V        be very verbose
-  -S TIME   TIME should be used as the timeout when waiting for a
-            response from the agent.
-  -A FLAGS  Extra flags to pass to the agent.
-  -t FLAGS  Extra flags to pass to the trapd.
-  -s        Don't erase the runtime data directory for successful tests
-  -XM       Don't set MIBDIRS environment unless absolutely necessary
-  -x        Turn on SH output debugging for tests.
-  -P TRANS  Specify on which transport domain to run the tests. Default is udp.
-            udp,tcp,udp6,tcp6,unix are available.
+See the documentation contained in the RUNFULLTESTS script for details
+on:
+
+  - how to run particular sets of tests
+  - how to write tests
+  - how to write _build scripts
+  - how to write _run scripts
+
diff --git a/testing/RUNFULLTESTS b/testing/RUNFULLTESTS
new file mode 100755
index 0000000..40a40b8
--- /dev/null
+++ b/testing/RUNFULLTESTS
@@ -0,0 +1,816 @@
+#!/usr/bin/env perl
+
+use Getopt::Long;
+#use Data::Dumper;
+use File::Basename;
+use Cwd qw(abs_path);
+use strict;
+
+########################################
+# Globals and Command Line options
+
+my %opts = ('groups' => 'default',
+            'master-directory' => 'fulltests',
+	    'srcdir' => dirname("$0") . "/..",
+            'builddir' => '..',
+	    'failed-file' => 'failed_tests',
+	   );
+
+Getopt::Long::Configure(qw(no_ignore_case));
+GetOptions(\%opts,
+           "verbose",
+           "help|?",
+           "quiet|q",
+           "groups|g=s",
+           "r=s",
+           "debug",
+           "srcdir|D=s",
+           "builddir|d=s",
+	   "f",
+	   "F",
+	   "failed-file=s",
+	   "master-directory=s",
+	  ) || ++$opts{'help'};
+
+# Change srcdir and builddir to absolute paths
+$opts{'srcdir'} = abs_path($opts{'srcdir'});
+$opts{'builddir'} = abs_path($opts{'builddir'});
+# Set exeext.
+$opts{'exeext'} = join(readpipe($opts{'builddir'} . '/net-snmp-config --exeext'));
+
+usage() if ($opts{'help'});
+
+# Build the harness object
+my %args = (
+	    verbosity => ($opts{'verbose'} ? 1 : ($opts{'quiet'} ? -1 : 0)),
+	    exec => \&decide_exec,
+	    # this option is *really* weird in how it works
+	    failures => ($opts{'quiet'} ? 0 : ($opts{'verbose'} ? 0 : 1)),
+	    errors => ($opts{'quiet'} ? 0 : 1),
+	   );
+
+# list of support infrastructure components
+my %support;
+my %sources;
+
+# if the -d option was specified, pass on the source root directory to all apps
+if (exists($opts{'master-directory'})) {
+    $ENV{'NETSNMPSRCDIR'} = $opts{'master-directory'};
+} else {
+    $ENV{'NETSNMPSRCDIR'} = '.';
+}
+
+# pass srcdir and builddir to all apps
+$ENV{'srcdir'} = $opts{'srcdir'};
+$ENV{'builddir'} = $opts{'builddir'};
+
+# set up MIBDIRS to refer to the src directory
+if (!$ENV{'MIBDIRS'}) {
+    $ENV{'MIBDIRS'} = "$opts{srcdir}/mibs";
+}
+
+########################################
+# Protection measures
+$ENV{'SNMPCONFPATH'} = "/dev/null";
+
+# create the testing harness infrastructure
+
+my $harness;
+if (eval { require TAP::Harness; } ) {
+    import TAP::Harness;
+    $harness = TAP::Harness->new(\%args);
+} else {
+    require Test::Harness;
+    import Test::Harness;
+    if ($opts{'groups'} ne 'default') {
+	print STDERR "
+ERROR: I can not find the perl TAP::Harness module.  We support the
+more common Test::Harness module but only for the default test group.
+
+Either:
+  1) run only the default tests (i.e., just \"make test\")
+  2) install the TAP::Harness perl module
+
+";
+	exit 1;
+    }
+    DIE("Test::Harness must be of version 1.21 or newer\n" .
+	"Install the TAP::Harness module or use the RUNTESTS script\n")
+      if $Test::Harness::VERSION < 1.21;
+}
+
+
+########################################
+# gather the tests
+my @tests;
+
+DEBUG("Gathering and building tests:\n");
+find_support();
+if ($opts{'f'}) {
+    DIE("The -f and -g options can not be both specified\n")
+      if ($opts{'groups'} ne 'default');
+    DIE("The -f and -r options can not be both specified\n") if ($opts{'r'});
+    DIE("No $opts{'failed-file'} file was found to read failed state from\n")
+      if (! -f $opts{'failed-file'});
+    open(F, $opts{'failed-file'});
+    while (<F>) {
+	chomp;
+	push @tests, build_test($_);
+    }
+} else {
+    @tests = gather_tests($opts{'groups'}, $opts{'r'});
+}
+
+########################################
+# rename them to remove parent dirs
+@tests = rename_tests(@tests);
+
+########################################
+# run the tests
+
+DEBUG("Running tests:\n"); 
+DEBUG("-" x 78, "\n");
+
+my $results;
+if ($harness) {
+    $results = $harness->runtests(@tests);
+} else {
+    # minimal backwards compat with Test::Harness
+    run_older_perl_tests(@tests);
+}
+
+my @failed = $results->failed();
+if (!$opts{'q'} && $#failed > -1) {
+    print "\nWe failed these ", (1 + $#failed), " tests:\n";
+    my @lines = @failed;
+    map { if (exists($sources{$_})) { $_ = "$_ ( $sources{$_} )"} } @lines;
+    print "  ", join("\n  ",@lines), "\n";
+}
+
+if (!$opts{'F'}) {
+    open(F,">$opts{'failed-file'}");
+    if ($#failed > -1) {
+	print F join("\n", get_sources(@failed)) . "\n";
+    }
+    close(F);
+}
+
+exit($results->all_passed() ? 0 : 1);
+
+######################################################################
+# Infrastructure
+#
+
+########################################
+# decides how we should execute a test
+#
+sub decide_exec {
+    my ( $harness, $testfile ) = @_;
+
+    # 1) Parse the $testfile argument.
+    my ($dirname, $groupname, $basename, $app_extension, $file_extension) = 
+      ($testfile =~ /([^\/]+)\/([^\/]+)\/([^\/]+)_([^\/_]+)\.*([^\/\.]*)$/);
+    $app_extension =~ s/$opts{'exeext'}\$//;
+
+    # 2) we have a RUN_TYPE file in the same directory
+    if (exists($support{'run'}{$app_extension}{$groupname})) {
+	return [$support{'run'}{$app_extension}{$groupname}, $testfile];
+    }
+
+    # 3) return a generic run script
+    if (exists($support{'run'}{$app_extension}{'generic'})) {
+	return [$support{'run'}{$app_extension}{'generic'}, $testfile];
+    }
+
+    # 4) give up and let the test harness decide itself
+    return undef;
+}
+
+sub gather_tests {
+    my ( $groups, $regexp ) = @_;
+    my @groups;
+
+    # figure out the list of groups we need to search through
+    if ($groups eq 'all') {
+	# find every group we can
+	# we exclude:
+	#  - things not a directory
+	#  - anything with "template" in the name
+	@groups =
+	  grep { !/(template|support)/ &&
+		   -d $_ && s/$opts{'srcdir'}\/testing\/$opts{'master-directory'}.// } glob("$opts{'srcdir'}/testing/$opts{'master-directory'}/*");
+    } else {
+	# they specified a comma separated list
+	@groups = split(/,\s*/, $groups);
+    }
+    DEBUG("Checking groups: ", join(", ", @groups), "\n");
+
+    my @tests;
+    foreach my $group (@groups) {
+	my @files;
+
+	DEBUG("checking group $group\n");
+
+	if (! -d "$opts{'srcdir'}/testing/$opts{'master-directory'}/$group") {
+	    ERROR("group '$group' is not a directory under '$opts{'srcdir'}/testing/$opts{'master-directory'}'; ignoring\n");
+	    next;
+	}
+
+	# push on all files that start with T[NUM]*
+	push_or_skip(\@tests, $regexp, glob("$opts{'srcdir'}/testing/$opts{'master-directory'}/$group/T[0-9]*"));
+    }
+
+    return @tests;
+}
+
+sub push_or_skip {
+    my ($array, $regexp, @files) = @_;
+    foreach my $file (@files) {
+	next if ($file =~ /.(bak|old|orig|rej)$/);
+	next if ($file =~ /~$/);
+	next if (defined($regexp) && $file !~ /$regexp/i);
+	DEBUG("  Adding file $file\n");
+	push @$array, build_test($file);
+    }
+}
+
+# rename all the tests to remove the top subdir to help readability
+sub rename_tests {
+    my (@tests) = @_;
+    my @newtests;
+
+    # yes, I could have used map.  But I didn't.
+    foreach my $file (@tests) {
+	my $title = "$file";
+	my $foundheader = 0;
+	$title = $sources{$file} if (exists($sources{$file}));
+	
+	open(SRC, $title);
+	while (<SRC>) {
+	    if (/(HEADER|TITLE)\s+['"]*(.*)/) {
+		$title = $2;
+		$title =~ s/\s*\*\/.*//;
+		$title =~ s/['"]$//;
+		$foundheader = 1;
+		last;
+	    }
+	}
+	close(SRC);
+
+	if (! $foundheader) {
+	    $title =~ s/^$opts{'srcdir'}\/testing\///;
+	    $title =~ s/$opts{'master-directory'}.//;
+	}
+	$sources{$title} = $sources{$file} || $file;
+	push @newtests, [$file, $title];
+    }
+    return @newtests;
+}
+
+# called to possibly manipulate the list of tests to run by building some
+sub build_tests {
+    my (@tests) = @_;
+    my @newtests;
+
+    foreach my $test (@tests) {
+	my $title;
+	
+	my $built = build_test($test);
+	if (ref($built) eq 'ARRAY') {
+	    push @newtests, @$built;
+	} elsif ($built ne "") {
+	    push @newtests, $built;
+	}
+    }
+    return @newtests;
+}
+
+#
+# Finds scripts that are used to build and run actual commands
+#
+sub find_builders {
+    $support{'build'} = {};
+    find_scripts('build', $support{'build'});
+}
+
+sub find_runners {
+    $support{'run'} = {};
+    find_scripts('run', $support{'run'});
+}
+
+sub find_support {
+    find_builders();
+    find_runners();
+}
+
+sub find_scripts {
+    my ($buildname, $hashref) = @_;
+    my $count;
+    DEBUG("looking for $buildname scripts\n");
+    foreach my $builder (glob("$opts{'srcdir'}/testing/$opts{'master-directory'}/*/*_${buildname}")) {
+	next if ($builder =~ /~$/);
+	next if ($builder =~ /.(bak|orig|rej|old)$/);
+
+	my ($group, $type) = ($builder =~ /([^\/]+)\/([^\/]*)_${buildname}/);
+	# save this as a certain group builder
+	$hashref->{$type}{$group} = $builder;
+
+	# save this as a generic builder if there isn't a better
+	# generic one, such as one that exists in the support
+	# directory.
+	if (!exists($hashref->{$type}{'generic'}) || $group eq 'support') {
+	    $hashref->{$type}{'generic'} = $builder;
+	}
+	$count++;
+    }
+    DEBUG("  found $count\n");
+}
+
+# called to build a test from a registerd builder
+sub build_test {
+    my ($testfile) = @_;
+
+    my ($dirname, $groupname, $basename, $app_extension, $file_extension) = 
+      ($testfile =~ /([^\/]+)\/([^\/]+)\/([^\/]+)_([^\/_]+)\.([^\/\.]+)$/);
+
+    # is this even a buildable type recipe?
+    if (!$dirname || !$basename || !$app_extension || !$file_extension) {
+	return $testfile;
+    }
+
+    DEBUG("found: $testfile => $dirname, $basename, $app_extension, $file_extension\n");
+
+    # choices:
+    # 1) we have a registered subroutine to build an extension from
+    # XXX
+
+    # 2) we have a BUILD_TYPE file in the same directory
+    if (exists($support{'build'}{$app_extension}{$dirname})) {
+	return
+	  call_build_script($support{'build'}{$app_extension}{$dirname}, $testfile);
+    }
+
+    # 3) return a generic build script
+    if (exists($support{'build'}{$app_extension}{'generic'})) {
+	return
+	  call_build_script($support{'build'}{$app_extension}{'generic'}, $testfile);
+    }
+
+    # 4) we assume it's fine as is
+    return $testfile;
+}
+
+sub call_build_script {
+    my ($scriptname, $filename) = @_;
+
+    my $maybenewfile = $filename;
+    $maybenewfile =~ s/.[^\.]+$/$opts{'exeext'}/;
+    $maybenewfile =~ s/T([^\/]+)$/B$1/;  # change prefix to B for 'Built'
+    $maybenewfile =~ s/^$opts{'srcdir'}\///;
+
+    my $newpath = $maybenewfile;
+    $newpath =~ s/\/[^\/]*$//;
+
+    if (! -d $newpath) {
+	DEBUG("making directory $newpath\n");
+	system("$opts{'srcdir'}/mkinstalldirs $newpath");
+    }
+
+    my $lastline;
+    DEBUG("BUILDING: $scriptname $filename $maybenewfile\n");
+    open(B,"$scriptname $filename $maybenewfile|");
+    while (<B>) {
+	$lastline = $_;
+    }
+    chomp($lastline);
+
+    DEBUG("  result: $lastline\n");
+    return undef if ($lastline eq 'fail');
+    return undef if ($lastline eq 'skip');
+    return $filename if ($lastline eq '');
+    $sources{$lastline} = $filename;        # remember where we came from
+    return $lastline;
+}
+
+sub get_sources {
+    my (@names) = @_;
+    map { if (exists($sources{$_})) { $_ = $sources{$_} } } @names;
+    return @names;
+}
+
+sub run_older_perl_tests {
+    #
+    # Older versions of perl used a different test suite called Test::Harness
+    # It is much more limited than TAP::Harness;
+    #
+    # Here we massage our older tests into something that will work under
+    # Test::Harness too.
+    #
+    my @tests = @_;
+
+    # create the temporary files
+    my @tempfiles;
+    if (! -d "$opts{'master-directory'}") {
+	mkdir("$opts{'master-directory'}", 0777);
+    }
+    if (! -d "$opts{'master-directory'}/temptests") {
+	mkdir("$opts{'master-directory'}/temptests", 0777);
+    }
+    foreach my $test (@tests) {
+	my $tempfile = "$test->[0].t";
+	$tempfile =~ s#^$opts{'srcdir'}#$opts{'builddir'}#;
+	$tempfile =~ s#$opts{'master-directory'}/default/#$opts{'master-directory'}/temptests/#;
+	open(T, ">$tempfile") || die("$tempfile: $!");
+	print T "# functionally perl\n\nsystem(\"$opts{'srcdir'}/testing/fulltests/support/simple_run $test->[0]\");\n";
+	close(T);
+	chmod(0755, $tempfile);
+	push @tempfiles, $tempfile;
+    }
+
+    $results = runtests(@tempfiles);
+
+    unlink(@tempfiles) || die("$@ $!");
+    exit;
+}
+
+# usage output
+sub usage {
+    print "$0 [OPTIONS]\n";
+
+    print "\nOPTIONS:\n";
+    print "  -v\t\t\tRuns in verbose mode; dumping all test output\n";
+    print "    --verbose\n";
+    print "  -q\t\t\tRuns in quieter mode; dumps less test output\n";
+    print "    --quiet\n";
+    print "  -g GROUP\t\tRuns the group of specified tests (default = 'default')\n";
+    print "    --group GROUP\n";
+    print "\t\t\t(use 'all' to run all tests)\n";
+    print "  -r REGEXP\t\tOnly run test files matching this regexp\n";
+    print "  -f\t\t\tRun only the failed tests from the last run\n";
+    print "  -F\t\t\tDon't create the failed_tests file\n";
+    print "  --failed-file FILE\tThe location of the failed state file\n";
+    print "  -D PATH\t\tSource directory\n";
+    print "    --srcdir PATH\n";
+    print "    (currently '$opts{'srcdir'}')\n";
+    print "  -d PATH\t\tBuild directory to be tested\n";
+    print "    --builddir PATH\n";
+    print "    (currently '$opts{'builddir'}')\n";
+    print "  --master-directory DIRNAME\n";
+    print "    (default = 'fulltests')\n";
+    print "  -h\t\t\tThis help output\n";
+    print "    --help\n";
+    print "  --debug\t\tDebugging output\n\n";
+    exit;
+}
+
+sub DEBUG {
+    return if (!$opts{'debug'});
+    print @_;
+}
+
+sub ERROR {
+    print STDERR "Error:", @_;
+}
+
+sub DIE {
+    ERROR(@_);
+    exit 1;
+}
+
+=pod
+
+=head1 NAME
+
+runfulltests - the Net-SNMP test suite coordinator
+
+=head1 SYNOPSIS
+
+runfulltests [OPTIONS]
+
+# ./RUNFULLTESTS
+
+# ./RUNFULLTESTS -g all
+
+=head1 DESCRIPTION
+
+B<RUNFULLTESTS> is a TAP (see below) output aggregator and test suite
+management program.  It runs groups of tests that it can find in the
+I<fulltests> sub-directory.  It defaults to running a basic set of
+high-level Net-SNMP tests found in the fulltests/default directory.
+To run a different set of tests see the -g flag.
+
+It is able to keep state and remember which tests failed so that
+during development you can simply re-run only the "last failed tests"
+using the -f switch.
+
+=head2 Perl Requirements
+
+Ideally it should be run under a fairly modern version of perl (eg,
+5.10) but minmial support is provided for older versions of perl as
+well.
+
+If no perl is available on the system, there is also a fall-back
+"RUNTESTS" suite which merely executes the default scripts for testing
+compliance of the high-level applications.
+
+=head2 Important Notes About Writing New Tests
+
+When designing new tests it is strongly encouraged that some
+conventions are followed:
+
+  - Design the test files so they can be build/run without them
+    needing to be build/run within a testing harness like this one
+    (B<RUNFULLTESTS>).  IE, you should be able to run them directly by
+    hand for debugging purposes without requiring them to be invoked
+    within this or any other testing harness.
+  - Name them beginning with TNNN where NNN is a 3 digit number
+
+The rational behind these rules follows in the sections below
+
+=head1 OPTIONS
+
+=over
+
+=item -g GROUP
+
+=item --group GROUP
+
+By default the "default" group of tests is run.  Which is really just
+everything that B<RUNFULLTESTS> can find from the I<fulltests/default>
+sub-directory.  The -g switch can be used to specify other
+sub-directories of tests to run.  The argument is a comma-separated
+list of subdirectories to use.
+
+The special keyword I<all> can be used to run every test in every
+subdirectory of the I<fulltests> directory.
+
+=item -r REGEXP
+
+Only run test files that match the I<REGEXP> regular expression.
+
+To run only tests of a certain file name you might combine this with
+'-g all'.  E.G., -g all -r snmpv3 will run all snmpv3 (named) tests
+that B<RUNFULLTESTS> can find.
+
+=item -f
+
+Only run the tests that failed from the last run.
+
+=item --failed-file FILE
+
+Where to store the state of which tests have failed.
+
+=item -F
+
+Don't save state to the failed-file.
+
+=item -D PATH
+
+=item --srcdir PATH
+
+If RUNFULLTESTS is being executed from a build directory other than
+where the source files are located, this flag can be used to specify
+where the Net-SNMP root source directory is found.
+
+=item -d PATH
+
+=item --builddir PATH
+
+Specifies the root of the build directory.
+
+=item --master-directory DIRNAME
+
+Specifies an alternate master directory.  The default is "fulltests"
+
+=item -v
+
+=item --verbose
+
+Turns on verbose output mode.
+
+=item -q
+
+=item --quiet
+
+Turns on quiet output mode.
+
+=item --debug
+
+Turns on debugging output (which primarily shows how B<RUNFULLTESTS>
+is collecting tests to run, etc).
+
+=item -h
+
+=item --help
+
+Command line usage help output.
+
+=back
+
+=head1 TEST ARCHITECTURE
+
+=head2 TAP output
+
+TAP stands for "Test Anything Protocol".  TAP was originally
+perl-specific but has been turning out to be a generic protocol for
+testing just about anything.  It's heavily documented at:
+
+  http://testanything.org/wiki/index.php/Main_Page
+
+We're using TAP because it's highly flexible and separates the
+invidual tests from the "collect and report" aspect.  RUNFULLTESTS is
+simply a perl-based implementation for collecting and summarizing the
+test results.  Other collection agents could be used instead of this
+one, and any sort of test or language could be used for the individual
+tests as well (in fact the default suite has some that are SH-based,
+C-based, ...).
+
+It may be that eventually the TAP protocol actually makes it into the
+IETF (http://testanything.org/wiki/index.php/TAP_at_IETF:_Draft_Standard).
+
+The syntax of TAP is very simple.  See the above web page for a
+complete description, but this will provide you a minimal "getting
+started" example and shows the output of 5 sub-tests run from a single
+test application.
+
+  1..5
+  ok 1 - Yay
+  ok 2 - Second part succeeded
+  not ok 3 - Oh no...  A problem occurred.
+  not ok 4 - The computer thought 2+2 was 5
+  ok 5 - All is well that ends well
+
+That's it.  Output from a test tool like that is auto-summarized by
+this application in success/fail reports.
+
+=head2 Testing Phases
+
+The testing process goes through the following phases:
+
+ - Test and Infrastructure Collection
+ - Test Execution
+   - Build if needed
+   - Run
+
+=head2 Test Collection
+
+B<RUNFULLTESTS> will search all the requested groups for files that
+begin with the letter 'T'.  They are executed in alphabetical order
+within their group.  Convention is to number test files with a three
+digit (zero-padded) number after the 'T' letter to ensure ordering is
+as expected.
+
+Files to be collected by B<RUNFULLTESTS> are made up of a number of
+components to support a flexible build and execution system (discussed
+in detail in the following sections).  They are structured as follows:
+
+  T<NNN><NAME>_<TYPE>.<SUFFIX>
+
+Where:
+
+  NNN:      Is the 3 digit number mentioned above.
+  NAME:     The filename of the test describing what it's about
+  TYPE:     The internal "type" of the test, which is used later in building
+            and execution (see below).
+  .SUFFIX:  An optional file-type suffix
+
+Examples:
+
+  fulltests/default/T001snmpv1get_simple
+  fulltests/snmpv3/T040keymanagetest_capp.c
+
+Any other files are ignored in terms of tests and may be supplimental
+to the above build systems.  (Supporting files, by convention, begin
+with a capital 'S').
+
+=head3 Full Title
+
+Within the file there may be a line containing "HEADER ..." that will
+be examined for a better title of the test.  Anything before "HEADER"
+will be ignored, and the special "*/" will be replaced as well.  For
+example, these are valid header source lines:
+
+  # HEADER A cool test
+  /* HEADER A cool test from my C-based source file */
+
+=head2 Infrastructure Collection
+
+In addition to test files, I<infrastructure> files are searched for
+and remembered for later use (again, see below).  These files will be
+of the form:
+
+  <TYPE>_<USEAGE>
+
+Where:
+
+  TYPE:      The type name matching the file to support.
+
+  USAGE:     How this file should be used.  Currently should be either
+            I<build> or I<run> as described below.
+
+Example files
+
+  fulltests/support/clib_build
+  fulltests/support/simple_run
+
+Infrastructure files may exist in the source directory of where they're
+expected to be run (ie, parallel to the test files) or they may exist
+in the special "support" directory if they're expected to be
+generically used across multilpe test group types.
+
+=head2 Test Execution
+
+Tests are run in two phases using the following pseudo-algorithm:
+
+  + for each test file
+    + if an appropriate TYPE_build file exists for a test {
+      + run "TYPE_build TESTFILE"
+      + record the last line as the new TESTFILE to run
+    }
+
+    + if an apporpriate TYPE_run file exists for a test {
+      + run "TYPE_run TESTFILE"
+      + collect it's output as the TAP output
+    } else {
+      + run "TESTFILE"
+      + collect it's output as the TAP output
+    }
+
+For example, if the following files existed:
+
+  fulltests/examplres/T001testing_examp
+  fulltests/examplres/examp_build
+  fulltests/examplres/examp_run
+
+Then the following would be the rough execution:
+
+  newfile = `fulltests/examplres/examp_build \
+             fulltests/examplres/T001testing_examp | tail -1`
+  fulltests/examplres/examp_run $newfile
+
+=head1 TEST TYPES
+
+Net-SNMP testing comes with a number of test suite "builders" and
+"runners" that are useful for developing new tests.  These are
+documented here:
+
+=over
+
+=item simple
+
+I<simple> test files are simple sh-shell-script files used to test
+high-level functionality of Net-SNMP tools.  They're easy to write and
+should generally contain the following sort of structure:
+
+  . ../support/simple_eval_tools.sh
+  HEADER my name
+  STARTAGENT
+  CAPTURE "snmpget..."
+  CHECK "for this string"
+  STOPAGENT
+  FINISHED
+
+Example file: fulltests/default/T001snmpv1get_simple
+
+=item capp
+
+I<capp> files are fundamentally full C-source-code applications that
+are built and linked against the libnetsnmp library.  Thus, a file
+named I<T001mytest_capp.c> is compiled using the same compiler used to
+compile Net-SNMP and linked against the required libraries for a basic
+Net-SNMP application.  It should, of course, produce TAP output after
+it's compiled and run.
+
+Example file: fulltests/snmpv3/T010scapitest_capp.c
+
+=item clib
+
+I<clib> files are simple C-source-code files that are wrapped into a
+main() application with appropriate #include files, etc.  I<clib>
+files are designed primarly to write quick unit-tests for the Net-SNMP
+core library.
+
+Example file: fulltests/unit-tests/T001defaultstore_clib.c
+
+=item Write your own!
+
+This test system is designed to be flexible and expandable if the
+basic architecture is followed.  The goal is to make it easy to create
+very simple test suites or complex unit-tests or anything in between.
+
+=back
+
+=head1 DEBUGGING BROKEN TESTS
+
+If the individual tests are designed well, you should be able to
+re-run individual tests outside of the B<RUNFULLTESTS> aggregation
+environment using the appropriate _build and _run scripts as needed.
+Test writers are encouraged to output comments in their TAP output to
+help users debug the results.
+
+=head1 Author
+
+Original architecture: Wes Hardaker <hardaker@users.sourceforge.net>
+
+=cut
+
diff --git a/testing/RUNTESTS b/testing/RUNTESTS
index f6dc6a6..69fbae4 100755
--- a/testing/RUNTESTS
+++ b/testing/RUNTESTS
@@ -1,399 +1,45 @@
 #!/bin/sh
-#
-# RUNTESTS [-h]...
-#
-# RETURNS:	Number of failed tests.
-#
-# CALLS: eval_oneprogram.sh [-h][-lk] <program>
-#
-#
 
-#
-# Suggested improvement(s):
-#	Run a given test against a running agent.
-#
-# Variables:  (* = exported)
-#  *SNMP_BASEDIR:  	  the source base directory for tests
-#  *SNMP_UPDIR:  	  directory above where the test binaries live (-D option)
-#  *SNMP_PATH	## yes, PATH is already setup
-#  *SNMP_VERBOSE	## 0=silent, 1=warnings, 2=more
+srcdir=`dirname $0`
+srcdir=`cd $srcdir; pwd`
+srcdir=`dirname $srcdir`
 
-# Usage mess.  (No, it works.)
-#
-
-usage() { 
-    cat << BLIK
-
-Usage: `basename $0` [-a] [-S SLEEPTIME] [-h] [-i] [-v] [-V] [-s] [-XM]
-       [-T TESTNUMS] [-D bindir] [-S seconds] [-P <udp|tcp|udp6|tcp6|unix>]
-
-  -a        run all tests.
-  -T NUMS   run particular tests (command separated list of numbers)
-  -i        run interactively
-  -v        be verbose
-  -V        be very verbose
-  -S TIME   TIME should be used as the timeout when waiting for a
-            response from the agent.
-  -A FLAGS  Extra flags to pass to the agent.
-  -t FLAGS  Extra flags to pass to the trapd.
-  -s        Don't erase the runtime data directory for successful tests
-  -XM       Don't set MIBDIRS environment unless absolutely necessary
-  -x        Turn on SH output debugging for tests.
-  -P TRANS  Specify on which transport domain to run the tests.Default is udp.
-  -p prefix Specify test case prefix. Options are [T|V]. Default is T
-
-BLIK
-    exit 0
-}
-
-trap "exit 1;" 1 2 3 9 13 15
-
-SNMP_BASEDIR=`dirname $0`
-SNMP_PREFER_NEAR_MIBS=1	## prefer MIB files found in source hierarchy
-export SNMP_PREFER_NEAR_MIBS
-SNMP_TEST_PREFIX=${SNMP_TEST_PREFIX:=T}
-export SNMP_TEST_PREFIX
-
-### Check for the configuration script.
-##if [ ! -s "${SNMP_BASEDIR}/TESTCONF.sh"  ] ; then 
-##  echo "No TESTCONF.sh in \"$SNMP_BASEDIR\" ; exiting"
-##  exit 0
-##fi
-
-ORIGDIR=`pwd`		## this script may be invoked with relative path
-SNMP_UPDIR=..		## building from the source tree
-interactive=no
-SNMP_VERBOSE=${SNMP_VERBOSE:=0}
-SNMP_SLEEP=${SNMP_SLEEP:=1} 	## default seconds to sleep
-SH_DEBUG=0
-USE_TEST_NUMS=0
-
-while [ -n "$1" ]; do
-    case "$1" in
-	-h)
-	    usage
-	    exit
-	    ;;
-
-	-i)
-	    interactive="yes"
-	    ;;
-	-v)
-	    SNMP_VERBOSE=1
-	    ;;
-	-V)
-	    SNMP_VERBOSE=2
-	    ;;
-	-s)
-	    SNMP_SAVE_TMPDIR="yes"
-	    export SNMP_SAVE_TMPDIR
-	    ;;
-	-D)
-	    shift
-	    SNMP_UPDIR="$1"
-	    ;;
-	-p)
-	    shift
-	    SNMP_TEST_PREFIX="$1"
-	    ;;
-	-P)
-		shift
-		SNMP_TRANSPORT_SPEC="$1"
-		export SNMP_TRANSPORT_SPEC
-		if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
-			SNMP_SNMPD_PORT="/var/tmp/unixsnmpd"
-			SNMP_SNMPTRAPD_PORT="/var/tmp/unixsnmptrapd"
-			SNMP_TEST_DEST=""
-			export SNMP_SNMPD_PORT
-			export SNMP_SNMPTRAPD_PORT
-			export SNMP_TEST_DEST
-		fi
-		;;
-	-T)
-	    shift
-	    test_nums=`echo $1 | sed 's/,/ /g'`
-	    ;;
-	-a)
-	    test_nums="all"
-	    ;;
-
-	-A)
-	    shift
-	    AGENT_FLAGS="$1"
-	    export AGENT_FLAGS
-	    ;;
-	-S)
-	    shift
-	    SNMP_SLEEP="$1"
-	    ;;
-	-t)
-	    shift
-	    TRAPD_FLAGS="$1"
-	    export TRAPD_FLAGS
-	    ;;
-
-	-x)
-	    SH_DEBUG=1
-	    ;;
-
-	-XM)
-	    SNMP_PREFER_NEAR_MIBS=0
-	    ;;
-
-	-n)
-	    USE_TEST_NUMS=1
-	    ;;
-    esac
-
-    shift
-done
-
-export SNMP_SLEEP
+# set up MIBDIRS to refer to the src directory
+if [ "x$MIBDIRS" = "x" ]; then
+    MIBDIRS=${srcdir}/mibs
+    export MIBDIRS
+fi
 
 # Make sure MinGW / MSYS users have the pskill.exe program to stop the agent and
 # snmptrapd
-if [ "x$OSTYPE" = "xmsys" -a "x`which pskill.exe 2>/dev/null`" = "x" ]; then
+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."
+    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 
 
-# Find executables in source first, then build, then existing PATH.
-## Add to PATH if a binary is found.
-
-cd $SNMP_UPDIR
-SNMP_UPDIR=`pwd`
-bf=snmpget
-if [ -x "$bf" ] ; then
-   PATH=$SNMP_UPDIR:$PATH
-else
-  for dd in apps bin ; do
-   bf=$dd/snmpget
-   if [ -x "$bf" ] ; then
-      PATH=$SNMP_UPDIR/$dd:$PATH
-      break
-   fi
-  done
-fi
-for dd in agent bin sbin ; do
-   bf=$dd/snmpd
-   if [ -x "$bf" ] ; then
-      PATH=$SNMP_UPDIR/$dd:$PATH
-      break
-   fi
-done
-
-bf=include/net-snmp/net-snmp-config.h
-if [ ! -s "$bf" ] ; then
-   echo "No \"$bf\" in $SNMP_UPDIR . Some tests will be skipped"
-fi
-unset bf
-
-# Run from the test scripts directory.
-cd $ORIGDIR ; cd ${SNMP_BASEDIR}
-SNMP_BASEDIR=`pwd`
-
-# Setup for the next test run.
-rm -f core tests/core
-
-PATH=${SNMP_BASEDIR}:$PATH
-SNMP_PATH=yes
-
-export PATH
-export SNMP_BASEDIR
-export SNMP_PATH
-export SNMP_UPDIR
-export SNMP_VERBOSE
-
-WHICH=which
-$WHICH $0 > /dev/null 2>&1
-if [ $? -ne 0 ] ; then
-    WHICH=type
-fi
-
-for needed in snmpd snmpget snmpgetnext; do
-    $WHICH $needed > /dev/null 2>&1
-    if [ $? -ne 0  ] ; then 
-        echo "No $needed found. Exiting"
-        exit 1
-    fi
-done
-
-#
-# Distinguished expectations.
-#
-if [ $SNMP_VERBOSE -gt 0 ]; then
-    echo ${SNMP_UPDIR}/testing
-    echo path is $PATH
-    echo top of build is $SNMP_UPDIR
-    echo source testing is $SNMP_BASEDIR
-    $WHICH snmpusm
-fi
-
-#
-# Source the testing configuration file
-#
-
-. TESTCONF.sh
-
-# Hack: the above created a directory, now we have to nuke it and
-# forget about it...  All for the convenience of the test writer.
-rm -fR $SNMP_TMPDIR
-unset SNMP_TMPDIR
-export SNMP_TMPDIR
-
-if [ "x$SNMP_PREFER_NEAR_MIBS" = "x0" ]; then
-    # try the compiled MIBDIRS directory first.
-    # if MIB files are not found, fallback to the source base
-
-    snmptranslate -On -IR sysDescr > /dev/null 2>&1
-    if [ $? -ne 0 ] ; then
-        if [ "x$MIBDIRS" = "x" ]; then
-    	MIBDIRS=${SNMP_BASEDIR}/../mibs
-    	export MIBDIRS
-        fi
-    fi
-    snmptranslate -On -IR sysDescr > /dev/null 2>&1
-    if [ $? -ne 0 ] ; then
-        echo "Could not resolve sysDescr in $MIBDIRS. Exiting"
-        exit 1
-    fi
-fi ## SNMP_PREFER_NEAR_MIBS
-
-#
-# Switch to the testing directory, for ease of the client test packages.
-#
-cd ./tests
-
-#------------------------------------ -o- 
-# Globals.
-#
-PROGRAM=
-ARGUMENTS="$*"
-
-TMPFILE=$SNMP_TMPDIR/eval_suite.sh$$
-
-testname=
-
 success_count=0
 failed_count=0
-
-if [ "x$do_tests" = "x" ]; then
-    #
-    # List the tests in question
-    #
-    num=0
-    for testfile in $SNMP_TEST_PREFIX*; do
-	case $testfile in
-	    # Skip backup files, and the like.
-	    *~)     ;;
-	    *.bak)  ;;
-	    *.orig) ;;
-	    *.rej)  ;;
-
-	    # Do the rest
-	    *)
-		num=`expr $num + 1`
-		if [ "x$interactive" != "xyes" -a "x$test_nums" = "x" ]; then
-		    eval_onescript.sh $testfile $num "yes"
-		fi
-		all_tests="$all_tests $num"
-		all_files="$all_files $testfile"
-		;;
-	esac
-    done
-
-    #
-    # TODO: allow user to interactively pick the list of tests to run.
-    #
-
-    if [ "x$interactive" != "xyes" ]; then
-	if [ "x$test_nums" = "x" ]; then
-	    ECHO "Enter test numbers [all]: "
-	    read inp
-	else
-	    if [ "x$test_nums" = "xall" ]; then
-		inp=""
-	    else
-		inp="$test_nums"
-	    fi
-	fi
-	if [ "x$inp" = "x" ]; then
-	    do_tests="$all_files"
-	else
-	    a=1
-	    set $all_files
-	    while [ $a -le $num ]; do
-		if echo " $inp " | grep " $a " > /dev/null; then
-		    do_tests="$do_tests $1"
-		    if [ "x$test_nums" = "x" ] ; then
-			test_nums=$a
-		    fi
-		fi
-		shift
-		a=`expr $a + 1`
-	    done
-	fi
-    fi
-
-    #echo Starting: Running tests $do_tests
-fi
-
-#
-# Run the tests
-#
-if [ "x$test_nums" = "xall" -o "x$test_nums" = "x" ] ; then
-    num=1
-else
-    num="$test_nums"
-fi
-cntr=0
-for testfile in $do_tests; do
-    dothisone="yes"
-    if [ $USE_TEST_NUMS = 1 ] ; then
-	num=`echo $testfile | sed -e 's/^T//;s/[a-zA-Z].*//;'`
+rm -f failed_tests
+for i in "${srcdir}"/testing/fulltests/default/T*$1*; do
+    echo "RUNNING $i"
+    ${srcdir}/testing/fulltests/support/simple_run $i
+    if [ $? = 0 ]; then
+        success_count=`expr $success_count + 1`
     else
-        id_x=0
-        for itest in $inp; do
-            if [ "$cntr" = "$id_x" ] ; then
-                num="$itest"
-            fi
-            id_x=`expr $id_x + 1`
-        done
+        failed_count=`expr $failed_count + 1`
+        echo "$i" >> failed_tests
     fi
-    if [ "x$interactive" = "xyes" ]; then
-
-        if [ $SH_DEBUG = 1 ] ; then
-	    sh -x "${SNMP_BASEDIR}/eval_onescript.sh" $testfile $num "yes"
-	else
-	    eval_onescript.sh $testfile $num "yes"
-	fi
-
-	ECHO "  Run test #$num (y/n) [y]? "
-	read inp2
-	if [ "x$inp2" = "xn" ]; then
-	    dothisone=no
-	fi
-    fi
-  
-    if [ "x$dothisone" = "xyes" ]; then
-        if [ $SH_DEBUG = 1 ] ; then
-	    sh -x "${SNMP_BASEDIR}/eval_onescript.sh" $testfile $num "no"
-	else
-	    eval_onescript.sh $testfile $num "no"
-	fi
-	if [ $? = 0 ]; then
-	    success_count=`expr $success_count + 1`
-	else
-	    failed_count=`expr $failed_count + 1`
-	fi
-    fi
-    num=`expr $num + 1`
-    cntr=`expr $cntr + 1`
 done
 
+if [ -f failed_tests ]; then
+    echo
+    echo Failed tests:
+    cat failed_tests
+fi
+echo
 echo Summary: $success_count / `expr $failed_count + $success_count` succeeded.
 
 exit $failed_count
diff --git a/testing/T.c b/testing/T.c
deleted file mode 100644
index da483a1..0000000
--- a/testing/T.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * T.c
- *
- * Expected SUCCESSes for all tests:    FIX [+ FIX ...]
- *                                      (List number of lines containing the
- *                                       string "SUCCESS" that are expected
- *                                       to be printed to stdout.)
- *
- * Returns:
- *      Number of FAILUREs.
- *
- * FIX  Short test description/table of contents.       SUCCESSes: FIX
- */
-
-#include <net-snmp/net-snmp-config.h>
-
-#include <sys/types.h>
-#include <stdio.h>
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-/*
- * #include ... 
- */
-
-extern char    *optarg;
-extern int      optind, optopt, opterr;
-
-
-
-/*
- * Globals, &c...
- */
-char           *local_progname;
-
-#define USAGE	"Usage: %s [-h][-aS]"
-#define OPTIONLIST	"ahS"
-
-int             doalltests = 0, dosomething = 0;
-
-#define	ALLOPTIONS	(doalltests + dosomething)
-
-
-
-#define LOCAL_MAXBUF	(1024 * 8)
-#define NL		"\n"
-
-#define OUTPUT(o)	fprintf(stdout, "\n\n%s\n\n", o);
-
-#define SUCCESS(s)					\
-{							\
-	if (!failcount)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
-}
-
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
-}
-
-
-
-
-
-/*
- * Prototypes.
- */
-void            usage(FILE * ofp);
-
-int             test_dosomething(void);
-
-
-
-
-int
-main(int argc, char **argv)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-    char            ch;
-
-    local_progname = argv[0];
-
-    EM(-1);                     /* */
-
-    /*
-     * Parse.
-     */
-    while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
-        switch (ch) {
-        case 'a':
-            doalltests = 1;
-            break;
-        case 'S':
-            dosomething = 1;
-            break;
-        case 'h':
-            rval = 0;
-        default:
-            usage(stdout);
-            exit(rval);
-        }
-
-        argc -= 1;
-        argv += 1;
-        if (optarg) {
-            argc -= 1;
-            argv += 1;
-            optarg = NULL;
-        }
-        optind = 1;
-    }                           /* endwhile getopt */
-
-    if ((argc > 1)) {
-        usage(stdout);
-        exit(1000);
-
-    } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
-    }
-
-
-    /*
-     * Test stuff.
-     */
-    if (dosomething || doalltests) {
-        failcount += test_dosomething();
-    }
-
-
-    /*
-     * Cleanup.
-     */
-    return failcount;
-
-}                               /* end main() */
-
-
-
-
-
-void
-usage(FILE * ofp)
-{
-    fprintf(ofp,
-            USAGE
-            "" NL
-            "	-a		All tests." NL
-            "	-S		Test something." NL
-            "	-h		Help." NL "" NL, local_progname);
-
-}                               /* end usage() */
-
-
-
-
-#ifdef EXAMPLE
-#endif                          /* EXAMPLE */
-/*******************************************************************-o-******
- * test_dosomething
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test template.
- */
-int
-test_dosomething(void)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-
-    EM0(1, "UNIMPLEMENTED");    /* EM(1); /* */
-
-  test_dosomething_quit:
-    return failcount;
-
-}                               /* end test_dosomething() */
diff --git a/testing/T2.sh b/testing/T2.sh
deleted file mode 100644
index d0a51a8..0000000
--- a/testing/T2.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# T.sh
-#
-# FIX  Short description.
-#
-
-. eval_tools.sh
-
-HEADER a short description of your test
-
-#------------------------------------ -o- 
-# Test.
-#
-
-# Start the agent if needed (make sure it stop it below)
-STARTAGENT
-
-CAPTURE "<executable_with_arguments:_stores_stdout/stderr_for_use_later>"
-
-CHECKEXACT "<string_to_look_for_an_exact_match_of_in_the_CAPTUREd_file_output>"
-[ $? -eq 1 ]
-FAILED $? "<diagnostic_label>"
-
-#------------------------------------ -o- 
-# Cleanup, exit.
-#
-
-# Stop the agent if necessary
-STOPAGENT
-
-FINISHED
diff --git a/testing/data.keychange-md5 b/testing/data.keychange-md5
deleted file mode 100644
index 2e24c4a..0000000
--- a/testing/data.keychange-md5
+++ /dev/null
@@ -1,26 +0,0 @@
-0x526f5eed9fcce26f8964c2930787d82b	# old kul
-0x87021d7bd9d101ba05ea6e3bf9d9bd4a	# new kul
-000000000000000000000000000000008805615141676cc9196174e742a32551							# keychange string -- auth/privacy
-
-
-		#		#		#		#
-
-#
-# Following data exerpted from:
-#
-#	Message-Id: <199809282003.QAA27494@relay.hq.tis.com>
-#	Date: Mon, 28 Sep 98 21:57:48 DST
-#	From: "Bert Wijnen" <WIJNEN@vnet.ibm.com>
-#	To: snmpv3@tis.com
-#	Subject: suggested new appendix section A.5 for RFC2274
-#
-maplesyrup				# old passphrase
-0x000000000000000000000002		# engineID
-
-newsyrup				# new passphrase
-01add273107c4e596b4b00f82b1d42a7	# new Ku
-87021d7bd9d101ba05ea6e3bf9d9bd4a	# new kul
-
-00000000000000000000000000000000	# random delta
-
-000000000000000000000000000000008805615141676cc9196174e742a32551							# keychange string -- auth/privacy
diff --git a/testing/data.keychange-sha1 b/testing/data.keychange-sha1
deleted file mode 100644
index 4d97749..0000000
--- a/testing/data.keychange-sha1
+++ /dev/null
@@ -1,26 +0,0 @@
-0x6695febc9288e36282235fc7151f128497b38f3f	# old kul -- for auth
-0x78e2dcce79d59403b58c1bbaa5bff46391f1cd25	# new kul -- for auth
-00000000000000000000000000000000000000009c1017f4fd483d2de8d5fadbf84392cb06457051						# keychange string -- auth
-
-
-		#		#		#		#
-
-#
-# Following data exerpted from:
-#
-#       Message-Id: <199809282003.QAA27494@relay.hq.tis.com>
-#       Date: Mon, 28 Sep 98 21:57:48 DST
-#       From: "Bert Wijnen" <WIJNEN@vnet.ibm.com>
-#       To: snmpv3@tis.com
-#       Subject: suggested new appendix section A.5 for RFC2274
-#
-maplesyrup					# old passphrase
-0x000000000000000000000002			# engineID
-
-newsyrup					# new passphrase
-3a51a6d736aa347b83dc4a87e3e55ee4d698ac71	# new Ku -- auth
-78e2dcce79d59403b58c1bbaa5bff46391f1cd25	# new kul -- auth
-
-0000000000000000000000000000000000000000	# random delta
-
-00000000000000000000000000000000000000009c1017f4fd483d2de8d5fadbf84392cb06457051						# keychange string -- auth
diff --git a/testing/data.keychange-sha1-des b/testing/data.keychange-sha1-des
deleted file mode 100644
index 67719d5..0000000
--- a/testing/data.keychange-sha1-des
+++ /dev/null
@@ -1,26 +0,0 @@
-0x6695febc9288e36282235fc7151f1284		# old kul -- privacy
-0x78e2dcce79d59403b58c1bbaa5bff463		# new kul -- privacy
-000000000000000000000000000000007ef8d8a4c9cdb26b47591cd852ff88b5								# keychange string -- privacy
-
-
-		#		#		#		#
-
-#
-# Following data exerpted from:
-#
-#       Message-Id: <199809282003.QAA27494@relay.hq.tis.com>
-#       Date: Mon, 28 Sep 98 21:57:48 DST
-#       From: "Bert Wijnen" <WIJNEN@vnet.ibm.com>
-#       To: snmpv3@tis.com
-#       Subject: suggested new appendix section A.5 for RFC2274
-#
-maplesyrup					# old passphrase
-0x000000000000000000000002			# engineID
-
-newsyrup					# new passphrase
-3a51a6d736aa347b83dc4a87e3e55ee4d698ac71	# new Ku -- privacy
-78e2dcce79d59403b58c1bbaa5bff463		# new kul -- privacy
-
-00000000000000000000000000000000		# random delta
-
-000000000000000000000000000000007ef8d8a4c9cdb26b47591cd852ff88b5								# keychange string -- privacy
diff --git a/testing/data.kul-md5 b/testing/data.kul-md5
deleted file mode 100644
index 78e1e27..0000000
--- a/testing/data.kul-md5
+++ /dev/null
@@ -1,8 +0,0 @@
-maplesyrup				# passphrase
-9faf3283884e92834ebc9847d8edd963	# Ku
-0x000000000000000000000002		# engineID
-526f5eed9fcce26f8964c2930787d82b	# kul
-
-#
-# Taken from <draft-ietf-snmpv3-usm-v2-01.txt>, Section A.3.
-#
diff --git a/testing/data.kul-sha1 b/testing/data.kul-sha1
deleted file mode 100644
index c827abd..0000000
--- a/testing/data.kul-sha1
+++ /dev/null
@@ -1,8 +0,0 @@
-maplesyrup					# passphrase
-9fb5cc0381497b3793528939ff788d5d79145211	# Ku
-0x000000000000000000000002			# engineID
-6695febc9288e36282235fc7151f128497b38f3f	# kul
-
-#
-# Taken from <draft-ietf-snmpv3-usm-v2-01.txt>, Section A.3.
-#
diff --git a/testing/eval_oneprogram.sh b/testing/eval_oneprogram.sh
deleted file mode 100755
index 45edfc0..0000000
--- a/testing/eval_oneprogram.sh
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/bin/sh
-#
-# eval_oneprogram.sh [-h][-lk] <program> [<program_args>]
-#
-# CALLED BY: eval_suite.sh
-#
-#
-# Runs <program> and reports how many instances of the strings SUCCESS
-# or FAILED occur.
-#
-#
-# FIX	Output from $PROGRAM on stderr is separated out and comes first.
-#
-#
-USAGE_LONG='
-#
-# -h	Help.
-# -k	Save the program output in "__<program_args>__<pid>o".
-# -l	Long form.  (Short form by default.)
-#
-# <program> is the executable to run and collect the output of.
-'
-
-USAGE="Usage: `basename $0` [-h][-lk] <program>"
-
-
-
-
-#------------------------------------ -o- 
-# Globals.
-#
-AWKFILE="_`basename $0`$$.awk"
-SCRIPTFILE=
-
-dolongform=0
-dokeepoutput=
-
-TOTALFAILED=0
-
-
-
-#------------------------------------ -o- 
-# Parse & setup.
-#
-while [ -n "$1" ]; do
-	case "$1" in
-	-k)	dokeepoutput=true
-		;;
-	-l)	dolongform=1
-		;;
-	-h)	echo $USAGE
-		cat <<BLIK | sed 's/^#//' | sed '1d'    1>&2
-$USAGE_LONG
-BLIK
-		exit 0
-		;;
-	*)	PROGRAM="$*"
-		shift `expr $# - 1`
-		;;
-	esac
-
-	shift
-done
-
-[ -z "$PROGRAM" ] && echo $USAGE && exit 1
-
-
-SCRIPTFILE="__`echo \`basename $PROGRAM\` | sed 's/ /_/g'`__$$o"
-
-
-
-#------------------------------------ -o- 
-# Create awk script.
-#
-
-cat <<GRONK >$AWKFILE
-
-BEGIN {
-	pass = 0
-	passlist[0] = ""
-
-	fail = 0
-	faillist[0] = ""
-
-	longform = $dolongform + 0
-}
-
-/SUCCESS/	{
-	passlist[pass] = \$0
-	pass += 1
-}
-
-/FAILED/	{
-	faillist[fail] = \$0
-	fail += 1
-}
-
-END {
-	printf "$PROGRAM SUCCESS: %d\n", pass
-	printf "$PROGRAM FAILED: %d\n", fail
-
-	if (longform) {
-		printf "\n"
-		for (i=0; i<pass; i++)
-			print passlist[i]
-
-		for (i=0; i<fail; i++)
-			print faillist[i]
-	}
-
-	exit fail
-}
-GRONK
-
-
-
-
-#------------------------------------ -o- 
-# Get and print results.
-#
-
-{ $PROGRAM $* 2>&1 ; } >$SCRIPTFILE
-
-awk -f $AWKFILE $SCRIPTFILE
-TOTALFAILED=$?
-
-rm -f $AWKFILE
-[ -z "$dokeepoutput" ] && rm -f $SCRIPTFILE
-
-
-
-
-#------------------------------------ -o- 
-# Exit, cleanup.
-#
-exit $TOTALFAILED
-
-
diff --git a/testing/eval_onescript.sh b/testing/eval_onescript.sh
deleted file mode 100755
index f2476d1..0000000
--- a/testing/eval_onescript.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# eval_onescript.sh SCRIPT  [TESTNUMBER [HEADERONLY] ]
-#
-# Evaluates one test program, and helps it out by doing a bit of setup
-# for it.  It does this by sourcing some configuration files for it
-# first, and if it exited without calling FINISHED, call it.
-#
-# Not intended to be a tool for the common user!  Called by RUNTESTS
-# directly instead.
-#
-
-testnum=1
-if [ "x$2" != "x" ]; then
-	testnum=$2
-fi
-export testnum
-
-unset SNMP_HEADERONLY
-if [ "x$3" = "xyes" ]; then
-    SNMP_HEADERONLY=yes
-fi
-export SNMP_HEADERONLY
-
-. TESTCONF.sh
-
-. eval_tools.sh
-
-ECHO "$testnum:  "
-
-. ./$1
-
-# We shouldn't get here...
-# If we do, it means they didn't exit properly.
-# So we will.
-FINISHED
diff --git a/testing/eval_suite.sh b/testing/eval_suite.sh
deleted file mode 100755
index 1c1a0f2..0000000
--- a/testing/eval_suite.sh
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/bin/sh
-#
-# eval_suite.sh [-h][<args_passed_to_getresults>]
-#
-# CALLS: eval_oneprogram.sh [-h][-lk] <program>
-#
-# RETURNS:	Number of failed tests, regardless of how that failure occured
-#		or how many failures there were in a given test.
-#
-#
-
-
-								USAGE_LONG='
-#
-# HOW TO ENTER A NEW TEST
-#
-# To add a test to the testlist, add a line to the TESTLISTFILE (eval_testlist)
-# using the following format:
-#
-#	<#_of_expected_successes> [#]<program> <args>
-#
-# Any white space may be used as separator.  If <program> is immediately
-# preceeded by a pound sign (#) that test will be skipped.  (No white space
-# allowed after the pound.  Eg, "#<program>".)
-#
-#
-# HOW TESTS ARE RUN AND EVALUATED
-#
-# The harness for individual tests is the script "eval_oneprogram.sh".
-# It expects that the test print FAILED when something fails, and SUCCESS
-# when something succeeds.  If a test executes properly there should be
-# some SUCCESS strings and NO FAILED strings.  If the reason for the
-# success or failure of the test should be printed on the SAME line as the
-# SUCCESS/FAILED string to allow the dianostic to be easilly grepped from
-# the its output.
-#
-# The long form of the output (-l flag) will capture that output which may
-# help to diagnosis the problem.  For more information:
-#
-#	% eval_oneprogram.sh -h
-#
-# 
-# MISSING TESTS ARE NOTED
-#
-# If an executable is found MISSING, a note is printed to that effect
-# and TESTFAILURE is incremented by 1.
-#
-'
-
-#
-# Suggested improvement(s):
-#	Have two (or more?) arbitrary script(s) that may be associated
-#	with a given test.  One could prepare the environment, the other
-#	could clean up the environment after running the test.  This could
-#	help when testing large subsystems that might require legitimately
-#	building or changing things such that the testable item may be 
-#	accessed in the first place (eg). ...
-#
-
-
-#------------------------------------ -o- 
-# Usage mess.  (No, it works.)
-#
-USAGE="Usage: `basename $0` [-h][<args_for_getresults>]"
-
-usage() { echo; echo $USAGE; cat <<BLIK | sed 's/^#//' | sed '1d' | $PAGER
-$USAGE_LONG
-BLIK
-exit 0
-}
-
-[ "x$1" = "x-h" ] && usage
-
-
-
-#------------------------------------ -o- 
-# Globals.
-#
-PROGRAM=
-ARGUMENTS="$*"
-
-umask 0077 # just to be on the safe side
-SNMP_TMPDIR=/tmp/net-snmpd-eval-dir.$$
-rm -rf $SNMP_TMPDIR
-mkdir $SNMP_TMPDIR || exit -1
-chmod 0700 $SNMP_TMPDIR
-TMPFILE=$SNMP_TMPDIR/eval_suite.sh$$
-
-TESTLISTFILE=eval_testlist
-
-EXPECTEDSUCCESSES=
-TESTFAILURE=0
-
-testname=
-
-success_count=
-failed_count=
-
-#
-# TESTLISTFILE format:
-#  	<expected_successes>	<program> <arg(s)> ...
-#  	<expected_successes>	<program> <arg(s)> ...
-#	...
-#
-TESTLIST="`cat $TESTLISTFILE | sed 's/$/   ===/'`"
-
-
-
-
-
-#------------------------------------ -o- 
-# Run all tests in the testlist.  For each test do the following:
-#
-#	1) Note whether the test is SKIPPED or MISSING.
-#
-#	2) Run the test; collect the number of FAILED strings from the
-#		return value of eval_oneprogram.sh.
-#
-#	3) Count the number of SUCCESSes from the test output.
-#
-#	4) Print the results.  If there were no FAILED strings *and* the
-#		number of SUCCESS strings is what we expect, simply
-#		note that the test passed.  Otherwise, cat the output
-#		generated by eval_oneprogram.sh and (possibly)
-#		print other details.
-#
-set x $TESTLIST
-shift
-
-while [ -n "$1" ] ; do
-	#
-	# Parse agument stream...
-	#
-	EXPECTEDSUCCESSES=$1
-	shift
-
-	PROGRAM=
-	while [ "$1" != "===" ] ; do { PROGRAM="$PROGRAM $1" ; shift ; } done
-	shift
-
-	testname="`echo $PROGRAM | grep '^#' | sed 's/^#//'`"
-
-	echo '+==================================-o-===+'
-	echo
-
-
-
-	#
-	# Decide whether to skip the test, if it's mising, else run it.
-	#
-	[ -n "$testname" ] && {					# Skip the test?
-		echo "SKIPPING test for \"$testname\"."
-		echo
-		continue
-	}
-	[ ! -e "`echo $PROGRAM | awk '{ print $1 }'`" ] && {	# Missing test?
-		TESTFAILURE=`expr $TESTFAILURE + 1`
-
-		echo "MISSING test for \"$PROGRAM\"."
-		echo
-		continue
-	}
-
-	echo "TESTING \"$PROGRAM\"..."				# Announce test!
-
-
-
-	#
-	# Run the test and collect the failed_count and success_count.
-	#
-	eval_oneprogram.sh $ARGUMENTS $PROGRAM >$TMPFILE
-	failed_count=$?
-
-	success_count=`awk '$(NF-1) == "SUCCESS:" { print $NF; exit }' $TMPFILE`
-	[ -z "$success_count" ] && success_count=0
-
-
-	
-	#
-	# Output best-effort results of the test  -OR-  a fully successful run.
-	#
-	[ "$failed_count" -eq 0 -a \
-			"$success_count" -eq "$EXPECTEDSUCCESSES" ] &&
-	{
-		echo
-		echo $PROGRAM PASSED		# Successful, fully, completed
-		echo
-		
-		true
-	} || {
-		TESTFAILURE=`expr $TESTFAILURE + 1`
-
-		echo
-		cat $TMPFILE
-		echo
-
-		[ "$success_count" -ne $EXPECTEDSUCCESSES ] && {
-			echo "Got $success_count SUCCESSes"\
-						"out of $EXPECTEDSUCCESSES."
-			echo
-		}
-		true
-	}  # end -- evaluation of and output based upon test success.
-done  # endwhile
-
-
-
-
-#------------------------------------ -o- 
-# Cleanup, exit.
-#
-rm -f $TMPFILE
-rm -rf $SNMP_TMPDIR
-
-exit $TESTFAILURE
-
-
-
diff --git a/testing/eval_testlist b/testing/eval_testlist
deleted file mode 100644
index 6f0f1f5..0000000
--- a/testing/eval_testlist
+++ /dev/null
@@ -1,5 +0,0 @@
-7	ktest -a
-13	stest -a		
-3	#test_keychange.sh
-2	test_kul.sh
-3	etest -a
diff --git a/testing/tests/Sv1config b/testing/fulltests/default/Sv1config
similarity index 100%
rename from testing/tests/Sv1config
rename to testing/fulltests/default/Sv1config
diff --git a/testing/tests/Sv2cconfig b/testing/fulltests/default/Sv2cconfig
similarity index 100%
rename from testing/tests/Sv2cconfig
rename to testing/fulltests/default/Sv2cconfig
diff --git a/testing/tests/Sv3config b/testing/fulltests/default/Sv3config
similarity index 100%
rename from testing/tests/Sv3config
rename to testing/fulltests/default/Sv3config
diff --git a/testing/tests/Sv3usmconfigagent b/testing/fulltests/default/Sv3usmconfigagent
similarity index 100%
rename from testing/tests/Sv3usmconfigagent
rename to testing/fulltests/default/Sv3usmconfigagent
diff --git a/testing/tests/Sv3usmconfigbase b/testing/fulltests/default/Sv3usmconfigbase
similarity index 87%
rename from testing/tests/Sv3usmconfigbase
rename to testing/fulltests/default/Sv3usmconfigbase
index f241894..99bda04 100644
--- a/testing/tests/Sv3usmconfigbase
+++ b/testing/fulltests/default/Sv3usmconfigbase
@@ -28,6 +28,8 @@
 ## auto-probe best auth type
 if grep '^#define NETSNMP_USE_OPENSSL 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
   MAXAUTHTYPE=SHA
+elif grep '^#define NETSNMP_USE_INTERNAL_CRYPTO 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
+  MAXAUTHTYPE=SHA
 else
   # MD5 is always available internally
   MAXAUTHTYPE=MD5
@@ -42,6 +44,8 @@
   else
     MAXPRIVTYPE=DES
   fi
+elif grep '^#define NETSNMP_USE_INTERNAL_CRYPTO 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null; then
+    MAXPRIVTYPE=AES
 else
     MAXPRIVTYPE=""
 fi
@@ -51,8 +55,8 @@
 
 ## auth setup
 if [ "x$DEFSECURITYLEVEL" = "xauthPriv" -o "x$DEFSECURITYLEVEL" = "xauthNoPriv" ]; then
-  [ "x$MAXAUTHTYPE" = "x" ] && SKIP
-  [ "x$DEFAUTHTYPE" = "xSHA" -a "x$MAXAUTHTYPE" != "xSHA" ] && SKIP
+  [ "x$MAXAUTHTYPE" = "x" ] && SKIP MAXAUTHTYPE not set
+  [ "x$DEFAUTHTYPE" = "xSHA" -a "x$MAXAUTHTYPE" != "xSHA" ] && SKIP Cannot do SHA
   [ "x$DEFAUTHTYPE" = "x" ] && DEFAUTHTYPE=$MAXAUTHTYPE
   # user/pass setup (XXX: randomize)
   [ "x$TESTAUTHUSER" = "x" ] && TESTAUTHUSER=initial_auth
@@ -70,8 +74,8 @@
 
 ## priv setup
 if [ "x$DEFSECURITYLEVEL" = "xauthPriv" ]; then
-  [ "x$MAXPRIVTYPE" = "x" ] && SKIP
-  [ "x$DEFPRIVTYPE" = "xAES" -a "x$MAXPRIVTYPE" != "xAES" ] && SKIP
+  [ "x$MAXPRIVTYPE" = "x" ] && SKIP MAXPRIVTYPE not set
+  [ "x$DEFPRIVTYPE" = "xAES" -a "x$MAXPRIVTYPE" != "xAES" ] && SKIP Cannot do AES
   [ "x$DEFPRIVTYPE" = "x" ] && DEFPRIVTYPE=$MAXPRIVTYPE
   # user/pass setup (XXX: randomize)
   [ "x$TESTPRIVUSER" = "x" ] && TESTPRIVUSER=initial_priv
diff --git a/testing/tests/Sv3usmconfigtrapd b/testing/fulltests/default/Sv3usmconfigtrapd
similarity index 100%
rename from testing/tests/Sv3usmconfigtrapd
rename to testing/fulltests/default/Sv3usmconfigtrapd
diff --git a/testing/tests/Sv3vacmconfig b/testing/fulltests/default/Sv3vacmconfig
similarity index 100%
rename from testing/tests/Sv3vacmconfig
rename to testing/fulltests/default/Sv3vacmconfig
diff --git a/testing/tests/Svacmconfig b/testing/fulltests/default/Svacmconfig
similarity index 100%
rename from testing/tests/Svacmconfig
rename to testing/fulltests/default/Svacmconfig
diff --git a/testing/tests/Svanyconfig b/testing/fulltests/default/Svanyconfig
similarity index 81%
rename from testing/tests/Svanyconfig
rename to testing/fulltests/default/Svanyconfig
index ad4d3b5..b91eb0f 100644
--- a/testing/tests/Svanyconfig
+++ b/testing/fulltests/default/Svanyconfig
@@ -6,6 +6,9 @@
 if [ "x$snmp_version" = "x" ]; then
   snmp_version="any"
 fi
+if [ "x$snmp_write_access" = "x" ]; then
+  snmp_write_access="none"
+fi
 
 [ "x$SNMP_SMUX_SOCKET" = "x" ] && SNMP_SMUX_SOCKET=1.0.0.0
 
@@ -23,4 +26,4 @@
 
 CONFIGAGENT group   testcommunitygroup  $snmp_version     testcommunitysec
 CONFIGAGENT view    all     included .1 80
-CONFIGAGENT 'access  testcommunitygroup  "" any noauth exact all none none'
+CONFIGAGENT "access  testcommunitygroup  "'""'" any noauth exact all $snmp_write_access none"
diff --git a/testing/tests/T000configure b/testing/fulltests/default/T000configure_simple
similarity index 100%
rename from testing/tests/T000configure
rename to testing/fulltests/default/T000configure_simple
diff --git a/testing/tests/T001snmpv1get b/testing/fulltests/default/T001snmpv1get_simple
similarity index 95%
rename from testing/tests/T001snmpv1get
rename to testing/fulltests/default/T001snmpv1get_simple
index 22cb060..07d3847 100644
--- a/testing/tests/T001snmpv1get
+++ b/testing/fulltests/default/T001snmpv1get_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv1 support
 
diff --git a/testing/tests/T014snmpv2cget b/testing/fulltests/default/T014snmpv2cget_simple
similarity index 91%
rename from testing/tests/T014snmpv2cget
rename to testing/fulltests/default/T014snmpv2cget_simple
index 271f978..43dffd5 100644
--- a/testing/tests/T014snmpv2cget
+++ b/testing/fulltests/default/T014snmpv2cget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2c get of system.sysUpTime.0
 
diff --git a/testing/tests/T015snmpv2cgetnext b/testing/fulltests/default/T015snmpv2cgetnext_simple
similarity index 91%
rename from testing/tests/T015snmpv2cgetnext
rename to testing/fulltests/default/T015snmpv2cgetnext_simple
index 6c3fdf6..7c6eaa9 100644
--- a/testing/tests/T015snmpv2cgetnext
+++ b/testing/fulltests/default/T015snmpv2cgetnext_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2c getnext of system.sysUpTime
 
diff --git a/testing/tests/T0160snmpv2cbulkget b/testing/fulltests/default/T0160snmpv2cbulkget_simple
similarity index 67%
rename from testing/tests/T0160snmpv2cbulkget
rename to testing/fulltests/default/T0160snmpv2cbulkget_simple
index ec2c427..38ec3b3 100755
--- a/testing/tests/T0160snmpv2cbulkget
+++ b/testing/fulltests/default/T0160snmpv2cbulkget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2c bulkget of system components
 
@@ -24,17 +24,8 @@
 CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
 CHECKORDIE ".1.3.6.1.2.1.1.2.0 = OID:"
 
-CHECK ".1.3.6.1.2.1.1.3.0"
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0"
 
-CHECK ".1.3.6.1.2.1.1.5.0"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.5.0"
 
 FINISHED
diff --git a/testing/tests/T016snmpv2cgetfail b/testing/fulltests/default/T016snmpv2cgetfail_simple
similarity index 92%
rename from testing/tests/T016snmpv2cgetfail
rename to testing/fulltests/default/T016snmpv2cgetfail_simple
index 4bc2412..6e3b814 100644
--- a/testing/tests/T016snmpv2cgetfail
+++ b/testing/fulltests/default/T016snmpv2cgetfail_simple
@@ -4,7 +4,7 @@
 # test snmpv2c get support by reading a variable
 #
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER for failure of SNMPv2c get with wrong community
 
diff --git a/testing/tests/T017snmpv2ctov1getfail b/testing/fulltests/default/T017snmpv2ctov1getfail_simple
similarity index 92%
rename from testing/tests/T017snmpv2ctov1getfail
rename to testing/fulltests/default/T017snmpv2ctov1getfail_simple
index 8a97942..4c812c0 100644
--- a/testing/tests/T017snmpv2ctov1getfail
+++ b/testing/fulltests/default/T017snmpv2ctov1getfail_simple
@@ -4,7 +4,7 @@
 # test snmpv2c get support by reading a variable
 #
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER for failure of SNMPv2c get against SNMPv1 agent
 
diff --git a/testing/tests/T018snmpv1tov2cgetfail b/testing/fulltests/default/T018snmpv1tov2cgetfail_simple
similarity index 91%
rename from testing/tests/T018snmpv1tov2cgetfail
rename to testing/fulltests/default/T018snmpv1tov2cgetfail_simple
index f36cd4d..d9b8b6a 100644
--- a/testing/tests/T018snmpv1tov2cgetfail
+++ b/testing/fulltests/default/T018snmpv1tov2cgetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER for failure of SNMPv1 get against SNMPv2c agent
 
diff --git a/testing/tests/T019snmpv2cnosuch b/testing/fulltests/default/T019snmpv2cnosuch_simple
similarity index 91%
rename from testing/tests/T019snmpv2cnosuch
rename to testing/fulltests/default/T019snmpv2cnosuch_simple
index e69ab9a..78a0bb1 100644
--- a/testing/tests/T019snmpv2cnosuch
+++ b/testing/fulltests/default/T019snmpv2cnosuch_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2c get of system.sysUpTime.1
 
diff --git a/testing/tests/T020snmpv3get b/testing/fulltests/default/T020snmpv3get_simple
similarity index 91%
rename from testing/tests/T020snmpv3get
rename to testing/fulltests/default/T020snmpv3get_simple
index 58c6ce3..20b59e4 100644
--- a/testing/tests/T020snmpv3get
+++ b/testing/fulltests/default/T020snmpv3get_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using noAuthNoPriv of .1.3.6.1.2.1.1.3.0
 
diff --git a/testing/tests/T021snmpv3getnext b/testing/fulltests/default/T021snmpv3getnext_simple
similarity index 65%
rename from testing/tests/T021snmpv3getnext
rename to testing/fulltests/default/T021snmpv3getnext_simple
index 2b9f646..54c82d3 100755
--- a/testing/tests/T021snmpv3getnext
+++ b/testing/fulltests/default/T021snmpv3getnext_simple
@@ -1,8 +1,8 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
-HEADER SNMPv3 getnext using initial of .1.3.6.1.2.1.1.3.0
+HEADER SNMPv3 getnext using initial of .1.3.6.1.2.1.1.3
 
 SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 
@@ -15,7 +15,7 @@
 
 STARTAGENT
 
-CAPTURE "snmpgetnext -On $SNMP_FLAGS $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT system.sysUpTime"
+CAPTURE "snmpgetnext -On $SNMP_FLAGS $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
 
 STOPAGENT
 
diff --git a/testing/tests/T0220snmpv3bulkget b/testing/fulltests/default/T0220snmpv3bulkget_simple
similarity index 64%
rename from testing/tests/T0220snmpv3bulkget
rename to testing/fulltests/default/T0220snmpv3bulkget_simple
index 8a8ecb7..7eddccf 100755
--- a/testing/tests/T0220snmpv3bulkget
+++ b/testing/fulltests/default/T0220snmpv3bulkget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 bulkget of system
 
@@ -23,17 +23,8 @@
 CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
 CHECKORDIE ".1.3.6.1.2.1.1.2.0 = OID:"
 
-CHECK ".1.3.6.1.2.1.1.3.0"
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0"
 
-CHECK ".1.3.6.1.2.1.1.5.0"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.5.0"
 
 FINISHED
diff --git a/testing/tests/T022snmpv3getMD5 b/testing/fulltests/default/T022snmpv3getMD5_simple
similarity index 91%
rename from testing/tests/T022snmpv3getMD5
rename to testing/fulltests/default/T022snmpv3getMD5_simple
index 9e7960d..eed4292 100755
--- a/testing/tests/T022snmpv3getMD5
+++ b/testing/fulltests/default/T022snmpv3getMD5_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using MD5/noPriv of .1.3.6.1.2.1.1.3.0
 
diff --git a/testing/tests/T023snmpv3getMD5AES b/testing/fulltests/default/T023snmpv3getMD5AES_simple
similarity index 86%
rename from testing/tests/T023snmpv3getMD5AES
rename to testing/fulltests/default/T023snmpv3getMD5AES_simple
index 773c980..985b2a4 100644
--- a/testing/tests/T023snmpv3getMD5AES
+++ b/testing/fulltests/default/T023snmpv3getMD5AES_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using MD5/AES of .1.3.6.1.2.1.1.3.0
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
 SKIPIF NETSNMP_DISABLE_MD5
diff --git a/testing/tests/T023snmpv3getMD5DES b/testing/fulltests/default/T023snmpv3getMD5DES_simple
similarity index 86%
rename from testing/tests/T023snmpv3getMD5DES
rename to testing/fulltests/default/T023snmpv3getMD5DES_simple
index 0689dea..000478a 100755
--- a/testing/tests/T023snmpv3getMD5DES
+++ b/testing/fulltests/default/T023snmpv3getMD5DES_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using MD5/DES of .1.3.6.1.2.1.1.3.0
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 SKIPIF NETSNMP_DISABLE_MD5
 
diff --git a/testing/tests/T024snmpv3getSHA1 b/testing/fulltests/default/T024snmpv3getSHA1_simple
similarity index 83%
rename from testing/tests/T024snmpv3getSHA1
rename to testing/fulltests/default/T024snmpv3getSHA1_simple
index 9c1474d..80b7f4f 100755
--- a/testing/tests/T024snmpv3getSHA1
+++ b/testing/fulltests/default/T024snmpv3getSHA1_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using SHA/noPriv of .1.3.6.1.2.1.1.3.0
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 
 #
 # Begin test
diff --git a/testing/tests/T025snmpv3getSHADES b/testing/fulltests/default/T025snmpv3getSHADES_simple
similarity index 86%
rename from testing/tests/T025snmpv3getSHADES
rename to testing/fulltests/default/T025snmpv3getSHADES_simple
index 94fbaca..a59b69b 100755
--- a/testing/tests/T025snmpv3getSHADES
+++ b/testing/fulltests/default/T025snmpv3getSHADES_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using SHA/DES of .1.3.6.1.2.1.1.3.0
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 SKIPIF NETSNMP_DISABLE_DES
 
diff --git a/testing/tests/T026snmpv3getSHAAES b/testing/fulltests/default/T026snmpv3getSHAAES_simple
similarity index 86%
rename from testing/tests/T026snmpv3getSHAAES
rename to testing/fulltests/default/T026snmpv3getSHAAES_simple
index 766513a..cbfcca7 100644
--- a/testing/tests/T026snmpv3getSHAAES
+++ b/testing/fulltests/default/T026snmpv3getSHAAES_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 get using SHA/AES of .1.3.6.1.2.1.1.3.0
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
 
diff --git a/testing/tests/T028snmpv3getfail b/testing/fulltests/default/T028snmpv3getfail_simple
similarity index 90%
rename from testing/tests/T028snmpv3getfail
rename to testing/fulltests/default/T028snmpv3getfail_simple
index 99095e1..ada8a13 100755
--- a/testing/tests/T028snmpv3getfail
+++ b/testing/fulltests/default/T028snmpv3getfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER for failure of SNMPv3 get using unknown user.
 
diff --git a/testing/tests/T030snmpv3usercreation b/testing/fulltests/default/T030snmpv3usercreation_simple
similarity index 97%
rename from testing/tests/T030snmpv3usercreation
rename to testing/fulltests/default/T030snmpv3usercreation_simple
index a1cb443..40e4cac 100644
--- a/testing/tests/T030snmpv3usercreation
+++ b/testing/fulltests/default/T030snmpv3usercreation_simple
@@ -1,12 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 agent USM user management with snmpusm
 
 SKIPIF NETSNMP_DISABLE_SET_SUPPORT
 SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 
 #
diff --git a/testing/tests/T035snmpv3trapdusermgmt b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
similarity index 91%
rename from testing/tests/T035snmpv3trapdusermgmt
rename to testing/fulltests/default/T035snmpv3trapdusermgmt_simple
index fa26db9..ca33dc9 100644
--- a/testing/tests/T035snmpv3trapdusermgmt
+++ b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 snmptrapd USM user management with snmpusm
 
@@ -80,12 +80,12 @@
 CHECKORDIE "SNMPv3 Key(s) successfully changed"
 
 # test (anp)
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -A $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_anp"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -A $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_anp"
 DELAY
 CHECKTRAPDORDIE "received_inform_anp"
 
 # test (ap)
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_ap"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_ap"
 DELAY
 CHECKTRAPDORDIE "received_inform_ap"
 
@@ -96,7 +96,7 @@
 CHECKORDIE "SNMPv3 Key(s) successfully changed"
 
 # test (anp)
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -3k $NEWAUTHKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_anp2"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -3k $NEWAUTHKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_anp2"
 DELAY
 CHECKTRAPDORDIE "received_inform_anp2"
 
@@ -105,7 +105,7 @@
 CHECKORDIE "SNMPv3 Key(s) successfully changed"
 
 # test (ap)
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -3k $NEWAUTHKEY -x $DEFPRIVTYPE -3K $NEWPRIVKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_ap2"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -3k $NEWAUTHKEY -x $DEFPRIVTYPE -3K $NEWPRIVKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_ap2"
 DELAY
 CHECKTRAPDORDIE "received_inform_ap2"
 
@@ -115,7 +115,7 @@
 HUPTRAPD
 
 # test (ap)
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -3k $NEWAUTHKEY -x $DEFPRIVTYPE -3K $NEWPRIVKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_ap3"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -3k $NEWAUTHKEY -x $DEFPRIVTYPE -3K $NEWPRIVKEY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_ap3"
 DELAY
 CHECKTRAPDORDIE "received_inform_ap3"
 
diff --git a/testing/tests/T049snmpv3inform b/testing/fulltests/default/T049snmpv3inform_simple
similarity index 68%
rename from testing/tests/T049snmpv3inform
rename to testing/fulltests/default/T049snmpv3inform_simple
index e762d13..3237efa 100644
--- a/testing/tests/T049snmpv3inform
+++ b/testing/fulltests/default/T049snmpv3inform_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 DEFSECURITYLEVEL=noAuthNoPriv
 
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
+HEADER "SNMPv3 informs (noAuthNoPriv) received and sent by tools"
 
 #
 # Begin test
@@ -16,7 +16,7 @@
 
 STARTTRAPD
 
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u testuser -l nanp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_$DEFSECURITYLEVEL"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u testuser -l nanp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
 
 STOPTRAPD
 
diff --git a/testing/tests/T049snmpv3informauth b/testing/fulltests/default/T049snmpv3informauth_simple
similarity index 69%
rename from testing/tests/T049snmpv3informauth
rename to testing/fulltests/default/T049snmpv3informauth_simple
index ab67ff5..d14afba 100644
--- a/testing/tests/T049snmpv3informauth
+++ b/testing/fulltests/default/T049snmpv3informauth_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 DEFSECURITYLEVEL=authNoPriv
 
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
+HEADER "SNMPv3 informs (authNoPriv) received and sent by tools"
 
 #
 # Begin test
@@ -16,7 +16,7 @@
 
 STARTTRAPD
 
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_$DEFSECURITYLEVEL"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
 
 STOPTRAPD
 
diff --git a/testing/tests/T049snmpv3informpriv b/testing/fulltests/default/T049snmpv3informpriv_simple
similarity index 68%
rename from testing/tests/T049snmpv3informpriv
rename to testing/fulltests/default/T049snmpv3informpriv_simple
index cbbf2f3..e8f47de 100644
--- a/testing/tests/T049snmpv3informpriv
+++ b/testing/fulltests/default/T049snmpv3informpriv_simple
@@ -1,12 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 DEFSECURITYLEVEL=authPriv
 
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
+HEADER "SNMPv3 informs (authPriv) received and sent by tools"
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 
 #
@@ -19,7 +19,7 @@
 
 STARTTRAPD
 
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_inform_$DEFSECURITYLEVEL"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
 
 STOPTRAPD
 
diff --git a/testing/tests/T050snmpv3trap b/testing/fulltests/default/T050snmpv3trap_simple
similarity index 79%
rename from testing/tests/T050snmpv3trap
rename to testing/fulltests/default/T050snmpv3trap_simple
index 819d151..2b7a4a8 100644
--- a/testing/tests/T050snmpv3trap
+++ b/testing/fulltests/default/T050snmpv3trap_simple
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 traps received and sent by tools
 
-SKIPIFNOT NETSNMP_USE_OPENSSL
+#SKIPIFNOT NETSNMP_USE_OPENSSL
 SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
 
 #
@@ -20,11 +20,11 @@
 
 STARTTRAPD
 
-CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTNOAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_trap_nanp"
+CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTNOAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_trap_nanp"
 DELAY
-CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_trap_anp"
+CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTAUTHARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_trap_anp"
 DELAY
-CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s received_trap_ap"
+CAPTURE "snmptrap -d -e $CREATEUSERENGINEID $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s received_trap_ap"
 DELAY
 
 STOPTRAPD
diff --git a/testing/fulltests/default/T051snmpv2ctrap_simple b/testing/fulltests/default/T051snmpv2ctrap_simple
new file mode 100644
index 0000000..743171a
--- /dev/null
+++ b/testing/fulltests/default/T051snmpv2ctrap_simple
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c traps received and sent by tools
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+
+#
+# Begin test
+#
+
+CONFIGTRAPD authcommunity log testcommunity
+CONFIGTRAPD agentxsocket /dev/null
+
+TRAPD_FLAGS="$TRAPD_FLAGS -On"
+
+STARTTRAPD
+
+CAPTURE "snmptrap -d -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s blah"
+
+STOPTRAPD
+
+CHECKTRAPD ".1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.6.3.1.1.5.1"
+
+FINISHED
diff --git a/testing/tests/T052snmpv2cinform b/testing/fulltests/default/T052snmpv2cinform_simple
similarity index 82%
rename from testing/tests/T052snmpv2cinform
rename to testing/fulltests/default/T052snmpv2cinform_simple
index 2464dd2..77f3a4c 100644
--- a/testing/tests/T052snmpv2cinform
+++ b/testing/fulltests/default/T052snmpv2cinform_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2c informs received and sent by tools
 
@@ -15,7 +15,7 @@
 
 STARTTRAPD
 
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s blah"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s blah"
 
 STOPTRAPD
 
diff --git a/testing/tests/T053agentv1trap b/testing/fulltests/default/T053agentv1trap_simple
similarity index 81%
rename from testing/tests/T053agentv1trap
rename to testing/fulltests/default/T053agentv1trap_simple
index 9b25c52..44b219e 100644
--- a/testing/tests/T053agentv1trap
+++ b/testing/fulltests/default/T053agentv1trap_simple
@@ -1,10 +1,11 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmpv1 traps are sent by snmpd API
 
 SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+SKIPIFNOT HAVE_SIGHUP
 
 #
 # Begin test
@@ -22,7 +23,7 @@
 AGENT_FLAGS="$AGENT_FLAGS -Dexample,header_generic,add_trap"
 STARTAGENT
 
-CAPTURE "snmpset -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.7.0 i 1"
+CAPTURE "snmpset -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.7.0 i 1"
 
 STOPAGENT
 
diff --git a/testing/tests/T054agentv2ctrap b/testing/fulltests/default/T054agentv2ctrap_simple
similarity index 82%
rename from testing/tests/T054agentv2ctrap
rename to testing/fulltests/default/T054agentv2ctrap_simple
index 3a85dc9..f5b6904 100644
--- a/testing/tests/T054agentv2ctrap
+++ b/testing/fulltests/default/T054agentv2ctrap_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmpv2c traps are sent by snmpd API
 
@@ -22,7 +22,7 @@
 STARTAGENT
 
 #DELAY
-CAPTURE "snmpset -On -t 3 -r 0 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.8.0 i 1"
+CAPTURE "snmpset -On -t 3 -r 0 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1"
 
 STOPAGENT
 
diff --git a/testing/tests/T055agentv1mintrap b/testing/fulltests/default/T055agentv1mintrap_simple
similarity index 86%
rename from testing/tests/T055agentv1mintrap
rename to testing/fulltests/default/T055agentv1mintrap_simple
index f5636a7..4a1c0e1 100644
--- a/testing/tests/T055agentv1mintrap
+++ b/testing/fulltests/default/T055agentv1mintrap_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmpv1 traps are sent by snmpd without notification mib support
 
@@ -22,7 +22,7 @@
 AGENT_FLAGS="$AGENT_FLAGS -Dexample,header_generic,add_trap,mib_init,callback -I example,usmUser,usmConf,vacm_vars"
 STARTAGENT
 
-CAPTURE "snmpset -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.7.0 i 1"
+CAPTURE "snmpset -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.7.0 i 1"
 
 STOPAGENT
 
diff --git a/testing/tests/T056agentv2cmintrap b/testing/fulltests/default/T056agentv2cmintrap_simple
similarity index 85%
rename from testing/tests/T056agentv2cmintrap
rename to testing/fulltests/default/T056agentv2cmintrap_simple
index 8c3213f..73c7a23 100644
--- a/testing/tests/T056agentv2cmintrap
+++ b/testing/fulltests/default/T056agentv2cmintrap_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmpv2c traps are sent by snmpd without notification mib support
 
@@ -23,7 +23,7 @@
 STARTAGENT
 
 #DELAY
-CAPTURE "snmpset -On -t 3 -r 0 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.8.0 i 1"
+CAPTURE "snmpset -On -t 3 -r 0 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1"
 
 STOPAGENT
 
diff --git a/testing/tests/T057trapdauthtest2 b/testing/fulltests/default/T057trapdauthtest2_simple
similarity index 75%
rename from testing/tests/T057trapdauthtest2
rename to testing/fulltests/default/T057trapdauthtest2_simple
index a5a02cf..073d3c4 100644
--- a/testing/tests/T057trapdauthtest2
+++ b/testing/fulltests/default/T057trapdauthtest2_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmptrapd discards of unauthorized notification types 
 
@@ -18,11 +18,6 @@
 
 STOPTRAPD
 
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKTRAPDCOUNT 0 "coldStart"
 
 FINISHED
diff --git a/testing/tests/T057trapdauthtest3 b/testing/fulltests/default/T057trapdauthtest3_simple
similarity index 74%
rename from testing/tests/T057trapdauthtest3
rename to testing/fulltests/default/T057trapdauthtest3_simple
index 2ccb5cb..1426b4a 100644
--- a/testing/tests/T057trapdauthtest3
+++ b/testing/fulltests/default/T057trapdauthtest3_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmptrapd discards of incorrect view types 
 
@@ -18,11 +18,6 @@
 
 STOPTRAPD
 
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKTRAPDCOUNT 0 "coldStart"
 
 FINISHED
diff --git a/testing/tests/T057trapdauthtest b/testing/fulltests/default/T057trapdauthtest_simple
similarity index 74%
rename from testing/tests/T057trapdauthtest
rename to testing/fulltests/default/T057trapdauthtest_simple
index 3369faf..e25e39e 100644
--- a/testing/tests/T057trapdauthtest
+++ b/testing/fulltests/default/T057trapdauthtest_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER snmptrapd authorization failure of non authorized users
 
@@ -18,11 +18,6 @@
 
 STOPTRAPD
 
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
+CHECKTRAPDCOUNT 0 "coldStart"
 
 FINISHED
diff --git a/testing/tests/T058agentauthtrap b/testing/fulltests/default/T058agentauthtrap_simple
similarity index 94%
rename from testing/tests/T058agentauthtrap
rename to testing/fulltests/default/T058agentauthtrap_simple
index 7be3a7b..aa63639 100644
--- a/testing/tests/T058agentauthtrap
+++ b/testing/fulltests/default/T058agentauthtrap_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER authentication failure traps are sent by snmpd
 
diff --git a/testing/fulltests/default/T059trapdtraphandle_simple b/testing/fulltests/default/T059trapdtraphandle_simple
new file mode 100755
index 0000000..2c1f7a6
--- /dev/null
+++ b/testing/fulltests/default/T059trapdtraphandle_simple
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# Testing this script is possible by running e.g. the following commands:
+# srcdir=/z/software/net-snmp/trunk builddir=/z/software/net-snmp/trunk-mingw
+# cd $builddir/testing
+# TRAPD_FLAGS="-Dsnmptrapd -Drun:shell" $srcdir/testing/fulltests/support/simple_run $srcdir/testing/fulltests/default/T059trapdtraphandle_simple
+
+# "inline" trap handler
+if [ "x$1" = "xtraphandle" ]; then
+  cat - >>"$2"
+  exit 0
+fi
+
+. ../support/simple_eval_tools.sh
+
+TRAPHANDLE_LOGFILE=${SNMP_TMPDIR}/traphandle.log
+
+HEADER snmptrapd traphandle: launching external shell script
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE
+
+#
+# Begin test
+#
+
+snmp_version=v2c
+TESTCOMMUNITY=testcommunity
+
+# Make the paths of arguments $0 and $1 absolute.
+NETSNMPDIR="`pwd`"
+NETSNMPDIR="`dirname ${NETSNMPDIR}`"
+NETSNMPDIR="`dirname ${NETSNMPDIR}`"
+NETSNMPDIR="`dirname ${NETSNMPDIR}`"
+if [ "`echo $1|cut -c1`" = "/" ]; then
+  traphandle_arg="$1"
+else
+  traphandle_arg="${NETSNMPDIR}/$1"
+fi
+
+CONFIGTRAPD [snmp] persistentDir $SNMP_TMP_PERSISTENTDIR
+CONFIGTRAPD [snmp] tempFilePattern /tmp/snmpd-tmp-XXXXXX
+CONFIGTRAPD authcommunity execute $TESTCOMMUNITY
+CONFIGTRAPD doNotLogTraps true
+if [ "x$OSTYPE" = "xmsys" ]; then
+    CONFIGTRAPD traphandle default $MSYS_SH -c "'" $traphandle_arg traphandle $TRAPHANDLE_LOGFILE "'"
+else
+    CONFIGTRAPD traphandle default $traphandle_arg traphandle $TRAPHANDLE_LOGFILE
+fi
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+## 1) test notification handler
+
+CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s handled_inform_$snmp_version"
+DELAY
+CHECKORDIE "handled_inform_$snmp_version" $TRAPHANDLE_LOGFILE 
+
+## 2) persistency: reconfigure (SIGHUP), re-test
+
+HUPTRAPD
+CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.4.0 s handled_inform2_$snmp_version"
+DELAY
+CHECKORDIE "handled_inform2_$snmp_version" $TRAPHANDLE_LOGFILE
+
+## stop
+STOPTRAPD
+
+FINISHED
diff --git a/testing/tests/T060trapdperl b/testing/fulltests/default/T060trapdperl_simple
similarity index 71%
rename from testing/tests/T060trapdperl
rename to testing/fulltests/default/T060trapdperl_simple
index 63a6f4c..7e723bb 100755
--- a/testing/tests/T060trapdperl
+++ b/testing/fulltests/default/T060trapdperl_simple
@@ -1,11 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER 'snmptrapd embedded perl support (NetSNMP::TrapReceiver)'
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT NETSNMP_EMBEDDED_PERL
+SKIPIFNOT HAVE_SIGHUP
 
 #
 # Begin test
@@ -15,30 +16,37 @@
 TESTCOMMUNITY=testcommunity
 TESTOID=.1.3.6.1.6.3.1.1.5.1
 TESTOID2=.1.3.6.1.6.3.1.1.5.2
+VAROID=.1.3.6.1.2.1.1.4.0
 EMBPERL_LOGFILE=${SNMP_TMPDIR}/embperl.log
 
+# make sure that we can fulfill all library dependencies
+_ld_lib_path="${SNMP_UPDIR}/snmplib/.libs:${SNMP_UPDIR}/agent/.libs:${SNMP_UPDIR}/agent/helpers/.libs"
+if [ x$OSTYPE = xcygwin ]; then
+  PATH="${_ld_lib_path}:$PATH"
+fi
+
 echo "use blib qw(${SNMP_UPDIR}/perl);" > ${SNMP_TMPDIR}/snmp_perl_trapd.pl
 echo "use NetSNMP::TrapReceiver;" >> ${SNMP_TMPDIR}/snmp_perl_trapd.pl
 
 CONFIGTRAPD authcommunity execute $TESTCOMMUNITY
 CONFIGTRAPD perlInitFile ${SNMP_TMPDIR}/snmp_perl_trapd.pl
-CONFIGTRAPD 'perl sub my_receiver { open LOG,">>'$EMBPERL_LOGFILE'"; print LOG "handled_by_embperl"; close LOG };'
-CONFIGTRAPD 'perl sub my_receiver2 { open LOG,">>'$EMBPERL_LOGFILE'"; print LOG "handled_again_by_embperl"; close LOG };'
+CONFIGTRAPD 'perl sub my_receiver { open LOG,">>'$EMBPERL_LOGFILE'"; print LOG "handled_by_embperl\\n"; close LOG };'
+CONFIGTRAPD 'perl sub my_receiver2 { open LOG,">>'$EMBPERL_LOGFILE'"; print LOG "handled_again_by_embperl\\n"; close LOG };'
 CONFIGTRAPD 'perl NetSNMP::TrapReceiver::register("'$TESTOID'", \&my_receiver) || warn "register_perl_handler_failed";'
 CONFIGTRAPD 'perl NetSNMP::TrapReceiver::register("'$TESTOID2'", \&my_receiver2) || warn "register_second_perl_handler_failed";'
-CONFIGTRAPD 'perl print STDERR "registered_perl_handler_ok";'
+CONFIGTRAPD 'perl print STDERR "registered_perl_handler_ok\\n";'
 CONFIGTRAPD agentxsocket /dev/null
 
 STARTTRAPD
 
 ## 1) trigger embedded perl notification handler
 
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 $TESTOID system.sysContact.0 s handled_trap_$snmp_version"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 $TESTOID $VAROID s handled_trap_$snmp_version"
 
 ## 2) persistency: reconfigure (SIGHUP), re-trigger
 
 HUPTRAPD
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 $TESTOID2 system.sysContact.0 s handled_trap2_$snmp_version"
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 $TESTOID2 $VAROID s handled_trap2_$snmp_version"
 
 ## stop
 STOPTRAPD
diff --git a/testing/tests/T061agentperl b/testing/fulltests/default/T061agentperl_simple
similarity index 75%
rename from testing/tests/T061agentperl
rename to testing/fulltests/default/T061agentperl_simple
index 27e5b31..5ebf863 100755
--- a/testing/tests/T061agentperl
+++ b/testing/fulltests/default/T061agentperl_simple
@@ -1,11 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER 'snmpd embedded perl support (using NetSNMP::agent)'
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT NETSNMP_EMBEDDED_PERL
+SKIPIFNOT HAVE_SIGHUP
 
 #
 # Begin test
@@ -58,25 +59,6 @@
 CONFIGAGENT "perl do '$EMBPERL_AGENT';"
 CONFIGAGENT 'perl print STDERR "registered_perl_agent_ok";'
 
-# make sure that NetSNMP::agent's agent.so can load (uninstalled) libnetsnmp*.so
-_ld_lib_path="${SNMP_UPDIR}/snmplib/.libs:${SNMP_UPDIR}/agent/.libs:${SNMP_UPDIR}/agent/helpers/.libs"
-if [ "x$LD_LIBRARY_PATH" != "x" ]; then
-  LD_LIBRARY_PATH="${_ld_lib_path}:${LD_LIBRARY_PATH}"
-else
-  LD_LIBRARY_PATH="${_ld_lib_path}"
-fi 
-if [ "x$DYLD_LIBRARY_PATH" != "x" ]; then
-  DYLD_LIBRARY_PATH="${_ld_lib_path}:${DYLD_LIBRARY_PATH}"
-else
-  DYLD_LIBRARY_PATH="${_ld_lib_path}"
-fi 
-if [ "x$SHLIB_PATH" != "x" ]; then
-  SHLIB_PATH="${_ld_lib_path}:${SHLIB_PATH}"
-else
-  SHLIB_PATH="${_ld_lib_path}"
-fi 
-export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH
-
 STARTAGENT
 
 ## 1) SNMP GET against embedded perl mib module
diff --git a/testing/tests/T065agentextend b/testing/fulltests/default/T065agentextend_simple
similarity index 72%
rename from testing/tests/T065agentextend
rename to testing/fulltests/default/T065agentextend_simple
index 627f58f..68c38f9 100644
--- a/testing/tests/T065agentextend
+++ b/testing/fulltests/default/T065agentextend_simple
@@ -1,16 +1,17 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER "extending agent functionality with extend"
 
 [ "x$OSTYPE" = xmsys -a "x$MSYS_SH" = x ] && SKIP "\$MSYS_SH has not been set"
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT USING_AGENT_EXTEND_MODULE
+SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE
 
 # make sure snmpget can be executed
 SNMPGET="${SNMP_UPDIR}/apps/snmpget"
-[ -x "$SNMPGET" ] || SKIP
+[ -x "$SNMPGET" ] || SKIP snmpget not compiled
 
 snmp_version=v2c
 TESTCOMMUNITY=testcommunity
@@ -20,28 +21,34 @@
 # Begin test
 #
 
-CONFIGAGENT extend hello /usr/bin/env echo hello_world
+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
 
 STARTAGENT
 
 # 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.\"hello\""
+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"
 
 #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.\"hello\""
+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"
 
 #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.\"hello\".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.4.1.2.$index.1"
 CHECKORDIE "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.\"hello\""
+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"
 CHECKORDIE "INTEGER: 1"
 
 #NET-SNMP-EXTEND-MIB::nsExtendResult."hello" = INTEGER: 0
-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.4.\"hello\""
+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.4.$index"
 CHECKORDIE "INTEGER: 0"
 
 STOPAGENT
diff --git a/testing/tests/T066pass_simple b/testing/fulltests/default/T066pass_simple
similarity index 87%
rename from testing/tests/T066pass_simple
rename to testing/fulltests/default/T066pass_simple
index 61b14c0..bdee164 100644
--- a/testing/tests/T066pass_simple
+++ b/testing/fulltests/default/T066pass_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER "extending agent functionality with pass"
 
@@ -13,10 +13,10 @@
 [ "x$OSTYPE" = "xmsys" ] && SKIP "MinGW"
 
 # make sure snmpget and snmpwalk can be executed
-SNMPGET="${SNMP_UPDIR}/apps/snmpget"
-[ -x "$SNMPGET" ] || SKIP
-SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP
+SNMPGET="${builddir}/apps/snmpget"
+[ -x "$SNMPGET" ] || SKIP snmpget not compiled
+SNMPWALK="${builddir}/apps/snmpwalk"
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
 
 snmp_version=v2c
 TESTCOMMUNITY=testcommunity
@@ -26,7 +26,7 @@
 # Begin test
 #
 oid=.1.3.6.1.4.1.8072.2.255  # NET-SNMP-PASS-MIB::netSnmpPassExamples
-CONFIGAGENT pass $oid ${SNMP_BASEDIR}/../local/passtest
+CONFIGAGENT pass $oid ${srcdir}/local/passtest
 
 ORIG_AGENT_FLAGS="$AGENT_FLAGS"
 AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass"
diff --git a/testing/tests/T067passpersist_simple b/testing/fulltests/default/T067passpersist_simple
similarity index 87%
rename from testing/tests/T067passpersist_simple
rename to testing/fulltests/default/T067passpersist_simple
index 7c66a1d..40f1333 100644
--- a/testing/tests/T067passpersist_simple
+++ b/testing/fulltests/default/T067passpersist_simple
@@ -1,22 +1,23 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER "extending agent functionality with pass_persist"
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT USING_UCD_SNMP_PASS_PERSIST_MODULE
-[ -x /usr/bin/perl ] || SKIP /usr/bin/perl
 
 # Don't run this test on MinGW - local/pass_persisttest is a shell script and
 # hence passing it to the MSVCRT popen() doesn't work.
 [ "x$OSTYPE" = "xmsys" ] && SKIP "MinGW"
 
+[ -x /usr/bin/perl ] || SKIP "/usr/bin/perl not found"
+
 # make sure snmpget and snmpwalk can be executed
-SNMPGET="${SNMP_UPDIR}/apps/snmpget"
-[ -x "$SNMPGET" ] || SKIP
-SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP
+SNMPGET="${builddir}/apps/snmpget"
+[ -x "$SNMPGET" ] || SKIP snmpget not compiled
+SNMPWALK="${builddir}/apps/snmpwalk"
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
 
 snmp_version=v2c
 TESTCOMMUNITY=testcommunity
@@ -26,7 +27,7 @@
 # Begin test
 #
 oid=.1.3.6.1.4.1.8072.2.255  # NET-SNMP-PASS-MIB::netSnmpPassExamples
-CONFIGAGENT pass_persist $oid ${SNMP_BASEDIR}/../local/pass_persisttest
+CONFIGAGENT pass_persist $oid ${srcdir}/local/pass_persisttest
 
 ORIG_AGENT_FLAGS="$AGENT_FLAGS"
 AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass_persist"
diff --git a/testing/tests/T068execfix b/testing/fulltests/default/T068execfix_simple
similarity index 97%
rename from testing/tests/T068execfix
rename to testing/fulltests/default/T068execfix_simple
index f49206e..fa81835 100644
--- a/testing/tests/T068execfix
+++ b/testing/fulltests/default/T068execfix_simple
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+. ../support/simple_eval_tools.sh
+
 HEADER "execfix configuration directive"
 
 SKIPIFNOT USING_UCD_SNMP_EXTENSIBLE_MODULE
diff --git a/testing/fulltests/default/T070com2sec_simple b/testing/fulltests/default/T070com2sec_simple
new file mode 100644
index 0000000..9f76fcd
--- /dev/null
+++ b/testing/fulltests/default/T070com2sec_simple
@@ -0,0 +1,159 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER com2sec directive
+
+SKIPIFNOT NETSNMP_TRANSPORT_UDP_DOMAIN
+SKIPIF NETSNMP_NO_DEBUGGING
+
+#
+# Begin test
+#
+
+# 401a Test missing CONTEXT
+CONFIGAGENT 'com2sec -Cn'
+# 401b Test empty CONTEXT
+CONFIGAGENT 'com2sec -Cn ""'
+# 401c Test overlong CONTEXT (34 chars)
+CONFIGAGENT 'com2sec -Cn 1234567890123456789012345678901234'
+
+# 402a Test missing secName
+CONFIGAGENT 'com2sec'
+# 402b Test empty secName
+CONFIGAGENT 'com2sec ""'
+# 402c Test overlong secName (34 chars)
+CONFIGAGENT 'com2sec 1234567890123456789012345678901234'
+# 402d Test valid context and missing secName
+CONFIGAGENT 'com2sec -Cn 123456789012345678901234567890123'
+# 402e Test valid context and empty secName
+CONFIGAGENT 'com2sec -Cn 123456789012345678901234567890123 ""'
+
+# 403a Test missing network address
+CONFIGAGENT 'com2sec t403a'
+# 403b Test empty network address
+CONFIGAGENT 'com2sec t403b ""'
+# 403c Test forbidden value (now why it is forbidden...)
+CONFIGAGENT 'com2sec t403c NETWORK'
+
+# 404a Test missing community
+CONFIGAGENT 'com2sec t404a default'
+# 404b Test empty community
+CONFIGAGENT 'com2sec t404b default ""'
+# 404c Test forbidden value (now why it is forbidden...)
+CONFIGAGENT 'com2sec t404c default COMMUNITY'
+# 404d Test overlong community (255 chars)
+CONFIGAGENT 'com2sec t404d default 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'
+# 404e Test valid community
+CONFIGAGENT 'com2sec t404e default 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234'
+
+# 405a Test 'default' configuration
+CONFIGAGENT 'com2sec t405a default c405a'
+# 405b Test ip address configuration
+CONFIGAGENT 'com2sec t405b 10.0.0.0 c405b'
+# 405c Test valid numeric mask
+CONFIGAGENT 'com2sec t405c 10.0.0.0/8 c405c'
+# 405d Test invalid numeric mask (too big)
+CONFIGAGENT 'com2sec t405d 10.0.0.0/33 c405d'
+# 405e Test invalid numeric mask (negative)
+CONFIGAGENT 'com2sec t405e 10.0.0.0/-1 c405e'
+# 405f Test valid ip address mask
+CONFIGAGENT 'com2sec t405f 10.0.0.0/255.0.0.0 c405f'
+# 405g Test invalid ip address mask
+CONFIGAGENT 'com2sec t405g 10.0.0.0/512.0.0.0 c405g'
+# 405h Test invalid ip address mask
+CONFIGAGENT 'com2sec t405h 10.0.0.0/hh c405h'
+# 405i Test address with 1 bits not covered by the mask
+CONFIGAGENT 'com2sec t405i 10.0.0.0/3.192.0.0 c405i'
+# 405j Test that 0.0.0.0 works (alias for default)
+CONFIGAGENT 'com2sec t405j 0.0.0.0 c405j'
+# 405k Test that 0.0.0.0/0 works (alias for default)
+CONFIGAGENT 'com2sec t405k 0.0.0.0/0 c405k'
+# 405l Test that 0.0.0.0/0.0.0.0 works (alias for default)
+CONFIGAGENT 'com2sec t405l 0.0.0.0/0.0.0.0 c405l'
+
+# 406a Test maximally long address/mask
+CONFIGAGENT 'com2sec t406a 255.255.255.255/255.255.255.255 c406a'
+
+# 407a Test non existant host name
+CONFIGAGENT 'com2sec t407a no.such.address. c407a'
+# 407b Test maximally long host name/mask
+CONFIGAGENT 'com2sec t407b a23456789012345678901234567890123456789012345678901234567890123.a23456789012345678901234567890123456789012345678901234567890123.a23456789012345678901234567890123456789012345678901234567890123.a234567890123456789012345678901234567890123456789012345678901./255.255.255.255 c407b'
+
+# 408 Lookup tests, require network access
+# 408a Test lookup returning a single host
+CONFIGAGENT 'com2sec t408a www.ietf.org c408a'
+# 408a Test lookup returning multiple hosts
+CONFIGAGENT 'com2sec t408b www.google.com c408b'
+
+# Default agent setup
+CONFIGAGENT "[snmp] persistentdir $SNMP_TMP_PERSISTENTDIR"
+# Dummy config to prevent the basic_setup warning
+CONFIGAGENT 'rocommunity public 127.0.0.0/8'
+
+AGENT_FLAGS='-Dnetsnmp_udp_parse_security,netsnmp_udp6_parse_security,netsnmp_unix_parse_security'
+
+STARTAGENT
+
+SAVECHECKAGENT() {
+    CHECKAGENT "$@"
+    if [ "x$return_value" != "x0" ] ; then
+        FINISHED
+    fi
+}
+
+SAVECHECKAGENT 'line 1: Error: missing CONTEXT_NAME parameter'
+SAVECHECKAGENT 'line 2: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 3: Error: context name too long'
+CHECKAGENTCOUNT atleastone 'line 4: Error: Blank line following com2sec token.'
+SAVECHECKAGENT 'line 5: Error: empty NAME parameter'
+SAVECHECKAGENT 'line 6: Error: security name too long'
+SAVECHECKAGENT 'line 7: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 8: Error: empty NAME parameter'
+SAVECHECKAGENT 'line 9: Error: missing SOURCE parameter'
+SAVECHECKAGENT 'line 10: Error: empty SOURCE parameter'
+SAVECHECKAGENT 'line 11: Error: example config NETWORK not properly configured'
+SAVECHECKAGENT 'line 12: Error: missing COMMUNITY parameter'
+SAVECHECKAGENT 'line 13: Error: empty COMMUNITY parameter'
+SAVECHECKAGENT 'line 14: Error: example config COMMUNITY not properly configured'
+SAVECHECKAGENT 'line 15: Error: community name too long'
+SAVECHECKAGENT '<"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", 0.0.0.0/0.0.0.0> => "t404e"'
+SAVECHECKAGENT '<"c405a", 0.0.0.0/0.0.0.0> => "t405a"'
+SAVECHECKAGENT '<"c405b", 10.0.0.0/255.255.255.255> => "t405b"'
+SAVECHECKAGENT '<"c405c", 10.0.0.0/255.0.0.0> => "t405c"'
+SAVECHECKAGENT 'line 20: Error: bad mask length'
+SAVECHECKAGENT 'line 21: Error: bad mask length'
+SAVECHECKAGENT '<"c405f", 10.0.0.0/255.0.0.0> => "t405f"'
+SAVECHECKAGENT 'line 23: Error: bad mask'
+SAVECHECKAGENT 'line 24: Error: bad mask'
+SAVECHECKAGENT 'line 25: Error: source/mask mismatch'
+SAVECHECKAGENT '<"c405j", 0.0.0.0/255.255.255.255> => "t405j"'
+SAVECHECKAGENT '<"c405k", 0.0.0.0/0.0.0.0> => "t405k"'
+SAVECHECKAGENT '<"c405l", 0.0.0.0/0.0.0.0> => "t405l"'
+SAVECHECKAGENT '<"c406a", 255.255.255.255/255.255.255.255> => "t406a"'
+SAVECHECKAGENT 'line 30: Error:' # msg from h_strerror so it varies
+SAVECHECKAGENT 'line 31: Error:' # msg from h_strerror so it varies
+
+CHECKAGENT '<"c408a"'
+if [ "$snmp_last_test_result" -eq 0 ] ; then
+  CHECKAGENT 'line 32: Error:'
+  if [ "$snmp_last_test_result" -ne 1 ] ; then
+    return_value=1
+    FINISHED
+  fi
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
+  return_value=1
+  FINISHED
+fi
+
+CHECKAGENT '<"c408b"'
+if [ "$snmp_last_test_result" -eq 0 ] ; then
+  CHECKAGENT 'line 33: Error:'
+  if [ "$snmp_last_test_result" -ne 1 ] ; then
+    return_value=1
+  fi
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
+  return_value=1
+fi
+
+FINISHED
diff --git a/testing/fulltests/default/T071com2sec6_simple b/testing/fulltests/default/T071com2sec6_simple
new file mode 100644
index 0000000..8c90ad0
--- /dev/null
+++ b/testing/fulltests/default/T071com2sec6_simple
@@ -0,0 +1,155 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER com2sec6 directive
+
+SKIPIFNOT NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+SKIPIF NETSNMP_NO_DEBUGGING
+
+#
+# Begin test
+#
+
+# 601a Test missing CONTEXT
+CONFIGAGENT 'com2sec6 -Cn'
+# 601b Test empty CONTEXT
+CONFIGAGENT 'com2sec6 -Cn ""'
+# 601c Test overlong CONTEXT (34 chars)
+CONFIGAGENT 'com2sec6 -Cn 1234567890123456789012345678901234'
+
+# 602a Test missing secName
+CONFIGAGENT 'com2sec6'
+# 602b Test empty secName
+CONFIGAGENT 'com2sec6 ""'
+# 602c Test overlong secName (34 chars)
+CONFIGAGENT 'com2sec6 1234567890123456789012345678901234'
+# 602d Test valid context and missing secName
+CONFIGAGENT 'com2sec6 -Cn 123456789012345678901234567890123'
+# 602e Test valid context and empty secName
+CONFIGAGENT 'com2sec6 -Cn 123456789012345678901234567890123 ""'
+
+# 603a Test missing network address
+CONFIGAGENT 'com2sec6 t603a'
+# 603b Test empty network address
+CONFIGAGENT 'com2sec6 t603b ""'
+# 603c Test forbidden value
+CONFIGAGENT 'com2sec6 t603c NETWORK'
+
+# 604a Test missing COMMUNITY
+CONFIGAGENT 'com2sec6 t604a default'
+# 604b 'Error: empty COMMUNITY parameter'
+CONFIGAGENT 'com2sec6 t604b default ""'
+# 604c Test overlong COMMUNITY
+CONFIGAGENT 'com2sec6 t604c default 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'
+# 604d Test barely valid community
+CONFIGAGENT 'com2sec6 t604d default 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234'
+# 604e Test forbidden value
+CONFIGAGENT 'com2sec6 t604e default COMMUNITY'
+
+# 605a Test 'default' configuration
+CONFIGAGENT 'com2sec6 t605a default c605a'
+# 605b Test ip address configuration
+CONFIGAGENT 'com2sec6 t605b aa00:: c605b'
+# 605c Test valid numeric mask
+CONFIGAGENT 'com2sec6 t605c aa00::/8 c605c'
+# 605d Test invalid numeric mask (too big)
+CONFIGAGENT 'com2sec6 t605d aa00::/129 c605d'
+# 605e Test invalid numeric mask (negative)
+CONFIGAGENT 'com2sec6 t605e aa00::/-1 c605e'
+# 605f Test valid ip address mask
+CONFIGAGENT 'com2sec6 t605f aa00::/ff00:: c605f'
+# 605g Test invalid ip address mask
+CONFIGAGENT 'com2sec6 t605g aa00::/fffff:: c605g'
+# 605h Test invalid ip address mask
+CONFIGAGENT 'com2sec6 t605h aa00::/gg00:: c605h'
+# 605i Test address with 1 bits not covered by the mask
+CONFIGAGENT 'com2sec6 t605i aa00::/0ff0:: c605i'
+
+# 606a Test maximally long address/mask
+CONFIGAGENT 'com2sec6 t606a ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff c606a'
+
+# 607a Test non existant host name
+CONFIGAGENT 'com2sec6 t607a no.such.address. c607a'
+# 607b Test maximally long host name/mask
+CONFIGAGENT 'com2sec6 t607b a23456789012345678901234567890123456789012345678901234567890123.a23456789012345678901234567890123456789012345678901234567890123.a23456789012345678901234567890123456789012345678901234567890123.a234567890123456789012345678901234567890123456789012345678901./ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff c607b'
+
+# 608 Lookup tests, require network access
+# 608a Test lookup returning a single host
+CONFIGAGENT 'com2sec6 t608a oneaaaa.net-snmp.org c608a'
+# 608b Test lookup returning multiple hosts
+CONFIGAGENT 'com2sec6 t608b twoaaaa.net-snmp.org c608b'
+
+# Default agent setup
+CONFIGAGENT "[snmp] persistentdir $SNMP_TMP_PERSISTENTDIR"
+# Dummy config to prevent the basic_setup warning
+CONFIGAGENT 'rocommunity public 127.0.0.0/8'
+
+AGENT_FLAGS='-Dnetsnmp_udp_parse_security,netsnmp_udp6_parse_security,netsnmp_unix_parse_security'
+
+STARTAGENT
+
+SAVECHECKAGENT() {
+    CHECKAGENT "$@"
+    if [ "x$return_value" != "x0" ] ; then
+        FINISHED
+    fi
+}
+
+# 601
+SAVECHECKAGENT 'line 1: Error: missing CONTEXT_NAME parameter'
+SAVECHECKAGENT 'line 2: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 3: Error: context name too long'
+# 602
+CHECKAGENTCOUNT atleastone 'line 4: Error: Blank line following com2sec6 token.'
+SAVECHECKAGENT 'line 5: Error: empty NAME parameter'
+SAVECHECKAGENT 'line 6: Error: security name too long'
+SAVECHECKAGENT 'line 7: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 8: Error: empty NAME parameter'
+# 603
+SAVECHECKAGENT 'line 9: Error: missing SOURCE parameter'
+SAVECHECKAGENT 'line 10: Error: empty SOURCE parameter'
+SAVECHECKAGENT 'line 11: Error: example config NETWORK not properly configured'
+# 604
+SAVECHECKAGENT 'line 12: Error: missing COMMUNITY parameter'
+SAVECHECKAGENT 'line 13: Error: empty COMMUNITY parameter'
+SAVECHECKAGENT 'line 14: Error: community name too long'
+SAVECHECKAGENT '<"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", ::/::> => "t604d"'
+SAVECHECKAGENT 'line 16: Error: example config COMMUNITY not properly configured'
+# 605
+SAVECHECKAGENT '<"c605a", ::/::> => "t605a"'
+SAVECHECKAGENT '<"c605b", aa00::/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff> => "t605b"'
+SAVECHECKAGENT '<"c605c", aa00::/ff00::> => "t605c"'
+SAVECHECKAGENT 'line 20: Error: bad mask length'
+SAVECHECKAGENT 'line 21: Error: bad mask length'
+SAVECHECKAGENT '<"c605f", aa00::/ff00::> => "t605f"'
+SAVECHECKAGENT 'line 23: Error: bad mask'
+SAVECHECKAGENT 'line 24: Error: bad mask'
+SAVECHECKAGENT 'line 25: Error: source/mask mismatch'
+# 606
+SAVECHECKAGENT '<"c606a", ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff> => "t606a"'
+# 607
+SAVECHECKAGENT 'line 27: Error:'
+SAVECHECKAGENT 'line 28: Error:'
+
+# 608
+CHECKAGENT '<"c608a"'
+if [ "$snmp_last_test_result" -eq 0 ] ; then
+  CHECKAGENT 'line 29: Error:'
+  errnum=`expr $errnum - 1`
+  if [ "$snmp_last_test_result" -ne 1 ] ; then
+    FINISHED
+  fi
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
+  FINISHED
+fi
+
+CHECKAGENTCOUNT atleastone '<"c608b"'
+if [ "$snmp_last_test_result" -eq 0 ] ; then
+  CHECKAGENT 'line 30: Error:'
+  if [ "$snmp_last_test_result" -eq 1 ] ; then
+    errnum=`expr $errnum - 1`
+  fi
+fi
+
+FINISHED
diff --git a/testing/fulltests/default/T072com2secunix_simple b/testing/fulltests/default/T072com2secunix_simple
new file mode 100644
index 0000000..1f380f2
--- /dev/null
+++ b/testing/fulltests/default/T072com2secunix_simple
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER com2secunix directive
+
+SKIPIFNOT NETSNMP_TRANSPORT_UNIX_DOMAIN
+SKIPIF NETSNMP_NO_DEBUGGING
+SKIPIFNOT SIZEOF_SOCKADDR_UN_SUN_PATH
+
+#
+# Prepare test
+#
+if [ `uname -s` = SunOS ]
+then AWK=nawk
+else AWK=awk
+fi
+
+sun_path_sized=`$AWK '/^#define SIZEOF_SOCKADDR_UN_SUN_PATH/ { res = "a"; for(n = 2; n < $3; ++n) { res = res substr("1234567890", n % 10 + 1, 1); } print res; }' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h`
+
+#
+# Begin test
+#
+
+# u01a Test missing CONTEXT
+CONFIGAGENT 'com2secunix -Cn'
+# u01a Test empty CONTEXT
+CONFIGAGENT 'com2secunix -Cn ""'
+# u01c Test overlong CONTEXT (34 chars)
+CONFIGAGENT 'com2secunix -Cn 1234567890123456789012345678901234'
+
+# u02a Test missing secName
+CONFIGAGENT 'com2secunix'
+# u02b Test empty secName
+CONFIGAGENT 'com2secunix ""'
+# u02c Test overlong secName (34 chars)
+CONFIGAGENT 'com2secunix 1234567890123456789012345678901234'
+# u02d Test valid context and missing secName
+CONFIGAGENT 'com2secunix -Cn 123456789012345678901234567890123'
+# u02e Test valid context and empty secName
+CONFIGAGENT 'com2secunix -Cn 123456789012345678901234567890123 ""'
+
+# u03a Test missing sockpath
+CONFIGAGENT 'com2secunix tu03a'
+# u03b Test empty sockpath
+CONFIGAGENT 'com2secunix tu03b ""'
+# u03c Test overlong sockpath (sizeof(sockaddr_un.sun_path) chars)
+CONFIGAGENT "com2secunix tu03c ${sun_path_sized}x"
+# u03d Test valid sockpath (sizeof(sockaddr_un.sun_path) - 1 chars)
+CONFIGAGENT "com2secunix tu03d ${sun_path_sized}"
+
+# u04a Test missing community
+CONFIGAGENT 'com2secunix tu04a default'
+# u04b Test empty community
+CONFIGAGENT 'com2secunix tu04b default ""'
+# u04c Test forbidden value (now why it is forbidden...)
+CONFIGAGENT 'com2secunix tu04c default COMMUNITY'
+# u04d Test overlong community (255 chars)
+CONFIGAGENT 'com2secunix tu04d default 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'
+# u04e Test valid community
+CONFIGAGENT 'com2secunix tu04e default 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234'
+
+# u05a Test 'default' configuration
+CONFIGAGENT 'com2secunix tu05a default cu05a'
+
+# u07a Test non existant sockpath
+CONFIGAGENT 'com2secunix tu07a /dev/null/no/such cu07a'
+
+# Default agent setup
+CONFIGAGENT "[snmp] persistentdir $SNMP_TMP_PERSISTENTDIR"
+# Dummy config to prevent the basic_setup warning
+CONFIGAGENT 'rocommunity public 127.0.0.0/8'
+
+AGENT_FLAGS='-Dnetsnmp_udp_parse_security,netsnmp_udp6_parse_security,netsnmp_unix_parse_security'
+
+STARTAGENT
+
+SAVECHECKAGENT() {
+    CHECKAGENT "$@"
+    if [ "x$return_value" != "x0" ] ; then
+        FINISHED
+    fi
+}
+
+# u01
+SAVECHECKAGENT 'line 1: Error: missing CONTEXT_NAME parameter'
+SAVECHECKAGENT 'line 2: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 3: Error: context name too long'
+# u02
+CHECKAGENTCOUNT atleastone 'line 4: Error: Blank line following com2secunix token.'
+SAVECHECKAGENT 'line 5: Error: empty NAME parameter'
+SAVECHECKAGENT 'line 6: Error: security name too long'
+SAVECHECKAGENT 'line 7: Error: missing NAME parameter'
+SAVECHECKAGENT 'line 8: Error: empty NAME parameter'
+# u03
+SAVECHECKAGENT 'line 9: Error: missing SOCKPATH parameter'
+SAVECHECKAGENT 'line 10: Error: empty SOCKPATH parameter'
+SAVECHECKAGENT 'line 11: Error: sockpath too long'
+SAVECHECKAGENT 'line 12: Error: missing COMMUNITY parameter'
+# u04
+SAVECHECKAGENT 'line 13: Error: missing COMMUNITY parameter'
+SAVECHECKAGENT 'line 14: Error: empty COMMUNITY parameter'
+SAVECHECKAGENT 'line 15: Error: example config COMMUNITY not properly configured'
+SAVECHECKAGENT 'line 16: Error: community name too long'
+SAVECHECKAGENT '<"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", ""> => "tu04e"'
+# u05
+SAVECHECKAGENT '<"cu05a", ""> => "tu05a"'
+# u07
+SAVECHECKAGENT '<"cu07a", "/dev/null/no/such"> => "tu07a"'
+
+FINISHED
diff --git a/testing/tests/T100agenthup b/testing/fulltests/default/T100agenthup_simple
similarity index 82%
rename from testing/tests/T100agenthup
rename to testing/fulltests/default/T100agenthup_simple
index 505efb4..d4949e1 100755
--- a/testing/tests/T100agenthup
+++ b/testing/fulltests/default/T100agenthup_simple
@@ -1,12 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER that the agent responds properly to a kill -HUP
 
 SKIPIF NETSNMP_DISABLE_SNMPV1
 
-SKIPIFNOT HAVE_SIGNAL
+SKIPIFNOT HAVE_SIGHUP
 
 #
 # Begin test
@@ -27,7 +27,7 @@
 DELAY
 
 # And see if it has the new value.
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT system.sysLocation.0"
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.6.0"
 
 STOPAGENT
 
diff --git a/testing/tests/T110agentxget b/testing/fulltests/default/T110agentxget_simple
similarity index 93%
rename from testing/tests/T110agentxget
rename to testing/fulltests/default/T110agentxget_simple
index 449280f..2f91d36 100644
--- a/testing/tests/T110agentxget
+++ b/testing/fulltests/default/T110agentxget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER AgentX GET support
 
@@ -21,7 +21,7 @@
 else
 ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
 fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
diff --git a/testing/tests/T111agentxset b/testing/fulltests/default/T111agentxset_simple
similarity index 79%
rename from testing/tests/T111agentxset
rename to testing/fulltests/default/T111agentxset_simple
index 96cbb50..c767064 100644
--- a/testing/tests/T111agentxset
+++ b/testing/fulltests/default/T111agentxset_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER AgentX SET support
 
@@ -22,7 +22,7 @@
 else
 ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
 fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -DAgentX"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL -DAgentX"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
@@ -43,23 +43,23 @@
   STARTAGENT
 
   # test to see that the agent now supports the system mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $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: testcontact"
+  CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*testcontact"
 
   if test "$snmp_last_test_result" = 1; then
 
     # test to see that the agent now supports setting the system mib
-    CAPTURE "snmpset -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0 s newtestcontact"
+    CAPTURE "snmpset -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s newtestcontact"
 
-    CHECK ".1.3.6.1.2.1.1.4.0 = STRING: newtestcontact"
+    CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*newtestcontact"
 
     if test "$snmp_last_test_result" = 1; then
 
 	# test to see that the agent now supports the system mib
-	CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+	CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $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: newtestcontact"
+	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*newtestcontact"
     fi
   fi
 
diff --git a/testing/tests/T112agentxsetfail b/testing/fulltests/default/T112agentxsetfail_simple
similarity index 82%
rename from testing/tests/T112agentxsetfail
rename to testing/fulltests/default/T112agentxsetfail_simple
index 4dce727..4f1f0cb 100644
--- a/testing/tests/T112agentxsetfail
+++ b/testing/fulltests/default/T112agentxsetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER AgentX illegal SET handling support
 
@@ -22,11 +22,11 @@
 else
 ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
 fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -DAgentX"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL -DAgentX"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
-CAPTURE "snmpget -On -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT system.sysContact.0"
+CAPTURE "snmpget -On -t 3 $SNMP_FLAGS $AUTHTESTARGS $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 = No Such Object"
 
@@ -42,16 +42,16 @@
   STARTAGENT
 
   # test to see that the agent now supports the system mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
 
   # we don't know the real value, unfortunately, so we test for what
   # we should *not* get back.
-  CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
+  CHECKCOUNT 0 ".1.3.6.1.2.1.1.4.0 = No Such Object"
 
   if test "$snmp_last_test_result" = 0; then
 
     # test to see that the agent now supports setting the system mib
-    CAPTURE "snmpset -On -Ir $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0 i 4"
+    CAPTURE "snmpset -On -Ir $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 i 4"
 
     CHECK "wrongType"
 
diff --git a/testing/tests/T113agentxtrap b/testing/fulltests/default/T113agentxtrap_simple
similarity index 87%
rename from testing/tests/T113agentxtrap
rename to testing/fulltests/default/T113agentxtrap_simple
index 25c3ee1..be2b9be 100644
--- a/testing/tests/T113agentxtrap
+++ b/testing/fulltests/default/T113agentxtrap_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER AgentX trap sending support
 
@@ -31,7 +31,7 @@
 STARTAGENT
 
 # test to see that the current agent doesn't support the example mib
-CAPTURE "snmpget -On -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.1.0"
+CAPTURE "snmpget -On -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.1.0"
 
 CHECK "No Such Object"
 
@@ -48,14 +48,14 @@
   STARTAGENT
 
   # test to see that the agent now supports the example mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.1.0"
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.1.0"
 
   CHECK "life the universe and everything"
 
   if test "$snmp_last_test_result" = 1; then
 
     # test to see that the agent now sends a trap from the exmaple mib
-    CAPTURE "snmpset -On -r 0 -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::ucdavis.254.8.0 i 1"
+    CAPTURE "snmpset -On -r 0 -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1"
     DELAY
     CHECKTRAPD "life the universe and everything"
 
diff --git a/testing/fulltests/default/T114agentxagentxtrap_simple b/testing/fulltests/default/T114agentxagentxtrap_simple
new file mode 100644
index 0000000..380c0ef
--- /dev/null
+++ b/testing/fulltests/default/T114agentxagentxtrap_simple
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX trap sending support using agentxtrap
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+
+#
+# Begin test
+#
+
+# start the trap demon
+CONFIGTRAPD authcommunity log public
+STARTTRAPD
+
+# standard V3 configuration for initial user
+. ./Sv3config
+# configure the trap receiver.
+CONFIGAGENT trap2sink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+
+# Start the agent
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
+AGENTX_SERVER="-x $SNMP_TMPDIR/agentx_socket"
+else
+AGENTX_SERVER="-x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+AGENT_FLAGS="$AGENT_FLAGS $AGENTX_SERVER"
+STARTAGENT
+
+CAPTURE "agentxtrap $AGENTX_SERVER 0.0 0.0 s mostly_harmless"
+
+# stop the master agent
+STOPAGENT
+
+# stop the trap demon
+STOPTRAPD
+
+# Check that the trap was received
+CHECKTRAPD "mostly_harmless"
+
+# all done (whew)
+FINISHED
diff --git a/testing/tests/T115agentxperl b/testing/fulltests/default/T115agentxperl_simple
similarity index 81%
rename from testing/tests/T115agentxperl
rename to testing/fulltests/default/T115agentxperl_simple
index 9da24f6..bdf6471 100755
--- a/testing/tests/T115agentxperl
+++ b/testing/fulltests/default/T115agentxperl_simple
@@ -1,14 +1,15 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER 'AgentX subagent in Perl (using NetSNMP::agent)'
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 SKIPIFNOT USING_AGENTX_MASTER_MODULE
 SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT HAVE_SIGHUP
 # make sure the toolkit has been configured --with-perl-modules
-[ -d ${SNMP_UPDIR}/perl/blib/arch/auto/NetSNMP/agent ] || SKIP
+[ -d ${SNMP_UPDIR}/perl/blib/arch/auto/NetSNMP/agent ] || SKIP Not --with-perl-modules
 
 #
 # Begin test
@@ -94,25 +95,6 @@
 
 STARTAGENT
 
-# make sure that we can fulfill all library dependencies
-_ld_lib_path="${SNMP_UPDIR}/snmplib/.libs:${SNMP_UPDIR}/agent/.libs:${SNMP_UPDIR}/agent/helpers/.libs"
-if [ "x$LD_LIBRARY_PATH" != "x" ]; then
-  LD_LIBRARY_PATH="${_ld_lib_path}:${LD_LIBRARY_PATH}"
-else
-  LD_LIBRARY_PATH="${_ld_lib_path}"
-fi
-if [ "x$DYLD_LIBRARY_PATH" != "x" ]; then
-  DYLD_LIBRARY_PATH="${_ld_lib_path}:${DYLD_LIBRARY_PATH}"
-else
-  DYLD_LIBRARY_PATH="${_ld_lib_path}"
-fi
-if [ "x$SHLIB_PATH" != "x" ]; then
-  SHLIB_PATH="${_ld_lib_path}:${SHLIB_PATH}"
-else
-  SHLIB_PATH="${_ld_lib_path}"
-fi
-export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH
-
 # start perl subagent
 /usr/bin/env SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}" $SNMP_PERLPROG $PERL_SUBAGENT $SNMP_AGENTX_PID_FILE >$SNMP_AGENTX_LOG_FILE 2>&1
 DELAY
diff --git a/testing/tests/T120proxyget b/testing/fulltests/default/T120proxyget_simple
similarity index 89%
rename from testing/tests/T120proxyget
rename to testing/fulltests/default/T120proxyget_simple
index 3c86e17..16e9478 100644
--- a/testing/tests/T120proxyget
+++ b/testing/fulltests/default/T120proxyget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER Proxy GET support
 
@@ -9,7 +9,7 @@
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 
 # 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
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP Test does not support TCP
 
 #
 # Begin test
@@ -18,11 +18,11 @@
 # standard V3 configuration for initial user
 . ./Sv3config
 # config the proxy
-CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} system
+CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} .1.3.6.1.2.1.1
 
 # Start the agent without initializing the system mib.
 ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL -Dproxy"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
diff --git a/testing/tests/T121proxyset b/testing/fulltests/default/T121proxyset_simple
similarity index 79%
rename from testing/tests/T121proxyset
rename to testing/fulltests/default/T121proxyset_simple
index 3af0b4e..c87668c 100644
--- a/testing/tests/T121proxyset
+++ b/testing/fulltests/default/T121proxyset_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER Proxy SET support
 
@@ -10,7 +10,7 @@
 SKIPIF    NETSNMP_DISABLE_SET_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
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP Test does not support TCP
 
 #
 # Begin test
@@ -19,11 +19,11 @@
 # standard V3 configuration for initial user
 . ./Sv3config
 # config the proxy
-CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} system
+CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} .1.3.6.1.2.1.1
 
 # Start the agent without initializing the system mib.
 ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL -Dproxy"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
@@ -51,23 +51,23 @@
   SNMP_SNMPD_PORT=$ORIG_SNMP_SNMPD_PORT
 
   # test to see that the agent now supports the system mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $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: testcontact"
+  CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*testcontact"
 
   if test "$snmp_last_test_result" = 1; then
 
     # test to see that the agent now supports the system mib
-    CAPTURE "snmpset -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0 s newtestcontact"
+    CAPTURE "snmpset -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s testnewcontact"
 
-    CHECK ".1.3.6.1.2.1.1.4.0 = STRING: newtestcontact"
+    CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*testnewcontact"
 
     if test "$snmp_last_test_result" = 1; then
 
 	# test to see that the agent now supports the system mib
-	CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+	CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $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: newtestcontact"
+	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*testnewcontact"
     fi
   fi
 
diff --git a/testing/tests/T122proxysetfail b/testing/fulltests/default/T122proxysetfail_simple
similarity index 84%
rename from testing/tests/T122proxysetfail
rename to testing/fulltests/default/T122proxysetfail_simple
index 19e20e4..7f57be9 100644
--- a/testing/tests/T122proxysetfail
+++ b/testing/fulltests/default/T122proxysetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER Proxy illegal SET handling support
 
@@ -10,7 +10,7 @@
 SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
 
 # XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
-[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP Test does not support TCP
 
 #
 # Begin test
@@ -19,11 +19,11 @@
 # standard V3 configuration for initial user
 . ./Sv3config
 # config the proxy
-CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} system
+CONFIGAGENT proxy -t 2 -r 1 -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT} .1.3.6.1.2.1.1
 
 # Start the agent without initializing the system mib.
 ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL -Dproxy"
 STARTAGENT
 
 # test to see that the current agent doesn't support the system mib
@@ -51,17 +51,17 @@
   SNMP_SNMPD_PORT=$ORIG_SNMP_SNMPD_PORT
 
   # test to see that the agent now supports the system mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0"
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
 
   
   # we don't know the real value, unfortunately, so we test for what
   # we should *not* get back.
-  CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
+  CHECKCOUNT 0 ".1.3.6.1.2.1.1.4.0 = No Such Object"
 
   if test "$snmp_last_test_result" = 0; then
 
     # test to see that the agent now supports the system mib
-    CAPTURE "snmpset -On -Ir $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT sysContact.0 i 42"
+    CAPTURE "snmpset -On -Ir $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 i 42"
 
     # 5.0.x snmpset shows error on single line
     #CHECK ".1.3.6.1.2.1.1.4.0 = Wrong Type"
diff --git a/testing/tests/T130snmpv1vacmget b/testing/fulltests/default/T130snmpv1vacmget_simple
similarity index 94%
rename from testing/tests/T130snmpv1vacmget
rename to testing/fulltests/default/T130snmpv1vacmget_simple
index 71bdc71..1974b7f 100644
--- a/testing/tests/T130snmpv1vacmget
+++ b/testing/fulltests/default/T130snmpv1vacmget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv1 vacm acceptance support
 SKIPIF NETSNMP_DISABLE_SNMPV1
diff --git a/testing/tests/T131snmpv2cvacmget b/testing/fulltests/default/T131snmpv2cvacmget_simple
similarity index 94%
rename from testing/tests/T131snmpv2cvacmget
rename to testing/fulltests/default/T131snmpv2cvacmget_simple
index 9d481f2..4f72370 100644
--- a/testing/tests/T131snmpv2cvacmget
+++ b/testing/fulltests/default/T131snmpv2cvacmget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2 vacm acceptance support
 
diff --git a/testing/tests/T132snmpv3vacmget b/testing/fulltests/default/T132snmpv3vacmget_simple
similarity index 94%
rename from testing/tests/T132snmpv3vacmget
rename to testing/fulltests/default/T132snmpv3vacmget_simple
index 8ce9364..004d0dd 100644
--- a/testing/tests/T132snmpv3vacmget
+++ b/testing/fulltests/default/T132snmpv3vacmget_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 vacm acceptance support
 
diff --git a/testing/tests/T140snmpv1vacmgetfail b/testing/fulltests/default/T140snmpv1vacmgetfail_simple
similarity index 95%
rename from testing/tests/T140snmpv1vacmgetfail
rename to testing/fulltests/default/T140snmpv1vacmgetfail_simple
index 0510008..a47f94d 100644
--- a/testing/tests/T140snmpv1vacmgetfail
+++ b/testing/fulltests/default/T140snmpv1vacmgetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv1 vacm denial support
 
diff --git a/testing/tests/T141snmpv2cvacmgetfail b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
similarity index 93%
rename from testing/tests/T141snmpv2cvacmgetfail
rename to testing/fulltests/default/T141snmpv2cvacmgetfail_simple
index c2ed337..5f665ba 100644
--- a/testing/tests/T141snmpv2cvacmgetfail
+++ b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv2 vacm denial support
 
@@ -36,7 +36,7 @@
 CHECKORDIE "Reason: noAccess"
 
 CAPTURE "snmpset -On $SNMP_FLAGS -c testrwcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.5.0 s dummy"
-CHECKORDIE ".1.3.6.1.2.1.1.5.0 = STRING: dummy"
+CHECKORDIE ".1.3.6.1.2.1.1.5.0 = STRING: \"*dummy"
 
 CAPTURE "snmpset -On $SNMP_FLAGS -c testrocommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.5.0 s dummy"
 CHECKORDIE "Reason: noAccess"
diff --git a/testing/tests/T142snmpv3vacmgetfail b/testing/fulltests/default/T142snmpv3vacmgetfail_simple
similarity index 94%
rename from testing/tests/T142snmpv3vacmgetfail
rename to testing/fulltests/default/T142snmpv3vacmgetfail_simple
index 8f7eb9c..cfc000b 100644
--- a/testing/tests/T142snmpv3vacmgetfail
+++ b/testing/fulltests/default/T142snmpv3vacmgetfail_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER SNMPv3 vacm denial support
 
diff --git a/testing/tests/T150solarishostcpu b/testing/fulltests/default/T150solarishostcpu_simple
similarity index 82%
rename from testing/tests/T150solarishostcpu
rename to testing/fulltests/default/T150solarishostcpu_simple
index a28e939..4a3ee6a 100644
--- a/testing/tests/T150solarishostcpu
+++ b/testing/fulltests/default/T150solarishostcpu_simple
@@ -1,11 +1,11 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER 1st CPU on Solaris using HOST-RESOURCES
 
 if test "x`uname -s`" != "xSunOS" ; then
-    SKIP
+    SKIP "not running solaris"
 fi
 
 SKIPIF NETSNMP_DISABLE_SNMPV1
@@ -24,7 +24,7 @@
 
 CAPTURE "snmpgetnext -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.25.3.2.1.3.767"
 
-CHECKORDIE " = STRING: CPU "
+CHECKORDIE ' = STRING: "*CPU '
 
 STOPAGENT
   
diff --git a/testing/tests/T151solarishostdisk b/testing/fulltests/default/T151solarishostdisk_simple
similarity index 88%
rename from testing/tests/T151solarishostdisk
rename to testing/fulltests/default/T151solarishostdisk_simple
index f9811f5..77a117f 100644
--- a/testing/tests/T151solarishostdisk
+++ b/testing/fulltests/default/T151solarishostdisk_simple
@@ -1,12 +1,12 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER initial load device on Solaris using HOST-RESOURCES
 
 if test `uname -s` != "SunOS" ; then
     # a bogus skip for !suns
-    SKIPIFNOT XXXYYYZZZ
+    SKIP  "not running solaris"
 fi
 
 SKIPIFNOT USING_HOST_HR_SYSTEM_MODULE
diff --git a/testing/tests/T152hostuptime b/testing/fulltests/default/T152hostuptime_simple
similarity index 91%
rename from testing/tests/T152hostuptime
rename to testing/fulltests/default/T152hostuptime_simple
index 1e90d3f..4d62b35 100644
--- a/testing/tests/T152hostuptime
+++ b/testing/fulltests/default/T152hostuptime_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER uptime using HOST-RESOURCES
 
diff --git a/testing/tests/T153solarisswap b/testing/fulltests/default/T153solarisswap_simple
similarity index 72%
rename from testing/tests/T153solarisswap
rename to testing/fulltests/default/T153solarisswap_simple
index 04e2e3c..055dd45 100644
--- a/testing/tests/T153solarisswap
+++ b/testing/fulltests/default/T153solarisswap_simple
@@ -1,15 +1,14 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER swap on Solaris using HOST-RESOURCES
 
 if test `uname -s` != "SunOS" ; then
-    # a bogus skip for !suns
-    SKIPIFNOT XXXYYYZZZ
+    SKIP "not running solaris"
 fi
 
-SKIPIFNOT USING_HOST_HR_STORAGE_MODULE
+ISDEFINED USING_HOST_HR_STORAGE_MODULE || ISDEFINED USING_HOST_HRH_STORAGE_MODULE || SKIP "Not using hrStorage"
 
 SKIPIF NETSNMP_DISABLE_SNMPV1
 
diff --git a/testing/tests/T160snmpnetstat b/testing/fulltests/default/T160snmpnetstat_simple
similarity index 68%
rename from testing/tests/T160snmpnetstat
rename to testing/fulltests/default/T160snmpnetstat_simple
index 04b7443..e20bbbd 100644
--- a/testing/tests/T160snmpnetstat
+++ b/testing/fulltests/default/T160snmpnetstat_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 # snmpnetstat test only works with UDP or TCP
 if [ "x$SNMP_TRANSPORT_SPEC" = "x" -o "x$SNMP_TRANSPORT_SPEC" = "xudp" ]; then
@@ -13,25 +13,25 @@
   SKIPIFNOT USING_MIBII_TCPTABLE_MODULE
 else
   HEADER "if snmpnetstat finds the running agent in udpTable/tcpTable"
-  SKIP
+  SKIP Not using TCP or UDP transport
 fi
 
 # on some systems the agent needs to be run as root to access udpTable/tcpTable
 # - else force skip
 case "x`uname -s`" in
-  xAIX)     [ "x`id -u`" != "x0" ] && SKIP;;
-  xHP-UX)   [ "x`id -u`" != "x0" ] && SKIP;;
-  xIRIX*)   [ "x`id -u`" != "x0" ] && SKIP;;
-  xNetBSD)  [ "x`id -u`" != "x0" ] && SKIP;;
-  xOpenBSD) [ "x`id -u`" != "x0" ] && SKIP;;
-  xOSF1)    [ "x`id -u`" != "x0" ] && SKIP;;
+  xAIX)     [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
+  xHP-UX)   [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
+  xIRIX*)   [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
+  xNetBSD)  [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
+  xOpenBSD) [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
+  xOSF1)    [ "x`id -u`" != "x0" ] && SKIP Not running as root;;
 esac
 
 SKIPIF NETSNMP_DISABLE_SNMPV2C
 
 # make sure snmpnetstat can be executed
 SNMPNETSTAT="${SNMP_UPDIR}/apps/snmpnetstat/snmpnetstat"
-[ -x "$SNMPNETSTAT" ] || SKIP
+[ -x "$SNMPNETSTAT" ] || SKIP snmpnetstat not compiled
 
 snmp_version=v2c
 . ./Sv2cconfig
diff --git a/testing/fulltests/default/T161snmpTargetAddr_simple b/testing/fulltests/default/T161snmpTargetAddr_simple
new file mode 100644
index 0000000..c7caa6a
--- /dev/null
+++ b/testing/fulltests/default/T161snmpTargetAddr_simple
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER snmpTargetAddrTable
+
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_TARGET_SNMPTARGETADDRENTRY_MODULE
+
+#
+# Begin test
+#
+
+. ./Sv3config
+
+STARTAGENT
+
+# Check that the table starts out empty
+CAPTURE "snmpgetnext -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1"
+
+CHECKANDDIE "^.1.3.6.1.6.3.12.1.2.1"
+
+# Create an entry with index '' (empty)
+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 i 5"
+
+CHECKORDIE "noCreation"
+
+# Create an entry with index '0123456789A123456789B123456789C123' (overlong)
+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.30.31.32.33.34.35.36.37.38.39.65.31.32.33.34.35.36.37.38.39.66.31.32.33.34.35.36.37.38.39.67.31.32.33 i 5"
+
+CHECKORDIE "noCreation"
+
+# 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"
+
+CHECK "^.1.3.6.1.6.3.12.1.2.1.9"
+
+# Check that the entry is the expected one
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.65 = INTEGER: 3"
+
+# Check that the default values are set as expected
+CAPTURE "snmpget -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.2.65 .1.3.6.1.6.3.12.1.2.1.3.65 .1.3.6.1.6.3.12.1.2.1.4.65 .1.3.6.1.6.3.12.1.2.1.5.65 .1.3.6.1.6.3.12.1.2.1.6.65 .1.3.6.1.6.3.12.1.2.1.7.65 .1.3.6.1.6.3.12.1.2.1.8.65 .1.3.6.1.6.3.12.1.2.1.9.65"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.2.65 = No Such Instance"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.3.65 = No Such Instance"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.4.65 = INTEGER: 1500"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.5.65 = INTEGER: 3"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: "
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.7.65 = No Such Instance"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.8.65 = INTEGER: 3"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.65 = INTEGER: 3"
+
+# Try to set timeout < 0
+CAPTURE "snmpset -On -Oe -Ir $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.4.65 i -1"
+
+CHECKORDIE "wrongValue"
+
+# Try to set timeout to 2147483647
+CAPTURE "snmpset -On -Oe -Ir $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.4.65 i 2147483647"
+
+CHECKORDIE "^.1.3.6.1.6.3.12.1.2.1.4.65 = INTEGER: 2147483647"
+
+# Fetch and verify that the timeout still is 2147483647
+CAPTURE "snmpget -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.4.65"
+
+CHECKORDIE "^.1.3.6.1.6.3.12.1.2.1.4.65 = INTEGER: 2147483647"
+
+# Try to set retry count < 0
+CAPTURE "snmpset -On -Oe -Ir $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.5.65 i -1"
+
+CHECKORDIE "wrongValue"
+
+# Try to set retry count > 255
+CAPTURE "snmpset -On -Oe -Ir $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.5.65 i 256"
+
+CHECKORDIE "wrongValue"
+
+# Try to set taglist to a single value
+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.6.65 s alfa"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: alfa"
+
+# Fetch and verify that the taglist have kept it's value
+CAPTURE "snmpget -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.6.65"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: alfa"
+
+# Try to set taglist to multiple values
+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.6.65 x 616c66612062657461"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: alfa beta"
+
+# Fetch and verify that the taglist have kept it's values
+CAPTURE "snmpget -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.6.65"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: alfa beta"
+
+# Try to set taglist to a value with an embedded nul character
+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.6.65 x 616c006661"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.6.65 = STRING: al.fa"
+
+# Try to set taglist to a value with a leading space
+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.6.65 x 20616c6661"
+
+CHECKORDIE "wrongValue"
+
+# Try to set taglist to a value with a trailing space
+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.6.65 x 616c666120"
+
+CHECKORDIE "wrongValue"
+
+# Try to set taglist to multiple values separated by more than on whitespace
+# character
+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.6.65 x 616c6661202062657461"
+
+CHECKORDIE "wrongValue"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/tests/T200snmpv2cwalkall b/testing/fulltests/default/T200snmpv2cwalkall_simple
similarity index 71%
rename from testing/tests/T200snmpv2cwalkall
rename to testing/fulltests/default/T200snmpv2cwalkall_simple
index 2388235..5d5f16f 100644
--- a/testing/tests/T200snmpv2cwalkall
+++ b/testing/fulltests/default/T200snmpv2cwalkall_simple
@@ -1,13 +1,13 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER "full snmpwalk (SNMPv2c) against agent (may take time)"
 
 if test `uname -s` = "HP-UX" ; then
     if test `id -u` != "0" ; then
         # The agent needs to be run as root - else force skip
-        SKIP
+        SKIP Agent must be run at root on HP-UX
     fi
 fi
 
@@ -15,7 +15,7 @@
 
 # make sure snmpwalk can be executed
 SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
 
 snmp_version=v2c
 . ./Sv2cconfig
@@ -31,11 +31,7 @@
 STARTAGENT
 
 CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c testcommunity -t $TIMEOUT -r $RETRY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1"
-if ISDEFINED USING_WINEXTDLL_MODULE; then
-  :
-else
-  CHECKANDDIE "= Wrong Type (should be "
-fi
+ISDEFINED USING_WINEXTDLL_MODULE || ISDEFINED USING_ETHERLIKE_MIB_DOT3STATSTABLE_MODULE || CHECKANDDIE "= Wrong Type (should be "
 CHECKORDIE "No more variables left in this MIB View"
 
 STOPAGENT
diff --git a/testing/fulltests/perl/NetSNMPTestTransport.pm b/testing/fulltests/perl/NetSNMPTestTransport.pm
new file mode 100644
index 0000000..38bcfee
--- /dev/null
+++ b/testing/fulltests/perl/NetSNMPTestTransport.pm
@@ -0,0 +1,54 @@
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/support";
+    } elsif (-d "fulltests/support") {
+	push @INC, "fulltests/support";
+    } elsif (-d "../support") {
+	push @INC, "../support";
+    }
+}
+
+package NetSNMPTestTransport;
+
+use NetSNMPTest;
+use Test;
+use SNMP;
+
+our @ISA = qw(NetSNMPTest);
+
+sub run_tests {
+    my ($self) = @_;
+
+    plan(tests => 2);
+
+    # set it up with a snmpv3 USM user
+    $self->config_agent("createuser testuser MD5 notareallpassword");
+    $self->config_agent("rwuser testuser");
+    $self->config_agent("syscontact itworked");
+
+    $self->DIE("failed to start the agent") if (!$self->start_agent());
+
+    # now create a session to test things with
+    my $session = new SNMP::Session(DestHost => $self->{'agentaddress'},
+				    Version => '3',
+				    SecName => 'testuser',
+				    SecLevel => 'authNoPriv',
+				    AuthProto => 'MD5',
+				    AuthPass => 'notareallpassword');
+
+    ok(ref($session), 'SNMP::Session', "created a session");
+
+    ######################################################################
+    # GET test
+    if (ref($session) eq 'SNMP::Session') {
+	$value = $session->get('sysContact.0');
+	ok($value, 'itworked');
+    }
+
+    ######################################################################
+    # cleanup
+    $self->stop_agent();
+}
+
+
+1;
diff --git a/testing/fulltests/perl/T001basic.t b/testing/fulltests/perl/T001basic.t
new file mode 100644
index 0000000..c7af105
--- /dev/null
+++ b/testing/fulltests/perl/T001basic.t
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+
+# HEADER Basic perl functionality to a UDP agent
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/support";
+    } elsif (-d "fulltests/support") {
+	push @INC, "fulltests/support";
+    } elsif (-d "../support") {
+	push @INC, "../support";
+    }
+}
+
+use NetSNMPTest;
+use Test;
+use SNMP;
+
+my $value;
+
+plan(tests => 10);
+
+ok(1,1,"started up");
+
+# use a basic UDP port
+my $destination = "udp:localhost:9897";
+
+my $test = new NetSNMPTest(agentaddress => $destination);
+
+# set it up with a snmpv3 USM user
+$test->config_agent("createuser testuser MD5 notareallpassword");
+$test->config_agent("rwuser testuser");
+$test->config_agent("syscontact itworked");
+
+$test->DIE("failed to start the agent") if (!$test->start_agent());
+
+# now create a session to test things with
+my $session = new SNMP::Session(DestHost => $destination,
+                                Version => '3',
+				SecName => 'testuser',
+				SecLevel => 'authNoPriv',
+				AuthProto => 'MD5',
+				AuthPass => 'notareallpassword');
+
+ok(ref($session), 'SNMP::Session', "created a session");
+
+
+######################################################################
+# GET test
+$value = $session->get('sysContact.0');
+
+ok($value, 'itworked');
+
+######################################################################
+# GETNEXT test
+$value = $session->getnext('sysContact');
+
+ok($value, 'itworked');
+
+######################################################################
+# SET test
+$value = $session->get('sysLocation.0');
+
+ok($value ne 'yep', 1, 'Ensuring the sysLocation setting is not "yep"');
+
+my $varbind = new SNMP::Varbind(['sysLocation', '0', 'yep', 'OCTETSTR']);
+
+
+$value = $session->set($varbind);
+
+ok(($value == 0), 1, 'return value from set was a success');
+
+my $value = $session->get('sysLocation.0');
+
+ok($value, 'yep');
+
+######################################################################
+# GETBULK test
+$varbind = new SNMP::Varbind(['sysContact']);
+my @values = $session->getbulk(0, 3, $varbind);
+
+ok($#values == 2);
+ok($values[0] eq 'itworked');
+ok($values[2] eq 'yep');
+
+######################################################################
+# gettable() test
+
+
+
+######################################################################
+# cleanup
+$test->stop_agent();
diff --git a/testing/fulltests/perl/T101udp.t b/testing/fulltests/perl/T101udp.t
new file mode 100644
index 0000000..5f015d2
--- /dev/null
+++ b/testing/fulltests/perl/T101udp.t
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+
+# HEADER Perl UDP IPv4 Test
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/perl";
+    } elsif (-d "fulltests/perl") {
+	push @INC, "fulltests/perl";
+    } elsif (-d "../perl") {
+	push @INC, "../perl";
+    }
+}
+use NetSNMPTestTransport;
+
+my $test = new NetSNMPTestTransport(agentaddress => "udp:localhost:9875");
+$test->require_feature("NETSNMP_TRANSPORT_UDP_DOMAIN");
+$test->run_tests();
diff --git a/testing/fulltests/perl/T102tcp.t b/testing/fulltests/perl/T102tcp.t
new file mode 100644
index 0000000..2fa07ac
--- /dev/null
+++ b/testing/fulltests/perl/T102tcp.t
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+
+# HEADER Perl TCP IPv4 Test
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/perl";
+    } elsif (-d "fulltests/perl") {
+	push @INC, "fulltests/perl";
+    } elsif (-d "../perl") {
+	push @INC, "../perl";
+    }
+}
+use NetSNMPTestTransport;
+
+my $test = new NetSNMPTestTransport(agentaddress => "tcp:localhost:9875");
+$test->require_feature("NETSNMP_TRANSPORT_TCP_DOMAIN");
+$test->run_tests();
diff --git a/testing/fulltests/perl/T103udp6.t b/testing/fulltests/perl/T103udp6.t
new file mode 100644
index 0000000..3ecb332
--- /dev/null
+++ b/testing/fulltests/perl/T103udp6.t
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+
+# HEADER Perl UDP IPv6 Test
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/perl";
+    } elsif (-d "fulltests/perl") {
+	push @INC, "fulltests/perl";
+    } elsif (-d "../perl") {
+	push @INC, "../perl";
+    }
+}
+use NetSNMPTestTransport;
+
+my $test = new NetSNMPTestTransport(agentaddress => "udp6:[::1]:9875");
+$test->require_feature("NETSNMP_TRANSPORT_UDPIPV6_DOMAIN");
+$test->run_tests();
diff --git a/testing/fulltests/perl/T104tcp6.t b/testing/fulltests/perl/T104tcp6.t
new file mode 100644
index 0000000..58222d0
--- /dev/null
+++ b/testing/fulltests/perl/T104tcp6.t
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+
+# HEADER Perl TCP IPv6 Test
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/perl";
+    } elsif (-d "fulltests/perl") {
+	push @INC, "fulltests/perl";
+    } elsif (-d "../perl") {
+	push @INC, "../perl";
+    }
+}
+use NetSNMPTestTransport;
+
+my $test = new NetSNMPTestTransport(agentaddress => "tcp6:[::1]:9875");
+$test->require_feature("NETSNMP_TRANSPORT_TCPIPV6_DOMAIN");
+$test->run_tests();
diff --git a/testing/fulltests/perl/T105unix.t b/testing/fulltests/perl/T105unix.t
new file mode 100644
index 0000000..3c01719
--- /dev/null
+++ b/testing/fulltests/perl/T105unix.t
@@ -0,0 +1,19 @@
+#!/usr/bin/perl
+
+# HEADER Perl Unix Domain Socket Test
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/perl";
+    } elsif (-d "fulltests/perl") {
+	push @INC, "fulltests/perl";
+    } elsif (-d "../perl") {
+	push @INC, "../perl";
+    }
+}
+use NetSNMPTestTransport;
+
+my $test = new NetSNMPTestTransport(agentaddress => "bogus");
+$test->require_feature("NETSNMP_TRANSPORT_UNIX_DOMAIN");
+$test->{'agentaddress'} = "unix:" . $test->{'dir'} . "/unixtestsocket";
+$test->run_tests();
diff --git a/testing/scapitest.c b/testing/fulltests/snmpv3/T010scapitest_capp.c
similarity index 69%
rename from testing/scapitest.c
rename to testing/fulltests/snmpv3/T010scapitest_capp.c
index 82e9098..ee794a7 100644
--- a/testing/scapitest.c
+++ b/testing/fulltests/snmpv3/T010scapitest_capp.c
@@ -1,6 +1,8 @@
 /*
  * scapitest.c
  *
+ * HEADER Testing SCAPI API
+ *
  * Expected SUCCESSes:  2 + 10 + 1 for all tests.
  *
  * Returns:
@@ -21,9 +23,6 @@
  * Test of sc_encrypt and sc_decrypt.                           SUCCESSes: 1.
  */
 
-static char    *rcsid = "$Id$";    /* */
-
-
 #include <net-snmp/net-snmp-config.h>
 
 #include <stdio.h>
@@ -31,13 +30,15 @@
 #include <netinet/in.h>
 #endif
 
-#include "asn1.h"
-#include "snmp_api.h"
-#include "keytools.h"
-#include "tools.h"
-#include "scapi.h"
-#include "transform_oids.h"
-#include "callback.h"
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/keytools.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/scapi.h>
+#include <net-snmp/library/transform_oids.h>
+#include <net-snmp/library/callback.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/library/snmpusm.h>
 
 #include <stdlib.h>
 
@@ -52,6 +53,8 @@
  * Globals, &c...
  */
 char           *local_progname;
+int             testcount=0;
+int             failcount=0;
 
 #define USAGE	"Usage: %s [-h][-acHr]"
 #define OPTIONLIST	"achHr"
@@ -65,24 +68,26 @@
 #define LOCAL_MAXBUF	(1024 * 8)
 #define NL		"\n"
 
-#define OUTPUT(o)	fprintf(stdout, "\n\n%s\n\n", o);
+#define OUTPUT(o)	printf("# %s\n", o);
 
 #define SUCCESS(s)					\
 {							\
-	if (!failcount)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
+    printf("# Done with %s\n", s);			\
 }
 
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
+#define FAILED(e, f)                                                    \
+{                                                                       \
+    if (e != SNMPERR_SUCCESS) {                                         \
+                printf("not ok: %d - %s\n", ++testcount, f);            \
+		failcount += 1;                                         \
+	} else {                                                        \
+                printf("ok: %d - %s\n", ++testcount, f);                \
+        }                                                               \
+    fflush(stdout); \
 }
 
-
 #define BIGSTRING							\
+    (const u_char *)                                                    \
     "   A port may be a pleasant retreat for any mind grown weary of"	\
     "the struggle for existence.  The vast expanse of sky, the"		\
     "mobile architecture of the clouds, the chameleon coloration"	\
@@ -100,8 +105,12 @@
     "	-- Baudelaire"							\
     "	   From _The_Poems_in_Prose_, \"The Port\" (XLI)."
 
-#define BIGSECRET	"Shhhh... Don't tell *anyone* about this.  Not a soul."
-#define BKWDSECRET	".luos a toN  .siht tuoba *enoyna* llet t'noD ...hhhhS"
+#define BIGSECRET                                               \
+    (const u_char *)                                            \
+    "Shhhh... Don't tell *anyone* about this.  Not a soul."
+#define BKWDSECRET                                              \
+    (const u_char *)                                            \
+    ".luos a toN  .siht tuoba *enoyna* llet t'noD ...hhhhS"
 
 #define MLCOUNT_MAX	6       /* MAC Length Count Maximum. */
 
@@ -110,7 +119,7 @@
 /*
  * Prototypes.
  */
-void            usage(FILE * ofp);
+void            usage(void);
 
 int             test_docrypt(void);
 int             test_dokeyedhash(void);
@@ -122,7 +131,7 @@
 int
 main(int argc, char **argv)
 {
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
+    int             rval = SNMPERR_SUCCESS;
     char            ch;
 
     local_progname = argv[0];
@@ -147,7 +156,7 @@
         case 'h':
             rval = 0;
         default:
-            usage(stdout);
+            usage();
             exit(rval);
         }
 
@@ -157,12 +166,11 @@
     }                           /* endwhile getopt */
 
     if ((argc > 1)) {
-        usage(stdout);
+        usage();
         exit(1000);
 
     } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
+        doalltests = 1;
     }
 
 
@@ -170,29 +178,21 @@
      * Test stuff.
      */
     rval = sc_init();
-    FAILED(rval, "sc_init().");
+    FAILED(rval, "sc_init() return code");
 
 
     if (docrypt || doalltests) {
-        failcount += test_docrypt();
+        test_docrypt();
     }
     if (dokeyedhash || doalltests) {
-        failcount += test_dokeyedhash();
+        test_dokeyedhash();
     }
     if (dorandom || doalltests) {
-        failcount += test_dorandom();
+        test_dorandom();
     }
 
-
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown().");
-
-    return failcount;
-
+    printf("1..%d\n", testcount);
+    return 0;
 }                               /* end main() */
 
 
@@ -200,10 +200,9 @@
 
 
 void
-usage(FILE * ofp)
+usage(void)
 {
-    fprintf(ofp,
-            USAGE
+    printf( USAGE
             "" NL
             "	-a		All tests." NL
             "	-c		Test of sc_encrypt()/sc_decrypt()."
@@ -220,32 +219,6 @@
 
 
 
-#ifdef EXAMPLE
-/*******************************************************************-o-******
- * test_dosomething
- *
- * Test template.
- *
- * Returns:
- *	Number of failures.
- */
-int
-test_dosomething(void)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-
-    EM0(1, "UNIMPLEMENTED");    /* EM(1); /* */
-
-  test_dosomething_quit:
-    return failcount;
-
-}                               /* end test_dosomething() */
-#endif                          /* EXAMPLE */
-
-
-
-
-
 /*******************************************************************-o-******
  * test_dorandom
  *
@@ -260,15 +233,15 @@
 test_dorandom(void)
 {
     int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
         origrequest = (1024 * 2),
-        origrequest_short = 19, nbytes = origrequest, shortcount = 7, i;
-    char            buf[LOCAL_MAXBUF];
+        origrequest_short = 19, shortcount = 7, i;
+    size_t          nbytes = origrequest;
+    u_char          buf[LOCAL_MAXBUF];
 
     OUTPUT("Random test -- large request:");
 
     rval = sc_random(buf, &nbytes);
-    FAILED(rval, "sc_random().");
+    FAILED(rval, "sc_random() return code");
 
     if (nbytes != origrequest) {
         FAILED(SNMPERR_GENERR,
@@ -286,7 +259,7 @@
     for (i = 0; i < shortcount; i++) {
         nbytes = origrequest_short;
         rval = sc_random(buf, &nbytes);
-        FAILED(rval, "sc_random().");
+        FAILED(rval, "sc_random() return code");
 
         if (nbytes != origrequest_short) {
             FAILED(SNMPERR_GENERR,
@@ -323,14 +296,18 @@
 int
 test_dokeyedhash(void)
 {
-    int             rval = SNMPERR_SUCCESS, failcount = 0, bigstring_len = strlen(BIGSTRING), secret_len = strlen(BIGSECRET), properlength, mlcount = 0,        /* MAC Length count.   */
-                    hblen;      /* Hash Buffer length. */
+    int rval = SNMPERR_SUCCESS,
+        bigstring_len = strlen((const char *) BIGSTRING),
+        secret_len = strlen((const char *) BIGSECRET),
+        properlength,
+        mlcount = 0;        /* MAC Length count.   */
+    size_t          hblen;      /* Hash Buffer length. */
 
     u_int           hashbuf_len[MLCOUNT_MAX] = {
         LOCAL_MAXBUF,
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1),
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5),
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMAC96),
+        USM_MD5_AND_SHA_AUTH_LEN,
+        USM_MD5_AND_SHA_AUTH_LEN,
+        USM_MD5_AND_SHA_AUTH_LEN,
         7,
         0,
     };
@@ -340,7 +317,7 @@
 
   test_dokeyedhash_again:
 
-    OUTPUT("Keyed hash test using MD5 --");
+    OUTPUT("Starting Keyed hash test using MD5 --");
 
     memset(hashbuf, 0, LOCAL_MAXBUF);
     hblen = hashbuf_len[mlcount];
@@ -349,9 +326,10 @@
     rval =
         sc_generate_keyed_hash(usmHMACMD5AuthProtocol,
                                USM_LENGTH_OID_TRANSFORM, BIGSECRET,
-                               secret_len, BIGSTRING, bigstring_len,
+                               secret_len, BIGSTRING,
+                               bigstring_len,
                                hashbuf, &hblen);
-    FAILED(rval, "sc_generate_keyed_hash().");
+    FAILED(rval, "sc_generate_keyed_hash() return code");
 
     if (hashbuf_len[mlcount] > properlength) {
         if (hblen != properlength) {
@@ -367,18 +345,16 @@
                             USM_LENGTH_OID_TRANSFORM, BIGSECRET,
                             secret_len, BIGSTRING, bigstring_len, hashbuf,
                             hblen);
-    FAILED(rval, "sc_check_keyed_hash().");
+    FAILED(rval, "sc_check_keyed_hash() return code");
 
     binary_to_hex(hashbuf, hblen, &s);
-    fprintf(stdout, "hash buffer (len=%d, request=%d):   %s\n",
+    printf("# hash buffer (len=%" NETSNMP_PRIz "u, request=%d):   %s\n",
             hblen, hashbuf_len[mlcount], s);
     SNMP_FREE(s);
 
-    SUCCESS("Keyed hash test using MD5.");
 
 
-
-    OUTPUT("Keyed hash test using SHA1 --");
+    OUTPUT("Starting Keyed hash test using SHA1 --");
 
     memset(hashbuf, 0, LOCAL_MAXBUF);
     hblen = hashbuf_len[mlcount];
@@ -389,7 +365,7 @@
                                USM_LENGTH_OID_TRANSFORM, BIGSECRET,
                                secret_len, BIGSTRING, bigstring_len,
                                hashbuf, &hblen);
-    FAILED(rval, "sc_generate_keyed_hash().");
+    FAILED(rval, "sc_generate_keyed_hash() return code");
 
     if (hashbuf_len[mlcount] > properlength) {
         if (hblen != properlength) {
@@ -406,17 +382,15 @@
                             USM_LENGTH_OID_TRANSFORM, BIGSECRET,
                             secret_len, BIGSTRING, bigstring_len, hashbuf,
                             hblen);
-    FAILED(rval, "sc_check_keyed_hash().");
+    FAILED(rval, "sc_check_keyed_hash() return code");
 
     binary_to_hex(hashbuf, hblen, &s);
-    fprintf(stdout, "hash buffer (len=%d, request=%d):   %s\n",
+    printf("# hash buffer (len=%" NETSNMP_PRIz "u, request=%d):   %s\n",
             hblen, hashbuf_len[mlcount], s);
     SNMP_FREE(s);
 
     SUCCESS("Keyed hash test using SHA1.");
 
-
-
     /*
      * Run the basic hash tests but vary the size MAC requests.
      */
@@ -443,17 +417,17 @@
 test_docrypt(void)
 {
     int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        bigstring_len = strlen(BIGSTRING),
+        bigstring_len = strlen((const char *) BIGSTRING),
         secret_len = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES),
         iv_len = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES_IV);
 
-    u_int           buf_len = LOCAL_MAXBUF, cryptbuf_len = LOCAL_MAXBUF;
+    size_t          buf_len = LOCAL_MAXBUF;
+    size_t          cryptbuf_len = LOCAL_MAXBUF;
 
-    char            buf[LOCAL_MAXBUF],
+    u_char            buf[LOCAL_MAXBUF],
         cryptbuf[LOCAL_MAXBUF], secret[LOCAL_MAXBUF], iv[LOCAL_MAXBUF];
 
-    OUTPUT("Test 1DES-CBC --");
+    OUTPUT("Starting Test 1DES-CBC --");
 
 
     memset(buf, 0, LOCAL_MAXBUF);
@@ -461,29 +435,25 @@
     memcpy(secret, BIGSECRET, secret_len);
     memcpy(iv, BKWDSECRET, iv_len);
 
-
     rval = sc_encrypt(usmDESPrivProtocol, USM_LENGTH_OID_TRANSFORM,
                       secret, secret_len,
                       iv, iv_len,
                       BIGSTRING, bigstring_len, cryptbuf, &cryptbuf_len);
-    FAILED(rval, "sc_encrypt().");
+    FAILED(rval, "sc_encrypt() return code.");
 
     rval = sc_decrypt(usmDESPrivProtocol, USM_LENGTH_OID_TRANSFORM,
                       secret, secret_len,
                       iv, iv_len, cryptbuf, cryptbuf_len, buf, &buf_len);
-    FAILED(rval, "sc_decrypt().");
+    FAILED(rval, "sc_decrypt() return code.");
 
-    if (buf_len != bigstring_len) {
-        FAILED(SNMPERR_GENERR, "Decrypted buffer is the wrong length.");
-    }
-    if (memcmp(buf, BIGSTRING, bigstring_len)) {
-        FAILED(SNMPERR_GENERR,
-               "Decrypted buffer is not equal to original plaintext.");
-    }
+    /* ignore the pad */
+    buf_len -= buf[buf_len-1];
 
+    FAILED((buf_len != bigstring_len), "Decrypted buffer is the right length.");
+    printf("# original length: %d\n", bigstring_len);
+    printf("# output   length: %" NETSNMP_PRIz "u\n", buf_len);
 
-    SUCCESS("Test 1DES-CBC --");
-
+    FAILED((memcmp(buf, BIGSTRING, bigstring_len) != 0),
+           "Decrypted buffer is the same as the original plaintext.");
     return failcount;
-
 }                               /* end test_docrypt() */
diff --git a/testing/fulltests/snmpv3/T020hashtests_capp.c b/testing/fulltests/snmpv3/T020hashtests_capp.c
new file mode 100644
index 0000000..9cb5b47
--- /dev/null
+++ b/testing/fulltests/snmpv3/T020hashtests_capp.c
@@ -0,0 +1,117 @@
+/* HEADER testing SCAPI hashing functions */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <stdio.h>
+
+void print_hash(const char *label, u_char *MAC, size_t MAC_LEN);
+
+
+int
+main(int argc, char **argv) {
+    u_char buf[] = "wes hardaker";
+    u_char MAC[20];
+    size_t MAC_LEN = 20;
+    u_char sha1key[20] = "55555555555555555555";
+    u_char md5key[16] = "5555555555555555";
+
+    u_char sha1proper[20] = { 0x4a, 0x55, 0x2f, 0x65, 0x79, 0x3a, 0x49, 0x35,
+                              0x37, 0x91, 0x51, 0x1d,
+                              0xa0, 0x8c, 0x7a, 0x45, 0x50, 0x34, 0xd4, 0x23};
+    u_char md5proper[16] = { 0xe5, 0x92, 0xfa, 0x4b, 0x06, 0xe6, 0x27, 0xd7,
+                             0xc8, 0x18, 0xfa, 0x7a,
+                             0xd0, 0x82, 0xeb, 0x66};
+    int result;
+    
+    printf("1..2\n");
+
+    memset(MAC, 0, MAC_LEN);
+    sc_hash(usmHMACSHA1AuthProtocol, OID_LENGTH(usmHMACSHA1AuthProtocol),
+            buf, sizeof(buf)-1,
+            MAC, &MAC_LEN);
+
+    print_hash("sha1 hash", MAC, MAC_LEN);
+
+    memset(MAC, 0, MAC_LEN);
+    sc_hash(usmHMACMD5AuthProtocol, OID_LENGTH(usmHMACMD5AuthProtocol),
+            buf, sizeof(buf)-1,
+            MAC, &MAC_LEN);
+
+    print_hash("md5 hash", MAC, MAC_LEN);
+
+    MAC_LEN = 20;
+    sc_generate_keyed_hash(usmHMACSHA1AuthProtocol,
+                           OID_LENGTH(usmHMACSHA1AuthProtocol),
+                           sha1key, sizeof(sha1key),
+                           buf, sizeof(buf)-1,
+                           MAC, &MAC_LEN);
+
+    print_hash("sha1 keyed", MAC, MAC_LEN);
+
+    result =
+        sc_check_keyed_hash(usmHMACSHA1AuthProtocol,
+                            OID_LENGTH(usmHMACSHA1AuthProtocol),
+                            sha1key, sizeof(sha1key),
+                            buf, sizeof(buf)-1,
+                            sha1proper, 12);
+    if (0 == result) {
+        printf("ok: 1 - sha1 keyed compare was equal\n");
+    } else {
+        printf("not ok: 1 - sha1 keyed compare was not equal\n");
+    }
+    
+
+    MAC_LEN = 16;
+    sc_generate_keyed_hash(usmHMACMD5AuthProtocol,
+                           OID_LENGTH(usmHMACMD5AuthProtocol),
+                           md5key, sizeof(md5key),
+                           buf, sizeof(buf)-1,
+                           MAC, &MAC_LEN);
+
+    print_hash("md5 keyed", MAC, MAC_LEN);
+
+
+    MAC_LEN = 16;
+    result =
+        sc_check_keyed_hash(usmHMACMD5AuthProtocol,
+                            OID_LENGTH(usmHMACMD5AuthProtocol),
+                            md5key, sizeof(md5key),
+                            buf, sizeof(buf)-1,
+                            md5proper, 12);
+
+    if (0 == result) {
+        printf("ok: 2 - md5 keyed compare was equal\n");
+    } else {
+        printf("not ok: 2 - md5 keyed compare was not equal\n");
+    }
+
+    MAC_LEN = 20;
+    memset(MAC, 0, MAC_LEN);
+    generate_Ku(usmHMACSHA1AuthProtocol,
+                OID_LENGTH(usmHMACSHA1AuthProtocol),
+                buf, sizeof(buf)-1,
+                MAC, &MAC_LEN);
+    print_hash("sha1 Ku", MAC, MAC_LEN);
+
+    MAC_LEN = 16;
+    memset(MAC, 0, MAC_LEN);
+    generate_Ku(usmHMACMD5AuthProtocol,
+                OID_LENGTH(usmHMACMD5AuthProtocol),
+                buf, sizeof(buf)-1,
+                MAC, &MAC_LEN);
+    print_hash("md5 Ku", MAC, MAC_LEN);
+
+    /* XXX: todo: compare results and ensure they're always the same
+       values; the algorithms aren't time-dependent. */
+    return (0);
+}
+
+void
+print_hash(const char *label, u_char *MAC, size_t MAC_LEN) {
+    int i;
+    printf("# %-10s %" NETSNMP_PRIz "u:\n", label, MAC_LEN);
+    for(i=0; i < MAC_LEN; i++) {
+        printf("# %02x ", MAC[i]);
+    }
+    printf("\n");
+}    
diff --git a/testing/keymanagetest.c b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
similarity index 70%
rename from testing/keymanagetest.c
rename to testing/fulltests/snmpv3/T040keymanagetest_capp.c
index d9a1aa8..3e0fd58 100644
--- a/testing/keymanagetest.c
+++ b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
@@ -1,6 +1,8 @@
 /*
  * keymanagetest.c
  *
+ * HEADER Testing key management API functionality
+ *
  * Expected SUCCESSes:  2 + 2 + 3 for all tests.
  *
  * Returns:
@@ -18,29 +20,34 @@
  * Test of {encode,decode}_keychange().         SUCCESSes: 3
  */
 
-static char    *rcsid = "$Id$";        /* */
-
 #include <net-snmp/net-snmp-config.h>
 
 #include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#include "asn1.h"
-#include "snmp_api.h"
-#include "keytools.h"
-#include "tools.h"
-#include "scapi.h"
-#include "transform_oids.h"
-#include "callback.h"
+#include <unistd.h>
+#include <ctype.h>
+
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/keytools.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/scapi.h>
+#include <net-snmp/library/transform_oids.h>
+#include <net-snmp/library/callback.h>
 
 #include <stdlib.h>
 
 extern char    *optarg;
 extern int      optind, optopt, opterr;
 
-
+int testcount = 0;
 
 /*
  * Globals, &c...
@@ -58,24 +65,27 @@
 #define LOCAL_MAXBUF	(1024 * 8)
 #define NL		"\n"
 
-#define OUTPUTALWAYS(o)	fprintf(stdout, "\n\n%s\n\n", o);
+#define OUTPUTALWAYS(o)	fprintf(stdout, "# %s\n", o);
 #define OUTPUT(o)	if (!bequiet) { OUTPUTALWAYS(o); }
 
 #define SUCCESS(s)					\
 {							\
-	if (!failcount && !bequiet)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
+    fprintf(stdout, "# Done with %s\n", s);             \
 }
 
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS && !bequiet) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
+#define FAILED(e, f)                                                    \
+{                                                                       \
+    if ((e) != SNMPERR_SUCCESS) {                                       \
+                fprintf(stdout, "not ok: %d - %s\n", ++testcount, f);	\
+		failcount += 1;                                         \
+	} else {                                                        \
+                fprintf(stdout, "ok: %d - %s\n", ++testcount, f);	\
+        }                                                               \
+    fflush(stdout); \
 }
 
-
+#define DETAILINT(s, i) \
+    fprintf(stdout, "# %s: %d\n", s, i);
 
 /*
  * Test specific globals.
@@ -86,10 +96,10 @@
 #define OLDKEY_DEFAULT		"This is a very old key."
 #define NEWKEY_DEFAULT		"This key, on the other hand, is very new."
 
-char           *engineID = NULL;
+u_char         *engineID = NULL;
 char           *passphrase = NULL;
-char           *oldkey = NULL;
-char           *newkey = NULL;
+const u_char   *oldkey = NULL;
+const u_char   *newkey = NULL;
 int             bequiet = 0;
 
 
@@ -123,7 +133,7 @@
             doalltests = 1;
             break;
         case 'E':
-            engineID = optarg;
+            engineID = (u_char *) optarg;
             break;
         case 'k':
             dokeychange = 1;
@@ -132,10 +142,10 @@
             dogenkul = 1;
             break;
         case 'N':
-            newkey = optarg;
+            newkey = (u_char *) optarg;
             break;
         case 'O':
-            oldkey = optarg;
+            oldkey = (u_char *) optarg;
             break;
         case 'P':
             passphrase = optarg;
@@ -169,8 +179,7 @@
         exit(1000);
 
     } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
+        doalltests = 1;
     }
 
 
@@ -190,14 +199,7 @@
         failcount += test_keychange();
     }
 
-
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown().");
-
+    fprintf(stdout, "1..%d\n", testcount);
     return failcount;
 
 }                               /* end main() */
@@ -251,7 +253,7 @@
 {
     int             rval = SNMPERR_SUCCESS, failcount = 0;
 
-    EM0(1, "UNIMPLEMENTED");    /* EM(1); /* */
+    EM0(1, "UNIMPLEMENTED");    /* EM(1); */
 
   test_dosomething_quit:
     return failcount;
@@ -277,8 +279,10 @@
 {
     int             rval = SNMPERR_SUCCESS,
         failcount = 0,
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5), kulen;
-    char           *hashname = "usmHMACMD5AuthProtocol.", *s;
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
+    size_t          kulen;
+    const char     *hashname = "usmHMACMD5AuthProtocol.";
+    char           *s;
     u_char          Ku[LOCAL_MAXBUF];
     oid            *hashtype = usmHMACMD5AuthProtocol;
 
@@ -288,11 +292,11 @@
      * Set passphrase.
      */
     if (!passphrase) {
-        passphrase = PASSPHRASE_DEFAULT;
+        passphrase = strdup(PASSPHRASE_DEFAULT);
     }
     if (!bequiet)
-        fprintf(stdout, "Passphrase%s:\n\t%s\n\n",
-                (passphrase == PASSPHRASE_DEFAULT) ? " (default)" : "",
+        fprintf(stdout, "Passphrase%s: %s\n",
+                (strcmp(passphrase, PASSPHRASE_DEFAULT) == 0) ? " (default)" : "",
                 passphrase);
 
 
@@ -301,21 +305,19 @@
     kulen = LOCAL_MAXBUF;
 
     rval = generate_Ku(hashtype, USM_LENGTH_OID_TRANSFORM,
-                       passphrase, strlen(passphrase), Ku, &kulen);
+                       (const u_char *) passphrase, strlen(passphrase),
+                       Ku, &kulen);
     FAILED(rval, "generate_Ku().");
 
-    if (kulen != properlength) {
-        FAILED(SNMPERR_GENERR, "Ku length is wrong for this hashtype.");
-    }
+    FAILED((kulen != properlength),
+           "Ku length is the right length for this hashtype.");
 
     binary_to_hex(Ku, kulen, &s);
     if (!bequiet)
-        fprintf(stdout, "Ku (len=%d):  %s\n", kulen, s);
+        fprintf(stdout, "# Ku (len=%" NETSNMP_PRIz "u):  %s\n", kulen, s);
     free_zero(s, kulen);
 
-    SUCCESS(hashname);
-    if (!bequiet)
-        fprintf(stdout, "\n");
+    OUTPUT(hashname);
 
     if (hashtype == usmHMACMD5AuthProtocol) {
         hashtype = usmHMACSHA1AuthProtocol;
@@ -352,11 +354,12 @@
 {
     int             rval = SNMPERR_SUCCESS,
         failcount = 0,
-        properlength, kulen, kul_len, engineID_len, isdefault = FALSE;
+        properlength, engineID_len, isdefault = FALSE;
 
-    char           *s = NULL,
-        *testname = "Using HMACMD5 to create master key.",
-        *hashname_Ku = "usmHMACMD5AuthProtocol", *hashname_kul;
+    size_t          kulen, kul_len;
+    char           *s = NULL;
+    const char *testname = "Using HMACMD5 to create master key.";
+    const char *hashname_Ku = "usmHMACMD5AuthProtocol";
 
     u_char          Ku[LOCAL_MAXBUF], kul[LOCAL_MAXBUF];
 
@@ -364,7 +367,6 @@
 
     OUTPUT("Test of generate_kul --");
 
-
     /*
      * Set passphrase and engineID.
      *
@@ -372,34 +374,33 @@
      * hex and convert it to binary data.
      */
     if (!passphrase) {
-        passphrase = PASSPHRASE_DEFAULT;
+        passphrase = strdup(PASSPHRASE_DEFAULT);
     }
     if (!bequiet)
-        fprintf(stdout, "Passphrase%s:\n\t%s\n\n",
-                (passphrase == PASSPHRASE_DEFAULT) ? " (default)" : "",
+        fprintf(stdout, "# Passphrase%s: %s\n",
+                (strcmp(passphrase, PASSPHRASE_DEFAULT) == 0) ? " (default)" : "",
                 passphrase);
 
     if (!engineID) {
-        engineID = ENGINEID_DEFAULT;
+        engineID = (u_char *) strdup(ENGINEID_DEFAULT);
         isdefault = TRUE;
     }
 
-    engineID_len = strlen(engineID);
+    engineID_len = strlen((char *) engineID);
 
     if (tolower(*(engineID + 1)) == 'x') {
-        engineID_len = hex_to_binary2(engineID + 2, engineID_len - 2, &s);
-        if (engineID_len < 0) {
-            FAILED((rval = SNMPERR_GENERR),
-                   "Could not resolve hex engineID.");
-        }
-        engineID = s;
+        engineID_len =
+            hex_to_binary2(engineID + 2, engineID_len - 2, &s);
+        FAILED((engineID_len < 0),
+               "Could not resolve hex engineID.");
+        engineID = (u_char *) s;
         binary_to_hex(engineID, engineID_len, &s);
     }
 
     if (!bequiet)
-        fprintf(stdout, "engineID%s (len=%d):  %s\n\n",
+        fprintf(stdout, "# engineID%s (len=%d):  %s\n",
                 (isdefault) ? " (default)" : "",
-                engineID_len, (s) ? s : engineID);
+                engineID_len, ((s != 0) ? ((u_char *) s) : engineID));
     if (s) {
         SNMP_FREE(s);
     }
@@ -413,19 +414,18 @@
   test_genkul_again_master:
     memset(Ku, 0, LOCAL_MAXBUF);
     kulen = LOCAL_MAXBUF;
-    hashname_kul = "usmHMACMD5AuthProtocol";
     hashtype_kul = usmHMACMD5AuthProtocol;
     properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
 
 
     rval = generate_Ku(hashtype_Ku, USM_LENGTH_OID_TRANSFORM,
-                       passphrase, strlen(passphrase), Ku, &kulen);
+                       (u_char *) passphrase, strlen(passphrase), Ku, &kulen);
     FAILED(rval, "generate_Ku().");
 
     binary_to_hex(Ku, kulen, &s);
     if (!bequiet)
         fprintf(stdout,
-                "\n\nMaster Ku using \"%s\":\n\t%s\n\n", hashname_Ku, s);
+                "# Master Ku using \"%s\": \t%s\n", hashname_Ku, s);
     free_zero(s, kulen);
 
 
@@ -438,22 +438,17 @@
 
     if ((hashtype_Ku == usmHMACMD5AuthProtocol)
         && (hashtype_kul == usmHMACSHA1AuthProtocol)) {
-        if (rval == SNMPERR_SUCCESS) {
-            FAILED(SNMPERR_GENERR,
-                   "generate_kul SHOULD fail when Ku length is "
-                   "less than hash transform length.");
-        }
-
+        FAILED((rval == SNMPERR_SUCCESS),
+               "generate_kul SHOULD fail when Ku length is "
+               "less than hash transform length.");
     } else {
         FAILED(rval, "generate_kul().");
 
-        if (kul_len != properlength) {
-            FAILED(SNMPERR_GENERR,
-                   "kul length is wrong for the given hashtype.");
-        }
+        FAILED(kul_len != properlength,
+               "checking if kul length is right for the given hashtype.");
 
         binary_to_hex(kul, kul_len, &s);
-        fprintf(stdout, "kul (%s) (len=%d):  %s\n",
+        fprintf(stdout, "# kul (%s) (len=%" NETSNMP_PRIz "u):  %s\n",
                 ((hashtype_Ku == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"),
                 kul_len, s);
         free_zero(s, kul_len);
@@ -466,7 +461,6 @@
      */
     if (hashtype_kul == usmHMACMD5AuthProtocol) {
         hashtype_kul = usmHMACSHA1AuthProtocol;
-        hashname_kul = "usmHMACSHA1AuthProtocol";
         properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
         goto test_genkul_again_local;
     }
@@ -510,10 +504,11 @@
         properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5),
         oldkey_len,
         newkey_len,
-        keychange_len,
-        temp_len, isdefault_new = FALSE, isdefault_old = FALSE;
+        isdefault_new = FALSE, isdefault_old = FALSE;
+    size_t          keychange_len, temp_len;
 
-    char           *hashname = "usmHMACMD5AuthProtocol.", *s;
+    const char     *hashname = "usmHMACMD5AuthProtocol.";
+    char           *s;
 
     u_char          oldkey_buf[LOCAL_MAXBUF],
         newkey_buf[LOCAL_MAXBUF],
@@ -528,34 +523,32 @@
      * Set newkey and oldkey.
      */
     if (!newkey) {              /* newkey */
-        newkey = NEWKEY_DEFAULT;
+        newkey = (const u_char *) NEWKEY_DEFAULT;
         isdefault_new = TRUE;
     }
-    newkey_len = strlen(newkey);
+    newkey_len = strlen((const char *) newkey);
 
     if (tolower(*(newkey + 1)) == 'x') {
-        newkey_len = hex_to_binary2(newkey + 2, newkey_len - 2, &s);
-        if (newkey_len < 0) {
-            FAILED((rval = SNMPERR_GENERR),
-                   "Could not resolve hex newkey.");
-        }
-        newkey = s;
-        binary_to_hex(newkey, newkey_len, &s);
+        newkey_len = hex_to_binary2((const u_char *) newkey + 2,
+                                    newkey_len - 2, &s);
+        FAILED(newkey_len < 0,
+               "Could not resolve hex newkey.");
+        newkey = (const u_char *) s;
+        binary_to_hex((const u_char *) newkey, newkey_len, &s);
     }
 
     if (!oldkey) {              /* oldkey */
-        oldkey = OLDKEY_DEFAULT;
+        oldkey = (const u_char *) OLDKEY_DEFAULT;
         isdefault_old = TRUE;
     }
-    oldkey_len = strlen(oldkey);
+    oldkey_len = strlen((const char *) oldkey);
 
     if (tolower(*(oldkey + 1)) == 'x') {
-        oldkey_len = hex_to_binary2(oldkey + 2, oldkey_len - 2, &s);
-        if (oldkey_len < 0) {
-            FAILED((rval = SNMPERR_GENERR),
-                   "Could not resolve hex oldkey.");
-        }
-        oldkey = s;
+        oldkey_len = hex_to_binary2((const u_char *) oldkey + 2,
+                                    oldkey_len - 2, &s);
+        FAILED(oldkey_len < 0,
+               "Could not resolve hex oldkey.");
+        oldkey = (const u_char *) s;
         binary_to_hex(oldkey, oldkey_len, &s);
     }
 
@@ -573,12 +566,12 @@
 
 
     binary_to_hex(oldkey_buf, properlength, &s);
-    fprintf(stdout, "\noldkey%s (len=%d):  %s\n",
+    fprintf(stdout, "# oldkey%s (len=%d):  %s\n",
             (isdefault_old) ? " (default)" : "", properlength, s);
     SNMP_FREE(s);
 
     binary_to_hex(newkey_buf, properlength, &s);
-    fprintf(stdout, "newkey%s (len=%d):  %s\n\n",
+    fprintf(stdout, "# newkey%s (len=%d):  %s\n",
             (isdefault_new) ? " (default)" : "", properlength, s);
     SNMP_FREE(s);
 
@@ -589,14 +582,12 @@
                             keychange_buf, &keychange_len);
     FAILED(rval, "encode_keychange().");
 
-    if (keychange_len != (properlength * 2)) {
-        FAILED(SNMPERR_GENERR,
-               "KeyChange string (encoded) is not proper length "
-               "for this hash transform.");
-    }
+    FAILED(keychange_len != (properlength * 2),
+           "KeyChange string (encoded) is not proper length "
+           "for this hash transform.");
 
     binary_to_hex(keychange_buf, keychange_len, &s);
-    fprintf(stdout, "(%s) KeyChange string:  %s\n\n",
+    fprintf(stdout, "# (%s) KeyChange string:  %s\n",
             ((hashtype == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"), s);
     SNMP_FREE(s);
 
@@ -607,24 +598,20 @@
                             temp_buf, &temp_len);
     FAILED(rval, "decode_keychange().");
 
-    if (temp_len != properlength) {
-        FAILED(SNMPERR_GENERR,
-               "decoded newkey is not proper length for "
-               "this hash transform.");
-    }
+    FAILED(temp_len != properlength,
+           "decoded newkey is not proper length for "
+           "this hash transform.");
 
     binary_to_hex(temp_buf, temp_len, &s);
-    fprintf(stdout, "decoded newkey:  %s\n\n", s);
+    fprintf(stdout, "# decoded newkey:  %s\n", s);
     SNMP_FREE(s);
 
 
-    if (memcmp(newkey_buf, temp_buf, temp_len)) {
-        FAILED(SNMPERR_GENERR, "newkey did not decode properly.");
-    }
+    FAILED(memcmp(newkey_buf, temp_buf, temp_len),
+           "newkey did not decode properly.");
 
 
     SUCCESS(hashname);
-    fprintf(stdout, "\n");
 
 
     /*
diff --git a/testing/etimetest.c b/testing/fulltests/snmpv3/T050etimetest_capp.c
similarity index 68%
rename from testing/etimetest.c
rename to testing/fulltests/snmpv3/T050etimetest_capp.c
index 5e7d3d5..53951aa 100644
--- a/testing/etimetest.c
+++ b/testing/fulltests/snmpv3/T050etimetest_capp.c
@@ -1,6 +1,8 @@
 /*
  * etimetest.c
  *
+ * HEADER Testing engineID hashing and timing
+ *
  * Expected SUCCESSes for all tests:    3
  *
  * Returns:
@@ -12,9 +14,6 @@
  * FIX  Devise a test for {set,get}_enginetime(..., FALSE).
  */
 
-static char    *rcsid = "$Id$";    /* */
-
-
 #include <net-snmp/net-snmp-config.h>
 
 #include <stdio.h>
@@ -22,16 +21,23 @@
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#include "asn1.h"
-#include "snmp_api.h"
-#include "tools.h"
-#include "lcd_time.h"
-#include "snmp_debug.h"
-#include "callback.h"
+#include <unistd.h>
+
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/scapi.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/lcd_time.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/library/callback.h>
 
 static u_int    dummy_etime, dummy_eboot;       /* For ISENGINEKNOWN(). */
 
@@ -41,7 +47,7 @@
 extern char    *optarg;
 extern int      optind, optopt, opterr;
 
-
+int             testcount=0;
 
 /*
  * Globals, &c...
@@ -60,28 +66,31 @@
 #define LOCAL_MAXBUF	(1024 * 8)
 #define NL		"\n"
 
-#define OUTPUT(o)	fprintf(stdout, "\n\n%s\n\n", o);
+#define OUTPUT(o)	fprintf(stdout, "# %s\n", o);
 
 #define SUCCESS(s)					\
 {							\
-	if (!failcount)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
+    fprintf(stdout, "# Done with %s\n", s);             \
 }
 
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
+#define FAILED(e, f)                                                    \
+{                                                                       \
+    if (e != SNMPERR_SUCCESS) {                                         \
+                fprintf(stdout, "not ok: %d - %s\n", ++testcount, f);	\
+		failcount += 1;                                         \
+	} else {                                                        \
+                fprintf(stdout, "ok: %d - %s\n", ++testcount, f);	\
+        }                                                               \
+    fflush(stdout); \
 }
 
-
+#define DETAILINT(s, i) \
+    fprintf(stdout, "# %s: %d\n", s, i);
 
 /*
  * Global variables.
  */
-int             sleeptime = 7;
+int             sleeptime = 2;
 
 #define BLAT "alk;djf;an riu;alicenmrul;aiknglksajhe1 adcfalcenrco2"
 
@@ -151,13 +160,13 @@
         exit(1000);
 
     } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
+        doalltests = 1;
     }
 
+    init_snmp("testing");
 
     /*
-     * Test stuff.
+     * test stuff.
      */
     rval = sc_init();
     FAILED(rval, "sc_init()");
@@ -171,15 +180,8 @@
     }
 
 
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown()");
-
-    return failcount;
-
+    fprintf(stdout, "1..%d\n", testcount);
+    return 0;
 }                               /* end main() */
 
 
@@ -246,28 +248,28 @@
 {
     int                         /* rval = SNMPERR_SUCCESS,  */
                     failcount = 0;
-    char           *s;
+    const u_char     *s;
 
     OUTPUT("Visual spot check of hash index outputs.  "
            "(Success or failure not noted.)");
 
-    s = "A";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) " A";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
-    s = "BB";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) " BB";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
-    s = "CCC";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) " CCC";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
-    s = "DDDD";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) " DDDD";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
-    s = "EEEEE";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) " EEEEE";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
-    s = BLAT;
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
+    s = (const u_char *) BLAT;
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
 
 
     OUTPUT("Visual spot check -- DONE.");
@@ -300,17 +302,17 @@
     OUTPUT("Query of empty list, two set actions.");
 
 
-    rval = ISENGINEKNOWN("A", 1);
+    rval = ISENGINEKNOWN((const u_char *) "A", 1);
     if (rval == TRUE) {
         FAILED(SNMPERR_GENERR, "Query of empty list returned TRUE.")
     }
 
 
-    rval = set_enginetime("BB", 2, 2, 20, TRUE);
+    rval = set_enginetime((const u_char *) "BB", 2, 2, 20, TRUE);
     FAILED(rval, "set_enginetime()");
 
 
-    rval = set_enginetime("CCC", 3, 31, 90127, TRUE);
+    rval = set_enginetime((const u_char *) "CCC", 3, 31, 90127, TRUE);
     FAILED(rval, "set_enginetime()");
 
 
@@ -324,11 +326,11 @@
     OUTPUT("Add entries using macros, test for existence with macros.");
 
 
-    rval = ENSURE_ENGINE_RECORD("DDDD", 4);
+    rval = ENSURE_ENGINE_RECORD((const u_char *) "DDDD", 4);
     FAILED(rval, "ENSURE_ENGINE_RECORD()");
 
 
-    rval = MAKENEW_ENGINE_RECORD("EEEEE", 5);
+    rval = MAKENEW_ENGINE_RECORD((const u_char *) "EEEEE", 5);
     if (rval == SNMPERR_SUCCESS) {
         FAILED(rval,
                "MAKENEW_ENGINE_RECORD returned success for "
@@ -336,7 +338,7 @@
     }
 
 
-    rval = MAKENEW_ENGINE_RECORD("BB", 2);
+    rval = MAKENEW_ENGINE_RECORD((const u_char *) "BB", 2);
     FAILED(rval, "MAKENEW_ENGINE_RECORD().");
 
 
@@ -354,13 +356,10 @@
     dump_etimelist();
 #endif
 
-    fprintf(stdout, "\nSleeping for %d second%s... ",
+    fprintf(stdout, "# Sleeping for %d second%s... ",
             sleeptime, (sleeptime == 1) ? "" : "s");
-    fflush(stdout);
 
     sleep(sleeptime);
-    fprintf(stdout, "\n");
-
 
 
     /*
@@ -371,30 +370,30 @@
 
 
 
-    rval = get_enginetime("BB", 2, &eboot, &etime, TRUE);
+    rval = get_enginetime((const u_char *) "BB", 2, &eboot, &etime, TRUE);
     FAILED(rval, "get_enginetime().");
 
-    fprintf(stdout, "BB = <%d,%d>\n", eboot, etime);
+    fprintf(stdout, "# BB = <%d,%d>\n", eboot, etime);
     if ((etime < 20) || (eboot < 2)) {
         FAILED(SNMPERR_GENERR,
                "get_enginetime() returned bad values.  (1)");
     }
 
-    rval = get_enginetime("DDDD", 4, &eboot, &etime, FALSE);
+    rval = get_enginetime((const u_char *) "DDDD", 4, &eboot, &etime, FALSE);
     FAILED(rval, "get_enginetime().");
 
-    fprintf(stdout, "DDDD = <%d,%d>\n", eboot, etime);
+    fprintf(stdout, "# DDDD = <%d,%d>\n", eboot, etime);
     if ((etime < sleeptime) || (eboot != 0)) {
         FAILED(SNMPERR_GENERR,
                "get_enginetime() returned bad values.  (2)");
     }
 
 
-    rval = set_enginetime("CCC", 3, 234, 10000, TRUE);
+    rval = set_enginetime((const u_char *) "CCC", 3, 234, 10000, TRUE);
     FAILED(rval, "set_enginetime().");
 
 
-    rval = set_enginetime("EEEEE", 5, 9876, 55555, TRUE);
+    rval = set_enginetime((const u_char *) "EEEEE", 5, 9876, 55555, TRUE);
     FAILED(rval, "set_enginetime().");
 
 
@@ -407,12 +406,10 @@
      */
     OUTPUT("Sleep again, then dump the list one last time.");
 
-    fprintf(stdout, "Sleeping for %d second%s... ",
+    fprintf(stdout, "# Sleeping for %d second%s...\n",
             sleeptime, (sleeptime == 1) ? "" : "s");
-    fflush(stdout);
 
     sleep(sleeptime);
-    fprintf(stdout, "\n");
 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
     dump_etimelist();
diff --git a/testing/fulltests/support/NetSNMPTest.pm b/testing/fulltests/support/NetSNMPTest.pm
new file mode 100644
index 0000000..e4ac040
--- /dev/null
+++ b/testing/fulltests/support/NetSNMPTest.pm
@@ -0,0 +1,172 @@
+package NetSNMPTest;
+
+use File::Temp qw(tempfile tempdir);
+use IO::File;
+use Data::Dumper;
+use strict;
+
+sub new {
+    my $type = shift;
+    my ($class) = ref($type) || $type;
+    my $self = {};
+    %$self = @_;
+    bless($self, $class);
+    $self->init();
+    return $self;
+}
+
+sub init {
+    my ($self) = @_;
+    $self->{'dir'} = tempdir();
+    print "# using tempdir $self->{dir}\n";
+
+    foreach my $suffix (qw(conf pid log out)) {
+	$self->{"snmpd.$suffix"} ||= $self->{'dir'} . "/snmpd.$suffix";
+    }
+    $self->{'snmp.conf'} ||= $self->{'dir'} . "/snmp.conf";
+
+    $self->{'confdir'} ||= $self->{'dir'};
+    $self->{'persistentdir'} ||= $self->{'dir'} . "/persistent";
+}
+
+sub config_file {
+    my ($self, $file, $string) = @_;
+    my $fh = new IO::File (">> $file");
+    $fh->print($string);
+    if ($string !~ /\n$/) {
+	$fh->print("\n");
+    }
+    $fh->close();
+}
+
+sub config_agent {
+    my ($self, $string) = @_;
+    $self->config_file($self->{'snmpd.conf'}, $string);
+}
+
+sub config_app {
+    my ($self, $string) = @_;
+    $self->config_file($self->{'snmp.conf'}, $string);
+}
+
+sub require_feature {
+    my ($self, $feature) = @_;
+    my $srcdir = $ENV{'srcdir'} || "..";
+    my $fh = new IO::File("$srcdir/include/net-snmp/net-snmp-config.h");
+    while (<$fh>) {
+	if (/#define $feature 1/) {
+	    $fh->close();
+	    return 1;
+	}
+    }
+    print "1..0 # SKIP missing $feature\n";
+    exit;
+}
+
+sub start_agent {
+    my ($self, $flags) = @_;
+
+    $flags ||= $self->{'snmpdflags'};
+
+    $ENV{'SNMPCONFPATH'} = $self->{'confdir'};
+    $ENV{'SNMP_PERSISTENT_DIR'} = $self->{'peristentdir'};
+
+    my $cmd = "snmpd $flags -r -U -p $self->{'snmpd.pid'} -Lf $self->{'snmpd.log'} $self->{'agentaddress'} > $self->{'snmpd.out'} 2>&1";
+    System("$cmd &");
+
+    sleep(1);
+
+    return $self->wait_for($self->{'snmpd.log'}, "NET-SNMP version");
+}
+
+sub stop_agent {
+    my ($self) = @_;
+    my $pidfile = new IO::File "$self->{'snmpd.pid'}";
+    my $pid = <$pidfile>;
+    kill("TERM", $pid);
+    $self->wait_for($self->{'snmpd.log'}, 'shutting down');
+}
+
+# returns 1 on success, 0 on failure
+sub wait_for {
+    my ($self, $filename, $regexp, $maxtime) = @_;
+    my $fh = new IO::File "$filename";
+    return 0 if (!$fh);
+
+    $maxtime = 10 if (!defined($maxtime));
+
+    my $timecount = 0;
+    # print "# reading from: $filename\n";
+    while (1) {
+	my $line = <$fh>;
+	# print "# line: $line\n";
+	if ($line eq "") {
+	    if ($timecount == $maxtime) {
+		return 0;
+	    }
+	    sleep(1);
+	    print "# sleeping ...\n";
+	    $fh->clearerr();
+	    $timecount++;
+	} else {
+	    chomp($line);
+	    if ($line =~ /$regexp/) {
+		return 1;
+	    }
+	}
+    }
+    return 0;
+}
+
+sub Debug {
+    print  "# " . join(" ",@_);
+}
+
+sub System {
+    my ($cmd) = @_;
+    Debug("running: ", $cmd, "\n");
+    system($cmd);
+}
+
+sub DIE {
+    my $self = shift;
+    $self->stop_agent();
+    die @_;
+}
+
+1;
+
+=pod
+
+=head1 NAME
+
+NetSNMPTest - simple testing module for testing perl tests
+
+=head1 USAGE
+
+use NetSNMPTest;
+use Test;
+use SNMP;
+
+my $destination = "udp:localhost:9876";
+
+my $test = new NetSNMPTest(agentaddress => $destination);
+
+$test->require_feature("SOME_IFDEF_FROM_NET_SNMP_CONFIG_H");
+
+$test->config_agent("rocommunity public");
+$test->config_agent("syscontact testvalue");
+$test->DIE("failed to start the agent") if (!$test->start_agent());
+
+my $session = new SNMP::Session(DestHost => $destination,
+                                Version => '2c',
+                                Community => 'public');
+
+my $value = $session->get('sysContact.0');
+plan(tests => 1);
+ok($value, 'testvalue');
+
+$test->stop_agent();
+
+=cut
+
diff --git a/testing/fulltests/support/cagentlib_build b/testing/fulltests/support/cagentlib_build
new file mode 100755
index 0000000..55a35ae
--- /dev/null
+++ b/testing/fulltests/support/cagentlib_build
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# build the C test file ...
+
+rm -f "$2.c"
+cat >>"$2.c" <<EOF
+/* net-snmp standard headers */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* testing specific header */
+#include <net-snmp/library/testing.h>
+
+/* standard headers */
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+
+int
+main(int argc, char *argv[]) {
+
+EOF
+echo >>"$2.c" "#line 1 \"$1\""
+cat >>"$2.c" "$1"
+cat >>"$2.c" <<EOF
+
+   if (__did_plan == 0) {
+       PLAN(__test_counter);
+   }
+
+   return(0);
+}
+
+EOF
+
+# ... and compile it.
+${builddir}/libtool --mode=link `${builddir}/net-snmp-config --build-command` -I$builddir/include -I$srcdir/include -o $2 $2.c ${builddir}/snmplib/libnetsnmp.la ${builddir}/agent/libnetsnmpagent.la `${builddir}/net-snmp-config --external-libs`
+echo $2
diff --git a/testing/fulltests/support/cagentlib_run b/testing/fulltests/support/cagentlib_run
new file mode 100755
index 0000000..84f54e1
--- /dev/null
+++ b/testing/fulltests/support/cagentlib_run
@@ -0,0 +1,8 @@
+#!/bin/sh
+${DYNAMIC_ANALYZER} ${builddir}/libtool --mode=execute "$1" 2>&1 \
+| \
+if [ "x$SNMP_SAVE_TMPDIR" = "xyes" ]; then
+  tee "/tmp/snmp-unit-test-`basename $1`"
+else
+  cat
+fi
diff --git a/testing/fulltests/support/capp_build b/testing/fulltests/support/capp_build
new file mode 100755
index 0000000..dc038c6
--- /dev/null
+++ b/testing/fulltests/support/capp_build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+${builddir}/libtool --mode=link `${builddir}/net-snmp-config --build-command` -I$builddir/include -I$srcdir/include -o $2 $1 ${builddir}/snmplib/libnetsnmp.la `${builddir}/net-snmp-config --external-libs`
+echo $2
diff --git a/testing/fulltests/support/capp_run b/testing/fulltests/support/capp_run
new file mode 100755
index 0000000..84f54e1
--- /dev/null
+++ b/testing/fulltests/support/capp_run
@@ -0,0 +1,8 @@
+#!/bin/sh
+${DYNAMIC_ANALYZER} ${builddir}/libtool --mode=execute "$1" 2>&1 \
+| \
+if [ "x$SNMP_SAVE_TMPDIR" = "xyes" ]; then
+  tee "/tmp/snmp-unit-test-`basename $1`"
+else
+  cat
+fi
diff --git a/testing/fulltests/support/clib_build b/testing/fulltests/support/clib_build
new file mode 100755
index 0000000..f94bebd
--- /dev/null
+++ b/testing/fulltests/support/clib_build
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# build the C test file ...
+
+scriptname="$0"
+if [ "${scriptname#/}" = "${scriptname}" ]; then
+    scriptname="${PWD}/${scriptname}"
+fi
+scriptdir="$(dirname ${scriptname})"
+srcdir="$(dirname $(dirname $(dirname $scriptdir)))"
+
+rm -f "$2.c"
+cat >>"$2.c" <<EOF
+/* net-snmp standard headers */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/library/large_fd_set.h>
+
+/* testing specific header */
+#include <net-snmp/library/testing.h>
+
+/* standard headers */
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETINET_IP6_H
+#include <netinet/ip6.h>
+#endif
+#ifndef HAVE_INET_PTON
+#include "snmplib/inet_pton.h"
+#endif
+#ifndef HAVE_INET_NTOP
+#include "snmplib/inet_ntop.h"
+#endif
+
+#define ABS_SRCDIR "${srcdir}"
+
+int
+main(int argc, char *argv[]) {
+
+EOF
+echo >>"$2.c" "#line 1 \"$1\""
+cat >>"$2.c" "$1"
+cat >>"$2.c" <<EOF
+
+   if (__did_plan == 0) {
+       PLAN(__test_counter);
+   }
+
+   return(0);
+}
+
+EOF
+
+# ... and compile it.
+${builddir}/libtool --mode=link `${builddir}/net-snmp-config --build-command` -I$builddir/include -I$srcdir -I$srcdir/include -o $2 $2.c ${builddir}/snmplib/libnetsnmp.la `${builddir}/net-snmp-config --external-libs`
+echo $2
diff --git a/testing/fulltests/support/clib_run b/testing/fulltests/support/clib_run
new file mode 100755
index 0000000..84f54e1
--- /dev/null
+++ b/testing/fulltests/support/clib_run
@@ -0,0 +1,8 @@
+#!/bin/sh
+${DYNAMIC_ANALYZER} ${builddir}/libtool --mode=execute "$1" 2>&1 \
+| \
+if [ "x$SNMP_SAVE_TMPDIR" = "xyes" ]; then
+  tee "/tmp/snmp-unit-test-`basename $1`"
+else
+  cat
+fi
diff --git a/testing/TESTCONF.sh b/testing/fulltests/support/simple_TESTCONF.sh
similarity index 74%
rename from testing/TESTCONF.sh
rename to testing/fulltests/support/simple_TESTCONF.sh
index c8e8c99..5d1dc50 100644
--- a/testing/TESTCONF.sh
+++ b/testing/fulltests/support/simple_TESTCONF.sh
@@ -50,24 +50,57 @@
 
 if [ "x$MIBDIRS" = "x" ]; then
   if [ "x$SNMP_PREFER_NEAR_MIBS" = "x1" ]; then
-    MIBDIRS=${SNMP_BASEDIR}/../mibs
+    MIBDIRS=${srcdir}/mibs
     export MIBDIRS
   fi
 fi
 
 # Set up the path to the programs we want to use.
 if [ "x$SNMP_PATH" = "x" ]; then
-    PATH=../agent:../apps:../../agent:../../apps:$PATH
+    PATH=${builddir}/agent:${builddir}/apps:$PATH
     export PATH
     SNMP_PATH=yes
     export SNMP_PATH
 fi
-    
+
+# make sure that we can fulfill all library dependencies
+_ld_lib_path="${SNMP_UPDIR}/snmplib/.libs:${SNMP_UPDIR}/agent/.libs:${SNMP_UPDIR}/agent/helpers/.libs"
+case `uname` in
+  CYGWIN*)
+    PATH="${_ld_lib_path}:$PATH"
+    export PATH
+    ;;
+  Darwin*)
+    if [ "x$DYLD_LIBRARY_PATH" != "x" ]; then
+      DYLD_LIBRARY_PATH="${_ld_lib_path}:${DYLD_LIBRARY_PATH}"
+    else
+      DYLD_LIBRARY_PATH="${_ld_lib_path}"
+    fi
+    export DYLD_LIBRARY_PATH
+    ;;
+  HP-UX*)
+    if [ "x$SHLIB_PATH" != "x" ]; then
+      SHLIB_PATH="${_ld_lib_path}:${SHLIB_PATH}"
+    else
+      SHLIB_PATH="${_ld_lib_path}"
+    fi
+    export SHLIB_PATH
+    ;;
+  *)
+    if [ "x$LD_LIBRARY_PATH" != "x" ]; then
+      LD_LIBRARY_PATH="${_ld_lib_path}:${LD_LIBRARY_PATH}"
+    else
+      LD_LIBRARY_PATH="${_ld_lib_path}"
+    fi
+    export LD_LIBRARY_PATH
+    ;;
+esac
 
 # Set up temporary directory
-if [ "x$SNMP_TMPDIR" = "x" -a "x$SNMP_HEADERONLY" != "xyes" ]; then
+if [ "x$SNMP_HEADERONLY" != "xyes" ]; then
+  if [ "x$SNMP_TMPDIR" = "x" ]; then
     if [ "x$testnum" = "x" ] ; then
-        testnum=1
+        testnum=0
     fi
     SNMP_TMPDIR="/tmp/snmp-test-$testnum-$$"
     export SNMP_TMPDIR
@@ -75,11 +108,19 @@
 	echo "$0: ERROR: $SNMP_TMPDIR already existed."
 	exit 1;
     fi
+  fi
+  if [ ! -d $SNMP_TMPDIR ]; then
+    mkdir $SNMP_TMPDIR
+    chmod 0700 $SNMP_TMPDIR
+  fi
+  if [ "x$SNMP_TMP_PERSISTENTDIR" = "x" ]; then
     SNMP_TMP_PERSISTENTDIR=$SNMP_TMPDIR/persist
     export SNMP_TMP_PERSISTENTDIR
-    mkdir $SNMP_TMPDIR
+  fi
+  if [ ! -d $SNMP_TMP_PERSISTENTDIR ]; then
     mkdir $SNMP_TMP_PERSISTENTDIR
-    chmod 0700 $SNMP_TMPDIR $SNMP_TMP_PERSISTENTDIR
+    chmod 0700 $SNMP_TMP_PERSISTENTDIR
+  fi
 fi
 
 if [ "x$SNMP_SAVE_TMPDIR" = "x" ]; then
@@ -89,8 +130,8 @@
 
 SNMP_IGNORE_WINDOWS_REGISTRY="true"
 export SNMP_IGNORE_WINDOWS_REGISTRY
-SNMP_ENV_SEPARATOR="`$SNMP_UPDIR/net-snmp-config --env-separator`"
-SNMP_PERLPROG="`$SNMP_UPDIR/net-snmp-config --perlprog`"
+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"
 SNMPTRAPD_CONFIG_FILE="$SNMP_TMPDIR/snmptrapd.conf"
@@ -133,6 +174,11 @@
     NETSTAT=""
 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"
+fi
+
 PROBE_FOR_PORT() {
     BASE_PORT=$1
     MAX_RETRIES=10
@@ -155,6 +201,10 @@
                 exit 255
             fi
         done
+    else
+	echo "ERROR: Cannot probe for port - netstat not found." >&2
+	echo "NOPORT"
+	exit 255
     fi
 }
 
@@ -171,7 +221,7 @@
 	SNMP_TRANSPORT_SPEC="udp"
 fi
 if [ "x$SNMP_TEST_DEST" = "x" -a $SNMP_TRANSPORT_SPEC != "unix" ];then
-	SNMP_TEST_DEST="localhost:"
+	SNMP_TEST_DEST="127.0.0.1:"
 fi
 export SNMP_FLAGS SNMP_SNMPD_PORT SNMP_SNMPTRAPD_PORT
 
diff --git a/testing/eval_tools.sh b/testing/fulltests/support/simple_eval_tools.sh
similarity index 65%
rename from testing/eval_tools.sh
rename to testing/fulltests/support/simple_eval_tools.sh
index 9c09cc7..2df2c95 100644
--- a/testing/eval_tools.sh
+++ b/testing/fulltests/support/simple_eval_tools.sh
@@ -22,19 +22,25 @@
 #
 if [ "x$EVAL_TOOLS_SH_EVALED" != "xyes" ]; then
     EVAL_TOOLS_SH_EVALED=yes
-    . TESTCONF.sh
 
 #
 # Variables used in global environment of calling script.
 #
 failcount=0
-junkoutputfile="$SNMP_TMPDIR/output-`basename $0`$$"
-seperator="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
+testnum=0
+errnum=0
+junkoutputfilebase="$SNMP_TMPDIR/output-`basename $0`$$"
+junkoutputfile=$junkoutputfilebase
+outputcount=0
+separator="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
 if [ -z "$OK_TO_SAVE_RESULT" ] ; then
 OK_TO_SAVE_RESULT=1
 export OK_TO_SAVE_RESULT
 fi
 
+if [ `uname -s` = SunOS ]
+then PATH=/usr/xpg4/bin:$PATH
+fi
 
 #
 # HEADER: returns a single line when SNMP_HEADERONLY mode and exits.
@@ -44,8 +50,7 @@
         echo test $*
 	exit 0;
     else
-	ECHO "testing $*...  "
-	headerStr="testing $*"
+	{ echo "# testing $*"; echo ""; } >> $SNMP_TMPDIR/invoked
     fi
 }
 
@@ -107,28 +112,21 @@
 #
 SKIP() {
 	REMOVETESTDATA
-	echo "SKIPPED"
+	echo "1..0 # SKIP $*"
 	exit 0
 }
 
 ISDEFINED() {
-	grep "^#define $1 " $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h $SNMP_UPDIR/include/net-snmp/agent/agent_module_config.h >/dev/null
+	grep "^#define $1 " ${builddir}/include/net-snmp/net-snmp-config.h ${builddir}/include/net-snmp/agent/mib_module_config.h ${builddir}/include/net-snmp/agent/agent_module_config.h > /dev/null
 }
 
 SKIPIFNOT() {
-	if ISDEFINED "$1"; then
-	    :
-	else
-	    SKIP
-	fi
+	ISDEFINED "$1" || SKIP "$1 is not defined"
 }
 
 SKIPIF() {
-	if ISDEFINED "$1"; then
-	    SKIP
-	fi
+	ISDEFINED "$1" && SKIP "$1 is defined"
 }
-	
 
 #------------------------------------ -o-
 #
@@ -136,7 +134,7 @@
 	missingfiles=""
 
 	for f in $*; do
-		[ -f "$f" ] && continue
+		[ -e "$f" ] && continue
 		echo "FAILED: Cannot find file \"$f\"."
 		missingfiles=true
 	done
@@ -144,11 +142,16 @@
 	[ "$missingfiles" = true ] && exit 1000
 }
 
+NEWOUTPUTFILE() {
+        outputcount=`expr $outputcount + 1`
+        junkoutputfile="${junkoutputfilebase}-$outputcount"
+}
 
 #------------------------------------ -o-
 #
-STARTTEST() {	
-	[ ! -f "$junkoutputfile" ] && {
+STARTTEST() {
+        NEWOUTPUTFILE
+	[ ! -e "$junkoutputfile" ] && {
 		touch $junkoutputfile
 		return
 	}
@@ -171,10 +174,35 @@
 	rm -rf $SNMP_TMPDIR
 }
 
-
+#------------------------------------ -o-
+#
+OUTPUTENVVARS() {
+    echo "SNMPCONFPATH=$SNMPCONFPATH" >> $1
+    echo "SNMP_PERSISTENT_DIR=$SNMP_PERSISTENT_DIR" >> $1
+    echo "MIBDIRS=$MIBDIRS" >> $1
+    echo "PATH=$PATH" >> $1
+    echo "export SNMPCONFPATH" >> $1
+    echo "export SNMP_PERSISTENT_DIR" >> $1
+    echo "export MIBDIRS" >> $1
+    echo "export PATH" >> $1
+}
+    
 #------------------------------------ -o-
 # Captures output from command, and returns the command's exit code.
+loggedvars=0
 CAPTURE() {	# <command_with_arguments_to_execute>
+    NEWOUTPUTFILE
+
+    # track invoked command per test when verbose
+    if [ $SNMP_VERBOSE -gt 0 ]; then
+        OUTPUTENVVARS $junkoutputfile.invoked
+        echo $* >> $junkoutputfile.invoked
+    fi
+
+    if [ $loggedvars = 0 ]; then
+        OUTPUTENVVARS $SNMP_TMPDIR/invoked
+        loggedvars=1
+    fi
     echo $* >> $SNMP_TMPDIR/invoked
 
 	if [ $SNMP_VERBOSE -gt 0 ]; then
@@ -185,15 +213,16 @@
 KNORG
 
 	fi
-	( $* 2>&1 ) > $junkoutputfile 2>&1
+	echo "RUNNING: $*" > $junkoutputfile
+	( $* 2>&1 ) >> $junkoutputfile 2>&1
 	RC=$?
 
 	if [ $SNMP_VERBOSE -gt 1 ]; then
 		echo "Command Output: "
 		echo "MIBDIR $MIBDIRS $MIBS"
-		echo "$seperator"
+		echo "$separator"
 		cat $junkoutputfile | sed 's/^/  /'
-		echo "$seperator"
+		echo "$separator"
 	fi
 	return $RC
 }
@@ -224,41 +253,95 @@
   fi
 }
 
+CHECKCOUNT() {
+   CHECKFILECOUNT "$junkoutputfile" $@
+}
+
+CHECKVALUEIS() {
+    value1=$1
+    value2=$2
+    if [ "x$value1" = "x$value2" ]; then
+      GOOD "$3"
+    else
+      BAD "$3"
+    fi
+}
+
+CHECKVALUEISNT() {
+    value1=$1
+    value2=$2
+    if [ "x$value1" = "x$value2" ]; then
+      BAD "$3"
+    else
+      GOOD "$3"
+    fi
+}
+
 #------------------------------------ -o-
 # Returns: Count of matched lines.
 #
-CHECK() {	# <pattern_to_match>
+CHECKFILECOUNT() {	# <pattern_to_match>
+    chkfile=$1
+    ckfcount=$2
+    shift
+    shift
     if [ $SNMP_VERBOSE -gt 0 ]; then
 	echo -n "checking output for \"$*\"..."
     fi
 
-    rval=`grep -c "$*" "$junkoutputfile" 2>/dev/null`
+    if [ -f $chkfile ]; then
+	rval=`grep -c "$*" "$chkfile" 2>/dev/null`
+    else
+        COMMENT "Note: file $chkfile does not exist and we were asked to check it"
+	rval=0
+    fi
 
     if [ $SNMP_VERBOSE -gt 0 ]; then
 	echo "$rval matches found"
     fi
 
     snmp_last_test_result=$rval
-    EXPECTRESULT 1  # default
+    EXPECTRESULT $ckfcount  # default
+    if [ "$ckfcount" != "noerror" ]; then
+      if [ "$ckfcount" = "atleastone" ]; then
+        if [ "$rval" -ne "0" ]; then
+            GOOD "found $ckfcount copies of '$*' in output ($chkfile); needed one"
+        else
+            BAD "found $rval copies of '$*' in output ($chkfile); expected 1"
+            COMMENT "Outputfile: $chkfile"
+        fi
+      else
+        if [ "$rval" = "$ckfcount" ]; then
+           GOOD "found $ckfcount copies of '$*' in output ($chkfile)"
+        else
+           BAD "found $rval copies of '$*' in output ($chkfile); expected $ckfcount"
+           COMMENT "Outputfile: $chkfile"
+        fi
+      fi
+    fi
     return $rval
 }
 
+CHECK() {
+    CHECKCOUNT 1 $@
+}
+
 CHECKFILE() {
     file=$1
-    if [ "x$file" = "x" ] ; then
-        file=$junkoutputfile
-    fi
     shift
-    myoldjunkoutputfile="$junkoutputfile"
-    junkoutputfile="$file"
-    CHECK $*
-    junkoutputfile="$myoldjunkoutputfile"
+    CHECKFILECOUNT $file 1 $@
 }
 
 CHECKTRAPD() {
     CHECKFILE $SNMP_SNMPTRAPD_LOG_FILE $@
 }
 
+CHECKTRAPDCOUNT() {
+    count=$1
+    shift
+    CHECKFILECOUNT $SNMP_SNMPTRAPD_LOG_FILE $count $@
+}
+
 CHECKTRAPDORDIE() {
     CHECKORDIE $@ $SNMP_SNMPTRAPD_LOG_FILE
 }
@@ -267,6 +350,34 @@
     CHECKFILE $SNMP_SNMPD_LOG_FILE $@
 }
 
+CHECKAGENTCOUNT() {
+    count=$1
+    shift
+    CHECKFILECOUNT $SNMP_SNMPD_LOG_FILE $count $@
+}
+
+WAITFORAGENTSHUTTINGDOWN() {
+    if [ "x$OSTYPE" != "xmsys" ]; then
+        WAITFORAGENT "shutting down"
+    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
+    fi
+}
+
 WAITFORAGENT() {
     WAITFOR "$@" $SNMP_SNMPD_LOG_FILE
 }
@@ -294,9 +405,9 @@
 	fi
         while [ $sleeptime -gt 0 ] ; do
 	  if [ "$2" = "" ] ; then
-            CHECK "$@"
+            CHECKCOUNT noerror "$@"
           else
-	    CHECKFILE "$2" "$1"
+	    CHECKFILECOUNT "$2" noerror "$1"
 	  fi
           if [ "$snmp_last_test_result" != "" ] ; then
               if [ "$snmp_last_test_result" -gt 0 ] ; then
@@ -306,6 +417,14 @@
           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
@@ -316,34 +435,52 @@
   ## restore the previous save state and test result
     OK_TO_SAVE_RESULT=$save_state
     snmp_last_test_result=$save_test
-}    
+}
+
+GOOD() {
+    testnum=`expr $testnum + 1`
+    echo "ok $testnum - $1"
+    echo "# ok $testnum - $1" >> $SNMP_TMPDIR/invoked
+}
+
+BAD() {
+    testnum=`expr $testnum + 1`
+    errnum=`expr $errnum + 1`
+    echo "not ok $testnum - $1"
+    echo "# not ok $testnum - $1" >> $SNMP_TMPDIR/invoked
+}
+
+COMMENT() {
+    echo "# $@"
+    echo "# $@" >> $SNMP_TMPDIR/invoked
+}
 
 # WAITFORORDIE "grep string" ["file"]
 WAITFORORDIE() {
     WAITFOR "$1" "$2"
     if [ "$snmp_last_test_result" != 0 ] ; then
+        BAD
         FINISHED
     fi
-    ECHO "."
+    GOOD
 }
 
 # CHECKORDIE "grep string" ["file"] .. FAIL if "grep string" is *not* found
 CHECKORDIE() {
-    CHECKFILE "$2" "$1"
-    if [ "$snmp_last_test_result" = 0 ] ; then
-        FINISHED
+    if [ "x$2" = "x" ]; then
+      CHECKFILE "$junkoutputfile" "$1"
+    else
+      CHECKFILECOUNT "$2" 1 "$1"
     fi
-    ECHO "."
 }
 
 # CHECKANDDIE "grep string" ["file"] .. FAIL if "grep string" *is* found
 CHECKANDDIE() {
-    CHECKFILE "$2" "$1"
-    EXPECTRESULT 0 # make sure return_value gets set correctly
-    if [ "$snmp_last_test_result" != 0 ] ; then
-        FINISHED
+    if [ "x$2" = "x" ]; then
+      CHECKFILECOUNT "$junkoutputfile" 0 "$1"
+    else
+      CHECKFILECOUNT "$2" 0 "$1"
     fi
-    ECHO "."
 }
 
 #------------------------------------ -o-
@@ -400,17 +537,21 @@
     if test -f $CFG_FILE; then
 	COMMAND="$COMMAND -C -c $CFG_FILE"
     fi
-    if [ $SNMP_VERBOSE -gt 0 ]; then
-	echo "running: $COMMAND"
-    fi
     if [ "x$PORT_SPEC" != "x" ]; then
         COMMAND="$COMMAND $PORT_SPEC"
     fi
+    if [ $SNMP_VERBOSE -gt 0 ]; then
+	echo "running: $COMMAND"
+    fi
     echo $COMMAND >> $SNMP_TMPDIR/invoked
+    if [ $SNMP_VERBOSE -gt 0 ]; then
+        OUTPUTENVVARS $LOG_FILE.command
+        echo $COMMAND >> $LOG_FILE.command
+    fi
     if [ "x$OSTYPE" = "xmsys" ]; then
-      ## $COMMAND > $LOG_FILE.stdout 2>&1 &
-      COMMAND="cmd.exe //c start //min $COMMAND"
-      start $COMMAND > $LOG_FILE.stdout 2>&1
+      $COMMAND > $LOG_FILE.stdout 2>&1 &
+      ## COMMAND="cmd.exe //c start //min $COMMAND"
+      ## start $COMMAND > $LOG_FILE.stdout 2>&1
     else
       $COMMAND > $LOG_FILE.stdout 2>&1
     fi
@@ -494,16 +635,14 @@
 STOPAGENT() {
     SAVE_RESULTS
     STOPPROG $SNMP_SNMPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORAGENT "shutting down"
-    fi
+    WAITFORAGENTSHUTTINGDOWN
     if [ $SNMP_VERBOSE -gt 1 ]; then
 	echo "Agent Output:"
-	echo "$seperator [stdout]"
+	echo "$separator [stdout]"
 	cat $SNMP_SNMPD_LOG_FILE.stdout
-	echo "$seperator [logfile]"
+	echo "$separator [logfile]"
 	cat $SNMP_SNMPD_LOG_FILE
-	echo "$seperator"
+	echo "$separator"
     fi
 }
 
@@ -517,11 +656,11 @@
     fi
     if [ $SNMP_VERBOSE -gt 1 ]; then
 	echo "snmptrapd Output:"
-	echo "$seperator [stdout]"
+	echo "$separator [stdout]"
 	cat $SNMP_SNMPTRAPD_LOG_FILE.stdout
-	echo "$seperator [logfile]"
+	echo "$separator [logfile]"
 	cat $SNMP_SNMPTRAPD_LOG_FILE
-	echo "$seperator"
+	echo "$separator"
     fi
 }
 
@@ -540,17 +679,19 @@
     fi
     for pfile in $SNMP_TMPDIR/*pid* ; do
         if [ "x$pfile" = "x$SNMP_TMPDIR/*pid*" ]; then
-            ECHO "(no pid file(s) found) "
+            BAD "(no pid file(s) found) "
             break
         fi
         if [ ! -f $pfile ]; then
-            ECHO "('$pfile' disappeared) "
+            BAD "('$pfile' disappeared) "
             continue
         fi
 	pid=`cat $pfile`
-	ps -e 2>/dev/null | egrep "^[	 ]*$pid[	 ]+" > /dev/null 2>&1
-	if [ $? = 0 ] ; then
-	    SNMP_SAVE_TMPDIR=yes
+        # 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
@@ -561,24 +702,27 @@
 	    return_value=1
 	fi
     done
-    if [ "x$real_return_value" != "x0" ]; then
+
+    # report the number of tests done
+    GOOD "got to FINISHED"
+    echo "1..$testnum"
+
+    if [ "x$errnum" != "x0" ]; then
 	if [ -s core ] ; then
 	    # XX hope that only one prog cores !
 	    cp core $SNMP_TMPDIR/core.$$
 	    rm -f core
 	fi
-	echo "FAIL"
 	echo "$headerStr...FAIL" >> $SNMP_TMPDIR/invoked
-	exit $real_return_value
+	exit 1
     fi
 
-    echo "ok"
     echo "$headerStr...ok" >> $SNMP_TMPDIR/invoked
 
     if [ "x$SNMP_SAVE_TMPDIR" != "xyes" ]; then
 	REMOVETESTDATA
     fi
-    exit $real_return_value
+    exit 0
 }
 
 #------------------------------------ -o-
diff --git a/testing/fulltests/support/simple_run b/testing/fulltests/support/simple_run
new file mode 100755
index 0000000..eb37e96
--- /dev/null
+++ b/testing/fulltests/support/simple_run
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+if [ $# = 0 ]; then
+    echo "Usage: $0 <testscript> [<args>]"
+    exit 1
+fi
+
+if [ "x$builddir" = "x" ]; then
+    cd ..
+    builddir=`pwd`
+    if cd testing 2>/dev/null; then
+       :
+    else
+       echo "Error: $0 must be started from inside the testing directory."
+       exit 1
+    fi
+fi
+
+if [ "x$srcdir" = "x" ]; then
+    srcdir=`dirname $0`
+    srcdir=`cd $srcdir; cd ../..; pwd`
+    srcdir=`dirname $srcdir`
+    cd $srcdir
+    if cd testing 2>/dev/null; then
+       :
+    else
+       echo "Error: $0 must be started from inside the testing directory."
+       exit 1
+    fi
+fi
+
+testscript=$1
+if [ `echo $testscript | cut -c 1-1` != '/' ]; then
+    testscript="`pwd`/$1"
+fi
+
+SNMP_BASEDIR=`dirname $0`
+
+## prefer MIB files found in source hierarchy
+SNMP_PREFER_NEAR_MIBS=1
+
+export SNMP_PREFER_NEAR_MIBS
+SNMP_TEST_PREFIX=${SNMP_TEST_PREFIX:=T}
+export SNMP_TEST_PREFIX
+
+SNMP_ORIGDIR=`pwd`	        ## this script may be invoked with relative path
+export SNMP_ORIGDIR
+
+SNMP_UPDIR=${builddir}          ## build directory
+SNMP_SLEEP=${SNMP_SLEEP:=1} 	## default seconds to sleep
+export SNMP_SLEEP
+
+# Find executables in source first, then build, then existing PATH.
+## Add to PATH if a binary is found.
+
+cd $SNMP_UPDIR
+SNMP_UPDIR=`pwd`
+bf=snmpget
+if [ -x "$bf" ] ; then
+   PATH=$SNMP_UPDIR:$PATH
+else
+  for dd in apps bin ; do
+   bf=$dd/snmpget
+   if [ -x "$bf" ] ; then
+      PATH=$SNMP_UPDIR/$dd:$PATH
+      break
+   fi
+  done
+fi
+for dd in agent bin sbin ; do
+   bf=$dd/snmpd
+   if [ -x "$bf" ] ; then
+      PATH=$SNMP_UPDIR/$dd:$PATH
+      break
+   fi
+done
+
+bf=include/net-snmp/net-snmp-config.h
+if [ ! -s "$bf" ] ; then
+   echo "No \"$bf\" in $SNMP_UPDIR . Some tests will be skipped"
+fi
+unset bf
+
+# Run from the test scripts directory.
+cd $SNMP_ORIGDIR ; cd ${SNMP_BASEDIR}
+SNMP_BASEDIR=`pwd`
+export SNMP_BASEDIR
+
+PATH=${SNMP_BASEDIR}:$PATH
+export PATH
+SNMP_PATH=yes
+export SNMP_PATH
+
+export SNMP_UPDIR
+
+#
+# Source the testing configuration file
+#
+
+testnum="`basename $testscript`"
+
+. simple_TESTCONF.sh
+
+. simple_eval_tools.sh
+
+cd `dirname $testscript`
+PATH=`pwd`:$PATH
+export PATH
+
+. `basename $testscript`
+
+FINISHED
diff --git a/testing/fulltests/tls/S300tlsperl.pl b/testing/fulltests/tls/S300tlsperl.pl
new file mode 100644
index 0000000..3ea7c0b
--- /dev/null
+++ b/testing/fulltests/tls/S300tlsperl.pl
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+BEGIN {
+    if (exists($ENV{'srcdir'})) {
+	push @INC, "$ENV{'srcdir'}/testing/fulltests/support";
+    } elsif (-d "fulltests/support") {
+	push @INC, "fulltests/support";
+    } elsif (-d "../support") {
+	push @INC, "../support";
+    }
+}
+use NetSNMPTest;
+use Test;
+use SNMP;
+
+my $test = new NetSNMPTest(agentaddress => $agentaddress);
+
+$test->require_feature($feature);
+
+my $netsnmpcert = "$ENV{'srcdir'}/local/net-snmp-cert -I -C $test->{'dir'}";
+
+system("$netsnmpcert gencert -I -t snmpd > /dev/null 2>&1");
+system("$netsnmpcert gencert -I -t snmpapp --cn snmpapp > /dev/null 2>&1");
+system("$netsnmpcert gencert -I -t perl --cn perl > /dev/null 2>&1");
+
+my $fp = `$netsnmpcert showcerts --fingerprint --brief perl`;
+chomp($fp);
+print "# using local fp: $fp\n";
+
+plan(tests => 2);
+$test->config_agent("syscontact itworked");
+$test->config_agent("rwuser -s tsm perl");
+$test->config_agent("certSecName 100 snmpapp --cn");
+$test->config_agent("certSecName 101 $fp --cn");
+
+$test->DIE("failed to start the agent") if (!$test->start_agent(" -Dtls,ssl,tsm,cert:map"));
+
+# now create a session to test things with
+my $session = new SNMP::Session(DestHost => $test->{'agentaddress'},
+				TheirIdentity => 'snmpd',
+			        OurIdentity => 'perl');
+
+ok(ref($session), 'SNMP::Session', "created a session");
+
+######################################################################
+# GET test
+if (ref($session) eq 'SNMP::Session') {
+    my $value = $session->get('sysContact.0');
+    ok($value, 'itworked');
+}
+
+######################################################################
+# cleanup
+$test->stop_agent();
diff --git a/testing/fulltests/tls/SCipherTests b/testing/fulltests/tls/SCipherTests
new file mode 100644
index 0000000..95af0b9
--- /dev/null
+++ b/testing/fulltests/tls/SCipherTests
@@ -0,0 +1,62 @@
+. STlsVars
+
+# create a CA
+
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"
+
+# create a server certificate using the CA certificate
+CAPTURE $NSCERT gencert -t snmpd --with-ca ca-net-snmp.org $checknametype ${checknameprefix}foobar $NSCERTARGS
+SNMPDFP=`$NSCERT showcert --fingerprint --brief snmpd $NSCERTARGS`
+
+CONFIGAGENT '[snmp]' serverCert $SNMPDFP
+
+# create a user certificate
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+CONFIGAGENT  certSecName 10  $TESTUSERFP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+
+CONFIGAPP   clientCert  	  $TESTUSERFP
+CONFIGAPP   serverCert  	  $SNMPDFP
+
+CONFIGAPP   trustCert $CAFP
+
+# specify an exact list of ciphers to accept
+CONFIGAGENT '[snmp]' tlsAlgorithms DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA
+
+FLAGS="-On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+
+# start up the agent
+STARTAGENT
+
+# ensure we can access it via standard algorithms on the client side
+DOSETTEST defaultAlgs "$FLAGS"
+
+# limit the client to the same set
+CONFIGAPP tlsAlgorithms DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA
+
+# and test
+DOSETTEST specificAlgs "$FLAGS"
+
+# drop one cipher
+CONFIGAPP tlsAlgorithms DHE-RSA-AES256-SHA:AES256-SHA
+
+# and test
+DOSETTEST onlyAes256Sha "$FLAGS"
+
+# and finally ensure we can get back to working again
+CONFIGAPP tlsAlgorithms DHE-RSA-AES256-SHA:AES256-SHA
+DOSETTEST worksAgain "$FLAGS"
+
+
+########################################
+# DONE
+
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/SCrl b/testing/fulltests/tls/SCrl
new file mode 100644
index 0000000..4167403
--- /dev/null
+++ b/testing/fulltests/tls/SCrl
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+. STlsVars
+
+# this file contains tests common to both tls and dtls usages
+
+TLSDIR=$SNMP_TMPDIR/tls
+
+#########################################
+# Create the certificates
+
+# create the ca
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+
+# snmpd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpd --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
+
+# user
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+# user2
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp2 --cn 'testuser2'  $NSCERTARGS
+TESTUSER2FP=`$NSCERT showcerts --fingerprint --brief snmpapp2 $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSER2FP" "" "generated fingerprint for testuser2 certificate"
+
+########################################
+# Configure the .conf files
+
+CONFIGAPP serverCert $SERVERFP
+
+# common name mappings
+CONFIGAGENT certSecName 9  $TESTUSERFP     --cn
+CONFIGAGENT certSecName 10  $TESTUSER2FP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+CONFIGAGENT  rwuser -s tsm testuser2 authpriv
+
+CRLFILE=$SNMP_TMPDIR/crlfile.pem
+
+# configure the CRL locations
+CONFIGAGENT '[snmp]' x509crlfile $CRLFILE
+CONFIGAPP   '[snmp]' x509crlfile $CRLFILE
+
+CRLCACMD="env DIR=$TLSDIR CN=ca-net-snp.org openssl ca"
+CRLARGS="-config $TLSDIR/.openssl.conf -keyfile $TLSDIR/private/ca-net-snmp.org.key -cert $TLSDIR/ca-certs/ca-net-snmp.org.crt"
+
+# generate the initial CRL
+touch $TLSDIR/.index
+echo "01" > $TLSDIR/.crlnumber
+CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
+
+#
+# put the second client into the CRL and it shouldn't work
+#
+CAPTURE "$CRLCACMD -revoke $TLSDIR/certs/snmpapp2.crt $CRLARGS -out $CRLFILE"
+CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
+
+
+######################################################################
+# Run the actual list of tests
+#
+
+# start the agent up
+FLAGS="-Dtls -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+AGENT_FLAGS="-Dtls"
+STARTAGENT
+
+# using user 1 - a common name mapped certificate
+# (using the default "snmpapp" certificate because we don't specify another)
+CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECK       ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+# using user 2 should now fail
+CAPTURE "snmpget -T our_identity=snmpapp2 -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECKCOUNT  0 ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+CHECKAGENT  "certificate revoked"
+
+#
+# now put the server's cert into the client crl file
+#
+CAPTURE "$CRLCACMD -revoke $TLSDIR/certs/snmpd.crt $CRLARGS"
+CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
+
+# user 1 should now fail on the client side
+CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECK       "certificate revoked"
+
+# cleanup
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsAgentTrap b/testing/fulltests/tls/STlsAgentTrap
new file mode 100644
index 0000000..ab0c341
--- /dev/null
+++ b/testing/fulltests/tls/STlsAgentTrap
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+. STlsVars
+
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+
+#########################################
+# CERTIFICATE SETUP
+#
+
+# produce the certificates to use
+
+# snmptrapd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert -t snmptrapd   --cn $HOSTNAME $NSCERTARGS
+TRAPDFP=`$NSCERT showcerts --fingerprint --brief snmptrapd  $NSCERTARGS`
+CHECKVALUEISNT "$TRAPDFP" "" "generated fingerprint for snmptrapd certificate"
+
+# snmpd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert -t snmpd   --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
+
+# user
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+#########################################
+# Configuration
+
+# snmpd
+CONFIGAGENT trapsess -Ci -T our_identity=$TESTUSERFP -T their_identity=$TRAPDFP  ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT}
+CONFIGAGENT '[snmp]' serverCert $SERVERFP
+CONFIGAGENT 	     certSecName      9  $TESTUSERFP     --cn
+CONFIGAGENT          rwuser           -s tsm testuser
+
+# snmptrapd
+CONFIGTRAPD '[snmp]' serverCert $TRAPDFP
+CONFIGTRAPD 	     certSecName      9  $TESTUSERFP     --cn
+CONFIGTRAPD 	     authuser         log -s tsm testuser authpriv
+CONFIGTRAPD          agentxsocket     /dev/null
+
+# general
+
+#
+# Begin test
+#
+
+STARTTRAPD
+
+# initialize only the example mib, and not the notification mib stuff
+AGENT_FLAGS="$AGENT_FLAGS -Dexample,header_generic"
+STARTAGENT
+
+#DELAY
+CAPTURE "snmpset -T their_identity=snmpd -T our_identity=snmpapp -On -t 3 -r 0 $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1"
+
+STOPAGENT
+
+STOPTRAPD
+
+CHECKTRAPD "life the universe and everything"
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsCNSession b/testing/fulltests/tls/STlsCNSession
new file mode 100644
index 0000000..b9a61b8
--- /dev/null
+++ b/testing/fulltests/tls/STlsCNSession
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+checknametype="--san"
+checknameprefix="DNS:"
+
+. STlsServerSession
diff --git a/testing/fulltests/tls/STlsName b/testing/fulltests/tls/STlsName
new file mode 100644
index 0000000..e484da6
--- /dev/null
+++ b/testing/fulltests/tls/STlsName
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+checknametype="--cn"
+checknameprefix=""
+
+. STlsServer
diff --git a/testing/fulltests/tls/STlsSan b/testing/fulltests/tls/STlsSan
new file mode 100644
index 0000000..294a0b4
--- /dev/null
+++ b/testing/fulltests/tls/STlsSan
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+checknametype="--san"
+checknameprefix="DNS:"
+
+. STlsServer
diff --git a/testing/fulltests/tls/STlsSanSession b/testing/fulltests/tls/STlsSanSession
new file mode 100644
index 0000000..b9a61b8
--- /dev/null
+++ b/testing/fulltests/tls/STlsSanSession
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+checknametype="--san"
+checknameprefix="DNS:"
+
+. STlsServerSession
diff --git a/testing/fulltests/tls/STlsServer b/testing/fulltests/tls/STlsServer
new file mode 100644
index 0000000..1e8002d
--- /dev/null
+++ b/testing/fulltests/tls/STlsServer
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+. STlsVars
+
+# create a CA
+
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"
+
+# create a server certificate using the CA certificate
+CAPTURE $NSCERT gencert -t snmpd --with-ca ca-net-snmp.org $checknametype ${checknameprefix}a.b.example.com $NSCERTARGS
+SNMPDFP=`$NSCERT showcert --fingerprint --brief snmpd $NSCERTARGS`
+
+CONFIGAGENT '[snmp]' serverCert $SNMPDFP
+
+# create a user certificate
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+CONFIGAGENT  certSecName 10  $TESTUSERFP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+
+CONFIGAPP   clientCert  	  $TESTUSERFP
+
+# start the agent up
+FLAGS="-On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+
+# start up the agent
+STARTAGENT
+
+########################################
+# Positive tests
+#    (should work)
+
+# ensure we can access it via a direct FP check
+DOSETTEST fingerprintIdentity "-T their_identity=$SNMPDFP $FLAGS"
+
+# ensure we can access it via a file based identity check
+DOSETTEST filenameIdentity "-T their_identity=snmpd $FLAGS"
+
+# ensure we can access it via trusting their CA certificate and a
+# matching commoname 
+DOSETTEST hostnameIdentity "-T trust_cert=$CAFP -T their_hostname=a.b.example.com $FLAGS"
+
+########################################
+# Negative tests
+#    (should fail)
+
+# if we don't load the CA certificate we shouldn't connect
+DOFAILSETTEST noTrustCACert  "-T their_hostname=a.b.example.com $FLAGS"
+
+# if we specify a different hostname we should fail hostname test
+# ("localhos" without the "t" is intentional here)
+DOFAILSETTEST incorrectNameA.B.Example.Co  "-T their_hostname=a.b.example.co $FLAGS"
+DOFAILSETTEST incorrectNameA.B.Example.Comt  "-T their_hostname=a.b.example.comt $FLAGS"
+
+# if we specify the CA cert's but don't specify the hostname, it
+# should fail (this may change in the future if we pull the hostname
+# from the transport specifier)
+DOFAILSETTEST certWithoutHost  "-T trust_cert=$CAFP $FLAGS"
+
+########################################
+# Wildcard tests
+#
+DOSETTEST wildcardMatch "-T trust_cert=$CAFP -T their_hostname=*.b.example.com $FLAGS"
+
+DOFAILSETTEST noDoubleWildcard "-T trust_cert=$CAFP -T their_hostname=*.example.com $FLAGS"
+
+
+########################################
+# DONE
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsServerSession b/testing/fulltests/tls/STlsServerSession
new file mode 100644
index 0000000..acf68e5
--- /dev/null
+++ b/testing/fulltests/tls/STlsServerSession
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+. STlsVars
+
+# this is usually something like "localhost:", so we need to strip the :
+OURHOST=`echo $SNMP_TEST_DEST | sed 's/:.*//'`
+
+# create a CA
+
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"
+
+# create a server certificate using the CA certificate
+CAPTURE $NSCERT gencert -t snmpd --with-ca ca-net-snmp.org $checknametype ${checknameprefix}$OURHOST $NSCERTARGS
+SNMPDFP=`$NSCERT showcert --fingerprint --brief snmpd $NSCERTARGS`
+
+CONFIGAGENT '[snmp]' serverCert $SNMPDFP
+
+# create a user certificate
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+CONFIGAGENT  certSecName 10  $TESTUSERFP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+
+CONFIGAPP   clientCert  	  $TESTUSERFP
+
+# start the agent up
+FLAGS="-On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+
+# start up the agent
+STARTAGENT
+
+########################################
+# Positive tests
+#    (should work)
+
+# ensure we can access it via a direct FP check
+DOSETTEST fingerprintIdentity "-T their_identity=$SNMPDFP $FLAGS"
+
+# directly specify the host name
+DOSETTEST hostnameIdentity "-T trust_cert=$CAFP -T their_hostname=$OURHOST $FLAGS"
+
+# This should also work because we:
+# - trust the CA cert
+# - use a session destname that matches the certificate
+DOSETTEST sessionnameIdentity "-T trust_cert=$CAFP $FLAGS"
+
+########################################
+# DONE
+
+#sleep 500
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsTrapdUser b/testing/fulltests/tls/STlsTrapdUser
new file mode 100644
index 0000000..e14c427
--- /dev/null
+++ b/testing/fulltests/tls/STlsTrapdUser
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+. STlsVars
+
+#########################################
+# CERTIFICATE SETUP
+#
+
+# produce the certificates to use
+
+# snmptrapd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert -t snmptrapdd   --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmptrapdd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmptrapdd certificate"
+
+# user
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+# CA certificate
+
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"
+
+# user 9: CA signed user cert
+CAPTURE $NSCERT gencert -t causer --with-ca ca-net-snmp.org --san email:user9@test.net-snmp.org --email user9@test.net-snmp.org  $NSCERTARGS
+CAUSERFP=`$NSCERT showcerts --fingerprint --brief causer $NSCERTARGS`
+CHECKVALUEISNT "$CAUSERFP" "" "generated fingerprint for causer certificate"
+
+#########################################
+# AGENT CONFIGURATION
+#
+
+CONFIGTRAPD '[snmp]' debugTokens tsm
+# ,tls,ssl,cert,tsm
+CONFIGTRAPD '[snmp]' doDebugging 1
+CONFIGTRAPD '[snmp]' serverCert $SERVERFP
+
+CONFIGTRAPD '[snmp]' trustCert $CAFP
+
+# common name mappings
+CONFIGTRAPD certSecName 9  $TESTUSERFP     --cn
+
+CONFIGTRAPD certSecName 100 $CAFP        --rfc822
+
+CONFIGAPP   serverCert  	  $SERVERFP
+CONFIGAPP   defSecurityModel      tsm
+
+CONFIGTRAPD  authuser log -s tsm testuser authpriv
+
+# this file contains tests common to both tls and dtls usages
+
+# start the agent up
+FLAGS="-Dtls -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT"
+
+STARTTRAPD
+
+########################################
+# POST-TRAPD-STARTUP Certificates
+# user
+CAPTURE $NSCERT gencert -t snmptrap --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmptrap $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+######################################################################
+# ACTUAL TESTS
+#
+# Run the actual list of tests
+#
+
+# using user 1 - a common name mapped certificate
+# (using the default "snmpapp" certificate because we don't specify another)
+DOTRAPTEST user1TrapTest "$FLAGS"
+
+# failing using the CA signed cert without
+DOFAILTRAPTEST user2UnknownUser "-T our_identity=snmptrap $FLAGS"
+
+# using user 1 - sending an INFORM
+# (using the default "snmpapp" certificate because we don't specify another)
+DOTRAPTEST user1InformTest "-Ci $FLAGS"
+
+STOPTRAPD
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsUsers b/testing/fulltests/tls/STlsUsers
new file mode 100644
index 0000000..2cb03a6
--- /dev/null
+++ b/testing/fulltests/tls/STlsUsers
@@ -0,0 +1,262 @@
+#!/bin/sh
+
+. STlsVars
+
+#########################################
+# CERTIFICATE SETUP
+#
+
+# produce the certificates to use
+
+# snmpd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert -t snmpd   --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
+
+# user
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+# user 1.5
+CAPTURE $NSCERT gencert -t snmpapp2 --cn 'testuser2'  $NSCERTARGS
+TESTUSER2FP=`$NSCERT showcerts --fingerprint --brief snmpapp2 $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSER2FP" "" "generated fingerprint for testuser certificate"
+
+# user 2
+CAPTURE $NSCERT gencert -t otheruser --cn 'otheruser'  $NSCERTARGS
+OTHERUSERFP=`$NSCERT showcerts --fingerprint --brief otheruser $NSCERTARGS`
+CHECKVALUEISNT "$OTHERUSERFP" "" "generated fingerprint for otheruser certificate"
+
+# user 3
+CAPTURE $NSCERT gencert -t invaliduser --cn 'invaliduser'  $NSCERTARGS
+INVALIDUSERFP=`$NSCERT showcerts --fingerprint --brief invaliduser $NSCERTARGS`
+CHECKVALUEISNT "$INVALIDUSERFP" "" "generated fingerprint for otheruser certificate"
+
+# user 4
+CAPTURE $NSCERT gencert -t unmapped --cn 'unmapped'  $NSCERTARGS
+UNMAPPEDFP=`$NSCERT showcerts --fingerprint --brief unmapped $NSCERTARGS`
+CHECKVALUEISNT "$UNMAPPEDFP" "" "generated fingerprint for unmapped certificate"
+
+# user 5
+CAPTURE $NSCERT gencert -t mappeduser --cn 'mappeduser'  $NSCERTARGS
+MAPPEDUSERFP=`$NSCERT showcerts --fingerprint --brief mappeduser $NSCERTARGS`
+CHECKVALUEISNT "$MAPPEDUSERFP" "" "generated fingerprint for mappeduser certificate"
+
+# user 6: SAN email
+CAPTURE $NSCERT gencert -t email --san email:foobaruser@example.com  $NSCERTARGS
+EMAILUSERFP=`$NSCERT showcerts --fingerprint --brief email $NSCERTARGS`
+CHECKVALUEISNT "$EMAILUSERFP" "" "generated fingerprint for email certificate"
+
+# user 7: SAN dns
+CAPTURE $NSCERT gencert -t dns --san DNS:foobar.example.com  $NSCERTARGS
+DNSUSERFP=`$NSCERT showcerts --fingerprint --brief dns $NSCERTARGS`
+CHECKVALUEISNT "$DNSUSERFP" "" "generated fingerprint for dns certificate"
+
+# user 8: SAN IPv4
+CAPTURE $NSCERT gencert -t ipaddr --san IP:127.0.0.1  $NSCERTARGS
+IPUSERFP=`$NSCERT showcerts --fingerprint --brief ipaddr $NSCERTARGS`
+CHECKVALUEISNT "$IPUSERFP" "" "generated fingerprint for ipaddr certificate"
+
+# user 8.1:  afile
+CAPTURE $NSCERT gencert -t afile --cn afileuser $NSCERTARGS
+AFILEUSERFP=`$NSCERT showcerts --fingerprint --brief afile $NSCERTARGS`
+CHECKVALUEISNT "$AFILEUSERFP" "" "generated fingerprint for afile certificate"
+
+
+# CA certificate
+
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"
+
+# user 9: CA signed user cert
+CAPTURE $NSCERT gencert -t causer --with-ca ca-net-snmp.org --san email:user9@test.net-snmp.org --email user9@test.net-snmp.org  $NSCERTARGS
+CAUSERFP=`$NSCERT showcerts --fingerprint --brief causer $NSCERTARGS`
+CHECKVALUEISNT "$CAUSERFP" "" "generated fingerprint for causer certificate"
+
+CAPTURE $NSCERT gencert -t cadirect9b --with-ca ca-net-snmp.org --san email:user9b@test.net-snmp.org --email user9b@test.net-snmp.org  $NSCERTARGS
+CADIRECTFP=`$NSCERT showcerts --fingerprint --brief cadirect9b $NSCERTARGS`
+CHECKVALUEISNT "$CADIRECTFP" "" "generated fingerprint for cadirect certificate"
+
+CAPTURE $NSCERT genca --cn ca2-net-snmp.org  $NSCERTARGS
+CA2FP=`$NSCERT showcas --fingerprint --brief ca2-net-snmp.org $NSCERTARGS`
+CHECKVALUEISNT "$CA2FP" "" "generated fingerprint for ca2-net-snmp.org certificate"
+
+CAPTURE $NSCERT gencert -t cadirect9c --with-ca ca2-net-snmp.org --san email:user9c@test.net-snmp.org --email user9c@test.net-snmp.org  $NSCERTARGS
+CADIRECT9CFP=`$NSCERT showcerts --fingerprint --brief cadirect9c $NSCERTARGS`
+CHECKVALUEISNT "$CADIRECT9CFP" "" "generated fingerprint for cadirect9c certificate"
+
+CAPTURE $NSCERT gencert -t cadirect9d --with-ca ca2-net-snmp.org --san email:user9d@test.net-snmp.org --email user9d@test.net-snmp.org  $NSCERTARGS
+CADIRECT9DFP=`$NSCERT showcerts --fingerprint --brief cadirect9d $NSCERTARGS`
+CHECKVALUEISNT "$CADIRECT9DFP" "" "generated fingerprint for cadirect9d certificate"
+
+#########################################
+# AGENT CONFIGURATION
+#
+
+CONFIGAGENT '[snmp]' debugTokens tsm
+# ,tls,ssl,cert,tsm
+CONFIGAGENT '[snmp]' doDebugging 1
+CONFIGAGENT '[snmp]' logTimestamp 1
+CONFIGAGENT '[snmp]' serverCert $SERVERFP
+
+CONFIGAGENT '[snmp]' trustCert $CAFP
+CONFIGAGENT '[snmp]' trustCert $CADIRECT9CFP
+
+# common name mappings
+CONFIGAGENT certSecName 9  $TESTUSERFP     --cn
+CONFIGAGENT certSecName 10 $TESTUSER2FP    --cn
+CONFIGAGENT certSecName 11 $OTHERUSERFP    --cn
+CONFIGAGENT certSecName 12 $INVALIDUSERFP  --cn
+
+CONFIGAGENT certSecName 20 $MAPPEDUSERFP --sn aftermapping
+CONFIGAGENT certSecName 21 $EMAILUSERFP  --rfc822
+CONFIGAGENT certSecName 22 $DNSUSERFP    --dns
+CONFIGAGENT certSecName 23 $IPUSERFP     --ip
+CONFIGAGENT certSecName 24 afile         --cn
+
+CONFIGAGENT certSecName 100 $CAFP        --rfc822
+CONFIGAGENT certSecName 101 $CADIRECTFP  --sn causerdirectmap
+CONFIGAGENT certSecName 102 $CADIRECT9CFP  --sn causerdirect9cmap
+# intentionally not mapped:
+#CONFIGAGENT certSecName 1001 $CADIRECT9DFP  --sn causerdirect9dmap
+
+# *** INTENTIONALLY NOT MAPPING AT ALL: ***
+# CONFIGAGENT certSecName 1000 $UNMAPPEDFP ....
+
+CONFIGAPP   serverCert  	  $SERVERFP
+CONFIGAPP   defSecurityModel      tsm
+CONFIGAPP   logTimestamp          1
+
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+CONFIGAGENT  rwuser -s tsm testuser2 authpriv
+CONFIGAGENT  rwuser -s tsm otheruser authpriv
+CONFIGAGENT  rwuser -s tsm aftermapping authpriv
+
+CONFIGAGENT  rwuser -s tsm foobaruser@example.com authpriv
+CONFIGAGENT  rwuser -s tsm foobar.example.com authpriv
+CONFIGAGENT  rwuser -s tsm 127.0.0.1 authpriv
+CONFIGAGENT  rwuser -s tsm user8@test.net-snmp.org authpriv
+CONFIGAGENT  rwuser -s tsm user9@test.net-snmp.org authpriv
+CONFIGAGENT  rwuser -s tsm user10@test.net-snmp.org authpriv
+CONFIGAGENT  rwuser -s tsm afileuser authpriv
+CONFIGAGENT  rwuser -s tsm causerdirectmap authpriv
+CONFIGAGENT  rwuser -s tsm causerdirect9cmap authpriv
+
+
+# this file contains tests common to both tls and dtls usages
+
+# start the agent up
+FLAGS="-Dtls -v3 -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+
+STARTAGENT
+
+# shouldn't have config errors
+CHECKAGENTCOUNT 0 ": Error:"
+
+######################################################################
+# EXTENDED CERTIFICATE SETUP
+#
+# Perform more steps of configuration that should occur *after* the
+# agent has started in order to prevent it from having seen these
+# files ahead of time.
+
+# this user's fingerprint should not be recognized 
+CAPTURE $NSCERT gencert -t unknownuser --san email:unknownuser@example.com  $NSCERTARGS
+UNKNOWNUSER=`$NSCERT showcerts --fingerprint --brief unknownuser $NSCERTARGS`
+CHECKVALUEISNT "$UNMAPPEDFP" "" "generated fingerprint for unknownuser certificate"
+
+# this user's fingerprint should not be directly recognized, but it's
+# CA should.
+
+# user 10: CA signed cert
+CAPTURE $NSCERT gencert -D -t unknowncauser --cn unknowncauser@net-snmp.org --email unknowncauser@net-snmp.org  --with-ca ca-net-snmp.org --san email:user10@test.net-snmp.org $NSCERTARGS
+UNKNOWNCAUSERFP=`$NSCERT showcerts --fingerprint --brief unknowncauser $NSCERTARGS`
+CHECKVALUEISNT "$UNKNOWNCAUSERFP" "" "generated fingerprint for unknowncauser certificate"
+
+######################################################################
+# ACTUAL TESTS
+#
+# Run the actual list of tests
+#
+
+# using user 1 - a common name mapped certificate
+# (using the default "snmpapp" certificate because we don't specify another)
+DOSETTEST user1SnmpApp "$FLAGS"
+
+# now rerun the test after specifying our default using the (same) fingerprint
+CONFIGAPP   clientCert  	  $TESTUSER2FP
+DOSETTEST user1ClientPub "$FLAGS"
+
+# using user 2 - a common name mapped certificate with a direct -T FP request
+DOSETTEST user2DashTFPFlag "-T our_identity=$OTHERUSERFP $FLAGS"
+
+CHECKAGENTCOUNT 4  "otheruser"
+
+# using user 2, specifying the file name instead of the fingerprint
+DOSETTEST user2DashTFileFlag "-T our_identity=otheruser $FLAGS"
+
+CHECKAGENTCOUNT 8  "otheruser"
+
+# using user 3 - an invalid certificate (mapped but not authorized)
+DOFAILSETTEST "invalidUnauthorizedCert" "-T our_identity=$INVALIDUSERFP $FLAGS"
+
+CHECK "authorizationError"
+
+# using user 4 - an unmapped certificate
+DOFAILSETTEST "unmappedCertificate" "-T our_identity=$UNMAPPEDFP $FLAGS"
+
+CHECK "failed rfc5343"
+
+# Check *their* certificate with a different one than expected; should fail
+DOFAILSETTEST "incorectServerCertificate" "-r 0 -T our_identity=$OTHERUSERFP -T their_identity=$OTHERUSERFP $FLAGS"
+
+CHECK "failed to verify ssl certificate"
+
+# using user 5 - a completely remapped certificate (direct specified secname)
+DOSETTEST user5RemappedSecname "-T our_identity=$MAPPEDUSERFP $FLAGS"
+
+# using user 6 - a subjectAltName=email certificate mapping
+DOSETTEST user6SANEmail "-T our_identity=$EMAILUSERFP $FLAGS"
+
+# using user 7 - a subjectAltName=dns certificate mapping
+DOSETTEST user7SANDNS "-T our_identity=$DNSUSERFP $FLAGS"
+
+# using user 8 - a subjectAltName=ipv4 certificate mapping
+DOSETTEST user8SANIP "-T our_identity=$IPUSERFP $FLAGS"
+
+# using user 8 - test that certmapping works from a local filename
+DOSETTEST afileuser "-T our_identity=afile $FLAGS"
+
+# using user 9 - a CA signed certificate
+DOSETTEST user9CASignedCert "-T our_identity=$CAUSERFP -T trust_cert=$CAFP $FLAGS"
+
+# using user 9b - a CA signed certificate with a user-based fp mapping
+DOSETTEST user9bCASignedDirectMap "-T our_identity=$CADIRECTFP $FLAGS"
+
+# using user 9c - a CA2 signed certificate with a user-based fp mapping
+DOSETTEST user9cCASignedDirectMap "-T our_identity=$CADIRECT9CFP $FLAGS"
+
+# using user 9d - a CA2 signed certificate no user-based fp mapping
+DOFAILSETTEST user9dCASignedDirectMap "-T our_identity=$CADIRECT9DFP $FLAGS"
+
+# using user unknown - the server will not have seen this fingerprint at all
+CAPTURE "snmpget -T our_identity=$UNKNOWNUSER -T trust_cert=$CAFP $FLAGS .1.3.6.1.2.1.1.6.0"
+
+# different types of failure messaages for tls/dtls...
+if [ $SNMP_TRANSPORT_SPEC = dtlsudp ]; then
+    CHECK              "failed rfc5343 contextEngineID probing"
+    CHECKAGENTCOUNT  1 "TLS Error: no certificate returned"
+else
+    CHECK              "failed to ssl_connect"
+    CHECKAGENTCOUNT  1 "Failed SSL_accept"
+fi
+
+# using the user without a known fingerprint but with a known CA
+DOSETTEST userNewFromCA " -T trust_cert=$CAFP -T our_identity=$UNKNOWNCAUSERFP $FLAGS"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/STlsVars b/testing/fulltests/tls/STlsVars
new file mode 100644
index 0000000..bba84f9
--- /dev/null
+++ b/testing/fulltests/tls/STlsVars
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPTRAPD_PORT
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+export NET_SNMP_CRT_CFGTOOL="${builddir}/net-snmp-config"
+NSCERT="perl $SNMP_BASEDIR/../../../local/net-snmp-cert -I"
+NSCERTARGS="-C $SNMP_TMPDIR"
+
+DOSETTEST() {
+  value=$1
+  args=$2
+
+  # SNMPv2-MIB::sysLocation.0
+  CAPTURE "snmpset $args .1.3.6.1.2.1.1.6.0 s '$value'"
+
+  CAPTURE "snmpget $args .1.3.6.1.2.1.1.6.0"
+
+  CHECK "STRING: '$value'"
+}
+
+
+DOFAILSETTEST() {
+  value=$1
+  args=$2
+
+  # SNMPv2-MIB::sysLocation.0
+  CAPTURE "snmpset $args .1.3.6.1.2.1.1.6.0 s '$value'"
+
+  CAPTURE "snmpget $args .1.3.6.1.2.1.1.6.0"
+
+  CHECKCOUNT 0 "$value"
+}
+
+DOTRAPTEST() {
+  value=$1
+  args=$2
+
+  # IF-MIB::linkUp
+  CAPTURE "snmptrap $args 0 .1.3.6.1.6.3.1.1.5.4 system.sysContact.0 s $value"
+
+  CHECKTRAPD "STRING: $value"
+}
+
+DOFAILTRAPTEST() {
+  value=$1
+  args=$2
+
+  # IF-MIB::linkUp
+  CAPTURE "snmptrap $args 0 .1.3.6.1.6.3.1.1.5.4 system.sysContact.0 s $value"
+
+  CHECKTRAPDCOUNT 0 "$value"
+}
+
diff --git a/testing/fulltests/tls/STsmPrefix b/testing/fulltests/tls/STsmPrefix
new file mode 100644
index 0000000..ec0f8d6
--- /dev/null
+++ b/testing/fulltests/tls/STsmPrefix
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+. STlsVars
+
+# this file contains tests common to both tls and dtls usages
+
+export NET_SNMP_CRT_CFGTOOL="${builddir}/net-snmp-config"
+NSCERT="perl $SNMP_BASEDIR/../../../local/net-snmp-cert"
+NSCERTARGS="-I -C $SNMP_TMPDIR"
+
+TLSDIR=$SNMP_TMPDIR/tls
+
+#########################################
+# Create the certificates
+
+# create the ca
+CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
+
+# snmpd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpd --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
+
+# user
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+# user2
+CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp2 --cn 'testuser2'  $NSCERTARGS
+TESTUSER2FP=`$NSCERT showcerts --fingerprint --brief snmpapp2 $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSER2FP" "" "generated fingerprint for testuser2 certificate"
+
+CONFIGAPP serverCert $SERVERFP
+CONFIGAGENT certSecName 9  $TESTUSERFP     --cn
+CONFIGAGENT certSecName 10  $TESTUSER2FP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+CONFIGAGENT  rwuser -s tsm $TSM_PREFIX:testuser2 authpriv
+CONFIGAGENT rocommunity public
+
+#
+# Start the agent
+#
+AGENT_FLAGS="-Dtsm udp:9999"
+FLAGS="-On $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+STARTAGENT
+
+CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.190.1.2.1.0"
+CHECK ".1.3.6.1.2.1.190.1.2.1.0 = INTEGER: false"
+
+# using user 1 - a common name mapped certificate
+# (using the default "snmpapp" certificate because we don't specify another)
+CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECK       ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+# using user 2 should now fail because no prefix is applied
+CAPTURE "snmpget -T our_identity=snmpapp2 -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+CHECK "authorizationError"
+
+# set the TSM prefix scalar to 1 to turn on prefixing
+CAPTURE "snmpset -Dssl $FLAGS .1.3.6.1.2.1.190.1.2.1.0 i 1"
+
+
+# using user 2 should now work and the prefix should have been added
+# to the securityName, so the agent now accepts it
+CAPTURE "snmpget -T our_identity=snmpapp2 -Dssl $FLAGS .1.3.6.1.2.1.190.1.2.1.0"
+
+CHECK ".1.3.6.1.2.1.190.1.2.1.0 = INTEGER: true"
+
+# using user 1 should now fail because the prefix has added to the
+# securityName, so the agent now accepts it
+CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+CHECK "authorizationError"
+
+CAPTURE "snmpget -v 1 -c public 127.0.0.1:9999 .1.3.6.1.2.1.190.1.2.1.0"
+
+# cleanup
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/tls/T101DtlsUser_simple b/testing/fulltests/tls/T101DtlsUser_simple
new file mode 100755
index 0000000..10caede
--- /dev/null
+++ b/testing/fulltests/tls/T101DtlsUser_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP user certificate tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsUsers
diff --git a/testing/fulltests/tls/T102TlsUser_simple b/testing/fulltests/tls/T102TlsUser_simple
new file mode 100644
index 0000000..a3fe119
--- /dev/null
+++ b/testing/fulltests/tls/T102TlsUser_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP user certificate tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsUsers
diff --git a/testing/fulltests/tls/T111DtlsServer_simple b/testing/fulltests/tls/T111DtlsServer_simple
new file mode 100644
index 0000000..6b42494
--- /dev/null
+++ b/testing/fulltests/tls/T111DtlsServer_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP server certificate tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsName
diff --git a/testing/fulltests/tls/T112TlsServer_simple b/testing/fulltests/tls/T112TlsServer_simple
new file mode 100644
index 0000000..adefa94
--- /dev/null
+++ b/testing/fulltests/tls/T112TlsServer_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP server certificate tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsName
diff --git a/testing/fulltests/tls/T113DtlsSan_simple b/testing/fulltests/tls/T113DtlsSan_simple
new file mode 100644
index 0000000..1edb3c5
--- /dev/null
+++ b/testing/fulltests/tls/T113DtlsSan_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP server SAN tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsSan
diff --git a/testing/fulltests/tls/T114TlsSan_simple b/testing/fulltests/tls/T114TlsSan_simple
new file mode 100644
index 0000000..af5e8bc
--- /dev/null
+++ b/testing/fulltests/tls/T114TlsSan_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP server SAN tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsSan
diff --git a/testing/fulltests/tls/T115DtlsSanSession_simple b/testing/fulltests/tls/T115DtlsSanSession_simple
new file mode 100644
index 0000000..b9d5fcd
--- /dev/null
+++ b/testing/fulltests/tls/T115DtlsSanSession_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP server SAN tests using session desthost
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsSanSession
diff --git a/testing/fulltests/tls/T116TlsSanSession_simple b/testing/fulltests/tls/T116TlsSanSession_simple
new file mode 100644
index 0000000..191fcf3
--- /dev/null
+++ b/testing/fulltests/tls/T116TlsSanSession_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP server SAN tests using session desthost
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsSanSession
diff --git a/testing/fulltests/tls/T117DtlsCNSession_simple b/testing/fulltests/tls/T117DtlsCNSession_simple
new file mode 100644
index 0000000..0beea55
--- /dev/null
+++ b/testing/fulltests/tls/T117DtlsCNSession_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP server commonName tests using session desthost
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsCNSession
diff --git a/testing/fulltests/tls/T118TlsCNSession_simple b/testing/fulltests/tls/T118TlsCNSession_simple
new file mode 100644
index 0000000..305ab46
--- /dev/null
+++ b/testing/fulltests/tls/T118TlsCNSession_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP server commonName tests using session desthost
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsCNSession
diff --git a/testing/fulltests/tls/T121DtlsTrap_simple b/testing/fulltests/tls/T121DtlsTrap_simple
new file mode 100644
index 0000000..5c7c7bc
--- /dev/null
+++ b/testing/fulltests/tls/T121DtlsTrap_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP trap tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsTrapdUser
diff --git a/testing/fulltests/tls/T122TlsTrap_simple b/testing/fulltests/tls/T122TlsTrap_simple
new file mode 100644
index 0000000..e8aee17
--- /dev/null
+++ b/testing/fulltests/tls/T122TlsTrap_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP trap tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsTrapdUser
diff --git a/testing/fulltests/tls/T131DtlsAgentTrap_simple b/testing/fulltests/tls/T131DtlsAgentTrap_simple
new file mode 100644
index 0000000..846faa9
--- /dev/null
+++ b/testing/fulltests/tls/T131DtlsAgentTrap_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP agent trap tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+
+. ./STlsAgentTrap
diff --git a/testing/fulltests/tls/T132TlsAgentTrap_simple b/testing/fulltests/tls/T132TlsAgentTrap_simple
new file mode 100644
index 0000000..cb44013
--- /dev/null
+++ b/testing/fulltests/tls/T132TlsAgentTrap_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP agent trap tests
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+
+. ./STlsAgentTrap
diff --git a/testing/fulltests/tls/T141DtlsCrl_simple b/testing/fulltests/tls/T141DtlsCrl_simple
new file mode 100644
index 0000000..92a8e4f
--- /dev/null
+++ b/testing/fulltests/tls/T141DtlsCrl_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP CRL Handling
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. ./SCrl
diff --git a/testing/fulltests/tls/T142TlsCrl_simple b/testing/fulltests/tls/T142TlsCrl_simple
new file mode 100644
index 0000000..2723c13
--- /dev/null
+++ b/testing/fulltests/tls/T142TlsCrl_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP CRL Handling
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. ./SCrl
diff --git a/testing/fulltests/tls/T151DtlsCiphers_simple b/testing/fulltests/tls/T151DtlsCiphers_simple
new file mode 100644
index 0000000..6cbbec4
--- /dev/null
+++ b/testing/fulltests/tls/T151DtlsCiphers_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP Cipher Selection
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. SCipherTests
diff --git a/testing/fulltests/tls/T152TlsCiphers_simple b/testing/fulltests/tls/T152TlsCiphers_simple
new file mode 100644
index 0000000..c828dc9
--- /dev/null
+++ b/testing/fulltests/tls/T152TlsCiphers_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP Cipher Selection
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. SCipherTests
diff --git a/testing/fulltests/tls/T200TlsIpv6_simple b/testing/fulltests/tls/T200TlsIpv6_simple
new file mode 100644
index 0000000..5e37f4c
--- /dev/null
+++ b/testing/fulltests/tls/T200TlsIpv6_simple
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP over IPV6
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+SKIPIFNOT NETSNMP_TRANSPORT_TLSIPV6_DOMAIN
+
+# ensure we have a localhost6 entry
+
+# XXX: this stems from broken issues in openssl that refuse [::1]:
+# style accept strings (it works for client connections).
+grep localhost6 /etc/hosts > /dev/null 2>&1
+if [ $? = 1 ] ; then
+    SKIP This test requires a localhost6 entry in /etc/hosts
+fi
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+SNMP_TEST_DEST='localhost6:'
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. ../transports/Stlstests
diff --git a/testing/fulltests/tls/T300TlsPerl.t b/testing/fulltests/tls/T300TlsPerl.t
new file mode 100644
index 0000000..fb8edb9
--- /dev/null
+++ b/testing/fulltests/tls/T300TlsPerl.t
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+
+# HEADER Perl TLS/TCP Test
+
+$agentaddress = "tlstcp:localhost:9875";
+$feature = "NETSNMP_TRANSPORT_TLSTCP_DOMAIN";
+
+do "$ENV{'srcdir'}/testing/fulltests/tls/S300tlsperl.pl";
diff --git a/testing/fulltests/tls/T301DtlsPerl.t b/testing/fulltests/tls/T301DtlsPerl.t
new file mode 100644
index 0000000..3d980c7
--- /dev/null
+++ b/testing/fulltests/tls/T301DtlsPerl.t
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+
+# HEADER Perl DTLS/UDP Test
+
+$agentaddress = "dtlsudp:localhost:9875";
+$feature = "NETSNMP_TRANSPORT_TLSTCP_DOMAIN";
+
+do "$ENV{'srcdir'}/testing/fulltests/tls/S300tlsperl.pl";
diff --git a/testing/fulltests/tls/T401DtlsTsmPrefix_simple b/testing/fulltests/tls/T401DtlsTsmPrefix_simple
new file mode 100644
index 0000000..dc85ad9
--- /dev/null
+++ b/testing/fulltests/tls/T401DtlsTsmPrefix_simple
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TSM prefixing support for DTLS/UDP
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+TSM_PREFIX=dtls
+
+. ./STsmPrefix
diff --git a/testing/fulltests/tls/T402TlsTsmPrefix_simple b/testing/fulltests/tls/T402TlsTsmPrefix_simple
new file mode 100644
index 0000000..0c62eef
--- /dev/null
+++ b/testing/fulltests/tls/T402TlsTsmPrefix_simple
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TSM prefixing support for TLS/TCP
+
+SKIPIFNOT NETSNMP_TRANSPORT_TLSTCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+TSM_PREFIX=tls
+
+. ./STsmPrefix
diff --git a/testing/fulltests/transports/Stlstests b/testing/fulltests/transports/Stlstests
new file mode 100644
index 0000000..21b2b82
--- /dev/null
+++ b/testing/fulltests/transports/Stlstests
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# this file contains tests common to both tls and dtls usages
+
+export NET_SNMP_CRT_CFGTOOL="${builddir}/net-snmp-config"
+NSCERT="perl $SNMP_BASEDIR/../../../local/net-snmp-cert -I"
+NSCERTARGS="-C $SNMP_TMPDIR"
+
+#########################################
+# Create the certificates
+
+# snmpd
+HOSTNAME=`hostname`
+CAPTURE $NSCERT gencert -t snmpd   --cn $HOSTNAME $NSCERTARGS
+SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
+CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
+
+# user
+CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
+TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
+CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
+
+########################################
+# Configure the .conf files
+
+CONFIGAPP serverCert $SERVERFP
+
+# common name mappings
+CONFIGAGENT certSecName 9  $TESTUSERFP     --cn
+CONFIGAGENT  rwuser -s tsm testuser authpriv
+
+######################################################################
+# Run the actual list of tests
+#
+
+# start the agent up
+FLAGS="-On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+
+STARTAGENT
+
+# using user 1 - a common name mapped certificate
+# (using the default "snmpapp" certificate because we don't specify another)
+CAPTURE "snmpget $FLAGS .1.3.6.1.2.1.1.3.0"
+
+CHECK       ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/tests/Stransport b/testing/fulltests/transports/Stransport
similarity index 83%
rename from testing/tests/Stransport
rename to testing/fulltests/transports/Stransport
index afdb131..b33ff577 100755
--- a/testing/tests/Stransport
+++ b/testing/fulltests/transports/Stransport
@@ -1,9 +1,11 @@
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
 export SNMP_TRANSPORT_SPEC
 export SNMP_SNMPD_PORT
 export SNMP_TEST_DEST
 
 # configure the agent to accept user initial with noAuthNoPriv
-. ./Sv3config
+. ../default/Sv3config
 
 STARTAGENT
 
diff --git a/testing/fulltests/transports/T300udp_simple b/testing/fulltests/transports/T300udp_simple
new file mode 100644
index 0000000..65a67f0
--- /dev/null
+++ b/testing/fulltests/transports/T300udp_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER UDP Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_UDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=udp
+
+. ./Stransport
diff --git a/testing/tests/T310tcp b/testing/fulltests/transports/T310tcp_simple
similarity index 68%
rename from testing/tests/T310tcp
rename to testing/fulltests/transports/T310tcp_simple
index 6349bf3..50c6a8a 100644
--- a/testing/tests/T310tcp
+++ b/testing/fulltests/transports/T310tcp_simple
@@ -1,10 +1,9 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER TCP Transport
 
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIFNOT NETSNMP_TRANSPORT_TCP_DOMAIN
 
 #
diff --git a/testing/tests/T320udpv6 b/testing/fulltests/transports/T320udpv6_simple
similarity index 72%
rename from testing/tests/T320udpv6
rename to testing/fulltests/transports/T320udpv6_simple
index 54260b2..6a607c6 100644
--- a/testing/tests/T320udpv6
+++ b/testing/fulltests/transports/T320udpv6_simple
@@ -1,10 +1,9 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER UDP6 Transport
 
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIFNOT NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
 
 #
diff --git a/testing/tests/T330tcpv6 b/testing/fulltests/transports/T330tcpv6_simple
similarity index 72%
rename from testing/tests/T330tcpv6
rename to testing/fulltests/transports/T330tcpv6_simple
index bf39951..09eb350 100644
--- a/testing/tests/T330tcpv6
+++ b/testing/fulltests/transports/T330tcpv6_simple
@@ -1,10 +1,9 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER TCP6 Transport
 
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIFNOT NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
 
 #
diff --git a/testing/tests/T350unix b/testing/fulltests/transports/T350unix_simple
similarity index 77%
rename from testing/tests/T350unix
rename to testing/fulltests/transports/T350unix_simple
index cfd96a0..053ba1f 100644
--- a/testing/tests/T350unix
+++ b/testing/fulltests/transports/T350unix_simple
@@ -1,10 +1,9 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER Unix Transport
 
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
 SKIPIFNOT NETSNMP_TRANSPORT_UNIX_DOMAIN
 
 #
diff --git a/testing/fulltests/transports/T360dtlsudp_simple b/testing/fulltests/transports/T360dtlsudp_simple
new file mode 100644
index 0000000..5899378
--- /dev/null
+++ b/testing/fulltests/transports/T360dtlsudp_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DTLS-UDP Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=dtlsudp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. ./Stlstests
diff --git a/testing/fulltests/transports/T361tlstcp_simple b/testing/fulltests/transports/T361tlstcp_simple
new file mode 100644
index 0000000..7972a2e
--- /dev/null
+++ b/testing/fulltests/transports/T361tlstcp_simple
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TLS-TCP Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tlstcp
+export SNMP_TRANSPORT_SPEC
+export SNMP_SNMPD_PORT
+export SNMP_TEST_DEST
+
+. ./Stlstests
diff --git a/testing/tests/T399alias b/testing/fulltests/transports/T399alias_simple
similarity index 87%
rename from testing/tests/T399alias
rename to testing/fulltests/transports/T399alias_simple
index d874e35..5f48311 100644
--- a/testing/tests/T399alias
+++ b/testing/fulltests/transports/T399alias_simple
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. ../eval_tools.sh
+. ../support/simple_eval_tools.sh
 
 HEADER ALIAS Transport
 
@@ -12,7 +12,7 @@
 #
 
 # configure the agent to accept user initial with noAuthNoPriv
-. ./Sv3config
+. ../default/Sv3config
 
 CONFIGAPP alias aliastest udp:localhost:$SNMP_SNMPD_PORT
 CONFIGAGENT '[snmp]' alias aliastest udp:localhost:$SNMP_SNMPD_PORT
diff --git a/testing/tests/test-localhost.cert b/testing/fulltests/transports/test-localhost.cert
similarity index 100%
rename from testing/tests/test-localhost.cert
rename to testing/fulltests/transports/test-localhost.cert
diff --git a/testing/tests/test-localhost.priv b/testing/fulltests/transports/test-localhost.priv
similarity index 100%
rename from testing/tests/test-localhost.priv
rename to testing/fulltests/transports/test-localhost.priv
diff --git a/testing/tests/test-user.cert b/testing/fulltests/transports/test-user.cert
similarity index 100%
rename from testing/tests/test-user.cert
rename to testing/fulltests/transports/test-user.cert
diff --git a/testing/tests/test-user.priv b/testing/fulltests/transports/test-user.priv
similarity index 100%
rename from testing/tests/test-user.priv
rename to testing/fulltests/transports/test-user.priv
diff --git a/testing/fulltests/unit-tests/T001defaultstore_clib.c b/testing/fulltests/unit-tests/T001defaultstore_clib.c
new file mode 100644
index 0000000..0144f7d
--- /dev/null
+++ b/testing/fulltests/unit-tests/T001defaultstore_clib.c
@@ -0,0 +1,35 @@
+/* HEADER Testing the default_store API */
+int i, j;
+char buf[1024];
+
+/* first we load everything up */
+
+for(i = 0; i < NETSNMP_DS_MAX_IDS; i++) {
+    /* booleans */
+    for(j = 0; j < NETSNMP_DS_MAX_SUBIDS; j++) {
+        OKF(SNMPERR_SUCCESS == netsnmp_ds_set_boolean(i, j, (i*j)%2),
+            ("default store boolean: setting %d/%d returned failure", i, j));
+        OKF(SNMPERR_SUCCESS == netsnmp_ds_set_int(i, j, i*j),
+            ("default store int: setting %d/%d returned failure", i, j));
+        sprintf(buf,"%d/%d", i, j);
+        OKF(SNMPERR_SUCCESS == netsnmp_ds_set_string(i, j, buf),
+            ("default store string: setting %d/%d returned failure", i, j));
+    }
+}
+    
+/* then we check all the values */
+
+for(i = 0; i < NETSNMP_DS_MAX_IDS; i++) {
+    /* booleans */
+    for(j = 0; j < NETSNMP_DS_MAX_SUBIDS; j++) {
+        OKF(netsnmp_ds_get_boolean(i, j) == (i*j)%2,
+            ("default store boolean %d/%d was the expected value", i, j));
+        OKF(netsnmp_ds_get_int(i, j) == (i*j),
+            ("default store int %d/%d was the expected value", i, j));
+        sprintf(buf,"%d/%d", i, j);
+        OKF(strcmp(netsnmp_ds_get_string(i, j), buf) == 0,
+            ("default store string %d/%d was the expected value", i, j));
+    }
+}
+
+netsnmp_ds_shutdown();
diff --git a/testing/fulltests/unit-tests/T002containers_clib.c b/testing/fulltests/unit-tests/T002containers_clib.c
new file mode 100644
index 0000000..99b2e94
--- /dev/null
+++ b/testing/fulltests/unit-tests/T002containers_clib.c
@@ -0,0 +1,35 @@
+/* HEADER Testing the container API */
+
+netsnmp_container *container;
+void *p;
+
+init_snmp("container-test");
+container = netsnmp_container_find("fifo");
+container->compare = (netsnmp_container_compare*) strcmp;
+
+CONTAINER_INSERT(container, "foo");
+CONTAINER_INSERT(container, "bar");
+CONTAINER_INSERT(container, "baz");
+
+OK(CONTAINER_FIND(container, "bar") != NULL,
+   "should be able to find the stored 'bar' string");
+
+OK(CONTAINER_FIND(container, "foobar") == NULL,
+   "shouldn't be able to find the (not) stored 'foobar' string");
+
+OK(CONTAINER_SIZE(container) == 3,
+   "container has the proper size for the elements we've added");
+
+CONTAINER_REMOVE(container, "bar");
+
+OK(CONTAINER_FIND(container, "bar") == NULL,
+   "should no longer be able to find the (reoved) 'bar' string");
+
+OK(CONTAINER_SIZE(container) == 2,
+   "container has the proper size for the elements after a removal");
+
+while ((p = CONTAINER_FIRST(container)))
+  CONTAINER_REMOVE(container, p);
+CONTAINER_FREE(container);
+
+snmp_shutdown("container-test");
diff --git a/testing/fulltests/unit-tests/T003copy_nword_clib.c b/testing/fulltests/unit-tests/T003copy_nword_clib.c
new file mode 100644
index 0000000..7d67ed0
--- /dev/null
+++ b/testing/fulltests/unit-tests/T003copy_nword_clib.c
@@ -0,0 +1,142 @@
+/* HEADER Testing copy_nword */
+
+#define ASSERT1(cond)                                           \
+  do {                                                          \
+    ++__test_counter;                                           \
+    if ((cond))                                                 \
+      printf("ok %d\n", __test_counter);                        \
+    else {                                                      \
+      printf("not ok %d - %d: %s failed\n",                     \
+             __test_counter, __LINE__, #cond);                  \
+    }                                                           \
+  } while (0)
+
+#define ASSERT2(cond, on_error)                                 \
+  do {                                                          \
+    ++__test_counter;                                           \
+    if ((cond))                                                 \
+      printf("ok %d\n", __test_counter);                        \
+    else {                                                      \
+      printf("not ok %d - %d: %s failed, ",                     \
+             __test_counter, __LINE__, #cond);                  \
+      printf on_error ;                                         \
+    }                                                           \
+  } while (0)
+
+{
+  /* A quoted string */
+  char input[] = "\"The red rose\"";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The red rose") == 0,
+          ("output = >%s<\n", output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Escaped quotes */
+  char input[] = "\\\"The red rose\\\"";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "\"The") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == input + 6,
+          ("run = input + %" NETSNMP_PRIz "d\n", run - input));
+  run = copy_nword(run, output, sizeof(output));
+  ASSERT2(strcmp(output, "red") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == input + 10,
+          ("run = input + %" NETSNMP_PRIz "d\n", run - input));
+  run = copy_nword(run, output, sizeof(output));
+  ASSERT2(strcmp(output, "rose\"") == 0, ("output = >%s<\n", output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Unterminated "-quote */
+  char input[] = "\"The";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The") == 0, ("output = >%s<\n", output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Unterminated '-quote */
+  char input[] = "\'The";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The") == 0, ("output = >%s<\n", output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Extract from NULL */
+  char output[10] = "";
+  char* run = NULL;
+  run = copy_nword(run, output, sizeof(output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Extract to NULL */
+  char input[] = "The red rose";
+  char* output = NULL;
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Long token */
+  char input[] = "\"Very long token that overflows the buffer\" foo";
+  char output[10] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "Very long") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == input + 44,
+          ("run = input + %" NETSNMP_PRIz "d\n", run - input));
+}
+
+{
+  /* Quoted end of string / embedded \0 */
+  char input[] = "The\\\0red rose";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The\\") == 0, ("output = >%s<\n", output));
+  ASSERT1(run == NULL);
+}
+
+{
+  /* Empty string */
+  char input[] = "";
+  char output[sizeof(input) + 1] = "X";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == NULL, ("run = >%s<\n", run));
+}
+
+{
+  /* Whitespace string */
+  char input[] = "    \t   ";
+  char output[sizeof(input)] = "X";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == NULL, ("run = >%s<\n", run));
+}
+
+{
+  /* Quote, no whitespace after */
+  char input[] = "\"The\"red rose";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == input + 5,
+          ("run = input + %" NETSNMP_PRIz "d\n", run - input));
+}
+
+{
+  /* Quote, no whitespace before */
+  char input[] = "The\"red\" rose";
+  char output[sizeof(input)] = "";
+  char* run = copy_nword(input, output, sizeof(output));
+  ASSERT2(strcmp(output, "The\"red\"") == 0, ("output = >%s<\n", output));
+  ASSERT2(run == input + 9,
+          ("run = input + %" NETSNMP_PRIz "d\n", run - input));
+}
diff --git a/testing/fulltests/unit-tests/T004snmp_enum_clib.c b/testing/fulltests/unit-tests/T004snmp_enum_clib.c
new file mode 100644
index 0000000..72ee5c9
--- /dev/null
+++ b/testing/fulltests/unit-tests/T004snmp_enum_clib.c
@@ -0,0 +1,105 @@
+/* HEADER Testing snmp_enum */
+
+#define CONFIG_TYPE "snmp-enum-unit-test"
+#define STRING1 "life, and everything"
+#define STRING2 "restaurant at the end of the universe"
+#define STRING3 "label3"
+#define LONG_STRING "a-string-of-255-characters-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
+
+#define STORE_AND_COMPARE(maj, min, s)                                  \
+    {                                                                   \
+        FILE *fp;                                                       \
+        int read = 0;                                                   \
+        char *p, contents[4096];                                        \
+                                                                        \
+        se_store_list(maj, min, CONFIG_TYPE);                           \
+        fp = fopen(tmp_persist_file, "r");                              \
+        if (fp) {                                                       \
+            read = fread(contents, 1, sizeof(contents) - 1, fp);        \
+            fclose(fp);                                                 \
+        }                                                               \
+        contents[read > 0 ? read : 0] = '\0';                           \
+        for (p = contents; *p; ++p)                                     \
+            if (*p == '\n')                                             \
+                *p = '|';                                               \
+        OKF(strcmp(contents, (s)) == 0,                                 \
+            ("stored list %s <> %s", (s), contents));                   \
+        remove(tmp_persist_file);                                       \
+    }
+
+char tmp_persist_file[256];
+char *se_find_result;
+
+sprintf(tmp_persist_file, "/tmp/snmp-enum-unit-test-%d", getpid());
+netsnmp_setenv("SNMP_PERSISTENT_FILE", tmp_persist_file, 1);
+
+init_snmp_enum("snmp");
+
+STORE_AND_COMPARE(1, 1, "enum 1:1|");
+
+se_add_pair(1, 1, strdup("hi"), 1);
+
+STORE_AND_COMPARE(1, 1, "enum 1:1 1:hi|");
+
+se_add_pair(1, 1, strdup("there"), 2);
+
+STORE_AND_COMPARE(1, 1, "enum 1:1 1:hi 2:there|");
+
+se_add_pair(1, 1, strdup(LONG_STRING), 3);
+se_add_pair(1, 1, strdup(LONG_STRING), 4);
+se_add_pair(1, 1, strdup(LONG_STRING), 5);
+se_add_pair(1, 1, strdup(LONG_STRING), 6);
+se_add_pair(1, 1, strdup(LONG_STRING), 7);
+se_add_pair(1, 1, strdup(LONG_STRING), 8);
+se_add_pair(1, 1, strdup(LONG_STRING), 9);
+
+STORE_AND_COMPARE(1, 1, "enum 1:1 1:hi 2:there 3:" LONG_STRING " 4:" LONG_STRING
+                 " 5:" LONG_STRING " 6:" LONG_STRING " 7:" LONG_STRING
+                 " 8:" LONG_STRING " 9:" LONG_STRING "|");
+
+se_add_pair(1, 1, strdup(LONG_STRING), 10);
+
+STORE_AND_COMPARE(1, 1, "enum 1:1 1:hi 2:there 3:" LONG_STRING " 4:" LONG_STRING
+                 " 5:" LONG_STRING " 6:" LONG_STRING " 7:" LONG_STRING
+                 " 8:" LONG_STRING " 9:" LONG_STRING "|"
+                 "enum 1:1 10:" LONG_STRING "|");
+
+OK(se_find_value(1, 1, "hi") == 1,
+   "lookup by number #1 should be the proper string");
+OK(strcmp(se_find_label(1, 1, 2), "there") == 0,
+   "lookup by string #1 should be the proper number");
+
+
+se_add_pair_to_slist("testing", strdup(STRING1), 42);
+se_add_pair_to_slist("testing", strdup(STRING2), 2);
+se_add_pair_to_slist("testing", strdup(STRING3), 2);
+    
+OK(se_find_value_in_slist("testing", STRING1) == 42,
+   "lookup by number should be the proper string");
+OK(strcmp(se_find_label_in_slist("testing", 2), STRING2) == 0,
+   "lookup by string should be the proper number");
+
+se_clear_slist("testing");
+
+
+se_read_conf("enum",
+             NETSNMP_REMOVE_CONST(char *, "2:3 1:apple 2:pear 3:kiwifruit"));
+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")
+  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")
+}
+
+se_read_conf("enum",
+             NETSNMP_REMOVE_CONST(char *, "fruit 1:apple 2:pear 3:kiwifruit"));
+OK(se_find_value_in_slist("fruit", "kiwifruit") == 3,
+   "lookup by string should return the proper value");
+se_find_result = se_find_label_in_slist("fruit", 2);
+OK(se_find_result && strcmp(se_find_result, "pear") == 0,
+   "lookup by value should return the proper string");
+
+clear_snmp_enum();
+unregister_all_config_handlers();
diff --git a/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
new file mode 100644
index 0000000..f906c55
--- /dev/null
+++ b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
@@ -0,0 +1,56 @@
+/* HEADER Testing table_dataset */
+
+/*
+ * Note: the primary purpose of this unit test is to verify whether all memory
+ * that is allocated for storing a table dataset is freed properly. Feel free
+ * to extend this unit test such that it tests more of the table dataset code.
+ */
+
+enum { COL3 = 2, COL4 = 3, COL5 = 4, };
+
+static const oid Oid[] = { 1, 3, 6, 1, 3, 277 };
+netsnmp_table_data_set* tds;
+netsnmp_handler_registration* th;
+netsnmp_table_row* row;
+int32_t ival;
+int32_t i, j;
+
+init_snmp("snmpd");
+
+tds = netsnmp_create_table_data_set("table_dataset unit-test");
+OK(tds, "table data set creation");
+
+netsnmp_table_dataset_add_index(tds, ASN_INTEGER);
+netsnmp_table_dataset_add_index(tds, ASN_INTEGER);
+netsnmp_table_set_add_default_row(tds, COL3, ASN_INTEGER,   FALSE, NULL, 0);
+netsnmp_table_set_add_default_row(tds, COL4, ASN_COUNTER,   FALSE, NULL, 0);
+netsnmp_table_set_add_default_row(tds, COL5, ASN_OCTET_STR, FALSE, NULL, 0);
+
+th = netsnmp_create_handler_registration("unit-test handler", NULL, Oid,
+                                         OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
+OK(th, "table handler registration");
+
+OK(netsnmp_register_table_data_set(th, tds, NULL) == SNMPERR_SUCCESS,
+   "table data set registration");
+
+for (i = 1; i <= 2; i++) {
+    for (j = 1; j <= 2; j++) {
+        row = netsnmp_create_table_data_row();
+        netsnmp_table_row_add_index(row, ASN_INTEGER, &i, sizeof(i));
+        netsnmp_table_row_add_index(row, ASN_INTEGER, &j, sizeof(j));
+        netsnmp_table_dataset_add_row(tds, row);
+
+        ival = 10 * i + j;
+        OK(netsnmp_set_row_column(row, COL3, ASN_INTEGER, &ival, sizeof(ival))
+           == SNMPERR_SUCCESS, "set INTEGER column");
+        OK(netsnmp_set_row_column(row, COL5, ASN_OCTET_STR, "test",
+                                  sizeof("test") - 1)
+           == SNMPERR_SUCCESS, "set OCTET_STR column");
+    }
+}
+
+netsnmp_delete_table_data_set(tds);
+
+snmp_shutdown("snmpd");
+
+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
new file mode 100644
index 0000000..aef42d1
--- /dev/null
+++ b/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c
@@ -0,0 +1,29 @@
+/* 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;
+
+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;
+
+OK(netsnmp_register_instance(handler) == MIB_REGISTERED_OK,
+   "MIB registration.");
+
+#if 0
+dh = netsnmp_handler_dup(handler->handler);
+OK(dh, "Handler duplication.");
+#endif
+
+OK(netsnmp_unregister_handler(handler) == SNMPERR_SUCCESS,
+   "Handler unregistration.");
+
+netsnmp_handler_free(dh);
+OK(TRUE, "Freeing duplicate handler");
+
+snmp_shutdown("snmp");
diff --git a/testing/fulltests/unit-tests/T007inet_pton_clib.c b/testing/fulltests/unit-tests/T007inet_pton_clib.c
new file mode 100644
index 0000000..e9b00fa
--- /dev/null
+++ b/testing/fulltests/unit-tests/T007inet_pton_clib.c
@@ -0,0 +1,60 @@
+/* HEADER Testing inet_pton() and inet_ntop() */
+
+int i;
+char str[128];
+struct in_addr in_addr;
+struct in6_addr in6_addr;
+
+static const struct { const char* s; unsigned char b[4]; } in_testdata[] = {
+    { "0.0.0.0",         {   0,   0,   0,   0 } },
+    { "1.2.3.4",         {   1,   2,   3,   4 } },
+    { "255.255.255.255", { 255, 255, 255, 255 } },
+};
+
+static const struct { const char* s; unsigned char b[16]; } in6_testdata[] = {
+    { "::",   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, },
+    { "::1",  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, },
+    { "1::",  { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, },
+    { "1::1", { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, },
+};
+
+for (i = 0; i < sizeof(in_testdata)/sizeof(in_testdata[0]); ++i) {
+    const unsigned char *const b = in_testdata[i].b;
+
+    OKF(inet_pton(AF_INET, in_testdata[i].s, &in_addr) == 1,
+	("IPv4 inet_pton(%s)", in_testdata[i].s));
+    OK(ntohl(in_addr.s_addr)
+       == ((b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]),
+       "inet_pton() value");
+    OK(inet_ntop(AF_INET, &in_addr, str, sizeof(str)) == str,
+       "IPv4 inet_ntop()");
+    OKF(strcmp(in_testdata[i].s, str) == 0,
+	("%s =?= %s", in_testdata[i].s, str));
+}
+
+
+for (i = 0; i < sizeof(in6_testdata)/sizeof(in6_testdata[0]); ++i) {
+    const unsigned char *const b = in6_testdata[i].b;
+    const unsigned char *const r = (void *)&in6_addr;
+    int result, j;
+
+    result = inet_pton(AF_INET6, in6_testdata[i].s, &in6_addr);
+    OKF(result == 1,
+	("IPv6 inet_pton(%s) -> %d; "
+	 " %02x%02x:%02x%02x:%02x%02x:%02x%02x"
+	 ":%02x%02x:%02x%02x:%02x%02x:%02x%02x",
+	 in6_testdata[i].s, result,
+	 r[0], r[1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7],
+	 r[8], r[9], r[10], r[11], r[12], r[13], r[14], r[15]
+	 ));
+    for (j = 0; j < 16; ++j)
+	printf("%02x ", b[j]);
+    printf("\n");
+    for (j = 0; j < 16; ++j)
+	OKF(r[j] == b[j],
+	    ("IPv6 inet_pton() value (%#02x =?= %#02x)", r[j], b[j]));
+    OK(inet_ntop(AF_INET6, &in6_addr, str, sizeof(str)) == str,
+       "IPv6 inet_ntop()");
+    OKF(strcmp(in6_testdata[i].s, str) == 0,
+	("%s =?= %s", in6_testdata[i].s, str));
+}
diff --git a/testing/fulltests/unit-tests/T008asn1_clib.c b/testing/fulltests/unit-tests/T008asn1_clib.c
new file mode 100644
index 0000000..73bb511
--- /dev/null
+++ b/testing/fulltests/unit-tests/T008asn1_clib.c
@@ -0,0 +1,330 @@
+/* HEADER Testing ASN.1 encoding and decoding */
+
+int i;
+
+#if 0
+snmp_set_do_debugging(TRUE);
+debug_register_tokens("dumpv_recv,dumpv_send,asn");
+#endif
+
+{
+    const long intval[] = {
+        -0x80000000L,
+        -0x7fffffffL,
+        -0xffffL,
+        -3,
+        -1,
+        0,
+        1,
+        3,
+        0xffff,
+        0x7fffffff,
+    };
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	long decoded_value = 0;
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_int(encoded, &encoded_length, ASN_INTEGER,
+				     &intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_int(%ld)", intval[i]));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_int(encoded, &decoded_length, &decoded_type,
+				     &decoded_value, sizeof(decoded_value));
+	OKF(parse_result == build_result && decoded_type == ASN_INTEGER
+	    && decoded_value == intval[i],
+	    ("asn_parse_int(asn_build_int(%ld)) %s; decoded type %d <> %d;"
+	     " decoded value %ld",
+	     intval[i], parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_INTEGER, decoded_value));
+
+        OKF(asn_realloc_rbuild_int(&rbuild_result, &rbuild_len, &offset, 1,
+                                   ASN_INTEGER, &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_int(%ld)", intval[i]));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_int(%ld) != asn_realloc_rbuild_int(%ld)",
+             intval[i], intval[i]));
+        free (rbuild_result);
+    }
+}
+
+{
+    const unsigned long intval[] = {
+	0, 1, 3, 0xffff, 0x7fffffff, 0x80000000U, 0xffffffffU
+    };
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	unsigned long decoded_value = 0;
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_unsigned_int(encoded, &encoded_length,
+					      ASN_UINTEGER,
+					      &intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_unsigned_int(%lu)", intval[i]));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_unsigned_int(encoded, &decoded_length,
+					      &decoded_type, &decoded_value,
+					      sizeof(decoded_value));
+	OKF(parse_result && decoded_type == ASN_UINTEGER
+	    && decoded_value == intval[i],
+	    ("asn_parse_unsigned_int(asn_build_unsigned_int(%lu)) %s;"
+	     " decoded type %d <> %d; decoded value %lu",
+	     intval[i], parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_UINTEGER, decoded_value));
+
+        OKF(asn_realloc_rbuild_unsigned_int(&rbuild_result, &rbuild_len,
+                                            &offset, 1, ASN_UINTEGER,
+                                            &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_unsigned_int(%lud)", intval[i]));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_unsigned_int(%ld) != "
+             "asn_realloc_rbuild_unsigned_int(%ld)",
+             intval[i], intval[i]));
+        free (rbuild_result);
+    }
+}
+
+#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+
+#define TOINT64(c) ((long long)(long)(c).high << 32 | (c).low)
+
+{
+    const struct counter64 intval[] = {
+	{ 0x80000000U,          0U },
+	{ 0x80000000U, 0xffffffffU },
+	{ 0xffffffffU,           0 },
+	{ 0xffffffffU, 0xffff0000U },
+	{ 0xffffffffU, 0xfffffffcU },
+	{ 0xffffffffU, 0xffffffffU },
+	{           0,           0 },
+	{           0,           1 },
+	{           0,           3 },
+	{           0,      0xffff },
+	{           0,  0x7fffffff },
+	{           1,           0 },
+	{           1,  0xffffffff },
+	{  0x7fffffff,           0 },
+	{  0x7fffffff,  0xdeadbeef },
+	{  0x7fffffff,  0xffffffff },
+    };
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	struct counter64 decoded_value = { };
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_signed_int64(encoded, &encoded_length,
+					      ASN_OPAQUE_I64,
+					      &intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_signed_int64(%lld)", TOINT64(intval[i])));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_signed_int64(encoded, &decoded_length,
+					      &decoded_type, &decoded_value,
+					      sizeof(decoded_value));
+	OKF(parse_result == build_result && decoded_type == ASN_OPAQUE_I64
+	    && memcmp(&decoded_value, &intval[i], sizeof(decoded_value)) == 0,
+	    ("asn_parse_signed_int64(asn_build_signed_int64(%lld)) %s;"
+	     " decoded type %d <> %d; decoded value %lld",
+	     TOINT64(intval[i]),
+	     parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_OPAQUE_I64, TOINT64(decoded_value)));
+
+        OKF(asn_realloc_rbuild_signed_int64(&rbuild_result, &rbuild_len,
+                                            &offset, 1, ASN_OPAQUE_I64,
+                                            &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_signed_int64(%lld)", TOINT64(intval[i])));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_signed_int64(%lld) != "
+             "asn_realloc_rbuild_signed_int64(%lld)",
+             TOINT64(intval[i]), TOINT64(intval[i])));
+        free (rbuild_result);
+    }
+}
+
+#endif
+
+#define TOUINT64(c) ((unsigned long long)(c).high << 32 | (c).low)
+
+{
+    const struct counter64 intval[] = {
+	{          0,          0 },
+	{          0,          1 },
+	{          0,          3 },
+	{          0,     0xffff },
+	{          0, 0x7fffffff },
+	{          0, 0x80000000 },
+	{          0, 0xffffffff },
+	{          1,          0 },
+	{          1, 0xffffffff },
+	{ 0x7fffffff,          0 },
+	{ 0x7fffffff, 0xdeadbeef },
+	{ 0x7fffffff, 0xffffffff },
+	{ 0xffffffff,          0 },
+	{ 0xffffffff, 0xdeadbeef },
+	{ 0xffffffff, 0xffffffff },
+    };
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	struct counter64 decoded_value = { };
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_unsigned_int64(encoded, &encoded_length,
+						ASN_COUNTER64,
+						&intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_unsigned_int64(%llu)", TOUINT64(intval[i])));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_unsigned_int64(encoded, &decoded_length,
+						&decoded_type, &decoded_value,
+						sizeof(decoded_value));
+	OKF(parse_result && decoded_type == ASN_COUNTER64
+	    && memcmp(&decoded_value, &intval[i], sizeof(decoded_value)) == 0,
+	    ("asn_parse_unsigned_int64(asn_build_unsigned_int64(%llu)) %s;"
+	     " decoded type %d <> %d; decoded value %llu",
+	     TOUINT64(intval[i]),
+	     parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_COUNTER64, TOUINT64(decoded_value)));
+
+        OKF(asn_realloc_rbuild_unsigned_int64(&rbuild_result, &rbuild_len,
+                                              &offset, 1, ASN_COUNTER64,
+                                              &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_unsigned_int64(%llud)", TOUINT64(intval[i])));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_unsigned_int64(%lld) != "
+             "asn_realloc_rbuild_unsigned_int64(%lld)",
+             TOUINT64(intval[i]), TOUINT64(intval[i])));
+        free (rbuild_result);
+    }
+
+#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	struct counter64 decoded_value = { };
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_unsigned_int64(encoded, &encoded_length,
+						ASN_OPAQUE_COUNTER64,
+						&intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_unsigned_int64(%llu)", TOUINT64(intval[i])));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_unsigned_int64(encoded, &decoded_length,
+						&decoded_type, &decoded_value,
+						sizeof(decoded_value));
+	OKF(parse_result && decoded_type == ASN_OPAQUE_COUNTER64
+	    && memcmp(&decoded_value, &intval[i], sizeof(decoded_value)) == 0,
+	    ("asn_parse_unsigned_int64(asn_build_unsigned_int64(%llu)) %s;"
+	     " decoded type %d <> %d; decoded value %llu",
+	     TOUINT64(intval[i]),
+	     parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_OPAQUE_COUNTER64, TOUINT64(decoded_value)));
+
+        OKF(asn_realloc_rbuild_unsigned_int64(&rbuild_result, &rbuild_len,
+                                              &offset, 1, ASN_OPAQUE_COUNTER64,
+                                              &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_unsigned_int64(%llud)", TOUINT64(intval[i])));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_unsigned_int64(%lld) != "
+             "asn_realloc_rbuild_unsigned_int64(%lld)",
+             TOUINT64(intval[i]), TOUINT64(intval[i])));
+        free (rbuild_result);
+    }
+
+    for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+	u_char encoded[256];
+	size_t encoded_length;
+	u_char *build_result;
+	size_t decoded_length;
+	u_char decoded_type;
+	struct counter64 decoded_value = { };
+	u_char *parse_result;
+        u_char *rbuild_result = NULL;
+        size_t rbuild_len = 0;
+        size_t offset = 0;
+
+	encoded_length = sizeof(encoded);
+	build_result = asn_build_unsigned_int64(encoded, &encoded_length,
+						ASN_OPAQUE_U64,
+						&intval[i], sizeof(intval[i]));
+	OKF(build_result + encoded_length == encoded + sizeof(encoded),
+	    ("asn_build_unsigned_int64(%llu)", TOUINT64(intval[i])));
+	decoded_length = sizeof(encoded) - encoded_length;
+	parse_result = asn_parse_unsigned_int64(encoded, &decoded_length,
+						&decoded_type, &decoded_value,
+						sizeof(decoded_value));
+	OKF(parse_result && decoded_type == ASN_OPAQUE_U64
+	    && memcmp(&decoded_value, &intval[i], sizeof(decoded_value)) == 0,
+	    ("asn_parse_unsigned_int64(asn_build_unsigned_int64(%llu)) %s;"
+	     " decoded type %d <> %d; decoded value %llu",
+	     TOUINT64(intval[i]),
+	     parse_result == build_result ? "succeeded" : "failed",
+	     decoded_type, ASN_OPAQUE_U64, TOUINT64(decoded_value)));
+
+        OKF(asn_realloc_rbuild_unsigned_int64(&rbuild_result, &rbuild_len,
+                                              &offset, 1, ASN_OPAQUE_U64,
+                                              &intval[i], sizeof(intval[i])),
+            ("asn_realloc_rbuild_unsigned_int64(%llud)", TOUINT64(intval[i])));
+        OKF(sizeof(encoded) - encoded_length == offset &&
+            memcmp(encoded, rbuild_result + rbuild_len - offset,
+                   offset) == 0,
+            ("asn_build_unsigned_int64(%lld) != "
+             "asn_realloc_rbuild_unsigned_int64(%lld)",
+             TOUINT64(intval[i]), TOUINT64(intval[i])));
+        free (rbuild_result);
+    }
+
+#endif
+}
diff --git a/testing/fulltests/unit-tests/T009large_fd_set_clib.c b/testing/fulltests/unit-tests/T009large_fd_set_clib.c
new file mode 100644
index 0000000..eee4d41
--- /dev/null
+++ b/testing/fulltests/unit-tests/T009large_fd_set_clib.c
@@ -0,0 +1,46 @@
+/* HEADER Testing netsnmp_large_fd_set */
+
+netsnmp_large_fd_set fds;
+netsnmp_large_fd_set_init(&fds, 2000);
+OKF(fds.lfs_setsize == 2000, ("initialization"));
+OKF(netsnmp_large_fd_set_resize(&fds, 2000) == 1, ("resizing to 2000"));
+NETSNMP_LARGE_FD_ZERO(&fds);
+
+{
+    int i;
+    for (i = 0; i < fds.lfs_setsize; ++i) {
+        OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+	NETSNMP_LARGE_FD_SET(i, &fds);
+	OKF(NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is set", i));
+	NETSNMP_LARGE_FD_CLR(i, &fds);
+	OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+    }
+}
+
+OKF(netsnmp_large_fd_set_resize(&fds, 3000) == 1, ("resizing to 3000"));
+
+{
+    int i;
+    for (i = 0; i < fds.lfs_setsize; ++i) {
+        OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+	NETSNMP_LARGE_FD_SET(i, &fds);
+	OKF(NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is set", i));
+	NETSNMP_LARGE_FD_CLR(i, &fds);
+	OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+    }
+}
+
+OKF(netsnmp_large_fd_set_resize(&fds, 1000) == 1, ("resizing to 1000"));
+
+{
+    int i;
+    for (i = 0; i < fds.lfs_setsize; ++i) {
+        OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+	NETSNMP_LARGE_FD_SET(i, &fds);
+	OKF(NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is set", i));
+	NETSNMP_LARGE_FD_CLR(i, &fds);
+	OKF(!NETSNMP_LARGE_FD_ISSET(i, &fds), ("%d is not set", i));
+    }
+}
+
+netsnmp_large_fd_set_cleanup(&fds);
diff --git a/testing/fulltests/unit-tests/T015int64_clib.c b/testing/fulltests/unit-tests/T015int64_clib.c
new file mode 100644
index 0000000..5f5f4b6
--- /dev/null
+++ b/testing/fulltests/unit-tests/T015int64_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing 64-bit integer operations (U64). */
+
+int i, j;
+char buf[22];
+static const int64_t intval[] = {
+    0,
+    -1,
+    1,
+    37,
+    0x7fffffffUL,
+    0x80000000UL,
+    0x99999999UL,
+    0x7fffffffffffffffULL,
+    0x8000000000000000ULL,
+};
+
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    U64 a, b;
+    a.low = (uint32_t)intval[i];
+    a.high = (uint32_t)(intval[i] >> 32);
+    printI64(buf, &a);
+    read64(&b, buf);
+    OKF(memcmp(&a, &b, sizeof(a)) == 0,
+        ("[%d]: %" PRId64 " <> %s <> %" PRId64, i, intval[i], buf,
+         ((uint64_t)b.high) << 32 | b.low));
+}
+
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
+        U64 a, b;
+        uint64_t d;
+        a.low = (uint32_t)intval[i];
+        a.high = (uint32_t)(intval[i] >> 32);
+        b.low = (uint32_t)intval[j];
+        b.high = (uint32_t)(intval[j] >> 32);
+        u64Incr(&a, &b);
+        d = (uint64_t)a.high << 32 | a.low;
+        OKF(intval[i] + intval[j] == d,
+            ("%" PRId64 " + %" PRId64 " = %" PRId64 " <> %" PRId64, intval[i],
+             intval[j], intval[i] + intval[j], d));
+    }
+}
+        
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
+        U64 a, b, c;
+        uint64_t d;
+        a.low = (uint32_t)intval[i];
+        a.high = (uint32_t)(intval[i] >> 32);
+        b.low = (uint32_t)intval[j];
+        b.high = (uint32_t)(intval[j] >> 32);
+        u64Subtract(&a, &b, &c);
+        d = (uint64_t)c.high << 32 | c.low;
+        OKF(intval[i] - intval[j] == d,
+            ("%" PRId64 " - %" PRId64 " = %" PRId64 " <> %" PRId64, intval[i],
+             intval[j], intval[i] - intval[j], d));
+    }
+}
+        
+{
+    U64 old_val, new_val;
+    old_val.low = 7;
+    old_val.high = 0;
+    new_val = old_val;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap1");
+    new_val.low = 8;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap2");
+    new_val.low = 6;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 32, "cwrap3");
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 1) == 32
+       && new_val.low == 6 && new_val.high == 1, "cwrap4");
+    old_val.low = 7;
+    old_val.high = 0xffffffffU;
+    new_val.low = 7;
+    new_val.high = old_val.high;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap5");
+    new_val.low = 8;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap6");
+    new_val.low = 6;
+    new_val.high = 0;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 64, "cwrap7");
+}
diff --git a/testing/fulltests/unit-tests/T016read_config_clib.c b/testing/fulltests/unit-tests/T016read_config_clib.c
new file mode 100644
index 0000000..06ceed5
--- /dev/null
+++ b/testing/fulltests/unit-tests/T016read_config_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing read_config_read_octet_string_const(). */
+
+struct read_config_testcase {
+    /*
+     * inputs 
+     */
+    const char     *(*pf) (const char * readfrom, u_char ** str,
+                           size_t * len);
+    const char     *readfrom;
+    size_t          obuf_len;
+
+    /*
+     * expected outputs 
+     */
+    size_t          expected_offset;
+    const u_char   *expected_output;
+    size_t          expected_len;
+};
+
+static const u_char obuf1[] = { 1, 0, 2 };
+static const u_char obuf2[] = { 'a', 'b', 'c', 0 };
+
+static const struct read_config_testcase test_input[] = {
+    { &read_config_read_octet_string_const, "",           1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x0",        1, -1, NULL,  1 },
+    { &read_config_read_octet_string_const, "0x0 0",      1, -1, NULL,  1 },
+
+    { &read_config_read_octet_string_const, "0x010002",   1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x010002",   2, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x010002",   3, -1, obuf1, 0 },
+    { &read_config_read_octet_string_const, "0x010002",   4, -1, obuf1, 3 },
+    { &read_config_read_octet_string_const, "0x010002 0", 4,  9, obuf1, 3 },
+    { &read_config_read_octet_string_const, "0x010002",   0, -1, obuf1, 3 },
+
+    { &read_config_read_octet_string_const, "abc",        1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "abc z",      1,  4, NULL,  0 },
+    { &read_config_read_octet_string_const, "abc",        2, -1, NULL,  1 },
+    { &read_config_read_octet_string_const, "abc",        3, -1, obuf2, 2 },
+    { &read_config_read_octet_string_const, "abc",        4, -1, obuf2, 3 },
+    { &read_config_read_octet_string_const, "abc z",      4,  4, obuf2, 3 },
+    { &read_config_read_octet_string_const, "abc",        0, -1, obuf2, 3 },
+};
+
+unsigned int i, j, ok;
+
+for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
+    const struct read_config_testcase *const p = &test_input[i];
+    size_t          len = p->obuf_len;
+    u_char         *str = len > 0 ? malloc(len) : NULL;
+    const char     *result;
+    size_t          offset;
+
+    fflush(stdout);
+    result = (p->pf) (p->readfrom, &str, &len);
+    offset = result ? result - p->readfrom : -1;
+    OKF(offset == p->expected_offset,
+        ("test %d: expected offset %" NETSNMP_PRIz "d, got offset %"
+         NETSNMP_PRIz "d", i, p->expected_offset, offset));
+    if (offset == p->expected_offset) {
+        OKF(len == p->expected_len,
+            ("test %d: expected length %" NETSNMP_PRIz "d, got length %"
+             NETSNMP_PRIz "d", i, p->expected_len, len));
+        if (len == p->expected_len) {
+            ok = len < 0 || !p->expected_output
+                || memcmp(str, p->expected_output, len) == 0
+                || p->expected_output[len] != 0;
+            OKF(ok, ("test %d: output buffer mismatch", i));
+            if (!ok) {
+                printf("Expected: ");
+                for (j = 0; j < p->expected_len; ++j)
+                    printf("%02x ", p->expected_output[j]);
+                printf("\nActual:   ");
+                for (j = 0; j < len; ++j)
+                    printf("%02x ", str[j]);
+                printf("\n");
+            }
+        }
+    }
+
+    if (str)
+        free(str);
+}
diff --git a/testing/fulltests/unit-tests/T017strtoull_clib.c b/testing/fulltests/unit-tests/T017strtoull_clib.c
new file mode 100644
index 0000000..4ab9cad
--- /dev/null
+++ b/testing/fulltests/unit-tests/T017strtoull_clib.c
@@ -0,0 +1,94 @@
+/* HEADER Testing strtoull(). */
+
+#ifdef HAVE_STRTOULL
+
+OK(1, "Skipping strtoull() test because using strtoull() from C library.\n");;
+
+#else
+
+/*
+ * UINT64_C: C99 macro for the suffix for uint64_t constants. 
+ */
+#ifndef UINT64_C
+#ifdef _MSC_VER
+#define UINT64_C(c) c##ui64
+#else
+#define UINT64_C(c) c##ULL
+#endif
+#endif
+
+/*
+ * According to the C99 standard, the constant ULLONG_MAX must be defined in
+ * <limits.h>. Define it here for pre-C99 compilers.
+ */
+#ifndef ULLONG_MAX
+#define ULLONG_MAX UINT64_C(0xffffffffffffffff)
+#endif
+
+#ifndef PRIu64
+#ifdef _MSC_VER
+#define PRIu64 "I64u"
+#else
+#define PRIu64 "llu"
+#endif
+#endif
+
+struct strtoull_testcase {
+    /*
+     * inputs 
+     */
+    const char     *nptr;
+    int             base;
+    /*
+     * expected outputs 
+     */
+    int             expected_errno;
+    int             expected_end;
+    uint64_t        expected_result;
+};
+
+static const struct strtoull_testcase test_input[] = {
+    {"0x0", 0, 0, 3, 0},
+    {"1", 0, 0, 1, 1},
+    {"0x1", 0, 0, 3, 1},
+    {"  -0666", 0, 0, 7, -0666},
+    {"  -0x666", 0, 0, 8, -0x666},
+    {"18446744073709551614", 0, 0, 20, UINT64_C(0xfffffffffffffffe)},
+    {"0xfffffffffffffffe", 0, 0, 18, UINT64_C(0xfffffffffffffffe)},
+    {"18446744073709551615", 0, 0, 20, UINT64_C(0xffffffffffffffff)},
+    {"0xffffffffffffffff", 0, 0, 18, UINT64_C(0xffffffffffffffff)},
+    {"18446744073709551616", 0, ERANGE, 20, UINT64_C(0xffffffffffffffff)},
+    {"0x10000000000000000", 0, ERANGE, 19, UINT64_C(0xffffffffffffffff)},
+    {"ff", 16, 0, 2, 255},
+    {"0xff", 16, 0, 4, 255},
+    {" ", 0, 0, 0, 0},
+    {"0x", 0, 0, 1, 0},
+    {"0x", 8, 0, 1, 0},
+    {"0x", 16, 0, 1, 0},
+    {"zyyy", 0, 0, 0, 0},
+    {"0xfffffffffffffffff", 0, ERANGE, 19, ULLONG_MAX},
+    {"0xfffffffffffffffffz", 0, ERANGE, 19, ULLONG_MAX}
+};
+
+unsigned int    i;
+
+for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
+    const struct strtoull_testcase *const p = &test_input[i];
+    char           *endptr;
+    uint64_t        result;
+
+    errno = 0;
+    result = strtoull(p->nptr, &endptr, p->base);
+    OKF(errno == p->expected_errno,
+        ("test %d (input \"%s\"): expected errno %d, got errno %d",
+         i, p->nptr, p->expected_errno, errno));
+    OKF(result == p->expected_result,
+        ("test %d (input \"%s\"): expected result %" PRIu64
+         ", got result %" PRIu64,
+         i, p->nptr, p->expected_result, result));
+    OKF(endptr - p->nptr == p->expected_end,
+        ("test %d (input \"%s\"): expected end %d, got end %d",
+         i, p->nptr, p->expected_end, (int) (endptr - p->nptr)));
+}
+
+#endif
diff --git a/testing/fulltests/unit-tests/T018read_config_capp.c b/testing/fulltests/unit-tests/T018read_config_capp.c
new file mode 100644
index 0000000..d6a92c9
--- /dev/null
+++ b/testing/fulltests/unit-tests/T018read_config_capp.c
@@ -0,0 +1,129 @@
+/*
+ * etimetest.c
+ *
+ * HEADER Testing read_config.c shutdown callback
+ *
+ * Expected SUCCESSes for all tests:    8
+ *
+ * Test of snmpd_unregister_config_handler                    	SUCCESSes:  4
+ * Test of unregister_all_config_handlers	              	SUCCESSes:  4
+ *
+ */
+
+#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/library/testing.h>
+
+/* #undef TEST_INTERNAL_API */
+#define TEST_INTERNAL_API 1
+
+/*
+ * Global variables.
+ */
+int callback_called = 0;
+
+static void test_callback(void);
+static void test_callback(void) {
+	++callback_called;
+};
+
+static void parse_config(const char *token, char *cptr);
+static void parse_config(const char *token, char *cptr) {
+	/* do nothing */
+};
+
+/* each test returns 0 on success, and >0 on failure */
+int test1(void);
+int test2(void);
+int test3(void);
+
+int (*tests[])(void) = { test1, test2, test3 };
+
+int main(int argc, char *argv[])
+{
+    int i,ret=0;
+    for(i=0;i<sizeof(tests)/sizeof(*tests);++i)
+	    ret+=tests[i]();
+    if (__did_plan == 0) {
+       PLAN(__test_counter);
+    }
+    return ret;
+}
+
+int test1() {
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# snmpd_unregister_config_handler tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    unregister_app_config_handler("testing");
+    OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==0, ("Callback should have been called once and only once after shutdown - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+}
+
+int test2(void) {
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# unregister_all_config_handlers tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==1, ("Callback should have been called once and only once during shutdown - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+}
+
+int test3(void) {
+#ifdef TEST_INTERNAL_API
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# unregister_all_config_handlers internal api tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    unregister_all_config_handlers();
+    OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==0, ("Callback should not have been called during shutdown after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+#else
+    return 0;
+#endif
+}
diff --git a/testing/fulltests/unit-tests/T019_snmp_service_clib.c b/testing/fulltests/unit-tests/T019_snmp_service_clib.c
new file mode 100644
index 0000000..42ec8d3
--- /dev/null
+++ b/testing/fulltests/unit-tests/T019_snmp_service_clib.c
@@ -0,0 +1,253 @@
+/* HEADER Testing domain and target registrations from snmp_service. */
+
+/* Setup configuration reading */
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                      NETSNMP_DS_LIB_APPTYPE, "testprog");
+
+netsnmp_register_service_handlers();
+
+netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                       NETSNMP_DS_LIB_HAVE_READ_CONFIG, 1);
+
+/* Clear all default values */
+netsnmp_clear_default_domain();
+netsnmp_clear_default_target();
+
+/* Test domain lookup */
+
+OK(netsnmp_register_default_domain("a", "") == 0,
+   "register an empty token in domain 'a'");
+
+OK(netsnmp_register_default_domain("b", "alfa") == 0,
+    "register a single token in domain 'b'");
+
+OK(netsnmp_register_default_domain("c", "alfa beta") == 0,
+   "register two tokens in domain 'c'");
+
+#define OK_STRCMP(name, value, expected)                                \
+  OKF(value != NULL && strcmp(expected, value) == 0,                    \
+      ("Lookup of '" #name "' expected '" expected "', got %s%s%s",     \
+       value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
+
+#define OK_STR_IS_NULL(name, value)                                     \
+  OKF(value == NULL,                                                    \
+      ("Lookup of '" #name "' expected NULL, got %s%s%s",               \
+       value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
+
+#define OK_IS_NULL(name, value)                                         \
+  OKF(value == NULL, ("Lookup of '" #name "' expected NULL, got %p", value))
+
+#define OK_IS_NOT_NULL(name, value)                                     \
+  OKF(value != NULL, ("Lookup of '" #name "' expected non-NULL, got %p", value))
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_domain("a");
+  OK_STRCMP(a, t, "");
+
+  t = netsnmp_lookup_default_domain("b");
+  OK_STRCMP(b, t, "alfa");
+
+  t = netsnmp_lookup_default_domain("c");
+  OK_STRCMP(c, t, "alfa");
+
+  t = netsnmp_lookup_default_domain("d");
+  OK_STR_IS_NULL(d, t);
+}
+
+{
+  const char *const *t;
+
+  t = netsnmp_lookup_default_domains("a");
+  OK_IS_NOT_NULL(a, t);
+  OK_STRCMP(a[0], t[0], "");
+  OK_STR_IS_NULL(a[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("b");
+  OK_IS_NOT_NULL(b, t);
+  OK_STRCMP(b[0], t[0], "alfa");
+  OK_STR_IS_NULL(b[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("c");
+  OK_IS_NOT_NULL(c, t);
+  OK_STRCMP(c[0], t[0], "alfa");
+  OK_STRCMP(c[1], t[1], "beta");
+  OK_STR_IS_NULL(c[2], t[2]);
+
+  t = netsnmp_lookup_default_domains("d");
+  OK_IS_NULL(d, t);
+}
+
+{
+  char cfg[] = "defDomain=b gamma";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b'");
+}
+
+{
+  char cfg[] = "defDomain=c gamma delta";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c'");
+}
+
+{
+  char cfg[] = "defDomain=b2 gamma";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b2'");
+}
+
+{
+  char cfg[] = "defDomain=c2 gamma delta";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c2'");
+}
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_domain("b");
+  OK_STRCMP(b, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("b2");
+  OK_STRCMP(b2, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("c");
+  OK_STRCMP(c, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("c2");
+  OK_STRCMP(c2, t, "gamma");
+}
+
+{
+  const char *const *t;
+
+  t = netsnmp_lookup_default_domains("b");
+  OK_IS_NOT_NULL(b, t);
+  OK_STRCMP(b[0], t[0], "gamma");
+  OK_STR_IS_NULL(b[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("b2");
+  OK_IS_NOT_NULL(b2, t);
+  OK_STRCMP(b2[0], t[0], "gamma");
+  OK_STR_IS_NULL(b2[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("c");
+  OK_IS_NOT_NULL(c, t);
+  OK_STRCMP(c[0], t[0], "gamma");
+  OK_STRCMP(c[1], t[1], "delta");
+  OK_STR_IS_NULL(c[2], t[2]);
+
+  t = netsnmp_lookup_default_domains("c2");
+  OK_IS_NOT_NULL(c2, t);
+  OK_STRCMP(c2[0], t[0], "gamma");
+  OK_STRCMP(c2[1], t[1], "delta");
+  OK_STR_IS_NULL(c2[2], t[2]);
+}
+
+{
+  char cfg[] = "defDomain=";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
+}
+
+{
+  const char* t;
+  char cfg[] = "defDomain=e";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line");
+  t = netsnmp_lookup_default_domain("e");
+  OK_STR_IS_NULL(e, t);
+}
+
+/* Test target lookup */
+
+OK(netsnmp_register_default_target("b", "alfa", "alfa-domain:b") == 0,
+   "register a 'alfa:alfa-domain:b' for application 'b'");
+
+OK(netsnmp_register_default_target("b", "beta", "beta-domain:b") == 0,
+   "register a 'beta:beta-domain:b' for application 'b'");
+
+OK(netsnmp_register_default_target("c", "alfa", "alfa-domain:c") == 0,
+   "register a 'alfa:alfa-domain:c' for application 'c'");
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_target("b", "alfa");
+  OK_STRCMP(b:alfa, t, "alfa-domain:b");
+
+  t = netsnmp_lookup_default_target("b", "beta");
+  OK_STRCMP(b:beta, t, "beta-domain:b");
+
+  t = netsnmp_lookup_default_target("c", "alfa");
+  OK_STRCMP(c:alfa, t, "alfa-domain:c");
+
+  t = netsnmp_lookup_default_target("a", "alfa");
+  OK_STR_IS_NULL(a:alfa, t);
+
+  t = netsnmp_lookup_default_target("b", "gamma");
+  OK_STR_IS_NULL(b:gamma, t);
+
+  t = netsnmp_lookup_default_target("c", "beta");
+  OK_STR_IS_NULL(c:beta, t);
+}
+
+{
+  char cfg[] = "defTarget=b alfa user-alfa:b";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'alfa:user-alfa:b' for application 'b'");
+}
+
+{
+  char cfg[] = "defTarget=b gamma user-gamma:b";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'gamma:user-gamma:b' for application 'b'");
+}
+
+{
+  char cfg[] = "defTarget=c alfa user-alfa:c";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'alfa:user-alfa:c' for application 'c'");
+}
+
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_target("b", "alfa");
+  OK_STRCMP(b:alfa, t, "user-alfa:b");
+
+  t = netsnmp_lookup_default_target("b", "beta");
+  OK_STRCMP(b:beta, t, "beta-domain:b");
+
+  t = netsnmp_lookup_default_target("c", "alfa");
+  OK_STRCMP(c:alfa, t, "user-alfa:c");
+
+  t = netsnmp_lookup_default_target("a", "alfa");
+  OK_STR_IS_NULL(a:alfa, t);
+
+  t = netsnmp_lookup_default_target("b", "gamma");
+  OK_STRCMP(b:gamma, t, "user-gamma:b");
+
+  t = netsnmp_lookup_default_target("b", "delta");
+  OK_STR_IS_NULL(b:delta, t);
+
+  t = netsnmp_lookup_default_target("c", "beta");
+  OK_STR_IS_NULL(c:beta, t);
+}
+
+{
+  char cfg[] = "defTarget=";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
+}
+
+{
+  const char* t;
+  char cfg[] = "defTarget=e1";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #1");
+  t = netsnmp_lookup_default_target("e1", "");
+  OK_STR_IS_NULL(e1:, t);
+}
+
+{
+  const char* t;
+  char cfg[] = "defTarget=e2 omega";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #2");
+  t = netsnmp_lookup_default_target("e2", "omega");
+  OK_STR_IS_NULL(e2:omega, t);
+}
diff --git a/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c b/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c
new file mode 100644
index 0000000..ec6fc86
--- /dev/null
+++ b/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing netsnmp_sprint_realloc_objid_tree() */
+
+static const oid objid1[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 127, 0, 0, 0, 8
+};
+static const oid objid2[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 1, 128
+};
+static const oid objid3[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 255, 255, 255, 255, 8
+};
+static const oid objid4[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 128
+};
+static const oid objid5[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 256, 256, 256, 256, 8
+};
+static const oid objid6[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 256, 256, 256, 256, 256, 256, 256,
+    256, 256, 256, 256, 256, 256, 256, 256, 256, 128
+};
+static const oid objid7[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, -1, -1, -1, -1, 8
+};
+static const oid objid8[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, 128
+
+};
+struct objid_data { oid const *oid; int len; const char *str; };
+static const struct objid_data objid_array[] = {
+    { objid1, sizeof(objid1) / sizeof(objid1[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"127.0.0.0\".8" },
+    { objid2, sizeof(objid2) / sizeof(objid2[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6."
+      "\"00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01\".128" },
+    { objid3, sizeof(objid3) / sizeof(objid3[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"255.255.255.255\".8" },
+    { objid4, sizeof(objid4) / sizeof(objid4[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6."
+      "\"ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff\".128" },
+    { objid5, sizeof(objid5) / sizeof(objid5[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
+    { objid6, sizeof(objid6) / sizeof(objid6[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
+    { objid7, sizeof(objid7) / sizeof(objid7[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
+    { objid8, sizeof(objid8) / sizeof(objid8[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
+};
+struct tree *tree;
+char *buf;
+size_t buf_len, out_len;
+int buf_overflow, i;
+char mibdir[PATH_MAX];
+
+snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs");
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir);
+
+init_snmp("T020");
+
+for (i = 0; i < sizeof(objid_array) / sizeof(objid_array[0]); i++) {
+    buf = NULL;
+    buf_len = out_len = buf_overflow = 0;
+    tree = netsnmp_sprint_realloc_objid_tree((u_char **) &buf, &buf_len,
+                                             &out_len, 1/*allow_realloc*/,
+                                             &buf_overflow,
+                                             objid_array[i].oid,
+                                             objid_array[i].len);
+    OK(!!objid_array[i].str == !!tree,
+       "netsnmp_sprint_realloc_objid_tree() return value");
+    if (objid_array[i].str && tree) {
+        OKF(strcmp(objid_array[i].str, buf) == 0,
+            ("Mismatch: expected %s but got %s", objid_array[i].str,
+             buf ? (const char *)buf : "(NULL)"));
+    }
+    free(buf);
+}
+
+snmp_shutdown("T020");
diff --git a/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c b/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c
new file mode 100644
index 0000000..57793d4
--- /dev/null
+++ b/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c
@@ -0,0 +1,51 @@
+/* HEADER Test sprint_realloc_variable with -OQ */
+
+/*
+ * Check that sprint_realloc_variable does not crash when it prints
+ * a variable with NULL type, while MIG says it's different type (INTEGER, ...).
+ * We will use MIB definition of nlmLogVariableTable, which has a column
+ * for most of the MIB types.
+ */
+static oid objid[] = {
+        1, 3, 6, 1, 2, 1, 92, 1, 3, 2, 1, 4
+};
+
+u_char *buf;
+size_t buf_len, out_len;
+int buf_overflow, i;
+char mibdir[PATH_MAX];
+int ret;
+
+snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs");
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir);
+netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT, TRUE);
+
+init_snmp("T021");
+
+netsnmp_variable_list variable;
+variable.next_variable = NULL;
+variable.name = objid;
+variable.name_length = sizeof(objid) / sizeof(objid[0]);
+variable.type = ASN_NULL;
+variable.val.integer = NULL;
+variable.val_len = 0;
+
+
+buf = NULL;
+buf_len = out_len = buf_overflow = 0;
+
+/* Try to format variable with nlmLogVariableEntry.4 - nlmLogVariableEntry.11
+ * OIDs and with NULL type.
+ */
+for (i=4; i<=11; i++) {
+    buf = NULL;
+    buf_len = out_len = buf_overflow = 0;
+    objid[11] = i;
+    ret = sprint_realloc_variable(&buf, &buf_len, &out_len, 1, objid,
+            sizeof(objid) / sizeof(objid[0]), &variable);
+    OKF(ret == 1, ("sprint_realloc_variable for %d returned %d: %s, expected 1",
+            i, ret, buf));
+    free(buf);
+}
+
+snmp_shutdown("T021");
diff --git a/testing/misctest.c b/testing/misctest.c
deleted file mode 100644
index 79f0465..0000000
--- a/testing/misctest.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * misctest.c
- *
- * Expected SUCCESSes for all tests:    0
- *
- * Returns:
- *      Number of FAILUREs.
- *
- * Test of dump_snmpEngineID().                 SUCCESSes:  0
- */
-
-static char    *rcsid = "$Id$";     /* */
-
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#include "asn1.h"
-#include "snmp_api.h"
-#include "tools.h"
-#include "transform_oids.h"
-#include "callback.h"
-
-#include <stdlib.h>
-
-extern char    *optarg;
-extern int      optind, optopt, opterr;
-
-
-
-/*
- * Globals, &c...
- */
-char           *local_progname;
-
-#define USAGE	"Usage: %s [-h][-1a]"
-#define OPTIONLIST	"1ah"
-
-int             doalltests = 0, dodumpseid = 0;
-
-#define	ALLOPTIONS	(doalltests + dodumpseid)
-
-
-
-#define LOCAL_MAXBUF	(1024 * 8)
-#define NL		"\n"
-
-#define OUTPUT(o)	fprintf(stdout, "\n\n%s\n\n", o);
-
-#define SUCCESS(s)					\
-{							\
-	if (!failcount)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
-}
-
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
-}
-
-
-
-
-#define IDBLAT_4	"00010203"
-
-#define IDVIOLATE1	"8000000300deedcafe"
-
-#define IDIPv4		"80000003010a090807"
-#define IDIPv6		"8000000302100f0e0d0c0b0a090807060504030201"
-#define IDMAC		"8000000303ffeeddccbbaa"
-
-#define IDTEXT		"8000000304"
-#define PRINTABLE	"Let this be printable."
-
-#define IDOCTETS_7	"80000003050001020304050607"
-
-#define IDLOCAL_11	"8000000306000102030405060708090a0b"
-
-#define IDIPv4_EXTRA3	"80000003010a090807010203"
-
-#define ID_NUMSTRINGS		10
-
-
-
-
-/*
- * Prototypes.
- */
-void            usage(FILE * ofp);
-
-int             test_dumpseid(void);
-
-
-
-
-
-int
-main(int argc, char **argv)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-    char            ch;
-
-    local_progname = argv[0];
-
-    /*
-     * Parse.
-     */
-    while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
-        switch (ch) {
-        case '1':
-            dodumpseid = 1;
-            break;
-        case 'a':
-            doalltests = 1;
-            break;
-        case 'h':
-            rval = 0;
-        default:
-            usage(stdout);
-            exit(rval);
-        }
-
-        argc -= 1;
-        argv += 1;
-        if (optarg) {
-            argc -= 1;
-            argv += 1;
-            optarg = NULL;
-        }
-        optind = 1;
-    }                           /* endwhile getopt */
-
-    if ((argc > 1)) {
-        usage(stdout);
-        exit(1000);
-
-    } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
-    }
-
-
-    /*
-     * Test stuff.
-     */
-    if (dodumpseid || doalltests) {
-        failcount += test_dumpseid();
-    }
-
-
-    /*
-     * Cleanup.
-     */
-    return failcount;
-
-}                               /* end main() */
-
-
-
-
-
-void
-usage(FILE * ofp)
-{
-    fprintf(ofp,
-            USAGE
-            "" NL
-            "	-1		Test dump_snmpEngineID()." NL
-            "	-a		All tests." NL
-            "	-h		Help." NL "" NL, local_progname);
-
-}                               /* end usage() */
-
-
-
-
-#ifdef EXAMPLE
-/*******************************************************************-o-******
- * test_dosomething
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test template.
- */
-int
-test_dosomething(void)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-
-    EM0(1, "UNIMPLEMENTED");    /* EM(1); /* */
-
-  test_dosomething_quit:
-    return failcount;
-
-}                               /* end test_dosomething() */
-#endif                          /* EXAMPLE */
-
-
-
-
-/*******************************************************************-o-******
- * test_dumpseid
- *
- * Returns:
- *	Number of failures.
- *
- * Test dump_snmpEngineID().
- */
-int
-test_dumpseid(void)
-{
-    int                         /* rval = SNMPERR_SUCCESS, */
-                    failcount = 0, tlen, count = 0;
-
-    char            buf[SNMP_MAXBUF],
-        *s, *t, *ris, *rawid_set[ID_NUMSTRINGS + 1] = {
-        IDBLAT_4,
-        IDVIOLATE1,
-        IDIPv4,
-        IDIPv6,
-        IDMAC,
-        IDTEXT,
-        IDOCTETS_7,
-        IDLOCAL_11,
-        IDIPv4_EXTRA3,
-        NULL
-    };
-
-    OUTPUT("Test of dump_snmpEngineID.  "
-           "(Does not report failure or success.)");
-
-
-    while ((ris = rawid_set[count++])) {
-        tlen = hex_to_binary2(ris, strlen(ris), &t);
-
-        if (ris == IDTEXT) {
-            memset(buf, 0, SNMP_MAXBUF);
-            memcpy(buf, t, tlen);
-            tlen += sprintf(buf + tlen, "%s", PRINTABLE);
-
-            SNMP_FREE(t);
-            t = buf;
-        }
-#ifdef NETSNMP_ENABLE_TESTING_CODE
-        s = dump_snmpEngineID(t, &tlen);
-        printf("%s    (len=%d)\n", s, tlen);
-#endif
-
-        SNMP_FREE(s);
-        if (t != buf) {
-            SNMP_FREE(t);
-        }
-    }
-
-
-    return failcount;
-
-}                               /* end test_dumpseid() */
diff --git a/testing/test_keychange.sh b/testing/test_keychange.sh
deleted file mode 100755
index 9259fe5..0000000
--- a/testing/test_keychange.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-#
-# test_keychange.sh
-#
-# Number of SUCCESSes:  3
-#
-#
-# Run test of KeyChange TC against data given by Bert Wijnen in email.
-#
-# NOTE	The snmp_debug flag bit DEBUG_RANDOMZEROS in file snmplib/debug.h
-#	MUST be set before compiling and linking libsnmp.a to testing/ktest
-#	for this to succeed.
-#
-
-
-. eval_tools.sh
-
-VERIFY ktest
-
-STARTTEST
-
-
-#------------------------------------ -o- 
-# Declarations.
-#
-DATAFILE_PREFIX=data.keychange-
-DATAFILE_SUFFIXES="md5 sha1 sha1-des"
-
-oldkul=
-newkul=
-keychangestring=
-
-
-
-#------------------------------------ -o- 
-# Test.
-#
-for dfs in $DATAFILE_SUFFIXES; do
-	OUTPUT "== Test of KeyChange TC correctness for \"$dfs\"."
-
-	set x `awk '{ print $1 }' ${DATAFILE_PREFIX}$dfs`
-	shift
-
-	[ $# -lt 3 ] && FAILED 1 \
-	    "Wrong number of lines ($#) in datafile \"$DATAFILE_PREFIX}$dfs\"."
-
-	oldkey=$1
-	newkey=$2
-	keychangestring=$3
-
-	CAPTURE "ktest -k -O $oldkey -N $newkey"
-	FAILED $? "ktest"
-
-	CHECKEXACT $keychangestring
-	[ $? -eq 1 ]
-	FAILED $? "Proper KeyChange string was not generated."
-
-
-	SUCCESS "KeyChange TC correctness test for \"$dfs\"."
-done
-
-
-
-
-#------------------------------------ -o- 
-# Cleanup, exit.
-#
-STOPTEST
-
-exit $failcount
-
diff --git a/testing/test_kul.sh b/testing/test_kul.sh
deleted file mode 100755
index 70b7b76..0000000
--- a/testing/test_kul.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-#
-# test_kul.sh
-#
-# Number of SUCCESSes:	2
-#
-# Run key localization tests and compare with data given in the USM
-# documentation.
-#
-# FIX	CHECKEXACT() will produce 2 lines when SCAPI is built with
-#	SNMP_TESTING_CODE, but only 1 line without the #define.  The script
-#	assumes SNMP_TESTING_CODE is defined.
-#
-#
-
-
-. eval_tools.sh
-
-VERIFY ktest
-
-STARTTEST
-
-
-#------------------------------------ -o- 
-# Declarations.
-#
-DATAFILE_PREFIX=data.kul-
-DATAFILE_SUFFIXES="md5 sha1"
-
-P=
-Ku=
-engineID=
-kul=
-
-
-
-#------------------------------------ -o- 
-# Test.
-#
-for dfs in $DATAFILE_SUFFIXES; do
-	OUTPUT "== Test of key localization correctness with transform \"$dfs\"."
-
-	set x `awk '{ print $1 }' ${DATAFILE_PREFIX}$dfs`
-	shift
-
-	[ $# -lt 4 ] && FAILED 1 \
-	    "Wrong number of lines ($#) in datafile \"$DATAFILE_PREFIX}$dfs\"."
-
-	P=$1
-	Ku=$2
-	engineID=$3
-	kul=$4
-
-	CAPTURE "ktest -l -P $P -E $engineID "
-	FAILED $? "ktest"
-
-	CHECKEXACT $Ku
-	[ $? -eq 2 ]
-	FAILED $? "Master key was not generated."
-
-	CHECKEXACT $kul
-	[ $? -eq 2 ]
-	FAILED $? "Localized key was not generated."
-
-
-	SUCCESS "Key localization correctness test with transform \"$dfs\"."
-done
-
-
-
-
-#------------------------------------ -o- 
-# Cleanup, exit.
-#
-STOPTEST
-
-exit $failcount
-
diff --git a/testing/tests/T051snmpv2ctrap b/testing/tests/T051snmpv2ctrap
deleted file mode 100644
index ac4a312..0000000
--- a/testing/tests/T051snmpv2ctrap
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c traps received and sent by tools
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-#
-# Begin test
-#
-
-CONFIGTRAPD authcommunity log testcommunity
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-CAPTURE "snmptrap -d -v 2c -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s blah"
-
-STOPTRAPD
-
-CHECKTRAPD "coldStart"
-
-FINISHED
diff --git a/testing/tests/T059trapdtraphandle b/testing/tests/T059trapdtraphandle
deleted file mode 100755
index 3657494..0000000
--- a/testing/tests/T059trapdtraphandle
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-TRAPHANDLE_LOGFILE=${SNMP_TMPDIR}/traphandle.log
-
-# "inline" trap handler
-if [ "x$2" = "xtraphandle" ]; then
-  cat - >>$TRAPHANDLE_LOGFILE
-  exit 0
-fi
-
-HEADER snmptrapd traphandle: launching external shell script
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-#
-# Begin test
-#
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-
-CONFIGTRAPD [snmp] persistentDir $SNMP_TMP_PERSISTENTDIR
-CONFIGTRAPD [snmp] tempFilePattern /tmp/snmpd-tmp-XXXXXX
-CONFIGTRAPD authcommunity execute $TESTCOMMUNITY
-CONFIGTRAPD doNotLogTraps true
-CONFIGTRAPD traphandle default $0 $1 traphandle
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-## 1) test notification handler
-
-CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s handled_inform_$snmp_version"
-DELAY
-CHECKORDIE "handled_inform_$snmp_version" $TRAPHANDLE_LOGFILE 
-
-## 2) persistency: reconfigure (SIGHUP), re-test
-
-HUPTRAPD
-CAPTURE "snmptrap -d -Ci -t $SNMP_SLEEP -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT 0 .1.3.6.1.6.3.1.1.5.1 system.sysContact.0 s handled_inform2_$snmp_version"
-DELAY
-CHECKORDIE "handled_inform2_$snmp_version" $TRAPHANDLE_LOGFILE
-
-## stop
-STOPTRAPD
-
-FINISHED
diff --git a/testing/tests/T300udp b/testing/tests/T300udp
deleted file mode 100644
index 1a75747..0000000
--- a/testing/tests/T300udp
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER UDP Transport
-
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-SNMP_TRANSPORT_SPEC=udp
-
-. ./Stransport
diff --git a/testing/tests/T360dtlsudp b/testing/tests/T360dtlsudp
deleted file mode 100644
index 74a7af1..0000000
--- a/testing/tests/T360dtlsudp
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER DTLS-UDP Transport
-
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIFNOT NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
-
-#
-# Begin test
-#
-
-SNMP_TRANSPORT_SPEC=dtlsudp
-export SNMP_TRANSPORT_SPEC
-
-CONFIGAGENT '[snmp]' defX509ServerPub  	`pwd`/test-localhost.cert
-CONFIGAGENT '[snmp]' defX509ServerPriv 	`pwd`/test-localhost.priv
-CONFIGAGENT '[snmp]' defX509ClientCerts `pwd`/test-user.cert
-
-CONFIGAGENT '[snmp]' defX509ClientPub  	`pwd`/test-user.cert
-CONFIGAGENT '[snmp]' defX509ClientPriv 	`pwd`/test-user.priv
-CONFIGAGENT '[snmp]' defX509ServerCerts `pwd`/test-localhost.cert
-
-CONFIGAGENT '[snmp]' AllowSelfSignedX509 1
-
-CONFIGAPP   defX509ClientPub  	`pwd`/test-user.cert
-CONFIGAPP   defX509ClientPriv 	`pwd`/test-user.priv
-CONFIGAPP   defX509ServerCerts  `pwd`/test-localhost.cert
-
-CONFIGAPP   '[snmp]' defX509ServerPub  	`pwd`/test-localhost.cert
-CONFIGAPP   '[snmp]' defX509ServerPriv 	`pwd`/test-localhost.priv
-CONFIGAPP   '[snmp]' defX509ClientCerts `pwd`/test-user.cert
-
-CONFIGAPP   AllowSelfSignedX509 1
-
-export SNMP_TRANSPORT_SPEC
-export SNMP_SNMPD_PORT
-export SNMP_TEST_DEST
-
-CONFIGAGENT  rwuser -s tsm dtlstestuser authpriv
-
-STARTAGENT
-
-CAPTURE "snmpget -l ap -u bogus --defSecurityModel=tsm -On $SNMP_FLAGS $NOAUTHTESTARGS $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/win32/Configure b/win32/Configure
index be3ee84..bc68afe 100644
--- a/win32/Configure
+++ b/win32/Configure
@@ -239,7 +239,6 @@
 ###############################################
 my @programs = qw
 /libagent
-libhelpers
 libnetsnmptrapd
 netsnmpmibs
 /;
@@ -280,10 +279,6 @@
     s/^OUTDIR=/OUTDIR=.\\$outdir/;
     s/^INTDIR=/INTDIR=.\\$intdir/;
     s/^SSL=.*/SSL=$openssl/;
-    if ($b_winextdll == 1) {
-      s/#(.*?)\s+# uncomment for winExtDLL.*/$1/;
-      s/^LIB32_FLAGS=(.*)/LIB32_FLAGS=MgmtAPI.lib snmpapi.lib $1/;
-    }
     print MAKE_OUT $_ . "\n";
   }
 }
diff --git a/win32/Makefile.in b/win32/Makefile.in
index 864a85f..bba5464 100644
--- a/win32/Makefile.in
+++ b/win32/Makefile.in
@@ -23,8 +23,8 @@
 libsnmp_clean : libsnmp_dll_clean_
 !ENDIF
 
-libs : libagent libhelpers libsnmp libnetsnmptrapd netsnmpmibs 
-libs_clean : libagent_clean libhelpers_clean libsnmp_clean libnetsnmptrapd_clean netsnmpmibs_clean
+libs : libagent libsnmp libnetsnmptrapd netsnmpmibs 
+libs_clean : libagent_clean libsnmp_clean libnetsnmptrapd_clean netsnmpmibs_clean
 
 apps : snmpdf snmpset snmpusm snmptest snmptrap snmpvacm snmpwalk snmpdelta snmptable snmpstatus snmpbulkget snmpget snmpgetnext snmpbulkwalk snmptranslate encode_keychange snmpnetstat
 
@@ -106,11 +106,6 @@
 	$(NMAKE) all
 	cd ..
 
-libhelpers ::
-	cd libhelpers
-	$(NMAKE) all
-	cd ..
-
 libsnmp_ ::
 	cd libsnmp
 	$(NMAKE) all
@@ -250,11 +245,6 @@
 	$(NMAKE) clean
 	cd ..
 
-libhelpers_clean ::
-	cd libhelpers
-	$(NMAKE) clean
-	cd ..
-
 libsnmp_clean_ ::
 	cd libsnmp
 	$(NMAKE) clean
@@ -394,11 +384,9 @@
         @-echo "all             libs apps snmptrapd snmpd                     "
         @-echo "clean           libs_clean apps_clean snmptrapd_clean         "
         @-echo "                snmpd_clean                                   "
-        @-echo "libs            libagent libhelpers libsnmp libnetsnmptrapd   "
-        @-echo "                netsnmpmibs                                   "
-        @-echo "libs_clean      libagent_clean libhelpers_clean               "
-        @-echo "                libnetsnmptrapd_clean libsnmp_clean           "
-        @-echo "                netsnmpmibs_clean                             "
+        @-echo "libs            libagent libsnmp libnetsnmptrapd netsnmpmibs  "
+        @-echo "libs_clean      libagent_clean libnetsnmptrapd_clean          "
+        @-echo "                libsnmp_clean netsnmpmibs_clean               "
         @-echo "                                                              "
         @-echo "apps            encode_keychange snmpbulkget snmpbulkwalk     "
         @-echo "                snmpdelta snmpdf snmpget snmpgetnext          "
diff --git a/win32/build.pl b/win32/build.pl
index a7f9338..c191f28 100644
--- a/win32/build.pl
+++ b/win32/build.pl
@@ -218,6 +218,7 @@
 
   # 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)";
diff --git a/win32/config.h.borland b/win32/config.h.borland
index 629085c..47e1b07 100644
--- a/win32/config.h.borland
+++ b/win32/config.h.borland
@@ -164,9 +164,6 @@
 /* If you don't have root access don't exit upon kmem errors */
 #undef NETSNMP_NO_ROOT_ACCESS
 
-/* Define if you have the bcopy function.  */
-#undef HAVE_BCOPY
-
 /* Define if you have the gethostbyname function.  */
 #define HAVE_GETHOSTBYNAME 1
 
@@ -185,21 +182,12 @@
 /* Define if you have the vsnprintf function.  */
 #define HAVE_VSNPRINTF 1
 
-/* Define if you have the index function.  */
-#undef HAVE_INDEX
-
 /* Define if you have the kvm_openfiles function.  */
 #undef HAVE_KVM_OPENFILES
 
 /* Define if you have the lrand48 function.  */
 #undef HAVE_LRAND48
 
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the memmove function.  */
-#define HAVE_MEMMOVE 1
-
 /* Define if you have the rand function.  */
 #define HAVE_RAND 1
 
@@ -239,9 +227,6 @@
 /* Define if you have the statvfs function.  */
 #undef HAVE_STATVFS
 
-/* Define if you have the strchr function.  */
-#define HAVE_STRCHR 1
-
 /* Define if you have the strcasecmp function */
 #define HAVE_STRCASECMP 1
 
@@ -726,43 +711,6 @@
 /* Define if you have the strerror function.  */
 #define HAVE_STRERROR 1
 
-#ifndef HAVE_STRCHR
-#ifdef HAVE_INDEX
-# define strchr index
-# define strrchr rindex
-#endif
-#endif
-
-#ifndef HAVE_INDEX
-#ifdef HAVE_STRCHR
-# define index strchr
-# define rindex strrchr
-#endif
-#endif
-
-#ifndef HAVE_MEMCPY
-#ifdef HAVE_BCOPY
-# define memcpy(d, s, n) bcopy ((s), (d), (n))
-# define memmove(d, s, n) bcopy ((s), (d), (n))
-# define memcmp bcmp
-#endif
-#endif
-
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_MEMCPY
-# define memmove memcpy
-#endif
-#endif
-
-#ifndef HAVE_BCOPY
-#ifdef HAVE_MEMCPY
-# define bcopy(s, d, n) memcpy ((d), (s), (n))
-# define bzero(p,n) memset((p),(0),(n))
-# define bcmp memcmp
-#endif
-#endif
-
-
 /* define random functions */
 
 #ifndef HAVE_RANDOM
diff --git a/win32/dist/README.build.win32.txt b/win32/dist/README.build.win32.txt
index ab5439c..1925fb7 100644
--- a/win32/dist/README.build.win32.txt
+++ b/win32/dist/README.build.win32.txt
@@ -2,7 +2,7 @@
 *
 * README.build.win32
 *
-* Authors: Alex Burger <alex_b@users.sourceforge.net>
+* Author: Alex Burger <alex_b@users.sourceforge.net>
 *          
 *
 ***************************************************************************
@@ -23,8 +23,6 @@
 
   Bulding a NullSoft installer package
 
-  Bulding an OpenSSL version
-
 
 Compiling binaries
 ==================
@@ -32,13 +30,25 @@
 Requirements
 ------------
 
- -Windows NT/2000/XP
- -MSVC++ 6.0 SP5
- -ActivePerl 5.8.2 build 808
- -gnu_regex.exe (0.12) - http://people.delphiforums.com/gjc/gnu_regex.html
- -Platform SDK
+32-bit binary:
+
+ -Windows XP 32-bit SP2 or higher
+ -Microsoft Visual Studio 2008 SP1 with Platform SDK and latest updates from Microsoft
+  including updates to the redistributable components
+ -ActivePerl 5.10
  -MSYS / MinGW -or- tar.exe and gzip.exe
  -win32/dist folder from MAIN in CVS
+ -OpenSSL binary and library files from http://www.slproweb.com/products/Win32OpenSSL.html
+
+64-bit binary:
+
+ -Windows 7 64-bit
+ -Microsoft Visual Studio 2008 SP1 with Platform SDK and latest updates from Microsoft
+  including updates to the redistributable components.  Also need are the 64-bit compiler options.
+ -ActivePerl 5.10 (64-bit)
+ -MSYS / MinGW -or- tar.exe and gzip.exe
+ -win32/dist folder from MAIN in CVS
+ -OpenSSL 64-bit binary and library files from http://www.slproweb.com/products/Win32OpenSSL.html
 
 
 Building the main binaries
@@ -49,160 +59,80 @@
 Part 1
 ------
 
-1.  Extract source.  The location will be referenced as (source dir)
+1.  Install pre-requisites:
 
-2.  Delete c:\usr if it exists and rename Net-SNMP.dll in your %windir% if you 
-    have it already (to ensure Perl tests are using the compiled DLL)
+    MSVC 2008:
+      Include the Platform SDK and for 64-bit, make sure the 64-bit compiler is installed
+      (not included by default).
 
-3.  Apply any required patches
+      Latest updates from Microsoft to ensure the redistributable DLLs have the latest
+      security fixes.
 
-4.  Remove the example MIB files:  
+    ActivePerl:
+      For 64-bit, make sure you install the 64-bit version otherwise compiling will fail.
 
-    Edit win32\net-snmp\agent\mib_module_config.h and change the following lines:
+    MSYS / MinGW:
+      Needed for tar command in build-binary.bat/pl.  
 
-      #define USING_EXAMPLES_UCDDEMOPUBLIC_MODULE 1
-      #define USING_EXAMPLES_EXAMPLE_MODULE 1
+    OpenSSL:
+      Install the OpenSSL binary, header and library files as explained in 
+      'Using a pre-compiled version' of the 'Microsoft Visual C++ - Building with 
+      OpenSSL' section of README.win32.  For 64-bit, make sure you install the 64-bit 
+      version otherwise compiling will fail.
 
-    to:
+2.  Extract source.  The location will be referenced as (source dir)
 
-      #undef USING_EXAMPLES_UCDDEMOPUBLIC_MODULE
-      #undef USING_EXAMPLES_EXAMPLE_MODULE
+3.  Delete c:\usr if it exists.
 
-5.  cd (source dir)\win32
+4.  Apply any required patches
 
-6.  Run build.bat
+5.  cd (source dir)\win32\dist
 
-7.  Set to the following:
+6.  Run build-binary.bat.  
 
-    Net-SNMP build and install options
-    ==================================
+    If c:\usr already exists, it will stop with an error.
+
+    If %windir%\system32\netsnmp.dll exists, it will ask if it can be deleted.  Answer yes.
+
+7.  At a high level, the following will be completed:
+
+    a)  Get package version from Unix configure script for use in the Perl module and NSIS
+        installer package.
+    b)  Build the applications and Perl modules with OpenSSL enabled and winExtDLL disabled
+    c)  Build the applications and Perl modules with OpenSSL enabled and winExtDLL enabled
+    d)  Build the applications and Perl modules with OpenSSL disabled and winExtDLL disabled
+    e)  Build the applications and Perl modules with OpenSSL disabled and winExtDLL enabled
+    f)  Copy distribution files (readme, batch files etc)
+    g)  Copy NSIS installer script and update the version stamp
+
+8.  Copy the following to c:\usr\bin:
+
+    64-bit:
+
+    C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\amd64\Microsoft.VC90.CRT\*.*
+
+    32-bit:
+
+    C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*   
+
+    Note:  Copy the files directly to the folder.  If you copy the folder, the binaries won't
+           run on Windows 2000.
+
+9.  Verify that the binaries created are linked to the correct MSVC 2008 redistribution that was
+    copied in the previous step.
+
+    Right-click msvcr90.dll, properties, Details.  Check the product version.  
+    Example: 9.00.30729.4148
+
+    cd \usr\bin
+    mt.exe -inputresource:snmpget.exe;#1 -out:extracted.manifest
+    type extracted.manifest
     
-    1.  OpenSSL support:      		disabled
-    2.  Platform SDK support: 		enabled         ***
-    
-    3.  Install path:         		c:/usr
-    4.  Install after build:  		enabled
-    
-    5.  Perl modules:         		enabled         ***
-    6.  Install perl modules: 		disabled
-    
-    7.  Quiet build (logged): 		enabled
-    8.  Debug mode:           		disabled
+    Example:
 
-    9.  IPv6 transports:      		disabled
-    10. winExtDLL agent (requires SDK): disabled
-
-    11. Link type:                      dynamic		***
-
-    12. Install development files   	enabled         ***
-    
-    F.  Finished - start build
-    Q.  Quit - abort build
-    
-    Select option to set / toggle:
-
-8.  F to start the build and verify everything was built ok
-
-9.  Delete any generated config files from c:\usr\snmp\persist
-
-Part 2 - Compiling winExtDLL
-----------------------------
-
-10. Run build.bat and set to the following:
-
-    Net-SNMP build and install options
-    ==================================
-    
-    1. OpenSSL support:      		disabled
-    2. Platform SDK support: 		enabled         ***
-    
-    3. Install path:         		c:/usr
-    4. Install after build:  		disabled        ***
-    
-    5. Perl modules:         		disabled
-    6. Install perl modules: 		disabled
-    
-    7. Quiet build (logged): 		enabled
-    8. Debug mode:           		disabled
-
-    9. IPv6 transports:      		disabled
-    10. winExtDLL agent (requires SDK): enabled         ***
-
-    11. Link type:                      dynamic		***
-
-    12. Install development files   	disabled
-    
-    F.  Finished - start build
-    Q.  Quit - abort build
-    
-    Select option to set / toggle:
-
-11. F to start the build and verify everything was built ok
-
-12. Copy the new binary:
-
-    copy bin\release\snmpd.exe c:\usr\bin\snmpd-winExtDLL.exe
-
-13. Test each binary by running each one with -DwinExtDLL.  Make sure only the
-    winExtDLL version has debug output.
-
-14. Delete any generated config files from c:\usr\snmp\persist
-
-
-Part 3 - Creating the Perl package
-----------------------------------
-
-1.  cd (source dir)
-    cd perl
-
-2.  nmake ppd
-
-3.  Open an MSYS shell (unless you have tar.exe and gzip.exe)
-
-4.  cd (source dir)
-    cd perl
-
-5.  tar cvf NetSNMP.tar blib; gzip --best NetSNMP.tar
-
-6.  Open a Windows command prompt (CMD) and cd (source dir)\perl
-
-7.  ren Bundle-NetSNMP.ppd NetSNMP.ppd
-
-8.  Modify NetSNMP.ppd to look like the following.  Change the 
-    VERSION="x,x,x,x" line to the correct values.  Do NOT change 
-    * lines in the original file.
-
-<SOFTPKG NAME="NetSNMP" VERSION="5,4,1,0">
-    <TITLE>Net-SNMP</TITLE>
-    <ABSTRACT>Object Oriented Interface to Net-SNMP</ABSTRACT>
-    <AUTHOR></AUTHOR>
-    <IMPLEMENTATION>
-*        <OS NAME="MSWin32" />
-*        <ARCHITECTURE NAME="MSWin32-x86-multi-thread-5.8" />
-        <CODEBASE HREF="x86/NetSNMP.tar.gz" />
-    </IMPLEMENTATION>
-</SOFTPKG>
-
-9.  Copy the win32\dist folder from trunk to the win32 folder of the extracted source.
-
-10. Create base directories:
-
-    md "c:\usr\docs"
-    md "c:\usr\perl"
-    md "c:\usr\perl\x86"
-    md "c:\usr\temp"
-
-12. Copy files:
-
-    cd (source dir)
-    copy COPYING "c:\usr\docs"
-    copy win32\dist\README.txt "c:\usr"
-    copy win32\dist\scripts\net-snmp-perl-test.pl "c:\usr\bin"
-
-    copy perl\NetSNMP.ppd "c:\usr\Perl"
-    copy perl\NetSNMP.tar.gz "c:\usr\Perl\x86"
-
-12. Update the BUILD INFORMATION section of c:\usr\README.txt
+    <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1"
+   
+10. Update the BUILD INFORMATION section of c:\usr\README.txt
 
 
 Compiling HTMLHelp file
@@ -336,7 +266,7 @@
     snmptrapd -H 2> c:\temp\net-snmp\html\snmptrapd.options
     snmpd -H 2> c:\temp\net-snmp\html\snmpd.options
 
-    Update these files using an HTML editor (Mozilla etc):
+    Update these files using an HTML editor (Nvu etc):
 
     c:\temp\net-snmp\html\snmp.conf.win32.html
     c:\temp\net-snmp\html\snmpd.conf.win32.html
@@ -387,137 +317,43 @@
  -Windows
  -Nullsoft Scriptable Install System 2.0 - http://nsis.sourceforge.net/home/
 
-1.  Complete the three sections above:  'Compiling binaries', 'Compiling 
-    HTMLHelp file' and 'Combining the binaries and HTMLHelp files'.  Net-SNMP
-    should be located in c:\usr.
+1.  Complete the sections above.
 
-2.  Copy the following files to c:\usr:
+2.  Launch the 'Nullsoft Install System (NSIS 2.0)'
 
-    cd (source dir)
-    copy win32\dist\installer\SetEnVar.nsi c:\usr\
-    copy win32\dist\installer\net-snmp.nsi c:\usr\
-    copy win32\dist\installer\Add2Path.nsi c:\usr\
-    copy win32\dist\installer\net-snmp-header1.bmp c:\usr\
+3.  Select 'MakeNSISW (compiler interface)'
 
-3.  Create the following empty files:
+4.  Click File - Load Script
 
-    echo . > c:\usr\registeragent.bat
-    echo . > c:\usr\unregisteragent.bat
-    echo . > c:\usr\registertrapd.bat
-    echo . > c:\usr\unregistertrapd.bat
-    echo . > c:\usr\etc\snmp\snmp.conf
+5.  Select c:\usr\net-snmp.nsi
 
-4.  Edit the following variables in c:\usr\net-snmp.nsi:
-
-    PRODUCT_MAJ_VERSION
-    PRODUCT_MIN_VERSION
-    PRODUCT_REVISION
-    PRODUCT_EXE_VERSION
-
-    For example, for 5.1.2:
-
-    PRODUCT_MAJ_VERSION "5"
-    PRODUCT_MIN_VERSION "1"
-    PRODUCT_REVISION "2"
-    PRODUCT_EXE_VERSION "1"
-
-    The generated filename would be: net-snmp-5.1.2-1.win32.exe
-
-    PRODUCT_EXE_VERSION is usually 1 unless the binary package is re-released
-    due to packaging issues.  For pre releases, include the pre-release version 
-    in PRODUCT_REVISION.   For example, for 5.1.2 pre2 use:
-
-    PRODUCT_MAJ_VERSION "5"
-    PRODUCT_MIN_VERSION "1"
-    PRODUCT_REVISION "2.pre2"
-    PRODUCT_EXE_VERSION "1"
-
-    This will ensure the version number is visible during installation.
-
-    The generated filename would be: net-snmp-5.1.2.pre2-1.win32.exe
-
-5.  Launch the 'Nullsoft Install System (NSIS 2.0)'
-
-6.  Select 'MakeNSISW (compiler interface)'
-
-7.  Click File - Load Script
-
-8.  Select c:\usr\net-snmp.nsi
-
-9.  You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer 
+6.  You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer 
     package
 
-10. Test the package
+7.  Test the package:
 
-11. Compare the directory contents of the compiled folder with the installed
-    folder to ensure there are no missing MIB files etc.  Modify net-snmp.nsi
-    and rebuild if required.
+    Perform the basic tests below on the following platforms:
 
-12. Create a .zip file of c:\usr for archive purposes.
+      32-bit package:
+        Windows 2000
+        Windows XP 32-bit
+      64-bit package:
+        Windows 7 64-bit
 
+    Tests:
 
-Bulding an OpenSSL version
-==========================
+    a) Installation with WinExtDLL and SSL
+    b) Configure snmpd to allow a query
+    c) Install snmpd and snmptrapd services
+    d) Stop the Microsoft SNMP service and start both Net-SNMP services
+    e) snmpwalk -v 1 -c public localhost system
+    f) Install Perl modules
+    g) Launch net-snmp-perl-test.pl
 
-Requirements
-------------
+8.  Compare the directory contents of the compiled folder with the installed
+    folder to ensure there are no missing MIB files etc.  If there are missing
+    files, modify net-snmp.nsi and rebuild if required and update net-snmp.nsi
+    etc in SVN.
 
- -OpenSSL binary from http://www.slproweb.com/products/Win32OpenSSL.html
-
-1.  Install the OpenSSL binary, header and library files as explained in 
-    'Using a pre-compiled version' of the 'Microsoft Visual C++ - Building with 
-    OpenSSL' section of README.win32.
-
-2.  Move c:\usr c:\usr.temp
-
-3.  Re-build the binary by following the steps in the section 'Building the 
-    main binaries' except enable OpenSSL (both regular and WinExtDLL).  Also 
-    follow the Perl steps to create a new tar file etc.
-
-4.  Copy contents of c:\usr to c:\usr.temp
-
-5.  Delete c:\usr
-
-6.  Move c:\usr.temp c:\usr
-
-7.  Update the BUILD INFORMATION section of c:\usr\README.txt to include the SSL 
-    info and the filename.
-
-8.  Update the version stamp in c:\usr\net-snmp.nsi to include -ssl.  Example:
-
-    For example, for 5.3.0:
-
-    PRODUCT_MAJ_VERSION "5"
-    PRODUCT_MIN_VERSION "3"
-    PRODUCT_REVISION "0-ssl"
-    PRODUCT_EXE_VERSION "1"
-
-    The generated filename would be: net-snmp-5.3.0-ssl-1.win32.exe
-
-9.  Also in c:\usr\net-snmp.nsi, change:
-
-    !define OPENSSL_REQUIRED "0"
-
-    to
-
-    !define OPENSSL_REQUIRED "1"
-
-10. Launch the 'Nullsoft Install System (NSIS 2.0)'
-
-11. Select 'MakeNSISW (compiler interface)'
-
-12. Click File - Load Script
-
-13. Select c:\usr\net-snmp.nsi
-
-14. You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer 
-    package
-
-15. Test the package
-
-16. Compare the directory contents of the compiled folder with the installed
-    folder to ensure there are no missing MIB files etc.  Modify net-snmp.nsi
-    and rebuild if required.
-
-17. Create a .zip file of c:\usr for archive purposes.
+9.  Create a .zip file of c:\usr for archive purposes.
 
diff --git a/win32/dist/build-binary.pl b/win32/dist/build-binary.pl
index 9632a92..d102dfb 100755
--- a/win32/dist/build-binary.pl
+++ b/win32/dist/build-binary.pl
@@ -411,12 +411,15 @@
       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 PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x64.exe\"/;
-	    s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"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 PRODUCT_EXE_SUFFIX.*/!define PRODUCT_EXE_SUFFIX \".x86.exe"/;
-	    s/!define WIN32_PLATFORM.*/!define PRODUCT_EXE_SUFFIX \"x86\"/;
+            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";
diff --git a/win32/dist/scripts/mandir2html b/win32/dist/scripts/mandir2html
index 08a6630..5435daf 100644
--- a/win32/dist/scripts/mandir2html
+++ b/win32/dist/scripts/mandir2html
@@ -35,7 +35,7 @@
 
 # Location of man pages to parse
 # Below this directory should be the folders man1 to man9.
-$man_dir = "/tmp/net-snmp/man/";
+$man_dir = "/tmp/net-snmp/share/man/";
 
 # Output folder to create the HTML files
 $man_dir_html = "/tmp/net-snmp/html/";
diff --git a/win32/libagent/Makefile.in b/win32/libagent/Makefile.in
index 69b2771..30a6cf6 100644
--- a/win32/libagent/Makefile.in
+++ b/win32/libagent/Makefile.in
@@ -19,8 +19,33 @@
 	"$(INTDIR)\agent_registry.obj" \
 	"$(INTDIR)\agent_sysORTable.obj" \
 	"$(INTDIR)\agent_trap.obj" \
+	"$(INTDIR)\all_helpers.obj" \
+	"$(INTDIR)\baby_steps.obj" \
+	"$(INTDIR)\bulk_to_next.obj" \
+	"$(INTDIR)\cache_handler.obj" \
+	"$(INTDIR)\debug_handler.obj" \
+	"$(INTDIR)\instance.obj" \
+	"$(INTDIR)\mode_end_call.obj" \
+	"$(INTDIR)\multiplexer.obj" \
+	"$(INTDIR)\null.obj" \
+	"$(INTDIR)\old_api.obj" \
+	"$(INTDIR)\read_only.obj" \
+	"$(INTDIR)\row_merge.obj" \
+	"$(INTDIR)\scalar.obj" \
+	"$(INTDIR)\scalar_group.obj" \
+	"$(INTDIR)\serialize.obj" \
 	"$(INTDIR)\snmp_agent.obj" \
-	"$(INTDIR)\snmp_vars.obj"
+	"$(INTDIR)\snmp_vars.obj" \
+	"$(INTDIR)\stash_cache.obj" \
+	"$(INTDIR)\stash_to_next.obj" \
+	"$(INTDIR)\table.obj" \
+	"$(INTDIR)\table_array.obj" \
+	"$(INTDIR)\table_container.obj" \
+	"$(INTDIR)\table_data.obj" \
+	"$(INTDIR)\table_dataset.obj" \
+	"$(INTDIR)\table_iterator.obj" \
+	"$(INTDIR)\table_tdata.obj" \
+	"$(INTDIR)\watcher.obj"
 
 CLEAN :
 	-@for %f in ($(LIB32_OBJS)) do erase %%f
@@ -121,3 +146,152 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\helpers\all_helpers.c
+
+"$(INTDIR)\all_helpers.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\baby_steps.c
+
+"$(INTDIR)\baby_steps.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\bulk_to_next.c
+
+"$(INTDIR)\bulk_to_next.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\cache_handler.c
+
+"$(INTDIR)\cache_handler.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\debug_handler.c
+
+"$(INTDIR)\debug_handler.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\instance.c
+
+"$(INTDIR)\instance.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\mode_end_call.c
+
+"$(INTDIR)\mode_end_call.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\multiplexer.c
+
+"$(INTDIR)\multiplexer.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\null.c
+
+"$(INTDIR)\null.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\old_api.c
+
+"$(INTDIR)\old_api.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\read_only.c
+
+"$(INTDIR)\read_only.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\row_merge.c
+
+"$(INTDIR)\row_merge.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\scalar.c
+
+"$(INTDIR)\scalar.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\scalar_group.c
+
+"$(INTDIR)\scalar_group.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\serialize.c
+
+"$(INTDIR)\serialize.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\stash_cache.c
+
+"$(INTDIR)\stash_cache.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\stash_to_next.c
+
+"$(INTDIR)\stash_to_next.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table.c
+
+"$(INTDIR)\table.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_array.c
+
+"$(INTDIR)\table_array.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_container.c
+
+"$(INTDIR)\table_container.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_data.c
+
+"$(INTDIR)\table_data.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_tdata.c
+
+"$(INTDIR)\table_tdata.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_dataset.c
+
+"$(INTDIR)\table_dataset.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\table_iterator.c
+
+"$(INTDIR)\table_iterator.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\watcher.c
+
+"$(INTDIR)\watcher.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
diff --git a/win32/libagent/libagent.def b/win32/libagent/libagent.def
deleted file mode 100644
index 686a50e..0000000
--- a/win32/libagent/libagent.def
+++ /dev/null
@@ -1,17 +0,0 @@
-;       @(#)libagent.def    1.0 10/26/97 (gmarzot@baynetworks.com)
-
-DESCRIPTION     'UCD SNMP Agent Library'
-;CODE            SHARED READ EXECUTE
-;DATA            SHARED READ WRITE
-EXPORTS
-	send_easy_trap
-	init_master_agent
-	init_mib_modules
-	init_agent
-	argvrestartname
-	argvrestart
-	argvrestartp
-	update_config
-	dump_idx_registry
-	netsnmp_clear_handler_list
-
diff --git a/win32/libagent/libagent.dsp b/win32/libagent/libagent.dsp
index de92f0e..892e8d3 100644
--- a/win32/libagent/libagent.dsp
+++ b/win32/libagent/libagent.dsp
@@ -109,12 +109,112 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\agent\helpers\all_helpers.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\baby_steps.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\bulk_to_next.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\cache_handler.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\debug_handler.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\instance.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\mode_end_call.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\multiplexer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\null.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\old_api.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\read_only.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\row_merge.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\scalar.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\scalar_group.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\serialize.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\agent\snmp_agent.c
 # End Source File
 # Begin Source File
 
 SOURCE=..\..\agent\snmp_vars.c
 # End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\stash_cache.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\stash_to_next.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_array.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_container.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_data.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_dataset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_iterator.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\table_tdata.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\helpers\watcher.c
+# End Source File
 # End Group
 # Begin Group "Header Files"
 
@@ -145,12 +245,72 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\agent\all_helpers.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\bulk_to_next.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\debug_handler.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\instance.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\multiplexer.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\null.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\old_api.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\read_only.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\serialize.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\agent\snmp_agent.h"
 # End Source File
 # Begin Source File
 
 SOURCE="..\..\include\net-snmp\agent\snmp_vars.h"
 # End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table_array.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table_data.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table_dataset.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table_iterator.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\net-snmp\agent\table_tdata.h"
+# End Source File
 # End Group
 # End Target
 # End Project
diff --git a/win32/libhelpers/Makefile.in b/win32/libhelpers/Makefile.in
deleted file mode 100644
index bbc80e8..0000000
--- a/win32/libhelpers/Makefile.in
+++ /dev/null
@@ -1,405 +0,0 @@
-PROGNAME=
-CFG=
-OUTDIR=
-INTDIR=
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "release"
-
-ALL : "..\lib\$(OUTDIR)\netsnmphelpers.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\all_helpers.obj"
-	-@erase "$(INTDIR)\baby_steps.obj"
-	-@erase "$(INTDIR)\bulk_to_next.obj"
-	-@erase "$(INTDIR)\cache_handler.obj"
-	-@erase "$(INTDIR)\debug_handler.obj"
-	-@erase "$(INTDIR)\instance.obj"
-	-@erase "$(INTDIR)\mode_end_call.obj"
-	-@erase "$(INTDIR)\multiplexer.obj"
-	-@erase "$(INTDIR)\null.obj"
-	-@erase "$(INTDIR)\old_api.obj"
-	-@erase "$(INTDIR)\read_only.obj"
-	-@erase "$(INTDIR)\row_merge.obj"
-	-@erase "$(INTDIR)\scalar.obj"
-	-@erase "$(INTDIR)\scalar_group.obj"
-	-@erase "$(INTDIR)\serialize.obj"
-	-@erase "$(INTDIR)\stash_cache.obj"
-	-@erase "$(INTDIR)\stash_to_next.obj"
-	-@erase "$(INTDIR)\table.obj"
-	-@erase "$(INTDIR)\table_array.obj"
-	-@erase "$(INTDIR)\table_container.obj"
-	-@erase "$(INTDIR)\table_data.obj"
-	-@erase "$(INTDIR)\table_tdata.obj"
-	-@erase "$(INTDIR)\table_dataset.obj"
-	-@erase "$(INTDIR)\table_iterator.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\watcher.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmphelpers.lib"
-
-"..\lib\$(OUTDIR)" :
-    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /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 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\libhelpers.bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmphelpers.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\all_helpers.obj" \
-	"$(INTDIR)\baby_steps.obj" \
-	"$(INTDIR)\bulk_to_next.obj" \
-	"$(INTDIR)\cache_handler.obj" \
-	"$(INTDIR)\debug_handler.obj" \
-	"$(INTDIR)\instance.obj" \
-	"$(INTDIR)\mode_end_call.obj" \
-	"$(INTDIR)\multiplexer.obj" \
-	"$(INTDIR)\null.obj" \
-	"$(INTDIR)\old_api.obj" \
-	"$(INTDIR)\read_only.obj" \
-	"$(INTDIR)\row_merge.obj" \
-	"$(INTDIR)\scalar.obj" \
-	"$(INTDIR)\scalar_group.obj" \
-	"$(INTDIR)\serialize.obj" \
-	"$(INTDIR)\stash_cache.obj" \
-	"$(INTDIR)\stash_to_next.obj" \
-	"$(INTDIR)\table.obj" \
-	"$(INTDIR)\table_array.obj" \
-	"$(INTDIR)\table_container.obj" \
-	"$(INTDIR)\table_data.obj" \
-	"$(INTDIR)\table_tdata.obj" \
-	"$(INTDIR)\table_dataset.obj" \
-	"$(INTDIR)\table_iterator.obj" \
-	"$(INTDIR)\watcher.obj"
-
-"..\lib\$(OUTDIR)\netsnmphelpers.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\lib\$(OUTDIR)\netsnmphelpers.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\all_helpers.obj"
-	-@erase "$(INTDIR)\baby_steps.obj"
-	-@erase "$(INTDIR)\bulk_to_next.obj"
-	-@erase "$(INTDIR)\cache_handler.obj"
-	-@erase "$(INTDIR)\debug_handler.obj"
-	-@erase "$(INTDIR)\instance.obj"
-	-@erase "$(INTDIR)\mode_end_call.obj"
-	-@erase "$(INTDIR)\multiplexer.obj"
-	-@erase "$(INTDIR)\null.obj"
-	-@erase "$(INTDIR)\old_api.obj"
-	-@erase "$(INTDIR)\read_only.obj"
-	-@erase "$(INTDIR)\row_merge.obj"
-	-@erase "$(INTDIR)\scalar.obj"
-	-@erase "$(INTDIR)\scalar_group.obj"
-	-@erase "$(INTDIR)\serialize.obj"
-	-@erase "$(INTDIR)\stash_cache.obj"
-	-@erase "$(INTDIR)\stash_to_next.obj"
-	-@erase "$(INTDIR)\table.obj"
-	-@erase "$(INTDIR)\table_array.obj"
-	-@erase "$(INTDIR)\table_container.obj"
-	-@erase "$(INTDIR)\table_data.obj"
-	-@erase "$(INTDIR)\table_tdata.obj"
-	-@erase "$(INTDIR)\table_dataset.obj"
-	-@erase "$(INTDIR)\table_iterator.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\watcher.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmphelpers.lib"
-
-"..\lib\$(OUTDIR)" :
-    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /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 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\libhelpers.bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmphelpers.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\all_helpers.obj" \
-	"$(INTDIR)\baby_steps.obj" \
-	"$(INTDIR)\bulk_to_next.obj" \
-	"$(INTDIR)\cache_handler.obj" \
-	"$(INTDIR)\debug_handler.obj" \
-	"$(INTDIR)\instance.obj" \
-	"$(INTDIR)\mode_end_call.obj" \
-	"$(INTDIR)\multiplexer.obj" \
-	"$(INTDIR)\null.obj" \
-	"$(INTDIR)\old_api.obj" \
-	"$(INTDIR)\read_only.obj" \
-	"$(INTDIR)\row_merge.obj" \
-	"$(INTDIR)\scalar.obj" \
-	"$(INTDIR)\scalar_group.obj" \
-	"$(INTDIR)\serialize.obj" \
-	"$(INTDIR)\stash_cache.obj" \
-	"$(INTDIR)\stash_to_next.obj" \
-	"$(INTDIR)\table.obj" \
-	"$(INTDIR)\table_array.obj" \
-	"$(INTDIR)\table_container.obj" \
-	"$(INTDIR)\table_data.obj" \
-	"$(INTDIR)\table_tdata.obj" \
-	"$(INTDIR)\table_dataset.obj" \
-	"$(INTDIR)\table_iterator.obj" \
-	"$(INTDIR)\watcher.obj"
-
-"..\lib\$(OUTDIR)\netsnmphelpers.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("libhelpers.dep")
-!INCLUDE "libhelpers.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "libhelpers.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
-SOURCE=..\..\agent\helpers\all_helpers.c
-
-"$(INTDIR)\all_helpers.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\baby_steps.c
-
-"$(INTDIR)\baby_steps.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\bulk_to_next.c
-
-"$(INTDIR)\bulk_to_next.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\cache_handler.c
-
-"$(INTDIR)\cache_handler.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\debug_handler.c
-
-"$(INTDIR)\debug_handler.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\instance.c
-
-"$(INTDIR)\instance.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\mode_end_call.c
-
-"$(INTDIR)\mode_end_call.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\multiplexer.c
-
-"$(INTDIR)\multiplexer.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\null.c
-
-"$(INTDIR)\null.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\old_api.c
-
-"$(INTDIR)\old_api.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\read_only.c
-
-"$(INTDIR)\read_only.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\row_merge.c
-
-"$(INTDIR)\row_merge.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\scalar.c
-
-"$(INTDIR)\scalar.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\scalar_group.c
-
-"$(INTDIR)\scalar_group.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\serialize.c
-
-"$(INTDIR)\serialize.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\stash_cache.c
-
-"$(INTDIR)\stash_cache.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\stash_to_next.c
-
-"$(INTDIR)\stash_to_next.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table.c
-
-"$(INTDIR)\table.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_array.c
-
-"$(INTDIR)\table_array.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_container.c
-
-"$(INTDIR)\table_container.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_data.c
-
-"$(INTDIR)\table_data.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_tdata.c
-
-"$(INTDIR)\table_tdata.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_dataset.c
-
-"$(INTDIR)\table_dataset.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\table_iterator.c
-
-"$(INTDIR)\table_iterator.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\helpers\watcher.c
-
-"$(INTDIR)\watcher.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-
-!ENDIF 
-
-
diff --git a/win32/libhelpers/libhelpers.dsp b/win32/libhelpers/libhelpers.dsp
deleted file mode 100644
index e90c56d..0000000
--- a/win32/libhelpers/libhelpers.dsp
+++ /dev/null
@@ -1,252 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libhelpers" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=libhelpers - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "libhelpers.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "libhelpers.mak" CFG="libhelpers - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "libhelpers - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libhelpers - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "libhelpers - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../lib/release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../lib/release/netsnmphelpers.lib"
-
-!ELSEIF  "$(CFG)" == "libhelpers - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../lib/debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../lib/debug/netsnmphelpers.lib"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "libhelpers - Win32 Release"
-# Name "libhelpers - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\all_helpers.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\baby_steps.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\bulk_to_next.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\cache_handler.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\debug_handler.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\instance.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\mode_end_call.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\multiplexer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\null.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\old_api.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\read_only.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\row_merge.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\scalar.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\scalar_group.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\serialize.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\stash_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\stash_to_next.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_array.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_container.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_data.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_tdata.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_dataset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\table_iterator.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\helpers\watcher.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\all_helpers.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\bulk_to_next.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\debug_handler.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\instance.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\multiplexer.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\null.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\old_api.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\read_only.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\serialize.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table_array.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table_data.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table_tdata.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table_dataset.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\agent\table_iterator.h"
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/libnetsnmptrapd/libnetsnmptrapd.dsp b/win32/libnetsnmptrapd/libnetsnmptrapd.dsp
index d54743b..08b41ff 100644
--- a/win32/libnetsnmptrapd/libnetsnmptrapd.dsp
+++ b/win32/libnetsnmptrapd/libnetsnmptrapd.dsp
@@ -89,37 +89,36 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\apps\snmptrapd_auth.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\apps\snmptrapd_handlers.c
 # End Source File
 # Begin Source File
 
 SOURCE=..\..\apps\snmptrapd_log.c
 # End Source File
-# Begin Source File
-
-SOURCE=..\..\apps\snmptrapd_auth.c
-# End Source File
 # End Group
 # Begin Group "Header Files"
 
 # PROP Default_Filter ""
 # Begin Source File
 
+SOURCE="..\..\agent\mibgroup\notification-log-mib\notification_log.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\apps\snmptrapd_auth.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\apps\snmptrapd_handlers.h"
 # End Source File
 # Begin Source File
 
 SOURCE="..\..\apps\snmptrapd_log.h"
 # End Source File
-# Begin Source File
-
-SOURCE="..\..\apps\snmptrapd_auth.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\agent\mibgroup\notification-log-mib\notification_log.h"
-# End Source File
 # End Group
 # End Target
 # End Project
-
diff --git a/win32/libsnmp/Makefile.in b/win32/libsnmp/Makefile.in
index a55f510..51f5d4f 100644
--- a/win32/libsnmp/Makefile.in
+++ b/win32/libsnmp/Makefile.in
@@ -2,6 +2,7 @@
 CFG=
 OUTDIR=
 INTDIR=
+SDK=
 
 !IF "$(OS)" == "Windows_NT"
 NULL=
@@ -9,257 +10,95 @@
 NULL=nul
 !ENDIF 
 
+ALL : "..\lib\$(OUTDIR)\netsnmp.lib"
+
+LIB32_OBJS= \
+	"$(INTDIR)\asn1.obj" \
+	"$(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" \
+	"$(INTDIR)\container_list_ssll.obj" \
+	"$(INTDIR)\container_null.obj" \
+	"$(INTDIR)\data_list.obj" \
+	"$(INTDIR)\default_store.obj" \
+	"$(INTDIR)\fd_event_manager.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\gettimeofday.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\int64.obj" \
+	"$(INTDIR)\keytools.obj" \
+	"$(INTDIR)\large_fd_set.obj" \
+	"$(INTDIR)\lcd_time.obj" \
+	"$(INTDIR)\md5.obj" \
+	"$(INTDIR)\mib.obj" \
+	"$(INTDIR)\mt_support.obj" \
+	"$(INTDIR)\oid_stash.obj" \
+	"$(INTDIR)\opendir.obj" \
+	"$(INTDIR)\parse.obj" \
+	"$(INTDIR)\read_config.obj" \
+	"$(INTDIR)\readdir.obj" \
+	"$(INTDIR)\scapi.obj" \
+	"$(INTDIR)\snmp-tc.obj" \
+	"$(INTDIR)\snmp.obj" \
+	"$(INTDIR)\snmpCallbackDomain.obj" \
+	"$(INTDIR)\snmpIPv4BaseDomain.obj" \
+	"$(INTDIR)\snmpSocketBaseDomain.obj" \
+	"$(INTDIR)\snmpTCPBaseDomain.obj" \
+	"$(INTDIR)\snmpTCPDomain.obj" \
+	"$(INTDIR)\snmpUDPBaseDomain.obj" \
+	"$(INTDIR)\snmpUDPDomain.obj" \
+	"$(INTDIR)\snmpUDPIPv4BaseDomain.obj" \
+	"$(INTDIR)\snmp_alarm.obj" \
+	"$(INTDIR)\snmp_api.obj" \
+	"$(INTDIR)\snmp_auth.obj" \
+	"$(INTDIR)\snmp_client.obj" \
+	"$(INTDIR)\snmp_debug.obj" \
+	"$(INTDIR)\snmp_enum.obj" \
+	"$(INTDIR)\snmp_logging.obj" \
+	"$(INTDIR)\snmp_parse_args.obj" \
+	"$(INTDIR)\snmp_secmod.obj" \
+	"$(INTDIR)\snmp_service.obj" \
+	"$(INTDIR)\snmp_transport.obj" \
+	"$(INTDIR)\snmp_version.obj" \
+	"$(INTDIR)\snmpusm.obj" \
+	"$(INTDIR)\snmpv3.obj" \
+	"$(INTDIR)\strlcat.obj" \
+	"$(INTDIR)\strlcpy.obj" \
+	"$(INTDIR)\strtok_r.obj" \
+	"$(INTDIR)\strtoull.obj" \
+	"$(INTDIR)\system.obj" \
+	"$(INTDIR)\tools.obj" \
+	"$(INTDIR)\ucd_compat.obj" \
+	"$(INTDIR)\vacm.obj" \
+	"$(INTDIR)\winpipe.obj"
+!IF "$(SDK)" == "true"
+LIB32_OBJS=$(LIB32_OBJS)\
+	"$(INTDIR)\snmpIPv6BaseDomain.obj" \
+	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
+	"$(INTDIR)\snmpUDPIPv6Domain.obj"
+!ENDIF
+
+CLEAN :
+	-@for %f in $(LIB32_OBJS) do erase %%f
+	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
+
+"..\lib\$(OUTDIR)" :
+    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
+
+"$(INTDIR)" :
+    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
 !IF  "$(CFG)" == "release"
-
-ALL : "..\lib\$(OUTDIR)\netsnmp.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\asn1.obj"
-	-@erase "$(INTDIR)\callback.obj"
-	-@erase "$(INTDIR)\check_varbind.obj"
-	-@erase "$(INTDIR)\cmu_compat.obj"
-	-@erase "$(INTDIR)\container.obj"
-	-@erase "$(INTDIR)\container_binary_array.obj"
-	-@erase "$(INTDIR)\container_iterator.obj"
-	-@erase "$(INTDIR)\container_list_ssll.obj"
-	-@erase "$(INTDIR)\container_null.obj"
-	-@erase "$(INTDIR)\data_list.obj"
-	-@erase "$(INTDIR)\default_store.obj"
-	-@erase "$(INTDIR)\getopt.obj"
-	-@erase "$(INTDIR)\int64.obj"
-	-@erase "$(INTDIR)\inet_ntop.obj"
-	-@erase "$(INTDIR)\inet_pton.obj"
-	-@erase "$(INTDIR)\keytools.obj"
-	-@erase "$(INTDIR)\lcd_time.obj"
-	-@erase "$(INTDIR)\md5.obj"
-	-@erase "$(INTDIR)\mib.obj"
-	-@erase "$(INTDIR)\mt_support.obj"
-	-@erase "$(INTDIR)\oid_stash.obj"
-	-@erase "$(INTDIR)\parse.obj"
-	-@erase "$(INTDIR)\read_config.obj"
-	-@erase "$(INTDIR)\scapi.obj"
-	-@erase "$(INTDIR)\snmp-tc.obj"
-	-@erase "$(INTDIR)\snmp.obj"
-	-@erase "$(INTDIR)\snmp_alarm.obj"
-	-@erase "$(INTDIR)\snmp_api.obj"
-	-@erase "$(INTDIR)\snmp_auth.obj"
-	-@erase "$(INTDIR)\snmp_client.obj"
-	-@erase "$(INTDIR)\snmp_debug.obj"
-	-@erase "$(INTDIR)\snmp_enum.obj"
-	-@erase "$(INTDIR)\snmp_logging.obj"
-	-@erase "$(INTDIR)\snmp_parse_args.obj"
-	-@erase "$(INTDIR)\snmp_secmod.obj"
-	-@erase "$(INTDIR)\snmp_transport.obj"
-	-@erase "$(INTDIR)\snmp_version.obj"
-	-@erase "$(INTDIR)\snmp_service.obj"
-	-@erase "$(INTDIR)\snmpCallbackDomain.obj"
-	-@erase "$(INTDIR)\snmpTCPDomain.obj"
-	-@erase "$(INTDIR)\snmpTCPIPv6Domain.obj"
-	-@erase "$(INTDIR)\snmpUDPDomain.obj"
-	-@erase "$(INTDIR)\snmpUDPIPv6Domain.obj"
-	-@erase "$(INTDIR)\snmpusm.obj"
-	-@erase "$(INTDIR)\snmpv3.obj"
-	-@erase "$(INTDIR)\strlcat.obj"
-	-@erase "$(INTDIR)\strlcpy.obj"
-	-@erase "$(INTDIR)\system.obj"
-	-@erase "$(INTDIR)\tools.obj"
-	-@erase "$(INTDIR)\strtok_r.obj"
-	-@erase "$(INTDIR)\strtoull.obj"
-	-@erase "$(INTDIR)\ucd_compat.obj"
-	-@erase "$(INTDIR)\vacm.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\winpipe.obj"
-	-@erase "$(INTDIR)\fd_event_manager.obj"
-	-@erase "$(INTDIR)\large_fd_set.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
-
-"..\lib\$(OUTDIR)" :
-    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
 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 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\$(PROGNAME).bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmp.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\asn1.obj" \
-	"$(INTDIR)\callback.obj" \
-	"$(INTDIR)\check_varbind.obj" \
-	"$(INTDIR)\cmu_compat.obj" \
-	"$(INTDIR)\container.obj" \
-	"$(INTDIR)\container_binary_array.obj" \
-	"$(INTDIR)\container_iterator.obj" \
-	"$(INTDIR)\container_list_ssll.obj" \
-	"$(INTDIR)\container_null.obj" \
-	"$(INTDIR)\data_list.obj" \
-	"$(INTDIR)\default_store.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\int64.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\keytools.obj" \
-	"$(INTDIR)\lcd_time.obj" \
-	"$(INTDIR)\md5.obj" \
-	"$(INTDIR)\mib.obj" \
-	"$(INTDIR)\mt_support.obj" \
-	"$(INTDIR)\oid_stash.obj" \
-	"$(INTDIR)\parse.obj" \
-	"$(INTDIR)\read_config.obj" \
-	"$(INTDIR)\scapi.obj" \
-	"$(INTDIR)\snmp-tc.obj" \
-	"$(INTDIR)\snmp.obj" \
-	"$(INTDIR)\snmp_alarm.obj" \
-	"$(INTDIR)\snmp_api.obj" \
-	"$(INTDIR)\snmp_auth.obj" \
-	"$(INTDIR)\snmp_client.obj" \
-	"$(INTDIR)\snmp_debug.obj" \
-	"$(INTDIR)\snmp_enum.obj" \
-	"$(INTDIR)\snmp_logging.obj" \
-	"$(INTDIR)\snmp_parse_args.obj" \
-	"$(INTDIR)\snmp_secmod.obj" \
-	"$(INTDIR)\snmp_transport.obj" \
-	"$(INTDIR)\snmp_version.obj" \
-	"$(INTDIR)\snmp_service.obj" \
-	"$(INTDIR)\snmpCallbackDomain.obj" \
-	"$(INTDIR)\snmpTCPDomain.obj" \
-	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
-	"$(INTDIR)\snmpUDPDomain.obj" \
-	"$(INTDIR)\snmpUDPIPv6Domain.obj" \
-	"$(INTDIR)\snmpusm.obj" \
-	"$(INTDIR)\snmpv3.obj" \
-	"$(INTDIR)\strlcat.obj" \
-	"$(INTDIR)\strlcpy.obj" \
-	"$(INTDIR)\system.obj" \
-	"$(INTDIR)\tools.obj" \
-	"$(INTDIR)\strtok_r.obj" \
-	"$(INTDIR)\strtoull.obj" \
-	"$(INTDIR)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj" \
-	"$(INTDIR)\large_fd_set.obj"
-
-"..\lib\$(OUTDIR)\netsnmp.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
 !ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\lib\$(OUTDIR)\netsnmp.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\asn1.obj"
-	-@erase "$(INTDIR)\callback.obj"
-	-@erase "$(INTDIR)\check_varbind.obj"
-	-@erase "$(INTDIR)\cmu_compat.obj"
-	-@erase "$(INTDIR)\container.obj"
-	-@erase "$(INTDIR)\container_binary_array.obj"
-	-@erase "$(INTDIR)\container_iterator.obj"
-	-@erase "$(INTDIR)\container_list_ssll.obj"
-	-@erase "$(INTDIR)\container_null.obj"
-	-@erase "$(INTDIR)\data_list.obj"
-	-@erase "$(INTDIR)\default_store.obj"
-	-@erase "$(INTDIR)\getopt.obj"
-	-@erase "$(INTDIR)\int64.obj"
-	-@erase "$(INTDIR)\inet_ntop.obj"
-	-@erase "$(INTDIR)\inet_pton.obj"
-	-@erase "$(INTDIR)\keytools.obj"
-	-@erase "$(INTDIR)\lcd_time.obj"
-	-@erase "$(INTDIR)\md5.obj"
-	-@erase "$(INTDIR)\mib.obj"
-	-@erase "$(INTDIR)\mt_support.obj"
-	-@erase "$(INTDIR)\oid_stash.obj"
-	-@erase "$(INTDIR)\parse.obj"
-	-@erase "$(INTDIR)\read_config.obj"
-	-@erase "$(INTDIR)\scapi.obj"
-	-@erase "$(INTDIR)\snmp-tc.obj"
-	-@erase "$(INTDIR)\snmp.obj"
-	-@erase "$(INTDIR)\snmp_alarm.obj"
-	-@erase "$(INTDIR)\snmp_api.obj"
-	-@erase "$(INTDIR)\snmp_auth.obj"
-	-@erase "$(INTDIR)\snmp_client.obj"
-	-@erase "$(INTDIR)\snmp_debug.obj"
-	-@erase "$(INTDIR)\snmp_enum.obj"
-	-@erase "$(INTDIR)\snmp_logging.obj"
-	-@erase "$(INTDIR)\snmp_parse_args.obj"
-	-@erase "$(INTDIR)\snmp_secmod.obj"
-	-@erase "$(INTDIR)\snmp_transport.obj"
-	-@erase "$(INTDIR)\snmp_version.obj"
-	-@erase "$(INTDIR)\snmp_service.obj"
-	-@erase "$(INTDIR)\snmpCallbackDomain.obj"
-	-@erase "$(INTDIR)\snmpTCPDomain.obj"
-	-@erase "$(INTDIR)\snmpTCPIPv6Domain.obj"
-	-@erase "$(INTDIR)\snmpUDPDomain.obj"
-	-@erase "$(INTDIR)\snmpUDPIPv6Domain.obj"
-	-@erase "$(INTDIR)\snmpusm.obj"
-	-@erase "$(INTDIR)\snmpv3.obj"
-	-@erase "$(INTDIR)\strlcat.obj"
-	-@erase "$(INTDIR)\strlcpy.obj"
-	-@erase "$(INTDIR)\system.obj"
-	-@erase "$(INTDIR)\tools.obj"
-	-@erase "$(INTDIR)\strtok_r.obj"
-	-@erase "$(INTDIR)\strtoull.obj"
-	-@erase "$(INTDIR)\strtoull.obj"
-	-@erase "$(INTDIR)\ucd_compat.obj"
-	-@erase "$(INTDIR)\vacm.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\winpipe.obj"
-	-@erase "$(INTDIR)\fd_event_manager.obj"
-	-@erase "$(INTDIR)\large_fd_set.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
-
-"..\lib\$(OUTDIR)" :
-    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
 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 
+!ENDIF
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -276,94 +115,15 @@
    $(CPP_PROJ) $< 
 <<
 
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
 
 RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\$(PROGNAME).bsc" 
-BSC32_SBRS= \
-
 LIB32=link.exe -lib
 LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmp.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\asn1.obj" \
-	"$(INTDIR)\callback.obj" \
-	"$(INTDIR)\check_varbind.obj" \
-	"$(INTDIR)\cmu_compat.obj" \
-	"$(INTDIR)\container.obj" \
-	"$(INTDIR)\container_binary_array.obj" \
-	"$(INTDIR)\container_iterator.obj" \
-	"$(INTDIR)\container_list_ssll.obj" \
-	"$(INTDIR)\container_null.obj" \
-	"$(INTDIR)\data_list.obj" \
-	"$(INTDIR)\default_store.obj" \
-	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\int64.obj" \
-	"$(INTDIR)\inet_ntop.obj" \
-	"$(INTDIR)\inet_pton.obj" \
-	"$(INTDIR)\keytools.obj" \
-	"$(INTDIR)\lcd_time.obj" \
-	"$(INTDIR)\md5.obj" \
-	"$(INTDIR)\mib.obj" \
-	"$(INTDIR)\mt_support.obj" \
-	"$(INTDIR)\oid_stash.obj" \
-	"$(INTDIR)\parse.obj" \
-	"$(INTDIR)\read_config.obj" \
-	"$(INTDIR)\scapi.obj" \
-	"$(INTDIR)\snmp-tc.obj" \
-	"$(INTDIR)\snmp.obj" \
-	"$(INTDIR)\snmp_alarm.obj" \
-	"$(INTDIR)\snmp_api.obj" \
-	"$(INTDIR)\snmp_auth.obj" \
-	"$(INTDIR)\snmp_client.obj" \
-	"$(INTDIR)\snmp_debug.obj" \
-	"$(INTDIR)\snmp_enum.obj" \
-	"$(INTDIR)\snmp_logging.obj" \
-	"$(INTDIR)\snmp_parse_args.obj" \
-	"$(INTDIR)\snmp_secmod.obj" \
-	"$(INTDIR)\snmp_transport.obj" \
-	"$(INTDIR)\snmp_version.obj" \
-	"$(INTDIR)\snmp_service.obj" \
-	"$(INTDIR)\snmpCallbackDomain.obj" \
-	"$(INTDIR)\snmpTCPDomain.obj" \
-	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
-	"$(INTDIR)\snmpUDPDomain.obj" \
-	"$(INTDIR)\snmpUDPIPv6Domain.obj" \
-	"$(INTDIR)\snmpusm.obj" \
-	"$(INTDIR)\snmpv3.obj" \
-	"$(INTDIR)\strlcat.obj" \
-	"$(INTDIR)\strlcpy.obj" \
-	"$(INTDIR)\system.obj" \
-	"$(INTDIR)\tools.obj" \
-	"$(INTDIR)\strtok_r.obj" \
-	"$(INTDIR)\strtoull.obj" \
-	"$(INTDIR)\strtoull.obj" \
-	"$(INTDIR)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj" \
-	"$(INTDIR)\large_fd_set.obj"
-
 "..\lib\$(OUTDIR)\netsnmp.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
     $(LIB32) @<<
   $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
 <<
 
-!ENDIF 
-
 
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
 !IF EXISTS("$(PROGNAME).dep")
@@ -374,7 +134,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\snmplib\asn1.c
 
 "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
@@ -393,6 +152,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\closedir.c
+
+"$(INTDIR)\closedir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\cmu_compat.c
 
 "$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -441,15 +206,21 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\fd_event_manager.c
+
+"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\getopt.c
 
 "$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\int64.c
+SOURCE=..\..\snmplib\gettimeofday.c
 
-"$(INTDIR)\int64.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\gettimeofday.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
@@ -465,12 +236,24 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\int64.c
+
+"$(INTDIR)\int64.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\keytools.c
 
 "$(INTDIR)\keytools.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\large_fd_set.c
+
+"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\lcd_time.c
 
 "$(INTDIR)\lcd_time.obj" : $(SOURCE) "$(INTDIR)"
@@ -501,6 +284,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\opendir.c
+
+"$(INTDIR)\opendir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\parse.c
 
 "$(INTDIR)\parse.obj" : $(SOURCE) "$(INTDIR)"
@@ -513,6 +302,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\readdir.c
+
+"$(INTDIR)\readdir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\scapi.c
 
 "$(INTDIR)\scapi.obj" : $(SOURCE) "$(INTDIR)"
@@ -531,6 +326,72 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\transports\snmpCallbackDomain.c
+
+"$(INTDIR)\snmpCallbackDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpIPv4BaseDomain.c
+
+"$(INTDIR)\snmpIPv4BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpIPv6BaseDomain.c
+
+"$(INTDIR)\snmpIPv6BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpSocketBaseDomain.c
+
+"$(INTDIR)\snmpSocketBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPBaseDomain.c
+
+"$(INTDIR)\snmpTCPBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPDomain.c
+
+"$(INTDIR)\snmpTCPDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPIPv6Domain.c
+
+"$(INTDIR)\snmpTCPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPBaseDomain.c
+
+"$(INTDIR)\snmpUDPBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPDomain.c
+
+"$(INTDIR)\snmpUDPDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv4BaseDomain.c
+
+"$(INTDIR)\snmpUDPIPv4BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv6Domain.c
+
+"$(INTDIR)\snmpUDPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\snmp_alarm.c
 
 "$(INTDIR)\snmp_alarm.obj" : $(SOURCE) "$(INTDIR)"
@@ -585,6 +446,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\snmp_service.c
+
+"$(INTDIR)\snmp_service.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\snmp_transport.c
 
 "$(INTDIR)\snmp_transport.obj" : $(SOURCE) "$(INTDIR)"
@@ -597,42 +464,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\snmp_service.c
-
-"$(INTDIR)\snmp_service.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpCallbackDomain.c
-
-"$(INTDIR)\snmpCallbackDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpTCPDomain.c
-
-"$(INTDIR)\snmpTCPDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpTCPIPv6Domain.c
-
-"$(INTDIR)\snmpTCPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpUDPDomain.c
-
-"$(INTDIR)\snmpUDPDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpUDPIPv6Domain.c
-
-"$(INTDIR)\snmpUDPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\snmpusm.c
 
 "$(INTDIR)\snmpusm.obj" : $(SOURCE) "$(INTDIR)"
@@ -657,18 +488,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\system.c
-
-"$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\tools.c
-
-"$(INTDIR)\tools.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\strtok_r.c
 
 "$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
@@ -681,6 +500,18 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\system.c
+
+"$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\tools.c
+
+"$(INTDIR)\tools.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -699,17 +530,3 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\fd_event_manager.c
-
-"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\large_fd_set.c
-
-"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
diff --git a/win32/libsnmp/libsnmp.dsp b/win32/libsnmp/libsnmp.dsp
index cbcda12..6448802 100644
--- a/win32/libsnmp/libsnmp.dsp
+++ b/win32/libsnmp/libsnmp.dsp
@@ -97,6 +97,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\closedir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\cmu_compat.c
 # End Source File
 # Begin Source File
@@ -129,10 +133,18 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\fd_event_manager.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\getopt.c
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\gettimeofday.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\inet_ntop.c
 # End Source File
 # Begin Source File
@@ -149,6 +161,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\large_fd_set.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\lcd_time.c
 # End Source File
 # Begin Source File
@@ -169,6 +185,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\opendir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\parse.c
 # End Source File
 # Begin Source File
@@ -177,6 +197,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\readdir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\scapi.c
 # End Source File
 # Begin Source File
@@ -225,6 +249,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\snmp_service.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\snmp_transport.c
 # End Source File
 # Begin Source File
@@ -233,27 +261,51 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmp_service.c
+SOURCE=..\..\snmplib\transports\snmpAliasDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpCallbackDomain.c
+SOURCE=..\..\snmplib\transports\snmpCallbackDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpTCPDomain.c
+SOURCE=..\..\snmplib\transports\snmpIPv4BaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpTCPIPv6Domain.c
+SOURCE=..\..\snmplib\transports\snmpIPv6BaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpUDPDomain.c
+SOURCE=..\..\snmplib\transports\snmpSocketBaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpUDPIPv6Domain.c
+SOURCE=..\..\snmplib\transports\snmpTCPBaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpTCPDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpTCPIPv6Domain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPBaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv4BaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv6Domain.c
 # End Source File
 # Begin Source File
 
@@ -273,14 +325,6 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\system.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\tools.c
-# End Source File
-# Begin Source File
-
 SOURCE=..\..\snmplib\strtok_r.c
 # End Source File
 # Begin Source File
@@ -289,6 +333,14 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\system.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\tools.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\ucd_compat.c
 # End Source File
 # Begin Source File
@@ -299,14 +351,6 @@
 
 SOURCE=..\..\snmplib\winpipe.c
 # End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\fd_event_manager.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\large_fd_set.c
-# End Source File
 # End Group
 # Begin Group "Header Files"
 
@@ -341,6 +385,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\getopt.h"
 # End Source File
 # Begin Source File
@@ -353,6 +401,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\large_fd_set.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\lcd_time.h"
 # End Source File
 # Begin Source File
@@ -445,6 +497,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\strtok_r.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\system.h"
 # End Source File
 # Begin Source File
@@ -453,24 +509,12 @@
 # End Source File
 # Begin Source File
 
-SOURCE="..\..\include\net-snmp\library\strtok_r.h"
-# End Source File
-# Begin Source File
-
 SOURCE="..\..\include\net-snmp\library\ucd_compat.h"
 # End Source File
 # Begin Source File
 
 SOURCE="..\..\include\net-snmp\library\vacm.h"
 # End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\library\large_fd_set.h"
-# End Source File
 # End Group
 # End Target
 # End Project
diff --git a/win32/libsnmp_dll/Makefile.in b/win32/libsnmp_dll/Makefile.in
index e81e1eb..31ae1bd 100644
--- a/win32/libsnmp_dll/Makefile.in
+++ b/win32/libsnmp_dll/Makefile.in
@@ -3,6 +3,7 @@
 OUTDIR=
 INTDIR=
 SSL=
+SDK=
 
 !IF "$(OS)" == "Windows_NT"
 NULL=
@@ -16,6 +17,7 @@
 	"$(INTDIR)\asn1.obj" \
 	"$(INTDIR)\callback.obj" \
 	"$(INTDIR)\check_varbind.obj" \
+	"$(INTDIR)\closedir.obj" \
 	"$(INTDIR)\cmu_compat.obj" \
 	"$(INTDIR)\container.obj" \
 	"$(INTDIR)\container_binary_array.obj" \
@@ -24,21 +26,34 @@
 	"$(INTDIR)\container_null.obj" \
 	"$(INTDIR)\data_list.obj" \
 	"$(INTDIR)\default_store.obj" \
+	"$(INTDIR)\fd_event_manager.obj" \
 	"$(INTDIR)\getopt.obj" \
-	"$(INTDIR)\int64.obj" \
+	"$(INTDIR)\gettimeofday.obj" \
 	"$(INTDIR)\inet_ntop.obj" \
 	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\int64.obj" \
 	"$(INTDIR)\keytools.obj" \
+	"$(INTDIR)\large_fd_set.obj" \
 	"$(INTDIR)\lcd_time.obj" \
 	"$(INTDIR)\md5.obj" \
 	"$(INTDIR)\mib.obj" \
 	"$(INTDIR)\mt_support.obj" \
 	"$(INTDIR)\oid_stash.obj" \
+	"$(INTDIR)\opendir.obj" \
 	"$(INTDIR)\parse.obj" \
 	"$(INTDIR)\read_config.obj" \
+	"$(INTDIR)\readdir.obj" \
 	"$(INTDIR)\scapi.obj" \
 	"$(INTDIR)\snmp-tc.obj" \
 	"$(INTDIR)\snmp.obj" \
+	"$(INTDIR)\snmpCallbackDomain.obj" \
+	"$(INTDIR)\snmpIPv4BaseDomain.obj" \
+	"$(INTDIR)\snmpSocketBaseDomain.obj" \
+	"$(INTDIR)\snmpTCPBaseDomain.obj" \
+	"$(INTDIR)\snmpTCPDomain.obj" \
+	"$(INTDIR)\snmpUDPBaseDomain.obj" \
+	"$(INTDIR)\snmpUDPDomain.obj" \
+	"$(INTDIR)\snmpUDPIPv4BaseDomain.obj" \
 	"$(INTDIR)\snmp_alarm.obj" \
 	"$(INTDIR)\snmp_api.obj" \
 	"$(INTDIR)\snmp_auth.obj" \
@@ -48,27 +63,26 @@
 	"$(INTDIR)\snmp_logging.obj" \
 	"$(INTDIR)\snmp_parse_args.obj" \
 	"$(INTDIR)\snmp_secmod.obj" \
+	"$(INTDIR)\snmp_service.obj" \
 	"$(INTDIR)\snmp_transport.obj" \
 	"$(INTDIR)\snmp_version.obj" \
-	"$(INTDIR)\snmp_service.obj" \
-	"$(INTDIR)\snmpCallbackDomain.obj" \
-	"$(INTDIR)\snmpTCPDomain.obj" \
-	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
-	"$(INTDIR)\snmpUDPDomain.obj" \
-	"$(INTDIR)\snmpUDPIPv6Domain.obj" \
 	"$(INTDIR)\snmpusm.obj" \
 	"$(INTDIR)\snmpv3.obj" \
 	"$(INTDIR)\strlcat.obj" \
 	"$(INTDIR)\strlcpy.obj" \
-	"$(INTDIR)\system.obj" \
-	"$(INTDIR)\tools.obj" \
 	"$(INTDIR)\strtok_r.obj" \
 	"$(INTDIR)\strtoull.obj" \
+	"$(INTDIR)\system.obj" \
+	"$(INTDIR)\tools.obj" \
 	"$(INTDIR)\ucd_compat.obj" \
 	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj" \
-	"$(INTDIR)\large_fd_set.obj"
+	"$(INTDIR)\winpipe.obj"
+!IF "$(SDK)" == "true"
+LINK32_OBJS=$(LINK32_OBJS)\
+	"$(INTDIR)\snmpIPv6BaseDomain.obj" \
+	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
+	"$(INTDIR)\snmpUDPIPv6Domain.obj"
+!ENDIF
 
 CLEAN :
 	-@for %f in ($(LINK32_OBJS)) do erase %%f
@@ -154,6 +168,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\closedir.c
+
+"$(INTDIR)\closedir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\cmu_compat.c
 
 "$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -202,15 +222,21 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\fd_event_manager.c
+
+"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\getopt.c
 
 "$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\int64.c
+SOURCE=..\..\snmplib\gettimeofday.c
 
-"$(INTDIR)\int64.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\gettimeofday.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
@@ -226,12 +252,24 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\int64.c
+
+"$(INTDIR)\int64.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\keytools.c
 
 "$(INTDIR)\keytools.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\large_fd_set.c
+
+"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\lcd_time.c
 
 "$(INTDIR)\lcd_time.obj" : $(SOURCE) "$(INTDIR)"
@@ -262,6 +300,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\opendir.c
+
+"$(INTDIR)\opendir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\parse.c
 
 "$(INTDIR)\parse.obj" : $(SOURCE) "$(INTDIR)"
@@ -274,6 +318,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\readdir.c
+
+"$(INTDIR)\readdir.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\scapi.c
 
 "$(INTDIR)\scapi.obj" : $(SOURCE) "$(INTDIR)"
@@ -292,6 +342,72 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\transports\snmpCallbackDomain.c
+
+"$(INTDIR)\snmpCallbackDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpIPv4BaseDomain.c
+
+"$(INTDIR)\snmpIPv4BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpIPv6BaseDomain.c
+
+"$(INTDIR)\snmpIPv6BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpSocketBaseDomain.c
+
+"$(INTDIR)\snmpSocketBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPBaseDomain.c
+
+"$(INTDIR)\snmpTCPBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPDomain.c
+
+"$(INTDIR)\snmpTCPDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpTCPIPv6Domain.c
+
+"$(INTDIR)\snmpTCPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPBaseDomain.c
+
+"$(INTDIR)\snmpUDPBaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPDomain.c
+
+"$(INTDIR)\snmpUDPDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv4BaseDomain.c
+
+"$(INTDIR)\snmpUDPIPv4BaseDomain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv6Domain.c
+
+"$(INTDIR)\snmpUDPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\snmp_alarm.c
 
 "$(INTDIR)\snmp_alarm.obj" : $(SOURCE) "$(INTDIR)"
@@ -346,6 +462,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\snmp_service.c
+
+"$(INTDIR)\snmp_service.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\snmp_transport.c
 
 "$(INTDIR)\snmp_transport.obj" : $(SOURCE) "$(INTDIR)"
@@ -358,42 +480,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\snmp_service.c
-
-"$(INTDIR)\snmp_service.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpCallbackDomain.c
-
-"$(INTDIR)\snmpCallbackDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpTCPDomain.c
-
-"$(INTDIR)\snmpTCPDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpTCPIPv6Domain.c
-
-"$(INTDIR)\snmpTCPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpUDPDomain.c
-
-"$(INTDIR)\snmpUDPDomain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\snmpUDPIPv6Domain.c
-
-"$(INTDIR)\snmpUDPIPv6Domain.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\snmpusm.c
 
 "$(INTDIR)\snmpusm.obj" : $(SOURCE) "$(INTDIR)"
@@ -418,18 +504,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\system.c
-
-"$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\tools.c
-
-"$(INTDIR)\tools.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\strtok_r.c
 
 "$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
@@ -442,6 +516,18 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\system.c
+
+"$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\tools.c
+
+"$(INTDIR)\tools.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -460,15 +546,3 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\fd_event_manager.c
-
-"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\snmplib\large_fd_set.c
-
-"$(INTDIR)\large_fd_set.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
diff --git a/win32/libsnmp_dll/libsnmp.def b/win32/libsnmp_dll/libsnmp.def
index c619904..45dd356 100644
--- a/win32/libsnmp_dll/libsnmp.def
+++ b/win32/libsnmp_dll/libsnmp.def
@@ -1,477 +1,2 @@
-;       @(#)snmp.def    1.0 10/26/97 (gmarzot@baynetworks.com)
-;       Single session API mods by M. Slifcak, Internet Security Systems, Inc.
-
-DESCRIPTION     'UCD SNMP Library'
-;CODE            SHARED READ EXECUTE
-;DATA            SHARED READ WRITE
-EXPORTS
-	asn_parse_int
-	asn_build_int
-	asn_parse_unsigned_int
-	asn_build_unsigned_int
-	asn_parse_string
-	asn_build_string
-	asn_parse_header
-	asn_build_header
-	asn_build_sequence
-	asn_parse_length
-	asn_build_length
-	asn_parse_objid
-	asn_build_objid
-	asn_parse_null
-	asn_build_null
-	asn_parse_bitstring
-	asn_build_bitstring
-	asn_parse_unsigned_int64
-	asn_build_unsigned_int64
-	mib_to_asn_type
-	MDbegin
-	MDupdate
-	print_mib
-	print_mib_tree
-	print_ascii_dump
-	read_objid
-	get_tree_head
-	netsnmp_init_mib
-	init_mib
-	init_mib_internals
-	print_variable
-	print_value
-	printI64
-	print_objid
-	fprint_objid
-	print_description
-	fprint_description
-	get_module_node
-	get_node
-	snmp_parse_oid
-	find_node
-	find_best_tree_node
-	get_wild_node
-	find_tree_node
-	clear_tree_flags
-	get_tree
-	read_module
-	netsnmp_read_module
-	read_mib
-	read_all_mibs
-	add_mibdir
-	snmp_get_token
-	snmp_set_mib_warnings
-	snmp_set_save_descriptions
-	add_module_replacement
-	print_subtree
-	print_ascii_dump_tree
-	xdump
-	snmp_parse_var_op
-	snmp_build_var_op
-	printU64
-	u64Subtract
-	zeroU64
-	opendir
-	readdir
-	closedir
-	gettimeofday
-	mkdirhier
-	winsock_startup
-	winsock_cleanup
-	get_myaddr
-	get_uptime
-	snmp_open
-	snmp_open_ex
-	snmp_close
-	snmp_send
-	snmp_read
-	snmp_free_pdu
-	snmp_free_var
-	snmp_select_info
-	snmp_timeout
-	snmp_set_do_debugging
-	snmp_get_do_debugging
-	snmp_get_do_logging
-	snmp_disable_stderrlog
-	snmp_enable_syslog
-	snmp_enable_stderrlog
-	snmp_enable_filelog
-	snmp_log
-	snmp_log_perror
-	snmp_perror
-	snmp_sess_perror
-	snmp_add_null_var
-	snmp_pdu_create
-	snmp_fix_pdu
-	snmp_clone_pdu
-	snmp_clone_mem
-	snmp_set_var_value
-	snmp_set_var_typed_value
-	snmp_set_var_objid
-	snmp_replace_var_types
-	snmp_api_errstring
-	snmp_errstring
-	snmp_set_detail
-	snmp_synch_setup
-	snmp_synch_response
-	snmp_duplicate_objid
-	snmp_get_next_sessid
-	snmp_get_next_transid
-	snmp_increment_statistic
-	snmp_increment_statistic_by
-	snmp_get_statistic
-	init_snmp
-	snmp_shutdown
-	snmp_add_var
-	run_alarms
-	snmp_clone_var
-	print_oid_report
-	print_oid_report_enable_suffix
-	print_oid_report_enable_symbolic
-	print_oid_report_enable_oid
-	print_oid_report_enable_labeledoid
-;	ascii_to_binary
-;	hex_to_binary
-	get_tc_descriptor
-	get_tc_description
-	setenv
-	find_module
-	snmp_async_send
-	snmp_error
-	snmp_sess_init
-	snmp_sess_open
-	snmp_sess_session
-	snmp_sess_send
-	snmp_sess_async_send
-	snmp_sess_select_info
-	snmp_sess_read
-	snmp_sess_timeout
-	snmp_sess_close
-	snmp_sess_error
-	snmp_sess_synch_response
-	snmp_mib_toggle_options
-	snmp_mib_toggle_options_usage
-	read_config_read_data
-	read_config_store_data
-	read_config_print_usage
-	read_config_with_type
-	read_config_store
-	read_config_read_octet_string
-	read_config_save_octet_string
-	read_config_read_memory
-	read_config_read_objid
-	free_config
-	skip_white
-	skip_not_white
-	register_app_config_handler
-	unregister_app_config_handler
-	read_app_config_store
-	unregister_config_handler
-	snmp_set_do_debugging
-	snmp_get_do_debugging
-	debug_indent
-	debug_indent_add
-        debug_indent_get
-        debug_config_register_tokens
-        debug_config_turn_on_debugging
-	debug_is_token_registered
-	debugmsg
-	debugmsg_hex
-	debugmsg_hextli
-	debugmsgtoken
-	debugmsg_var
-	debugmsg_oidrange
-	debug_register_tokens
-	generate_Ku
-	uptime_string
-	netsnmp_memdup
-	dump_chunk
-	init_callbacks
-	snmp_register_callback
-	snmp_unregister_callback
-	snmp_call_callbacks
-	snmp_count_callbacks
-	snmp_callback_available
-	strncasecmp
-	strcasecmp
-	init_snmp_alarm
-	netsnmp_ds_register_premib
-	netsnmp_ds_register_config
-	netsnmp_ds_set_boolean
-	netsnmp_ds_get_boolean
-	netsnmp_ds_toggle_boolean
-	netsnmp_ds_set_int
-	netsnmp_ds_get_int
-	netsnmp_ds_set_string
-	netsnmp_ds_get_string
-	snmp_pdu_add_variable
-	snmp_varlist_add_variable
-	encode_keychange
-	decode_keychange
-	generate_kul
-	sc_init
-	setup_engineID
-	binary_to_hex
-	hex_to_binary2
-	snmp_res_init
-	snmp_res_lock
-	snmp_res_unlock
-	snmp_res_destroy_mutex
-	snmp_mib_toggle_options
-	snmp_mib_toggle_options_usage
-	snmp_in_toggle_options
-	snmp_in_toggle_options_usage
-	snmp_out_toggle_options
-	snmp_out_toggle_options_usage
-	snmp_oid_compare
-	snmp_oidtree_compare
-	netsnmp_oid_equals
-	usm_free_user
-	usm_add_user
-	usm_create_initial_user
-	usm_parse_create_usmUser
-	usm_save_users
-	usm_parse_config_usmUser
-	usm_get_user
-	usm_get_userList
-	usm_cloneFrom_user
-	usm_create_user
-	usm_remove_user
-	usm_set_user_password
-	read_premib_configs
-	init_snmpv3
-	snmpv3_local_snmpEngineTime
-	snmpv3_local_snmpEngineBoots
-	snmpv3_get_engineID
-	snmpv3_generate_engineID
-	get_default_authtype
-	get_default_privtype
-	register_config_handler
-	read_configs
-	debugmsg_oid
-	config_perror
-	config_pwarn
-	copy_word
-	copy_nword
-	calculate_time_diff
-	vacm_is_configured
-	get_configuration_directory
-	vacm_createGroupEntry
-	vacm_destroyGroupEntry
-	vacm_destroyAllGroupEntries
-	vacm_createAccessEntry
-	vacm_destroyAccessEntry
-	vacm_destroyAllAccessEntries
-	vacm_createViewEntry
-	vacm_destroyViewEntry
-	vacm_destroyAllViewEntries
-	vacm_getViewEntry
-	vacm_getGroupEntry
-	vacm_getAccessEntry
-	vacm_parse_config_access
-	vacm_parse_config_group
-	vacm_parse_config_view
-	vacm_parse_config_auth_access
-	store_vacm
-	vacm_scanGroupInit
-	vacm_scanGroupNext
-	vacm_scanAccessInit
-	vacm_scanAccessNext
-	vacm_scanViewInit
-	vacm_scanViewNext
-	vacm_checkSubtree
-	snmp_synch_response_cb
-	snmp_clone_varbind
-	snmp_free_varbind
-	snmp_get_dump_packet
-	snmp_get_quick_print
-	snmp_get_random_access
-	snmp_get_suffix_only
-	snmp_set_dump_packet
-	snmp_set_full_objid
-	snmp_set_quick_print
-	snmp_set_random_access
-	snmp_set_suffix_only
-	snmp_clean_persistent
-	snmp_save_persistent
-	usm_store_users
-	snmp_store
-	atime_diff
-	uatime_hdiff
-	atime_newMarker
-	atime_setMarker
-	atime_ready
-	snmp_strcat
-	fprint_variable
-	sprint_realloc_objid
-	sprint_realloc_asciistring
-	sprint_realloc_variable
-	sprint_realloc_value
-	sprint_realloc_by_type
-	snmp_realloc
-      netsnmp_config
-      netsnmp_config_remember
-      netsnmp_config_error
-      snmp_hex_to_binary
-      snmpv3_options
-      netsnmp_get_version
-      snmp_sess_transport
-      snmp_sess_pointer
-      snmp_decimal_to_binary
-	snmp_alarm_register
-	snmp_alarm_unregister
-      date_n_time
-	snmp_disable_log
-	snmp_enable_syslog_ident
-	netsnmp_sess_log_error
-	snmp_add
-	handle_long_opt
-	netsnmp_transport_free
-	netsnmp_tdomain_transport
-	netsnmp_tdomain_transport_oid
-	netsnmp_tdomain_support
-	netsnmpUDPDomain
-	netsnmp_snmpTCPDomain
-	netsnmp_create_data_list
-	netsnmp_add_list_data
-	netsnmp_get_list_data
-	netsnmp_free_list_data
-	netsnmp_free_all_list_data
-	netsnmp_oid_stash_add_data
-	netsnmp_oid_stash_get_data
-	netsnmp_oid_find_prefix
-	netsnmp_container_init_list
-	netsnmp_container_null_init
-	netsnmp_container_ssll_init
-	netsnmp_strdup_and_null
-	build_oid
-	build_oid_noalloc
-	parse_one_oid_index
-	parse_oid_indexes
-	count_varbinds
-	count_varbinds_of_type
-	se_find_label_in_slist
-	se_find_value_in_slist
-	se_add_pair_to_slist
-	snmp_parse_args
-	snmp_parse_args_descriptions
-	snmp_parse_args_usage
-	netsnmp_callback_open
-	netsnmp_udp_agent_config_tokens_register
-	netsnmp_udp_parse_security
-	netsnmp_udp_getSecName
-	find_sec_mod
-	strlcat
-	strlcpy
-	getopt
-	optarg                  DATA
-	opterr                  DATA
-	optind                  DATA
-	optopt                  DATA
-	optreset                DATA
-	usmNoAuthProtocol       DATA
-	usmHMACMD5AuthProtocol  DATA
-	usmHMACSHA1AuthProtocol DATA
-	usmNoPrivProtocol       DATA
-	usmDESPrivProtocol      DATA
-	usmAESPrivProtocol      DATA
-	snprint_bitstring
-	snprint_value
-	snprint_objid
-	snprint_variable
-	snmp_synch_reset
-	snmp_log_options
-	snmp_log_syslogname
-	netsnmp_clear_callback_list
-	netsnmp_clear_tdomain_list
-	clear_sec_mod
-	clear_snmp_enum
-	clear_callback
-	clear_user_list
-	netsnmp_ds_get_void
-	netsnmp_ds_set_void
-	netsnmp_ds_shutdown
-	netsnmp_sprint_realloc_objid
-	netsnmp_sprint_realloc_objid_tree
-	module_name
-	Mib                     DATA
-	tree_head               DATA
-	snmp_errno              DATA
-	netsnmp_daemonize
-	snmp_log_options_usage
-	netsnmp_container_free_list
-	netsnmp_container_simple_free
-	netsnmp_oid_stash_getnext_node
-	netsnmp_oid_stash_free
-	netsnmp_get_list_node
-	netsnmp_remove_list_node
-	netsnmp_remove_loghandler
-	netsnmp_register_loghandler
-	get_logh_head
-	dbg_tokens
-	debug_num_tokens
-	create_winpipe_transport
-	get_temp_file_pattern
-	netsnmp_strdup
-	netsnmp_calloc
-	netsnmp_malloc
-	netsnmp_realloc
-	netsnmp_free
-	netsnmp_udp6_agent_config_tokens_register
-	init_usm_conf
-	strtok_r
-        strtoull
-        snmp_reset_var_buffers
-        netsnmp_container_add_index
-        netsnmp_container_find
-        netsnmp_c64_check32_and_update
-        netsnmp_oid_compare_ll
-        netsnmp_ncompare_netsnmp_index
-        netsnmp_compare_netsnmp_index
-        find_varbind_in_list
-        netsnmp_dispatch_external_events
-        netsnmp_external_event_info
-        netsnmp_logging_restart
-        skip_token
-        parse_secLevel_conf
-        netsnmp_query_get_default_session
-        netsnmp_query_get_default_session_unchecked
-        netsnmp_query_set_default_session
-        netsnmp_ds_parse_boolean
-        netsnmp_register_default_target
-        netsnmp_register_default_domain
-        netsnmp_register_service_handlers
-        netsnmp_transport_open_server
-        netsnmp_tdomain_transport_full
-        snmp_add_full
-        netsnmp_transport_open_client
-        snmp_oidsubtree_compare
-        snmp_disable_syslog
-        snmp_stderrlog_status
-        sa_find_specific
-        check_rowstatus_transition
-        check_storage_transition
-        netsnmp_view_get
-        netsnmp_check_vb_rowstatus_value
-        netsnmp_check_vb_type_and_size
-        netsnmp_check_vb_type_and_max_size
-        read_config_save_objid
-        print_oid_report_enable_mibchildoid
-        netsnmp_query_walk
-        netsnmp_query_getnext
-        netsnmp_query_get
-        netsnmp_gethostbyname_v4
-        netsnmp_str_to_gid
-        netsnmp_mktemp
-        netsnmp_str_to_uid
-        netsnmp_check_vb_truthvalue
-        snmp_set_var_typed_integer
-        netsnmp_large_fd_set_cleanup
-        netsnmp_large_fd_set_init
-        netsnmp_large_fd_is_set
-        netsnmp_large_fd_setfd
-        netsnmp_large_fd_clr
-        snmp_read2
-        netsnmp_dispatch_external_events2
-        netsnmp_external_event_info2
-        snmp_select_info2
-        sprint_realloc_hexstring
-        netsnmp_set_line_buffering
-        debugmsg_suboid
+; This .def file is obsolete. Do not add any names of exported functions here
+; but add NETSNMP_IMPORT to function declarations instead.
diff --git a/win32/libsnmp_dll/libsnmp.def.in b/win32/libsnmp_dll/libsnmp.def.in
deleted file mode 100644
index 4670fb6..0000000
--- a/win32/libsnmp_dll/libsnmp.def.in
+++ /dev/null
@@ -1,459 +0,0 @@
-;       @(#)snmp.def    1.0 10/26/97 (gmarzot@baynetworks.com)
-;       Single session API mods by M. Slifcak, Internet Security Systems, Inc.
-
-DESCRIPTION     'UCD SNMP Library'
-;CODE            SHARED READ EXECUTE
-;DATA            SHARED READ WRITE
-EXPORTS
-	asn_parse_int
-	asn_build_int
-	asn_parse_unsigned_int
-	asn_build_unsigned_int
-	asn_parse_string
-	asn_build_string
-	asn_parse_header
-	asn_build_header
-	asn_build_sequence
-	asn_parse_length
-	asn_build_length
-	asn_parse_objid
-	asn_build_objid
-	asn_parse_null
-	asn_build_null
-	asn_parse_bitstring
-	asn_build_bitstring
-	asn_parse_unsigned_int64
-	asn_build_unsigned_int64
-	mib_to_asn_type
-	MDbegin
-	MDupdate
-	print_mib
-	print_mib_tree
-	print_ascii_dump
-	read_objid
-	get_tree_head
-	netsnmp_init_mib
-	init_mib
-	init_mib_internals
-	print_variable
-	print_value
-	printI64
-	print_objid
-	fprint_objid
-	print_description
-	fprint_description
-	get_module_node
-	get_node
-	snmp_parse_oid
-	find_node
-	find_best_tree_node
-	get_wild_node
-	find_tree_node
-	clear_tree_flags
-	get_tree
-	read_module
-	netsnmp_read_module
-	read_mib
-	read_all_mibs
-	add_mibdir
-	snmp_get_token
-	snmp_set_mib_warnings
-	snmp_set_save_descriptions
-	add_module_replacement
-	print_subtree
-	print_ascii_dump_tree
-	xdump
-	snmp_parse_var_op
-	snmp_build_var_op
-	printU64
-	u64Subtract
-	zeroU64
-	opendir
-	readdir
-	closedir
-	gettimeofday
-	mkdirhier
-	winsock_startup
-	winsock_cleanup
-	get_myaddr
-	get_uptime
-	snmp_open
-	snmp_open_ex
-	snmp_close
-	snmp_send
-	snmp_read
-	snmp_free_pdu
-	snmp_free_var
-	snmp_select_info
-	snmp_timeout
-	snmp_set_do_debugging
-	snmp_get_do_debugging
-	snmp_get_do_logging
-	snmp_disable_stderrlog
-	snmp_enable_syslog
-	snmp_enable_stderrlog
-	snmp_enable_filelog
-	snmp_log
-	snmp_log_perror
-	snmp_perror
-	snmp_sess_perror
-	snmp_add_null_var
-	snmp_pdu_create
-	snmp_fix_pdu
-	snmp_clone_pdu
-	snmp_clone_mem
-	snmp_set_var_value
-	snmp_set_var_typed_value
-	snmp_set_var_objid
-	snmp_replace_var_types
-	snmp_api_errstring
-	snmp_errstring
-	snmp_set_detail
-	snmp_synch_setup
-	snmp_synch_response
-	snmp_duplicate_objid
-	snmp_get_next_sessid
-	snmp_get_next_transid
-	snmp_increment_statistic
-	snmp_increment_statistic_by
-	snmp_get_statistic
-	init_snmp
-	snmp_shutdown
-	snmp_add_var
-	run_alarms
-	snmp_clone_var
-	print_oid_report
-	print_oid_report_enable_suffix
-	print_oid_report_enable_symbolic
-	print_oid_report_enable_oid
-	print_oid_report_enable_labeledoid
-;	ascii_to_binary
-;	hex_to_binary
-	get_tc_descriptor
-	get_tc_description
-	setenv
-	find_module
-	snmp_async_send
-	snmp_error
-	snmp_sess_init
-	snmp_sess_open
-	snmp_sess_session
-	snmp_sess_send
-	snmp_sess_async_send
-	snmp_sess_select_info
-	snmp_sess_read
-	snmp_sess_timeout
-	snmp_sess_close
-	snmp_sess_error
-	snmp_sess_synch_response
-	snmp_mib_toggle_options
-	snmp_mib_toggle_options_usage
-	read_config_read_data
-	read_config_store_data
-	read_config_print_usage
-	read_config_with_type
-	read_config_store
-	read_config_read_octet_string
-	read_config_save_octet_string
-	read_config_read_memory
-	read_config_read_objid
-	free_config
-	skip_white
-	skip_not_white
-	register_app_config_handler
-	unregister_app_config_handler
-	read_app_config_store
-	unregister_config_handler
-	snmp_set_do_debugging
-	snmp_get_do_debugging
-	debug_indent
-	debug_indent_add
-	debug_is_token_registered
-	debugmsg
-	debugmsg_hex
-	debugmsg_hextli
-	debugmsgtoken
-	debugmsg_var
-	debugmsg_oidrange
-	debug_register_tokens
-	generate_Ku
-	uptime_string
-	netsnmp_memdup
-	dump_chunk
-	init_callbacks
-	snmp_register_callback
-	snmp_unregister_callback
-	snmp_call_callbacks
-	snmp_count_callbacks
-	snmp_callback_available
-	strncasecmp
-	strcasecmp
-	init_snmp_alarm
-	netsnmp_ds_register_premib
-	netsnmp_ds_register_config
-	netsnmp_ds_set_boolean
-	netsnmp_ds_get_boolean
-	netsnmp_ds_toggle_boolean
-	netsnmp_ds_set_int
-	netsnmp_ds_get_int
-	netsnmp_ds_set_string
-	netsnmp_ds_get_string
-	snmp_pdu_add_variable
-	snmp_varlist_add_variable
-	encode_keychange
-	decode_keychange
-	generate_kul
-	sc_init
-	setup_engineID
-	binary_to_hex
-	hex_to_binary2
-	snmp_res_init
-	snmp_res_lock
-	snmp_res_unlock
-	snmp_res_destroy_mutex
-	snmp_mib_toggle_options
-	snmp_mib_toggle_options_usage
-	snmp_in_toggle_options
-	snmp_in_toggle_options_usage
-	snmp_out_toggle_options
-	snmp_out_toggle_options_usage
-	snmp_oid_compare
-	snmp_oidtree_compare
-	netsnmp_oid_equals
-	usm_free_user
-	usm_add_user
-	usm_create_initial_user
-	usm_parse_create_usmUser
-	usm_save_users
-	usm_parse_config_usmUser
-	usm_get_user
-	usm_get_userList
-	usm_cloneFrom_user
-	usm_create_user
-	usm_remove_user
-	usm_set_user_password
-	read_premib_configs
-	init_snmpv3
-	snmpv3_local_snmpEngineTime
-	snmpv3_local_snmpEngineBoots
-	snmpv3_get_engineID
-	snmpv3_generate_engineID
-	get_default_authtype
-	get_default_privtype
-	register_config_handler
-	read_configs
-	debugmsg_oid
-	config_perror
-	config_pwarn
-	copy_word
-	copy_nword
-	calculate_time_diff
-	vacm_is_configured
-	get_configuration_directory
-	vacm_createGroupEntry
-	vacm_destroyGroupEntry
-	vacm_destroyAllGroupEntries
-	vacm_createAccessEntry
-	vacm_destroyAccessEntry
-	vacm_destroyAllAccessEntries
-	vacm_createViewEntry
-	vacm_destroyViewEntry
-	vacm_destroyAllViewEntries
-	vacm_getViewEntry
-	vacm_getGroupEntry
-	vacm_getAccessEntry
-	vacm_parse_config_access
-	vacm_parse_config_group
-	vacm_parse_config_view
-	vacm_parse_config_auth_access
-	store_vacm
-	vacm_scanGroupInit
-	vacm_scanGroupNext
-	vacm_scanAccessInit
-	vacm_scanAccessNext
-	vacm_scanViewInit
-	vacm_scanViewNext
-	vacm_checkSubtree
-	snmp_synch_response_cb
-	snmp_clone_varbind
-	snmp_free_varbind
-	snmp_get_dump_packet
-	snmp_get_quick_print
-	snmp_get_random_access
-	snmp_get_suffix_only
-	snmp_set_dump_packet
-	snmp_set_full_objid
-	snmp_set_quick_print
-	snmp_set_random_access
-	snmp_set_suffix_only
-	snmp_clean_persistent
-	snmp_save_persistent
-	usm_store_users
-	snmp_store
-	atime_diff
-	uatime_hdiff
-	atime_newMarker
-	atime_setMarker
-	atime_ready
-	snmp_strcat
-	fprint_variable
-	sprint_realloc_objid
-	sprint_realloc_asciistring
-	sprint_realloc_variable
-	sprint_realloc_value
-	sprint_realloc_by_type
-	snmp_realloc
-      netsnmp_config
-      netsnmp_config_remember
-      snmp_hex_to_binary
-      snmpv3_options
-      netsnmp_get_version
-      snmp_sess_transport
-      snmp_sess_pointer
-      snmp_decimal_to_binary
-	snmp_alarm_register
-	snmp_alarm_unregister
-      date_n_time
-	snmp_disable_log
-	snmp_enable_syslog_ident
-	netsnmp_sess_log_error
-	snmp_add
-	handle_long_opt
-	netsnmp_transport_free
-	netsnmp_tdomain_transport
-	netsnmp_tdomain_transport_oid
-	netsnmp_tdomain_support
-	netsnmpUDPDomain
-	netsnmp_snmpTCPDomain
-	netsnmp_create_data_list
-	netsnmp_add_list_data
-	netsnmp_get_list_data
-	netsnmp_free_list_data
-	netsnmp_free_all_list_data
-	netsnmp_oid_stash_add_data
-	netsnmp_oid_stash_get_data
-	netsnmp_oid_find_prefix
-	netsnmp_container_init_list
-	netsnmp_container_null_init
-	netsnmp_container_ssll_init
-	netsnmp_strdup_and_null
-	build_oid
-	build_oid_noalloc
-	parse_one_oid_index
-	parse_oid_indexes
-	count_varbinds
-	count_varbinds_of_type
-	se_find_label_in_slist
-	se_find_value_in_slist
-	se_add_pair_to_slist
-	snmp_parse_args
-	snmp_parse_args_descriptions
-	snmp_parse_args_usage
-	netsnmp_callback_open
-	netsnmp_udp_agent_config_tokens_register
-	netsnmp_udp_parse_security
-	netsnmp_udp_getSecName
-	find_sec_mod
-	strlcat
-	strlcpy
-	getopt
-	optarg                  DATA
-	opterr                  DATA
-	optind                  DATA
-	optopt                  DATA
-	optreset                DATA
-	usmNoAuthProtocol       DATA
-	usmHMACMD5AuthProtocol  DATA
-	usmHMACSHA1AuthProtocol DATA
-	usmNoPrivProtocol       DATA
-	usmDESPrivProtocol      DATA
-	usmAESPrivProtocol      DATA
-	snprint_bitstring
-	snprint_value
-	snprint_objid
-	snprint_variable
-	snmp_synch_reset
-	snmp_log_options
-	snmp_log_syslogname
-	netsnmp_clear_callback_list
-	netsnmp_clear_tdomain_list
-	clear_sec_mod
-	clear_snmp_enum
-	clear_callback
-	clear_user_list
-	netsnmp_ds_get_void
-	netsnmp_ds_set_void
-	netsnmp_ds_shutdown
-	netsnmp_sprint_realloc_objid
-	netsnmp_sprint_realloc_objid_tree
-	module_name
-	Mib                     DATA
-	tree_head               DATA
-	snmp_errno              DATA
-	netsnmp_daemonize
-	snmp_log_options_usage
-	netsnmp_container_free_list
-	netsnmp_oid_stash_getnext_node
-	netsnmp_oid_stash_free
-	netsnmp_get_list_node
-	netsnmp_remove_list_node
-	netsnmp_remove_loghandler
-	netsnmp_register_loghandler
-	get_logh_head
-	dbg_tokens
-	debug_num_tokens
-	create_winpipe_transport
-	get_temp_file_pattern
-	netsnmp_strdup
-	netsnmp_calloc
-	netsnmp_malloc
-	netsnmp_realloc
-	netsnmp_free
-	netsnmp_udp6_agent_config_tokens_register
-	init_usm_conf
-	strtok_r
-        snmp_reset_var_buffers
-        netsnmp_container_add_index
-        netsnmp_container_find
-        netsnmp_c64_check32_and_update
-        netsnmp_oid_compare_ll
-        netsnmp_ncompare_netsnmp_index
-        netsnmp_compare_netsnmp_index
-        find_varbind_in_list
-        netsnmp_dispatch_external_events
-        netsnmp_external_event_info
-        netsnmp_logging_restart
-        skip_token
-        parse_secLevel_conf
-        netsnmp_query_get_default_session
-        netsnmp_query_set_default_session
-        netsnmp_ds_parse_boolean
-        netsnmp_register_default_target
-        netsnmp_register_default_domain
-        netsnmp_register_service_handlers
-        netsnmp_transport_open_server
-        netsnmp_tdomain_transport_full
-        snmp_add_full
-        netsnmp_transport_open_client
-        snmp_oidsubtree_compare
-        snmp_disable_syslog
-        snmp_stderrlog_status
-        sa_find_specific
-        check_rowstatus_transition
-        check_storage_transition
-        netsnmp_view_get
-        netsnmp_check_vb_rowstatus_value
-        netsnmp_check_vb_type_and_size
-        netsnmp_check_vb_type_and_max_size
-        read_config_save_objid
-        print_oid_report_enable_mibchildoid
-        netsnmp_query_walk
-        netsnmp_query_getnext
-        netsnmp_query_get
-	netsnmp_mktemp
-        debugmsg_suboid
-;IPv6        netsnmp_udp6_parse_security
-;IPv6        netsnmp_udp6_getSecName
-;IPv6        netsnmp_TCPIPv6Domain
-;IPv6        netsnmp_UDPIPv6Domain
-
diff --git a/win32/libsnmp_dll/libsnmp_dll.dsp b/win32/libsnmp_dll/libsnmp_dll.dsp
index cb0403a..6407d42 100644
--- a/win32/libsnmp_dll/libsnmp_dll.dsp
+++ b/win32/libsnmp_dll/libsnmp_dll.dsp
@@ -104,6 +104,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\closedir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\cmu_compat.c
 # End Source File
 # Begin Source File
@@ -136,10 +140,18 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\fd_event_manager.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\getopt.c
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\gettimeofday.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\inet_ntop.c
 # End Source File
 # Begin Source File
@@ -156,6 +168,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\large_fd_set.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\lcd_time.c
 # End Source File
 # Begin Source File
@@ -176,6 +192,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\opendir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\parse.c
 # End Source File
 # Begin Source File
@@ -184,6 +204,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\readdir.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\scapi.c
 # End Source File
 # Begin Source File
@@ -232,6 +256,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\snmp_service.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\snmp_transport.c
 # End Source File
 # Begin Source File
@@ -240,27 +268,51 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmp_service.c
+SOURCE=..\..\snmplib\transports\snmpAliasDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpCallbackDomain.c
+SOURCE=..\..\snmplib\transports\snmpCallbackDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpTCPDomain.c
+SOURCE=..\..\snmplib\transports\snmpIPv4BaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpTCPIPv6Domain.c
+SOURCE=..\..\snmplib\transports\snmpIPv6BaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpUDPDomain.c
+SOURCE=..\..\snmplib\transports\snmpSocketBaseDomain.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\snmpUDPIPv6Domain.c
+SOURCE=..\..\snmplib\transports\snmpTCPBaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpTCPDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpTCPIPv6Domain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPBaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv4BaseDomain.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\transports\snmpUDPIPv6Domain.c
 # End Source File
 # Begin Source File
 
@@ -280,14 +332,6 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\snmplib\system.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\tools.c
-# End Source File
-# Begin Source File
-
 SOURCE=..\..\snmplib\strtok_r.c
 # End Source File
 # Begin Source File
@@ -296,6 +340,14 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\snmplib\system.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\snmplib\tools.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\ucd_compat.c
 # End Source File
 # Begin Source File
@@ -306,14 +358,6 @@
 
 SOURCE=..\..\snmplib\winpipe.c
 # End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\fd_event_manager.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\snmplib\large_fd_set.c
-# End Source File
 # End Group
 # Begin Group "Header Files"
 
@@ -348,6 +392,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\getopt.h"
 # End Source File
 # Begin Source File
@@ -360,6 +408,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\large_fd_set.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\lcd_time.h"
 # End Source File
 # Begin Source File
@@ -452,6 +504,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE="..\..\include\net-snmp\library\strtok_r.h"
+# End Source File
+# Begin Source File
+
 SOURCE="..\..\include\net-snmp\library\system.h"
 # End Source File
 # Begin Source File
@@ -460,24 +516,12 @@
 # End Source File
 # Begin Source File
 
-SOURCE="..\..\include\net-snmp\library\strtok_r.h"
-# End Source File
-# Begin Source File
-
 SOURCE="..\..\include\net-snmp\library\ucd_compat.h"
 # End Source File
 # Begin Source File
 
 SOURCE="..\..\include\net-snmp\library\vacm.h"
 # End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\library\fd_event_manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\include\net-snmp\library\large_fd_set.h"
-# End Source File
 # End Group
 # Begin Source File
 
diff --git a/win32/libucdmibs/libucdmibs.def b/win32/libucdmibs/libucdmibs.def
deleted file mode 100644
index 5f473d9..0000000
--- a/win32/libucdmibs/libucdmibs.def
+++ /dev/null
@@ -1,17 +0,0 @@
-;       @(#)libucdmibs.def    1.0 10/26/97 (gmarzot@baynetworks.com)
-
-DESCRIPTION     'UCD SNMP MIBS Library'
-;CODE
-            SHARED READ EXECUTE
-;DATA            SHARED READ WRITE
-EXPORTS
-	send_easy_trap
-	init_master_agent
-	init_mib_modules
-	init_agent
-	argvrestartname
-	argvrestart
-	argvrestartp
-	update_config
-	get_target_sessions
-
diff --git a/win32/mib_module_includes.h b/win32/mib_module_includes.h
index 3bfdf6a..9cb750c 100644
--- a/win32/mib_module_includes.h
+++ b/win32/mib_module_includes.h
@@ -28,8 +28,8 @@
 #include "mibgroup/Rmon.h"
 #endif
 
-#ifdef USING_DISMAN_EVENT_MIB_MODULE
-#include "mibgroup/disman/event-mib.h"
+#ifdef USING_DISMAN_EVENT_MODULE
+#include "mibgroup/disman/event.h"
 #endif
 
 #ifdef USING_SMUX_MODULE
@@ -88,8 +88,9 @@
 #include "mibgroup/snmpv3/usmStats.h"
 #include "mibgroup/snmpv3/usmUser.h"
 #include "mibgroup/notification/snmpNotifyTable.h"
-#include "mibgroup/snmp-notification-mib/snmpNotifyFilterTable.h"
 #include "mibgroup/notification/snmpNotifyFilterProfileTable.h"
+#include "mibgroup/snmp-notification-mib/snmpNotifyFilterTable.h"
+#include "mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h"
 #include "mibgroup/target/snmpTargetAddrEntry.h"
 #include "mibgroup/target/snmpTargetParamsEntry.h"
 #include "mibgroup/target/target.h"
@@ -99,6 +100,7 @@
 #include "mibgroup/agent/nsDebug.h"
 #include "mibgroup/agent/nsCache.h"
 #include "mibgroup/agent/nsLogging.h"
+#include "mibgroup/utilities/iquery.h"
 #include "mibgroup/utilities/override.h"
 
 #ifdef USING_HOST_MODULE
@@ -125,15 +127,23 @@
 #include "mibgroup/Rmon/event.h"
 #endif
 
-#ifdef USING_DISMAN_EVENT_MIB_MODULE
-#include "mibgroup/disman/mteTriggerTable.h"
-#include "mibgroup/disman/mteTriggerDeltaTable.h"
-#include "mibgroup/disman/mteTriggerExistenceTable.h"
-#include "mibgroup/disman/mteTriggerBooleanTable.h"
-#include "mibgroup/disman/mteTriggerThresholdTable.h"
-#include "mibgroup/disman/mteObjectsTable.h"
-#include "mibgroup/disman/mteEventTable.h"
-#include "mibgroup/disman/mteEventNotificationTable.h"
+#ifdef USING_DISMAN_EVENT_MODULE
+#include "mibgroup/disman/event/mteEventConf.h"
+#include "mibgroup/disman/event/mteEvent.h"
+#include "mibgroup/disman/event/mteEventNotificationTable.h"
+#include "mibgroup/disman/event/mteEventSetTable.h"
+#include "mibgroup/disman/event/mteEventTable.h"
+#include "mibgroup/disman/event/mteObjectsConf.h"
+#include "mibgroup/disman/event/mteObjects.h"
+#include "mibgroup/disman/event/mteObjectsTable.h"
+#include "mibgroup/disman/event/mteScalars.h"
+#include "mibgroup/disman/event/mteTriggerBooleanTable.h"
+#include "mibgroup/disman/event/mteTriggerConf.h"
+#include "mibgroup/disman/event/mteTriggerDeltaTable.h"
+#include "mibgroup/disman/event/mteTriggerExistenceTable.h"
+#include "mibgroup/disman/event/mteTrigger.h"
+#include "mibgroup/disman/event/mteTriggerTable.h"
+#include "mibgroup/disman/event/mteTriggerThresholdTable.h"
 #endif
 
 #ifdef USING_SMUX_MODULE
diff --git a/win32/mib_module_inits.h b/win32/mib_module_inits.h
index fd0a7b2..f78d893 100644
--- a/win32/mib_module_inits.h
+++ b/win32/mib_module_inits.h
@@ -29,6 +29,9 @@
 #ifndef _MSC_VER
   if (should_init("disk")) init_disk();
 #endif
+#ifdef USING_UCD_SNMP_DLMOD_MODULE
+  if (should_init("dlmod")) init_dlmod();
+#endif
   if (should_init("loadave")) init_loadave();
   if (should_init("extensible")) init_extensible();
   if (should_init("extend")) init_extend();
@@ -78,17 +81,22 @@
 
   if (should_init("override")) init_override();
 
-#ifdef USING_DISMAN_EVENT_MIB_MODULE
-#ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
+#ifdef USING_DISMAN_EVENT_MODULE
+  if (should_init("mteTrigger")) init_mteTrigger();
+  if (should_init("mteTriggerConf")) init_mteTriggerConf();
   if (should_init("mteTriggerTable")) init_mteTriggerTable();
-#endif
   if (should_init("mteTriggerDeltaTable")) init_mteTriggerDeltaTable();
   if (should_init("mteTriggerExistenceTable")) init_mteTriggerExistenceTable();
   if (should_init("mteTriggerBooleanTable")) init_mteTriggerBooleanTable();
   if (should_init("mteTriggerThresholdTable")) init_mteTriggerThresholdTable();
+  if (should_init("mteObjects")) init_mteObjects();
+  if (should_init("mteObjectsConf")) init_mteObjectsConf();
   if (should_init("mteObjectsTable")) init_mteObjectsTable();
+  if (should_init("mteEvent")) init_mteEvent();
+  if (should_init("mteEventConf")) init_mteEventConf();
   if (should_init("mteEventTable")) init_mteEventTable();
   if (should_init("mteEventNotificationTable")) init_mteEventNotificationTable();
+  if (should_init("mteEventSetTable")) init_mteEventSetTable();
 #endif
 
   if (should_init("vacm_context")) init_vacm_context();
diff --git a/win32/mib_module_shutdown.h b/win32/mib_module_shutdown.h
index 0432265..caedf60 100644
--- a/win32/mib_module_shutdown.h
+++ b/win32/mib_module_shutdown.h
@@ -1,6 +1,15 @@
 /* This file is automatically generated by configure.  Do not modify by hand. */
   if (should_init("proxy")) shutdown_proxy();
+  if (should_init("snmpNotifyFilterTable")) shutdown_snmpNotifyFilterTable();
  
 #ifdef USING_UCD_SNMP_MODULE
   if (should_init("pass_persist")) shutdown_pass_persist();
 #endif
+
+#ifdef USING_UCD_SNMP_DLMOD_MODULE
+  if (should_init("dlmod")) shutdown_dlmod();
+#endif
+
+#ifdef USING_WINEXTDLL_MODULE
+   if (should_init("winExtDLL")) shutdown_winExtDLL();
+#endif
diff --git a/win32/net-snmp/agent/mib_module_config.h b/win32/net-snmp/agent/mib_module_config.h
index d981c80..4978dc8 100644
--- a/win32/net-snmp/agent/mib_module_config.h
+++ b/win32/net-snmp/agent/mib_module_config.h
@@ -15,6 +15,9 @@
 /* Define if compiling with the notification module files.  */
 #define USING_NOTIFICATION_MODULE 1
  
+/* Define if compiling with the disman/event module files.  */
+#define USING_DISMAN_EVENT_MODULE 1
+ 
 /* Define if compiling with the notification-log-mib module files. */
 #ifdef HAVE_WIN32_PLATFORM_SDK
 #define USING_NOTIFICATION_LOG_MIB_NOTIFICATION_LOG_MODULE 1
@@ -243,33 +246,57 @@
 #endif /* USING_RMON_MODULE */
 
 
-#ifdef USING_DISMAN_EVENT_MIB_MODULE 
+#ifdef USING_DISMAN_EVENT_MODULE 
  
-/* Define if compiling with the disman/mteTriggerTable module files.  */
-#define USING_DISMAN_MTETRIGGERTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteScalars module files.  */
+#define USING_DISMAN_EVENT_MTESCALARS_MODULE 1
  
-/* Define if compiling with the disman/mteTriggerDeltaTable module files.  */
-#define USING_DISMAN_MTETRIGGERDELTATABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTrigger module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGER_MODULE 1
  
-/* Define if compiling with the disman/mteTriggerExistenceTable module files.  */
-#define USING_DISMAN_MTETRIGGEREXISTENCETABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerTable module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGERTABLE_MODULE 1
  
-/* Define if compiling with the disman/mteTriggerBooleanTable module files.  */
-#define USING_DISMAN_MTETRIGGERBOOLEANTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerDeltaTable module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGERDELTATABLE_MODULE 1
  
-/* Define if compiling with the disman/mteTriggerThresholdTable module files.  */
-#define USING_DISMAN_MTETRIGGERTHRESHOLDTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerExistenceTable module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGEREXISTENCETABLE_MODULE 1
  
-/* Define if compiling with the disman/mteObjectsTable module files.  */
-#define USING_DISMAN_MTEOBJECTSTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerBooleanTable module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGERBOOLEANTABLE_MODULE 1
  
-/* Define if compiling with the disman/mteEventTable module files.  */
-#define USING_DISMAN_MTEEVENTTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerThresholdTable module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGERTHRESHOLDTABLE_MODULE 1
  
-/* Define if compiling with the disman/mteEventNotificationTable module files.  */
-#define USING_DISMAN_MTEEVENTNOTIFICATIONTABLE_MODULE 1
+/* Define if compiling with the disman/event/mteTriggerConf module files.  */
+#define USING_DISMAN_EVENT_MTETRIGGERCONF_MODULE 1
  
-#endif /* USING_DISMAN_EVENT_MIB_MODULE */
+/* Define if compiling with the disman/event/mteEvent module files.  */
+#define USING_DISMAN_EVENT_MTEEVENT_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteEventTable module files.  */
+#define USING_DISMAN_EVENT_MTEEVENTTABLE_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteEventSetTable module files.  */
+#define USING_DISMAN_EVENT_MTEEVENTSETTABLE_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteEventNotificationTable module files.  */
+#define USING_DISMAN_EVENT_MTEEVENTNOTIFICATIONTABLE_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteEventConf module files.  */
+#define USING_DISMAN_EVENT_MTEEVENTCONF_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteObjects module files.  */
+#define USING_DISMAN_EVENT_MTEOBJECTS_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteObjectsTable module files.  */
+#define USING_DISMAN_EVENT_MTEOBJECTSTABLE_MODULE 1
+ 
+/* Define if compiling with the disman/event/mteObjectsConf module files.  */
+#define USING_DISMAN_EVENT_MTEOBJECTSCONF_MODULE 1
+ 
+#endif /* USING_DISMAN_EVENT_MODULE */
 
 #ifdef USING_SMUX_MODULE
  
diff --git a/win32/net-snmp/net-snmp-config.h b/win32/net-snmp/net-snmp-config.h
index 7523402..7d6e3b7 100644
--- a/win32/net-snmp/net-snmp-config.h
+++ b/win32/net-snmp/net-snmp-config.h
@@ -30,23 +30,18 @@
  * Microsoft Visual Studio MSVC 6.0 and the Platform SDK (PSDK)
  * Microsoft Visual Studio.Net 2002
  * Microsoft Visual Studio.Net 2003
- * Cygwin
- * MinGW 
  */
-#define HAVE_WIN32_PLATFORM_SDK
+#define HAVE_WIN32_PLATFORM_SDK 1
 
 /* Define NETSNMP_ENABLE_IPV6 to enable IPv6.  IPv6 is only available on
  * Windows XP and higher.  */
 /* #undef NETSNMP_ENABLE_IPV6 */
 
 /* Only use Windows API functions available on Windows 2000 SP4 or later.  
- * We need at least SP1 for some IPv6 defines in ws2ipdef.h.
- * Only define _WIN32_WINNT when not being compiled with MSVC 6 without PSDK
- * because there is a bug in the MSVC 6 header <winsock.h> that causes
- * inclusion of <winsock2.h>.
+ * We need at least SP1 for some IPv6 defines in ws2ipdef.h
  */
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x501 /*_WIN32_WINNT_WIN2K*/
+#define _WIN32_WINNT 0x600 /*_WIN32_WINNT_WIN6*/
 #else
 #if _WIN32_WINNT < 0x501
 #error _WIN32_WINNT is too low - it should be set to at least 0x501.
@@ -244,9 +239,6 @@
 /* Define to 1 if you have the <asm/page.h> header file. */
 /* #undef HAVE_ASM_PAGE_H */
 
-/* Define to 1 if you have the `bcopy' function. */
-/* #undef HAVE_BCOPY */
-
 /* Define to 1 if you have the `cgetnext' function. */
 /* #undef HAVE_CGETNEXT */
 
@@ -332,12 +324,14 @@
 /* Define to 1 if you have the `if_nameindex' function. */
 /* #undef HAVE_IF_NAMEINDEX */
 
-/* Define to 1 if you have the `index' function. */
-/* #undef HAVE_INDEX */
-
 /* Define to 1 if you have the <inet/mib2.h> header file. */
 /* #undef HAVE_INET_MIB2_H */
 
+#ifdef HAVE_WIN32_PLATFORM_SDK
+/* Define to 1 if you have the <iphlpapi.h> header file. */
+#define HAVE_IPHLPAPI_H
+#endif
+
 /* Define to 1 if the system has the type `int32_t'. */
 #define HAVE_INT32_T 1
 
@@ -443,12 +437,6 @@
 /* Define to 1 if you have the <malloc.h> header file. */
 #define HAVE_MALLOC_H 1
 
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
 /* Define to 1 if you have the <memory.h> header file. */
 #define HAVE_MEMORY_H 1
 
@@ -706,9 +694,6 @@
 /* Define to 1 if you have the `strcasestr' function. */
 /* #undef HAVE_STRCASESTR */
 
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
 /* Define to 1 if you have the `strdup' function. */
 #define HAVE_STRDUP 1
 
@@ -852,6 +837,9 @@
 /* Define to 1 if you have the <sys/time.h> header file. */
 /* #undef HAVE_SYS_TIME_H */
 
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
 /* Define to 1 if you have the <sys/types.h> header file. */
 #define HAVE_SYS_TYPES_H 1
 
@@ -945,6 +933,15 @@
 /* Define to 1 if you have the <winsock.h> header file. */
 #define HAVE_WINSOCK_H 1
 
+/* Define to 1 if you have the <winsock2.h> header file. */
+#define HAVE_WINSOCK2_H 1
+
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#define HAVE_WS2TCPIP_H 1
+
+/* Set if IP_PKTINFO is usable */
+#define HAVE_IP_PKTINFO 1
+
 /* Define to 1 if you have the <xti.h> header file. */
 /* #undef HAVE_XTI_H */
 
@@ -994,7 +991,7 @@
 #define STDC_HEADERS 1
 
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
+/* #undef TIME_WITH_SYS_TIME */
 
 /* Define to 1 if your processor stores words with the most significant byte
    first (like Motorola and SPARC, unlike Intel and VAX). */
@@ -1054,10 +1051,10 @@
 /* Does struct in6_addr have a s6_un.sa6_ladd field? */
 /* #undef HAVE_STRUCT_IN6_ADDR_S6_UN_SA6_LADDR */
 
-/* mshhdr.msg_control */
+/* msghdr.msg_control */
 /* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
 
-/* mshhdr.msg_flags */
+/* msghdr.msg_flags */
 /* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */
 
 /* rtentry structure tests */
@@ -1356,44 +1353,6 @@
 #define HAVE_SSIZE_T
 #endif
 
-#ifndef HAVE_STRCHR
-#ifdef HAVE_INDEX
-# define strchr(a,b) index(a,b)
-# define strrchr(a,b) rindex(a,b)
-#endif
-#endif
-
-#ifndef HAVE_INDEX
-#ifdef HAVE_STRCHR
-# define index(a,b) strchr(a,b)
-# define rindex(a,b) strrchr(a,b)
-#endif
-#endif
-
-#ifndef HAVE_MEMCPY
-#ifdef HAVE_BCOPY
-# define memcpy(d, s, n) bcopy ((s), (d), (n))
-# define memmove(d, s, n) bcopy ((s), (d), (n))
-# define memcmp bcmp
-#endif
-#endif
-
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_MEMCPY
-# define memmove memcpy
-#endif
-#endif
-
-#if notused /* dont step on other defns of bcopy,bzero, and bcmp */
-#ifndef HAVE_BCOPY
-#ifdef HAVE_MEMCPY
-# define bcopy(s, d, n) memcpy ((d), (s), (n))
-# define bzero(p,n) memset((p),(0),(n))
-# define bcmp memcmp
-#endif
-#endif
-#endif
-
 /* If you have openssl 0.9.7 or above, you likely have AES support. */
 /* #undef NETSNMP_USE_OPENSSL */
 
@@ -1502,6 +1461,32 @@
     available.  */
 /* #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN */
 
+/*  This is defined if support for the TLS transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_TLSBASE_DOMAIN */
+
+/*  This is defined if support for the Alias transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_ALIAS_DOMAIN */
+
+/*  This is defined if support for the SSH transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_SSH_DOMAIN */
+
+/*  This is defined if support for the DTLS/UDP transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN */
+
+/*  This is defined if support for the TLS/TCP transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_TLSTCP_DOMAIN */
+
+/*  This is defined if support for stdin/out transport domain is available.   */
+/* #undef NETSNMP_TRANSPORT_STD_DOMAIN */
+
+/*  This is defined if support for the IPv4Base transport domain is available.   */
+#define NETSNMP_TRANSPORT_IPV4BASE_DOMAIN 1
+
 /* define this if the USM security module is available */
 #define NETSNMP_SECMOD_USM 1
 
@@ -1521,13 +1506,14 @@
 #define config_require(x)
 #define config_version_require(x)
 #define config_warning(x)
+#define config_error(x)
 #define config_exclude(x)
 #define config_arch_require(x,y)
 #define config_parse_dot_conf(w,x,y,z)
 #define config_add_mib(x)
 #define config_belongs_in(x)
 
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
+#if defined (WIN32)
 #define ENV_SEPARATOR ";"
 #define ENV_SEPARATOR_CHAR ';'
 #else
@@ -1708,44 +1694,6 @@
 #  endif
 #endif
 
-#if defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL)
-
-#include <malloc.h>
-#include <stdlib.h> /* malloc(), calloc(), realloc() and free() */
-#include <string.h> /* strdup() */
-#include <ws2tcpip.h> /* socklen_t */
-#include <wspiapi.h> /* has inline function definitions referencing calloc(). */
-
-/* wrap alloc functions to use DLL's memory heap */
-
-#define strdup    netsnmp_strdup
-#define calloc    netsnmp_calloc
-#define malloc    netsnmp_malloc
-#define realloc   netsnmp_realloc
-#define free      netsnmp_free
-
-#endif /* defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL) */
-
-/* MSVC OpenSSL linker settings. */
-#if defined(WIN32) && !defined(mingw32)
-#  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
-#      ifdef _DEBUG
-#        pragma comment(lib, "libeay32MDd.lib")
-#      else
-#        pragma comment(lib, "libeay32MD.lib")
-#      endif
-#    else
-#      ifdef _DEBUG
-#        pragma comment(lib, "libeay32MTd.lib")
-#      else
-#        pragma comment(lib, "libeay32MT.lib")
-#      endif
-#    endif
-#    pragma comment(lib, "gdi32.lib")
-#  endif
-#endif
-
 #endif       /* WIN32 */
 
 #ifndef NETSNMP_IMPORT
@@ -1784,6 +1732,7 @@
 #ifdef NETSNMP_ENABLE_IPV6
   #define NETSNMP_TRANSPORT_TCPIPV6_DOMAIN 1
   #define NETSNMP_TRANSPORT_UDPIPV6_DOMAIN 1
+  #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
 #else
   #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
   #undef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
@@ -1850,6 +1799,9 @@
 #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
 #endif
 
+/* Size prefix to use to printf a uint32_t */
+#define NETSNMP_PRI32 ""
+
 #ifdef _MSC_VER
 #ifdef _WIN64
 #define NETSNMP_PRIz "I64"
diff --git a/win32/net-snmp/net-snmp-config.h.in b/win32/net-snmp/net-snmp-config.h.in
index 2e93dcd..04aa99c 100644
--- a/win32/net-snmp/net-snmp-config.h.in
+++ b/win32/net-snmp/net-snmp-config.h.in
@@ -30,8 +30,6 @@
  * Microsoft Visual Studio MSVC 6.0 and the Platform SDK (PSDK)
  * Microsoft Visual Studio.Net 2002
  * Microsoft Visual Studio.Net 2003
- * Cygwin
- * MinGW 
  */
 /* #undef HAVE_WIN32_PLATFORM_SDK */
 
@@ -40,13 +38,10 @@
 /* #undef NETSNMP_ENABLE_IPV6 */
 
 /* Only use Windows API functions available on Windows 2000 SP4 or later.  
- * We need at least SP1 for some IPv6 defines in ws2ipdef.h.
- * Only define _WIN32_WINNT when not being compiled with MSVC 6 without PSDK
- * because there is a bug in the MSVC 6 header <winsock.h> that causes
- * inclusion of <winsock2.h>.
+ * We need at least SP1 for some IPv6 defines in ws2ipdef.h
  */
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x501 /*_WIN32_WINNT_WIN2K*/
+#define _WIN32_WINNT 0x600 /*_WIN32_WINNT_WIN6*/
 #else
 #if _WIN32_WINNT < 0x501
 #error _WIN32_WINNT is too low - it should be set to at least 0x501.
@@ -244,9 +239,6 @@
 /* Define to 1 if you have the <asm/page.h> header file. */
 /* #undef HAVE_ASM_PAGE_H */
 
-/* Define to 1 if you have the `bcopy' function. */
-/* #undef HAVE_BCOPY */
-
 /* Define to 1 if you have the `cgetnext' function. */
 /* #undef HAVE_CGETNEXT */
 
@@ -332,12 +324,14 @@
 /* Define to 1 if you have the `if_nameindex' function. */
 /* #undef HAVE_IF_NAMEINDEX */
 
-/* Define to 1 if you have the `index' function. */
-/* #undef HAVE_INDEX */
-
 /* Define to 1 if you have the <inet/mib2.h> header file. */
 /* #undef HAVE_INET_MIB2_H */
 
+#ifdef HAVE_WIN32_PLATFORM_SDK
+/* Define to 1 if you have the <iphlpapi.h> header file. */
+#define HAVE_IPHLPAPI_H
+#endif
+
 /* Define to 1 if the system has the type `int32_t'. */
 #define HAVE_INT32_T 1
 
@@ -443,12 +437,6 @@
 /* Define to 1 if you have the <malloc.h> header file. */
 #define HAVE_MALLOC_H 1
 
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
 /* Define to 1 if you have the <memory.h> header file. */
 #define HAVE_MEMORY_H 1
 
@@ -706,9 +694,6 @@
 /* Define to 1 if you have the `strcasestr' function. */
 /* #undef HAVE_STRCASESTR */
 
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
 /* Define to 1 if you have the `strdup' function. */
 #define HAVE_STRDUP 1
 
@@ -852,6 +837,9 @@
 /* Define to 1 if you have the <sys/time.h> header file. */
 /* #undef HAVE_SYS_TIME_H */
 
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
 /* Define to 1 if you have the <sys/types.h> header file. */
 #define HAVE_SYS_TYPES_H 1
 
@@ -945,6 +933,15 @@
 /* Define to 1 if you have the <winsock.h> header file. */
 #define HAVE_WINSOCK_H 1
 
+/* Define to 1 if you have the <winsock2.h> header file. */
+#define HAVE_WINSOCK2_H 1
+
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#define HAVE_WS2TCPIP_H 1
+
+/* Set if IP_PKTINFO is usable */
+#define HAVE_IP_PKTINFO 1
+
 /* Define to 1 if you have the <xti.h> header file. */
 /* #undef HAVE_XTI_H */
 
@@ -994,7 +991,7 @@
 #define STDC_HEADERS 1
 
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
+/* #undef TIME_WITH_SYS_TIME */
 
 /* Define to 1 if your processor stores words with the most significant byte
    first (like Motorola and SPARC, unlike Intel and VAX). */
@@ -1054,10 +1051,10 @@
 /* Does struct in6_addr have a s6_un.sa6_ladd field? */
 /* #undef HAVE_STRUCT_IN6_ADDR_S6_UN_SA6_LADDR */
 
-/* mshhdr.msg_control */
+/* msghdr.msg_control */
 /* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
 
-/* mshhdr.msg_flags */
+/* msghdr.msg_flags */
 /* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */
 
 /* rtentry structure tests */
@@ -1356,44 +1353,6 @@
 #define HAVE_SSIZE_T
 #endif
 
-#ifndef HAVE_STRCHR
-#ifdef HAVE_INDEX
-# define strchr(a,b) index(a,b)
-# define strrchr(a,b) rindex(a,b)
-#endif
-#endif
-
-#ifndef HAVE_INDEX
-#ifdef HAVE_STRCHR
-# define index(a,b) strchr(a,b)
-# define rindex(a,b) strrchr(a,b)
-#endif
-#endif
-
-#ifndef HAVE_MEMCPY
-#ifdef HAVE_BCOPY
-# define memcpy(d, s, n) bcopy ((s), (d), (n))
-# define memmove(d, s, n) bcopy ((s), (d), (n))
-# define memcmp bcmp
-#endif
-#endif
-
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_MEMCPY
-# define memmove memcpy
-#endif
-#endif
-
-#if notused /* dont step on other defns of bcopy,bzero, and bcmp */
-#ifndef HAVE_BCOPY
-#ifdef HAVE_MEMCPY
-# define bcopy(s, d, n) memcpy ((d), (s), (n))
-# define bzero(p,n) memset((p),(0),(n))
-# define bcmp memcmp
-#endif
-#endif
-#endif
-
 /* If you have openssl 0.9.7 or above, you likely have AES support. */
 /* #undef NETSNMP_USE_OPENSSL */
 
@@ -1502,6 +1461,32 @@
     available.  */
 /* #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN */
 
+/*  This is defined if support for the TLS transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_TLSBASE_DOMAIN */
+
+/*  This is defined if support for the Alias transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_ALIAS_DOMAIN */
+
+/*  This is defined if support for the SSH transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_SSH_DOMAIN */
+
+/*  This is defined if support for the DTLS/UDP transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN */
+
+/*  This is defined if support for the TLS/TCP transport domain is
+    available.   */
+/* #undef NETSNMP_TRANSPORT_TLSTCP_DOMAIN */
+
+/*  This is defined if support for stdin/out transport domain is available.   */
+/* #undef NETSNMP_TRANSPORT_STD_DOMAIN */
+
+/*  This is defined if support for the IPv4Base transport domain is available.   */
+#define NETSNMP_TRANSPORT_IPV4BASE_DOMAIN 1
+
 /* define this if the USM security module is available */
 #define NETSNMP_SECMOD_USM 1
 
@@ -1521,13 +1506,14 @@
 #define config_require(x)
 #define config_version_require(x)
 #define config_warning(x)
+#define config_error(x)
 #define config_exclude(x)
 #define config_arch_require(x,y)
 #define config_parse_dot_conf(w,x,y,z)
 #define config_add_mib(x)
 #define config_belongs_in(x)
 
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
+#if defined (WIN32)
 #define ENV_SEPARATOR ";"
 #define ENV_SEPARATOR_CHAR ';'
 #else
@@ -1708,44 +1694,6 @@
 #  endif
 #endif
 
-#if defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL)
-
-#include <malloc.h>
-#include <stdlib.h> /* malloc(), calloc(), realloc() and free() */
-#include <string.h> /* strdup() */
-#include <ws2tcpip.h> /* socklen_t */
-#include <wspiapi.h> /* has inline function definitions referencing calloc(). */
-
-/* wrap alloc functions to use DLL's memory heap */
-
-#define strdup    netsnmp_strdup
-#define calloc    netsnmp_calloc
-#define malloc    netsnmp_malloc
-#define realloc   netsnmp_realloc
-#define free      netsnmp_free
-
-#endif /* defined(NETSNMP_USE_DLL) && !defined(NETSNMP_TOOLS_C) && !defined(MSVC_PERL) */
-
-/* MSVC OpenSSL linker settings. */
-#if defined(WIN32) && !defined(mingw32)
-#  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
-#      ifdef _DEBUG
-#        pragma comment(lib, "libeay32MDd.lib")
-#      else
-#        pragma comment(lib, "libeay32MD.lib")
-#      endif
-#    else
-#      ifdef _DEBUG
-#        pragma comment(lib, "libeay32MTd.lib")
-#      else
-#        pragma comment(lib, "libeay32MT.lib")
-#      endif
-#    endif
-#    pragma comment(lib, "gdi32.lib")
-#  endif
-#endif
-
 #endif       /* WIN32 */
 
 #ifndef NETSNMP_IMPORT
@@ -1784,6 +1732,7 @@
 #ifdef NETSNMP_ENABLE_IPV6
   #define NETSNMP_TRANSPORT_TCPIPV6_DOMAIN 1
   #define NETSNMP_TRANSPORT_UDPIPV6_DOMAIN 1
+  #define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
 #else
   #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
   #undef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
@@ -1850,6 +1799,9 @@
 #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
 #endif
 
+/* Size prefix to use to printf a uint32_t */
+#define NETSNMP_PRI32 ""
+
 #ifdef _MSC_VER
 #ifdef _WIN64
 #define NETSNMP_PRIz "I64"
diff --git a/win32/netsnmpmibs/Makefile.in b/win32/netsnmpmibs/Makefile.in
old mode 100644
new mode 100755
index f28700b..b6bacbc
--- a/win32/netsnmpmibs/Makefile.in
+++ b/win32/netsnmpmibs/Makefile.in
@@ -58,7 +58,7 @@
 RSC=rc.exe
 LIB32=link.exe -lib
 LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\$(PROGNAME).lib" 
-LIB32_OBJS= \
+LIB32_OBJS1= \
 	"$(INTDIR)\setSerialNo.obj" \
 	"$(INTDIR)\snmp_mib.obj" \
 	"$(INTDIR)\sysORTable.obj" \
@@ -67,19 +67,29 @@
 	"$(INTDIR)\vacm_context.obj" \
 	"$(INTDIR)\vacm_conf.obj" \
 	"$(INTDIR)\vacm_vars.obj" \
+	"$(INTDIR)\mteEvent.obj" \
+	"$(INTDIR)\mteEventConf.obj" \
 	"$(INTDIR)\mteEventNotificationTable.obj" \
+	"$(INTDIR)\mteEventSetTable.obj" \
 	"$(INTDIR)\mteEventTable.obj" \
+	"$(INTDIR)\mteObjects.obj" \
+	"$(INTDIR)\mteObjectsConf.obj" \
 	"$(INTDIR)\mteObjectsTable.obj" \
+	"$(INTDIR)\mteScalars.obj" \
 	"$(INTDIR)\mteTriggerBooleanTable.obj" \
+	"$(INTDIR)\mteTrigger.obj" \
+	"$(INTDIR)\mteTriggerConf.obj" \
 	"$(INTDIR)\mteTriggerDeltaTable.obj" \
 	"$(INTDIR)\mteTriggerExistenceTable.obj" \
 	"$(INTDIR)\mteTriggerTable.obj" \
 	"$(INTDIR)\mteTriggerThresholdTable.obj" \
 	"$(INTDIR)\example.obj" \
 	"$(INTDIR)\ucdDemoPublic.obj" \
+	"$(INTDIR)\dlmod.obj" \
 	"$(INTDIR)\errormib.obj" \
 	"$(INTDIR)\extensible.obj" \
-	"$(INTDIR)\file.obj" \
+	"$(INTDIR)\file.obj"
+LIB32_OBJS2= \
 	"$(INTDIR)\loadave.obj" \
 	"$(INTDIR)\pass.obj" \
 	"$(INTDIR)\pass_common.obj" \
@@ -121,9 +131,11 @@
 	"$(INTDIR)\header_complex.obj" \
 	"$(INTDIR)\mib_modules.obj" \
 	"$(INTDIR)\util_funcs.obj" \
+	"$(INTDIR)\Exit.obj" \
+	"$(INTDIR)\restart.obj" \
 	"$(INTDIR)\smux.obj"
 !IF "$(SDK)" == "true"
-LIB32_OBJS= $(LIB32_OBJS) \
+LIB32_OBJS3= \
 	"$(INTDIR)\at.obj" \
 	"$(INTDIR)\icmp.obj" \
 	"$(INTDIR)\interfaces.obj" \
@@ -138,9 +150,12 @@
 	"$(INTDIR)\var_route.obj" \
 	"$(INTDIR)\winExtDLL.obj"
 !ENDIF
+LIB32_OBJS=$(LIB32_OBJS1) $(LIB32_OBJS2) $(LIB32_OBJS3)
 
 CLEAN :
-	-@for %f in ($(LIB32_OBJS)) do erase %%f
+	-@for %f in ($(LIB32_OBJS1)) do erase %%f
+	-@for %f in ($(LIB32_OBJS2)) do erase %%f
+	-@for %f in ($(LIB32_OBJS3)) do erase %%f
 	-@erase "..\lib\$(OUTDIR)\$(PROGNAME).lib"
 
 "..\lib\$(OUTDIR)\$(PROGNAME).lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
@@ -207,49 +222,82 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\agent\mibgroup\disman\mteEventNotificationTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEvent.c
+
+"$(INTDIR)\mteEvent.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventConf.c
+
+"$(INTDIR)\mteEventConf.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventNotificationTable.c
 
 "$(INTDIR)\mteEventNotificationTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventSetTable.c
 
-SOURCE=..\..\agent\mibgroup\disman\mteEventTable.c
+"$(INTDIR)\mteEventSetTable.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventTable.c
 
 "$(INTDIR)\mteEventTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjects.c
 
-SOURCE=..\..\agent\mibgroup\disman\mteObjectsTable.c
+"$(INTDIR)\mteObjects.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjectsConf.c
+
+"$(INTDIR)\mteObjectsConf.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjectsTable.c
 
 "$(INTDIR)\mteObjectsTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+SOURCE=..\..\agent\mibgroup\disman\event\mteScalars.c
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerBooleanTable.c
+"$(INTDIR)\mteScalars.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerBooleanTable.c
 
 "$(INTDIR)\mteTriggerBooleanTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+SOURCE=..\..\agent\mibgroup\disman\event\mteTrigger.c
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerDeltaTable.c
+"$(INTDIR)\mteTrigger.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerConf.c
+
+"$(INTDIR)\mteTriggerConf.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerDeltaTable.c
 
 "$(INTDIR)\mteTriggerDeltaTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerExistenceTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerExistenceTable.c
 
 "$(INTDIR)\mteTriggerExistenceTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerTable.c
 
 "$(INTDIR)\mteTriggerTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerThresholdTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerThresholdTable.c
 
 "$(INTDIR)\mteTriggerThresholdTable.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -267,6 +315,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE="..\..\agent\mibgroup\ucd-snmp\dlmod.c"
+
+"$(INTDIR)\dlmod.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE="..\..\agent\mibgroup\ucd-snmp\errormib.c"
 
 "$(INTDIR)\errormib.obj" : $(SOURCE) "$(INTDIR)"
@@ -531,74 +585,30 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\agent\mibgroup\utilities\override.c
-
-"$(INTDIR)\override.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\agent\mibgroup\util_funcs.c
 
 "$(INTDIR)\util_funcs.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\mibgroup\util_funcs\Exit.c
+
+"$(INTDIR)\Exit.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\util_funcs\restart.c
+
+"$(INTDIR)\restart.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\agent\mibgroup\smux\smux.c
 
 "$(INTDIR)\smux.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\agent\mibgroup\ucd-snmp\dlmod.c
-"$(INTDIR)\dlmod.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\errormib.c
-"$(INTDIR)\errormib.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\extensible.c
-"$(INTDIR)\extensible.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\file.c
-"$(INTDIR)\file.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\loadave.c
-"$(INTDIR)\loadave.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\pass.c
-"$(INTDIR)\pass.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\pass_persist.c
-"$(INTDIR)\pass_persist.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\proc.c
-"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\proxy.c
-"$(INTDIR)\proxy.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\ucd-snmp\versioninfo.c
-"$(INTDIR)\versioninfo.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\agent\mibgroup\winExtDLL.c
 "$(INTDIR)\winExtDLL.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -660,6 +670,3 @@
 
 
 !ENDIF 
-
-
-
diff --git a/win32/netsnmpmibs/netsnmpmibs.dsp b/win32/netsnmpmibs/netsnmpmibs.dsp
index 45d5744..cde496c 100644
--- a/win32/netsnmpmibs/netsnmpmibs.dsp
+++ b/win32/netsnmpmibs/netsnmpmibs.dsp
@@ -165,35 +165,67 @@
 # PROP Default_Filter ""
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteEventNotificationTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEvent.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteEventTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventConf.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteObjectsTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventNotificationTable.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerBooleanTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventSetTable.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerDeltaTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteEventTable.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerExistenceTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjects.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjectsConf.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerThresholdTable.c
+SOURCE=..\..\agent\mibgroup\disman\event\mteObjectsTable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteScalars.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerBooleanTable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTrigger.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerConf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerDeltaTable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerExistenceTable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerTable.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\disman\event\mteTriggerThresholdTable.c
 # End Source File
 # End Group
 # Begin Group "examples"
@@ -285,23 +317,23 @@
 # PROP Default_Filter ""
 # Begin Source File
 
+SOURCE="..\..\agent\mibgroup\notification-log-mib\notification_log.c"
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\agent\mibgroup\notification\snmpNotifyFilterProfileTable.c
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\notification-log-mib\notification_log.c
+SOURCE="..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c"
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c
+SOURCE="..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_data_access.c"
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_data_access.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_interface.c
+SOURCE="..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_interface.c"
 # End Source File
 # Begin Source File
 
@@ -393,7 +425,11 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\utilities\iquery.c
+SOURCE=..\..\agent\mibgroup\util_funcs\Exit.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\agent\mibgroup\header_complex.c
 # End Source File
 # Begin Source File
 
@@ -405,7 +441,7 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\agent\mibgroup\header_complex.c
+SOURCE=..\..\agent\mibgroup\utilities\iquery.c
 # End Source File
 # Begin Source File
 
@@ -417,6 +453,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\agent\mibgroup\util_funcs\restart.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\agent\mibgroup\util_funcs.c
 # End Source File
 # End Group
diff --git a/win32/snmpd/Makefile.in b/win32/snmpd/Makefile.in
index 9e34674..652dd80 100644
--- a/win32/snmpd/Makefile.in
+++ b/win32/snmpd/Makefile.in
@@ -54,7 +54,7 @@
 
 RSC=rc.exe
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /out:"..\bin\$(OUTDIR)/snmpd.exe" /libpath:"../lib/$(OUTDIR)"
+LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /out:"..\bin\$(OUTDIR)/snmpd.exe" /libpath:"../lib/$(OUTDIR)"
 !IF  "$(CFG)" == "release"
 LINK32_FLAGS=$(LINK32_FLAGS) /debug /pdb:"../bin/$(OUTDIR)/snmpd.pdb"
 !ELSE
diff --git a/win32/snmpd/snmpd.dsp b/win32/snmpd/snmpd.dsp
index 4269aa4..5534306 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 netsnmphelpers.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 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"
 
 !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 netsnmphelpers.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 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"
 
 !ENDIF 
 
diff --git a/win32/snmptrapd/Makefile.in b/win32/snmptrapd/Makefile.in
index 8ed668f..dc4fe50 100644
--- a/win32/snmptrapd/Makefile.in
+++ b/win32/snmptrapd/Makefile.in
@@ -78,7 +78,7 @@
 BSC32_SBRS= \
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
+LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"..\bin\$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
 LINK32_OBJS= \
 	"$(INTDIR)\$(PROGNAME).obj" \
 	"$(INTDIR)\winservice.obj" \
@@ -173,7 +173,7 @@
 <<
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
+LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmptrapd.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /out:"..\bin\$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
 LINK32_OBJS= \
 	"$(INTDIR)\$(PROGNAME).obj" \
 	"$(INTDIR)\winservice.obj" \
diff --git a/win32/snmptrapd/snmptrapd.dsp b/win32/snmptrapd/snmptrapd.dsp
index de44737..503918a 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 netsnmphelpers.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 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"
 
 !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 netsnmphelpers.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 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"
 
 !ENDIF 
 
@@ -88,6 +88,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\apps\snmptrapd_handlers.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\snmplib\winservice.c
 # End Source File
 # Begin Source File
diff --git a/win32/transports/snmp_transport_inits.h b/win32/transports/snmp_transport_inits.h
new file mode 100644
index 0000000..1bf1409
--- /dev/null
+++ b/win32/transports/snmp_transport_inits.h
@@ -0,0 +1,16 @@
+#ifdef NETSNMP_TRANSPORT_UDP_DOMAIN
+netsnmp_udp_base_ctor();
+netsnmp_udp_ctor();
+#endif
+#ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
+netsnmp_tcp_ctor();
+#endif
+#ifdef NETSNMP_TRANSPORT_ALIAS_DOMAIN
+netsnmp_alias_ctor();
+#endif
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+netsnmp_udpipv6_ctor();
+#endif
+#ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
+netsnmp_tcpipv6_ctor();
+#endif
diff --git a/win32/win32.dsw b/win32/win32.dsw
index b18b9a6..5ad1ab0 100644
--- a/win32/win32.dsw
+++ b/win32/win32.dsw
@@ -11,42 +11,9 @@
 
 Package=<4>
 {{{
-}}}
-
-###############################################################################
-
-Project: "libhelpers"=".\libhelpers\libhelpers.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libsnmp"=".\libsnmp\libsnmp.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-  Begin Project Dependency
-  Project_Dep_Name libsnmp
-  End Project Dependency
-  Begin Project Dependency
-  Project_Dep_Name libsnmp
-  End Project Dependency
-  Begin Project Dependency
-  Project_Dep_Name libsnmp
-  End Project Dependency
-  Begin Project Dependency
-  Project_Dep_Name libsnmp
-  End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name libsnmp
+    End Project Dependency
 }}}
 
 ###############################################################################
@@ -59,6 +26,21 @@
 
 Package=<4>
 {{{
+    Begin Project Dependency
+    Project_Dep_Name libsnmp
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "libsnmp"=".\libsnmp\libsnmp.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
 }}}
 
 ###############################################################################
@@ -71,6 +53,9 @@
 
 Package=<4>
 {{{
+    Begin Project Dependency
+    Project_Dep_Name libsnmp
+    End Project Dependency
 }}}
 
 ###############################################################################
@@ -129,13 +114,10 @@
 Package=<4>
 {{{
     Begin Project Dependency
-    Project_Dep_Name libsnmp
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name libagent
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name libhelpers
+    Project_Dep_Name libsnmp
     End Project Dependency
     Begin Project Dependency
     Project_Dep_Name netsnmpmibs
@@ -318,20 +300,17 @@
 Package=<4>
 {{{
     Begin Project Dependency
-    Project_Dep_Name libsnmp
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name libagent
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name libhelpers
+    Project_Dep_Name libnetsnmptrapd
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name libsnmp
     End Project Dependency
     Begin Project Dependency
     Project_Dep_Name netsnmpmibs
     End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libnetsnmptrapd
-    End Project Dependency
 }}}
 
 ###############################################################################
diff --git a/win32/win32dll.dsw b/win32/win32dll.dsw
old mode 100644
new mode 100755
index 1010914..fc24f5a
--- a/win32/win32dll.dsw
+++ b/win32/win32dll.dsw
@@ -33,21 +33,6 @@
 
 ###############################################################################
 
-Project: "libhelpers"=".\libhelpers\libhelpers.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libsnmp_dll
-    End Project Dependency
-}}}
-
-###############################################################################
-
 Project: "libnetsnmptrapd"=".\libnetsnmptrapd\libnetsnmptrapd.dsp" - Package Owner=<4>
 
 Package=<5>
@@ -132,9 +117,6 @@
     Project_Dep_Name libagent
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name libhelpers
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name netsnmpmibs
     End Project Dependency
     Begin Project Dependency
@@ -321,9 +303,6 @@
     Project_Dep_Name libagent
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name libhelpers
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name libnetsnmptrapd
     End Project Dependency
     Begin Project Dependency
