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

* V5-5-patches:
  snmpnetstat/if.c: properly detect snmp exceptions
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..637ce51 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-04-22
 ianaaddressfamilynumbers-mib	IANA-ADDRESS-FAMILY-NUMBERS-MIB
-ianaiprouteprotocol-mib		IANA-RTPROTO-MIB
-ianatn3270etc-mib		IANATn3270eTC-MIB
-ianamalloc-mib			IANA-MALLOC-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
+# ianaipfixselector-mib		IPFIX-SELECTOR-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..4d5e03c 100644
--- a/mibs/rfclist
+++ b/mibs/rfclist
@@ -1,4 +1,4 @@
-# updated 2009-07-27
+# updated 2014-07-10
 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,41 @@
 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
+5815	IPFIX-MIB:IPFIX-SELECTOR-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
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 490e397..3b8b4a4 100644
--- a/snmplib/large_fd_set.c
+++ b/snmplib/large_fd_set.c
@@ -8,15 +8,13 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <stdio.h>
+#include <string.h> /* memset(), which is invoked by FD_ZERO() */
 
 #ifdef HAVE_STDLIB_H
 #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>
 
@@ -86,7 +84,7 @@
 {
     netsnmp_assert(fd >= 0);
 
-    while (fd >= fdset->lfs_setsize)
+    while (fd >= (int)fdset->lfs_setsize)
         netsnmp_large_fd_set_resize(fdset, 2 * (fdset->lfs_setsize + 1));
 
     FD_SET(fd, fdset->lfs_setptr);
@@ -123,10 +121,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'. */
@@ -209,7 +207,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 93d31b3..9625d96 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 */
 
@@ -475,6 +468,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)) {
@@ -521,9 +516,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);
@@ -2782,7 +2790,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 );
 
@@ -3822,7 +3830,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));
@@ -3839,7 +3847,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)));
@@ -4168,7 +4177,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)) {
@@ -4456,7 +4465,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,
@@ -4465,7 +4474,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 *)
@@ -4537,7 +4546,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;
@@ -4552,7 +4562,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 *)
@@ -4561,7 +4571,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,
@@ -4772,7 +4783,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     "))
@@ -4785,7 +4796,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     "))
@@ -5319,7 +5330,7 @@
         /*
          * Search for the appropriate child 
          */
-        if (isdigit(*cp)) {
+        if (isdigit((unsigned char)(*cp))) {
             subid = strtoul(cp, &ecp, 0);
             if (*ecp)
                 goto bad_id;
@@ -5376,7 +5387,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;
@@ -6261,7 +6272,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 {
@@ -6270,7 +6281,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) {
@@ -6288,7 +6299,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);
 		
@@ -6307,7 +6318,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 4c934ba..ae9ff08 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..2ed468d
--- /dev/null
+++ b/snmplib/transports/snmpIPv6BaseDomain.c
@@ -0,0 +1,421 @@
+/* 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;
+        }
+
+        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_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 = 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/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